五 总体设计
考纲:总体设计的过程,软件设计原则,启发式规则,层次图、HIPO图和结构图的应用,面向数据流的设计方法。
总体设计的过程
总体设计的过程通常有两个阶段组成:
系统设计阶段;结构设计阶段
典型的总体设计过程包括
- 设想供选择的方案
- 选取合理的方案
- 推荐最佳方案
- 功能分解
- 设计软件结构
- 设计数据库
- 指定测试计划
- 书写文档
- 审查和复审
设计原理或软件设计原则
模块化和模块独立,抽象,逐步求精,信息隐藏,局部化
名词解释
模块化:把程序划分成独立命名且可独立访问的模块。每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,满足用户的需求。
模块独立的重要性:1.由于能够分割功能而且接口可以简化,许多人合作开发软件这个优点重要,所以软件比较容易开发出来。2.独立的模块比较容易测试和维护。
抽象:就是抽象出事物的本质特性而暂时不考虑其细节。
优点:简化软件设计和实现,提高了软件的可靠性和可测试性,容易维护。
逐步求精:为了能集中精力解决主要问题而推迟对细节的考虑
Miller法则:(7±2)个知识块
信息隐藏:在设计软件模块时应该是的一个模块内包含的信息(数据和过程)对不需要这些信息的模块是不可访问的。
局部化:把一些关系密切的软件元素物理的放得彼此靠近。局部化有利于实现信息隐藏。
模块独立程度的两个定性标准度量(低耦合高内聚)
耦合:
- 耦合的强弱取决与模块间的接口的复杂性,调用模块的方式以及同故宫界面传送数据的多少。
- 从低到高:非直接耦合,数据耦合,特征耦合,控制耦合,外部耦合(公共环境耦合),内容耦合
- 设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合
内聚:
- 标志这一个模块内各个元素彼此结合的紧密程度
- 从高到低:功能内聚,顺序内聚,通信内聚,过程内聚,偶然内聚,逻辑内聚和和时间内聚
启发式规则
1.改进软件结构提高独立性。
2.模块功能要适中。
3.深度、宽度、扇入和扇出要适当(无论是填空、选择、判断都爱考)。(1)深度:软件结构中控制的层数。(2)宽度:软件结构内同一层次上模块总数的最大值。(3)扇入:有多少个上层模块直接调用它。(3或4,上限5~9)(4)扇出:它直接控制的模块数。
4.模块的作用域应该控制域之内。
5.力争降低模块接口的复杂程度。
6.设计单入口单出口的模块。
7.模块功能应该可以预测。
层次图、HIPO图和结构图的应用
面向数据流的设计方法
面向数据流的设计方法把数据流图映射成软件结构,数据流的类型决定了映射的方法。
数据流的类型:变换流;事务流
面向数据流方法主要设计步骤:
- 复查基本系统模型
- 复查并精化数据流图
- 确定数据流图具有变换特性还是事务特性
- 确定数据流的边界
- 完成“第一级分解”
- 完成“第二级分解”
面向数据流方法主要设计步骤:
- 复查基本系统模型
- 复查并精化数据流图
- 确定数据流图具有变换特性还是事务特性
- 确定数据流的边界
- 完成“第一级分解”
- 完成“第二级分解”
- 优化