总体设计阶段:通过这个阶段的工作将划分出组成系统的物理元素-----程序,文件,数据库,人工过程和文档等,但每个物理元素仍处于黑盒子级。总体设计阶段的另一个重要任务是设计软件的结构,确定系统中每个程序由哪些模块组成,以及这些模块之间的关系
总体设计的必要性:可以站在全局高度,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统
总体设计过程通常包含两个阶段:
-
系统设计阶段:确定系统的具体实现方案
-
结构设计阶段:确定软件结构
典型的总体设计过程步骤:
-
设想供选择的方案
-
选取合理的方案
-
推荐最佳方案
-
功能分解
-
设计软件结构
-
设计数据库
-
制定测试计划
-
书写文档
-
系统说明
-
用户手册
-
测试计划
-
详细的实现计划
-
数据库设计结果
-
-
审查和复审
设计原理:
-
模块化:模块化就是把程序划分成独立命名且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求
-
采用模块化的好处:可以是软件结构清晰,不仅容易设计也容易理解,提高软件可靠性和可修改性,有助于软件开发工程的组织管理
-
-
抽象:
-
逐步求精:
-
信息隐藏和局部化:信息隐藏:一个模块内包含的信息对于不需要这些信息的模块来说是不能访问的。局部化:实际上隐藏的不是有关模块的一切信息,而是模块的实现细节
-
模块独立(高内聚低耦合):模块化,抽象,信息隐藏和局部化概念的直接结果。模块独立程度的两个标准:内聚 和 耦合
-
耦合:不同模块之间互连程度的度量
-
内聚:一个模块内各个元素彼此结合的紧密程度
-
启发规则:
-
改进软件结构提高模块独立性
-
模块规模适中
-
深度,宽度,扇出,扇入都应该适中
-
模块的作用域应该在控制域内
-
力争降低模块接口的复杂程度
-
设计单入口单出口的模块
-
模块功能应该可以预测
描绘软件结构的图形工具
-
层次图和HIPO图:层次图用来描绘软件的层次结构,HIPO:层次图加输入处理输出图
-
结构图
面向数据流的设计方法
-
变换流:外部形式信息输入,转换成内部形势,经过处理,再转换成外部形式离开软件系统,具有这种特征的信息流叫做变换流
-
事务流:
变化分析过程:
-
复查基本系统的模型
-
复查并精化数据流图
-
确定数据流图具有变换特性还是事务特性
-
确定输入流和输出流的边界,从而孤立出变换中心
-
完成第一级分解:
-
完成第二级分解:把数据流图中的每个处理映射成软件结构中的一个适当的模块
-
使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化