系统的总体设计=概要设计/初步设计
这个阶段任务:划分出组成系统的物理元素——程序、文件、数据库、人工文档等;设计软件结构,系统之间的模块
总体设计主要由两个部分组成:系统设计阶段;结构设计阶段
步骤:
设计原理
模块化
含义:每个子模块实现一个子功能
依据:一个问题的复杂度 > 将其分解为若干子问题的复杂度
每个程序都有一个最适当的模块数量,使得系统开发成本最小。
模块独立性 (最重要的特性)
1.独立性很重要
模块独立程度可以由两个定性标准度量:耦合与内聚
2.耦合:指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。
分类:
- 数据耦合低耦合,
-
控制耦合 中耦合,增加系统复杂度,if数据冗余可以将模块分解之后用数据耦合来代替
-
公共耦合 问题:软件结构中存在大量的公用耦合时会给诊断错误带来困难
-
内容耦合:
ATT;
应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易
因此建议:尽量使用数据耦合,少用控制耦合,限制公用耦合,完全不用内容偶合。
3.内聚(对于一个模块内部)
-
功能内聚
-
顺序内聚
-
通信内聚
-
过程内聚
后面会调用前面的 -
时间内聚
-
逻辑内聚
-
-
偶然内聚
如果一个模块由完成若干毫无关系的功能处理元素偶然组合在一起的,就叫偶然内聚。
偶然内聚是最差的一种内聚。
软件设计中应该:力求做到高内聚,尽量少用中内聚,不用低内聚
抽象
逐步求精
启发式规则
-
改进软件结构提高模块独立性
-
模块规模应该适中
-
深度、宽度、扇出和扇入都应适当
-
模块的作用域应该在控制域之内
作用域:受该模块内一个判定影响的所有模块的集合。
控制域:模块本身以及所有从属于它的模块的集合。 -
力争降低模块接口的复杂度
-
设计单入口、单出口的模块
-
模块功能应该可以预测
图形工具
-
层次图
自顶向下的设计思想 -
HIPO图
h是层次的意思
然后每一张图都是一个ipo
每一个都加编号
-
结构图
每一个方块代表一个模块
方框之间的连线表示调用模块的调用关系
箭头尾部表示传递的是:数据信息(空心圆) 控制信息(实心圆)
面向数据流的设计方法
信息流:
变换流—
具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。
事务流—
存在一个事务中心(也就是数据处理、加工中心),它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径
变换设计:
以变换为中心的设计
事务设计
为以事务为中心的设计。
概要设计说明书
该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础