文档介绍:第四章软件设计基础
软件设计的基本目的就是回答“系统应该如何实现?”这个问题。
软件设计的任务,就是把分析阶段产生的软件需求规格说明转换为用适当手段表示的软件设计,并形成软件设计文档。
1. 软件设计的目标
软件设计一般都包括数据设计、体系结构设计、接口设计和过程设计(或称构件级设计)等设计活动。
软件设计的过程和目标就是,根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计。
在每个设计活动中,软件开发者应用导致高质量的基本概念和原则,产生软件的数据设计模型、体系结构设计模型、接口设计模型和过程设计模型。
软件设计过程最终目标是产生一个设计规约,该规约包括描述数据、体系结构、接口和构件的设计模型。
体系结构设计定义软件主要结构性元素之间的关系。
数据设计将分析阶段创建的信息模型转变成实现软件所需的数据结构。
接口设计描述软件内部模块之间以及软件与人之间是如何通信的。
构件级设计将软件体系结构的结构性元素转变成对软件构件的过程性描述,即描述软件构件的详细内部设计细节。
2. 软件设计的任务
从工程管理的角度来看,传统的软件设计任务通常分两个阶段完成。
第一个阶段是概要设计,即总体设计。
第二阶段是详细设计阶段,即过程设计。
模块与模块化
模块是指这样一组程序语句,它包括输入、输出和逻辑处理功能、内部信息及其运行计划。
模块指可单独命名且可通过名字访问的过程函数、子程序或宏调用。
模块具有以下几种特征:
接口,模块的输入输出;
功能,指模块实现什么功能,有什么作用;
逻辑,描述模块内部如何实现需求及所需数据;
状态,该模块的运行环境,模块间调用与被调用关系。
模块化就是将程序划分成若干个独立的模块,每个模块完成一个特定子功能,每个模块既是相对独立的,又是相互联系的,它们共同完成系统指定的各项功能。
模块化的目的是为了降低软件的复杂性。
模块化论据:
C(x)定义为表示问题x复杂性的函数;
E(x)定义为解决问题x所需要工作量(以时间计算)的函数;
则,对p1和p2两个问题,若 C(p1) > C(p2),则 E(p1) > E(p2) 。
一有趣的特性。即:
C(p1 + p2) > C(p1) + C(p2);
E(p1 + p2) > E(p1) + E(p2)。
上述表达式意味着:“分而治之”的结论。