第十一章 结构化开发(上午题)
一、模块化
- 模块化是指将一个待开发的软件分解成若干个小的简单部分–模块,每个模块独立开发测试
二、模块独立
- 模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块间的联系简单,衡量模块独立的标准有两个:内聚性、耦合性
三、耦合
- 耦合是模块之间相对独立性(互相连接的紧密程度)的度量,耦合程度越高,模块独立性越弱
- 耦合的七种类型由低到高排序
- 无直接耦合:两个模块之间没有直接关系(没有调用、不传递任何信息)
- 数据耦合:两个模块间有调用关系,传递简单的数据值(值传递)
- 标记耦合:有调用关系,传递的是数据结构
- 控制耦合:有调用关心,传递的是控制变量,控制变量可以让被调用方有选择的执行某一功能
- 外部耦合:模块间通过软件之外的环境联结
- 公共耦合:通过公共数据环境相互作用的那些模块间的耦合
- 内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口传入另一模块内部时
四、内聚
- 内聚是对一个模块内部各个元素之间彼此结合紧密程度的度量,内聚程度越高,模块独立性越强
- 内聚的其中类型由低到高排序
偶然内聚(巧合内聚):模块内各元素间没有任何联系
逻辑内聚:指模块内执行若干个结逻辑相似的功能,通过参数来确定要执行哪一个
时间内聚:特定时间需要同时执行的动作组合在一起形成的模块、
过程内聚:一个模块完成多个任务,这些任务必须按照指定过程执行
通信内聚:模块内的处理元素都在同一个数据结构上操作
顺序内聚:单一功能,模块内各个处理元素密切相关,且需要顺序执行
功能内聚:模块内所有元素共同完成同一功能,缺一不可
五、系统结构设计原则
- 分解 - 协调原则:大问题分解成小问题
- 自顶向下原则:抓住系统的主功能,由上到下分层分解
- 信息隐蔽 - 抽象原则:上层规定下层做什么和模块间协调,但不规定怎么做
- 一致性原则:统一规范、统一标准、统一的文件模式
- 明确性原则:每个模块功能明确、接口明确,消除多重功能、无用接口,避免病态链接、消除接口复杂度
- 高内聚低耦合
- 扇入扇出适中:模块调用其他模块称为扇出,被其他模块调用称为扇如
- 模块规模适中:过大,则是分解的不充分,过小,则可能降低模块独立性
- 模块的作用范围应该再其控制范围之内
六、系统文档
- 系统文档是系统建设过程的”痕迹“,是系统维护人员的指南,是开发人员与用户的交流工具
- 系统文档在系统开发人员、项目管理人员、系统维护人员、系统评价人员、用户之间的作用
- 用户–系统分析人员:可行性研究报告、总体规划报告、系统开发合同、系统方案说明书
- 系统开发人员–项目管理人员:系统开发计划、系统开发月报、系统开发总结报告、项目管理文件
- 系统测试人员–系统开发人员:系统方案说明书、系统开发合同、系统设计说明书、测试计划文档
- 系统开发人员–用户:用户手册、操作指南
- 系统开发人员–系统维护人员:系统设计说明书、系统开发总结报告、技术手册
- 用户–维修人员:系统运行报告、维护修改建议
七、数据流图
基本图形元素
外部实体:矩形,一般用 Ei 表示
数据存储:两条横线或者缺边矩形,一般用 Di 表示
数据流:有向边,起点 ———— > 终点
加工:圆角矩形或圆,一般用 Pi 表示
顶层数据流图描述了系统的输入输出, 0 层数据流图是对顶层数据流图的细分
外部实体:当前系统之外的人、物、外部系统
人:学生、老师、员工、主管
物 : 传感器、控制器、车辆、采购部门
外部系统:支付系统、车辆交易系统、库存管理系统
数据存储:存储数据、提供数据
存储加工后的输出数据,提供加工的输入数据
例如: xxx 表、 xxx 文件
加工 : 将输入数据处理后得到输出数据
一个加工至少有一个输入数据流和一个输出数据里
只有输入没有输出称为”黑洞“
只有输出没有输入称为”白洞“
加工的数据不足以产生输出”灰洞“
数据流:数据流的起点或者重点必有一个是加工
八、父图子图平衡
- 父图中的数据流,子图中也要有,其实就是根据父图去子图里一个个找看看有没有是父图里有的数据流但是子图没有
- 找出丢失数据流的技巧
父图子图平衡
加工既要有输入数据里、也要有输出数据流
数据守恒(到题目的内容中去找图中有哪些丢失的部分)
- 数据建模 – E-R 图;行为建模 – UML ;功能建模 – 数据流图
九、数据字典
- 数据字典为数据流图中的每个数据流、文件、加工,以及组成数据流的数据项做出说明
- 数据字典有四类条目:数据流、数据存储、基本加工、数据项
- 数据项是组成数据流和数据存储的最小元素,外部实体不再字典中说明
- 常用的加工逻辑描述方法:结构化语言、判定表、判定树
十、结构化开发方法
- 总的指导思想是自顶而下,逐层分解(从抽象到具体)
- 基本原则是功能的分解与抽象
- 软件工程中最早提出的方法,特别适合数据处理领域的问题
- 不适合解决大规模的、特别复杂的项目,难以适应需求的变化
十一、结构化设计
- 体系结构设计:定义软件的主要结构元素及关系
- 数据设计:确定文件系统结构和数据库表结构
- 接口设计:描述软件使用放的外部接口,及各种构件间的内部接口
- 过程设计:定义各组成部分内的算法及内部数据结构
- 界面设计黄金原则
- 用户操纵控制
- 减少用户记忆负担
- 保持界面一致
- 构造分层数据流图时需要注意的问题
- 适当命名
- 图中要表示出数据流
- 一个加工不适合过多数据流
- 分解尽可能均匀