结构化开发
第六章
结构化设计
-
主要包括:
-
体系结构设计:定义软件 的主要结构元素及其关系
-
数据设计:基于实体联系图确定软件涉及的文件系统 的结构及数据库 的表结构
-
接口设计:描述用户界面,软件和其他硬件设备、其他软件系统、使用人员的外部接口、各种构建之间的内部接口
-
过程设计:确定软件各个组成部分内的算法 及内部数据结构,并选定某种过程的表达形式来描述各种算法
-
-
结果(输出):数据流图、数据字典、加工逻辑、补充材料(实体联系图)
-
结构化方法采用自顶向下、从抽象到具体的原则
系统设计的基本原理
- 抽象abstract
- 模块化:一个待开发的软件分解成若干个小的简单部分——模块(分而治之)
- 信息隐蔽(封装)
- *模块独立:每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单
衡量模块独立程度的标准有2个:耦合性 和 内聚性 ——尽量做到“高内聚,低耦合”,提高模块的独立性
- 耦合:模块之间的相对独立性(互相连接的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式、通过接口的信息类型
- 无直接耦合:两个模块之间没有直接的关系,它们分别从属不同模块的控制与调用,它们之间不传递任何信息
- 数据耦合:两个模块之间有调用关系,传递的是简单的数据值(值传递)
- 标记耦合:两个模块之间传递的是数据结构
- 控制耦合:一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择 地执行模块内的某一功能
- 外部耦合:模块间通过软件之外的环境联结
- 公共耦合:通过一个公共数据环境相互作用的那些模块间的耦合
- 内容耦合:当一个模块直接使用 另一个模块的内部数据,或通过非正常入口转入另一个模块内容时
- 内聚:一个模块内部各个元素 彼此结合的紧密程度。(一个内聚程度高的模块[在理想情况下]应当只做一件事
- 偶然内聚(巧合内聚):一个模块内的各处理元素之间没有任何联系
- 逻辑内聚:模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能
- 时间内聚:把需要同时执行的动作组合在一起形成的模块
- 过程内聚:一个模块完成多个任务,这些任务必须按指定的过程执行
- 通信内聚:模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据
- 顺序内聚:一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入
- 功能内聚:模块内的所有元素共同作用于完成一个功能,缺一不可
系统结构设计原则
- 分解-协调原则
- 自顶向下的原则
- 信息隐蔽(封装)、抽象的原则
- 一致性原则:整个软件设计过程具有统一的规范、统一的标准、统一的文件模式等
- 明确性原则:每个模块必须功能明确、接口明确,消除多重功能和无用接口(避免病态连接、降低接口复杂度)
- 高内聚,低耦合(保持模块的相对独立性)
- 模块的扇入、扇出系数要合理。一个模块直接调用其他模块的个数——扇出,反之扇入
- 模块的规模适当。过小的模块有可能降低模块,造成系统接口的复杂性
- 一个模块的作用范围应在其控制范围之内
系统文档
作用:
- 用户 与 系统分析人员 在 系统规划 和 系统分析阶段 通过文档【可行性研究报告、总体规划报告、系统开发合同、系统方案说明书】进行沟通。
- 系统开发人员 与项目管理人员 通过文档【系统开发计划(工作任务分解表、PERT图、甘特图、预算分配表等)、系统开发月报、系统开发总结报告等项目管理文件】在 项目期 内进行沟通
- 系统测试人员 与 系统开发人员 通过文档【系统方案说明书、系统开发合同、系统设计说明书、测试计划、系统测试报告】进行沟通
- 系统开发人员 与 用户 通过系统开发人员撰写的文档【用户手册、操作指南】运行系统,在 系统运行期间 进行沟通
- 系统开发人员 与 系统维护人员 通过文档【系统设计说明书、系统开发总结报告】进行沟通
- 用户 与 维修人员 在维护期间进行沟通
数据字典
数据字典就是为数据流图中每个数据流、文件、加工、组成数据流或文件的数据项做出说明
-
数据字典有4类条目:数据流、数据项、数据存储、基本加工
-
数据项是组成数据流和数据存储的最小单位
-
源点、终点不在系统之内
-
对加工的描述——”加工逻辑说明“/“小说明”
- 常用的加工逻辑描述方法:结构化语言(循环语句…)、判定表(决策表)、判定树