软件工程导论 第4章 概要设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可追溯性
确认该设计是否复盖了所有已确定的软件需求,软 件每一成份是否可追溯到某一项需求
接口
确认该软件的内部接口与外部接口是否已经明确定 义。模块是否满足高内聚和低耦合的要求。模块作 用范围是否在其控制范围之内
风险
确认该设计在现有技术条件下和预算范围内是否能 按时实现
4.2 任务
实用性
确认该设计对于需求的解决方案是否实用
4.5.3 结构图
模块
模块用矩形框表示,并用模块的名字标记它。
4.5.3 结构图
模块的调用关系和接口
模块之间用单向箭头联结,箭头从调用模块指向被 调用模块,表示调用模块调用了被调用模块。
4.5.3 结构图
条件调用
循环调用
4.5.3 结构图
4.6 面向数据流的设计方法
目标是给出设计软件结构的一个系统化的途 径。 面向数据流的设计方法定义了一些不同的“映 “ 射”,利用这些映射可以把数据流图变换成软 ” 件结构。 通常所说的结构化设计方法,也就是基于数据 流的设计方法。
技术清晰度
确认该设计是否以一种易于翻译成代码的形式表达
可维护性
确认该设计是否考虑了方便未来的维护
质量
确认该设计是否表现出良好的质量特征
4.2 任务
各种选择方案
看是否考虑过其它方案,比较各种选择方案的标准 是什么
限制
评估对该软件的限制是否现实,是否与需求一致
其它具体问题
对于文档、可测试性、设计过程……等进行评估
例:数字仪表板系统
精化后的结构
设计和确定模块时,使得一个模块内包含的信 息(过程和数据)对于不需要这些信息的模块来 说,是不能访问的。 模块内部的数据与过程,应该对不需要了解这 些数据与过程的模块隐藏起来。只有那些为了 完成软件的总体功能而必需在模块间交换的信 息,才允许在模块间进行传递。
4.4 模块独立性
模块独立性概括了把软件划分为模块时要遵守 的准则,也是判断模块构造是否合理的标准。 模块的独立性可以由两个定性标准度量:
B
C
存入
修改 打印
打印 打印 报告2
删除
其他定义:如果一个模块的所有成分都操作同一 数据集或生成同一数据集 。
4.4.2 内聚
4.4.2 内聚
6、顺序内聚 (Sequence Cohesion)
这种模块要求各个成分顺序执行,并且通常上一个 输出是下一个输入。
A
B 数据 读入 编辑 累加 结果 打印
4.3.3 逐步求精
求精实际上是细化过程。 我们从在高抽象级别定义的功能陈述(或信息 描述)开始。也就是说,该陈述仅仅概念性地 描述了功能或信息,但是并没有提供功能的内 部工作情况或信息的内部结构。 求精要求设计者细化原始陈述,随着每个后续 求精(细化)步骤的完成而提供越来越多的细 节。
4.3.4 信息隐藏
4.4.2 内聚
3、时间内聚(Classical Cohesion)
时间内聚又称为经典内聚,或瞬时内聚(Temporal Cohesion) 。 这种模块大多为多功能模块,但模块的各个功能的 执行与时间有关,通常要求所有功能必须在同一时 间段内执行。
问题:一般在某个系统中什么模块会是时间内聚 的? 答案:程序的初始化模块和终止模块。
模块连续性
微小修改只导致对个别模块
模块保护性
异常影响局限在模块内部
4.3.2
抽象
人类在认识复杂现象的过程中使用的最强有力的思维 工具是抽象。人们在实践中认识到,在现实世界中一 定事物、状态或过程之间总存在着某些相似的方面(共 性)。把这些相似的方面集中和概括起来,暂时忽略它 们之间的差异,这就是抽象。或者说抽象就是抽出事 物的本质特性而暂时不考虑它们的细节。
4.4.1 耦合
2、数据耦合 (Data Coupling)
如果一个模块访问另一个模块时,彼此之间是通 过简单数据参数 (不是控制参数、公共数据结构或 外部变量) 来交换输入、输出信息的,则称这种 耦合为数据耦合。
4.4.1 耦合
3、标记耦合 (Stamp Coupling)
如果一组模块通过参数表传递记录信息,就是标记 耦合。这个记录是某一数据结构的子结构,而不是 简单变量。
4.4.1 耦合
4、控制耦合 (Control Coupling)
如果一个模块通过 传送开关、标志、名 字等控制信息,明显 地控制选择另一模块 的功能,就是控制耦 合。
4.4.1 耦合
5、外部耦合(External Coupling)
一组模块都访问同一全局简单变量而不是同一全局 数据结构,而且不是通过参数表传递该全局变量的 信息,则称之为外部耦合。
一个模块中各个部分都是完成某一具体功能必不可 少的组成部分,或者说该模块中所有部分都是为了 完成一项具体功能而协同工作,紧密联系,不可分 割的。则称该模块为功能内聚模块。
4.4.2 内聚
内聚度
设计内聚原则:
设计时应力争做到高内聚,并且能够辨认出低内聚的模块, 并采取措施进行修改,以提高模块的内聚程度、降低模块间 的耦合程度,从而获得较高的模块独立性。
应采取下述设计原则:
尽量使用数据耦合,少用控制耦合,限制公共环境 耦合的范围,完全不用内容耦合。
4.4.2 内聚
七种内聚:
1. 偶然内聚 2. 逻辑内聚 3. 时间内聚 4. 过程内聚 5. 通信内聚 6. 顺序内聚 7. 功能内聚 信息内聚
4.4.2 内聚
1、偶然内聚(Coincidental Cohesion)
结构图中的每个方框代表一个模块,框内注明 模块的名字或主要功能;方框之间的箭头(或 直线)表示模块间的调用关系。 在结构图中通常还用带注释的箭头表示模块调 用过程中模块之间传递的信息。
注释箭头尾部是空心圆表示传递的是数据。 注释箭头尾部是实心圆则表示传递的是控制信息。
4.5.3 结构图
大学职业介绍系统
又称巧合内聚 当模块内各部分之间 没有联系,或者即使 有联系,这种联系也 很松散,则称这种模 块为偶然内聚模块。 它是内聚程度最低的 模块。
4.4.2 内聚
2、逻辑内聚 (Logical Cohesion)
这种模块把逻辑相关 的功能组合在一起, 每次被调用时,由传 送给模块的判定参数 来确定该模块应执行 哪一种功能。 例如一个模块读取各 种不同类型外设的输 入。
例 : 数 字 仪 表 板 系 统
例 : 数 字 仪 表 板 系 统
例:数字仪表板系统
第一级分解
例:数字仪表板系统
第一级分解
例:数字仪表板系统
第二级分解的方法
例:数字仪表板系统
未经精化的输入结构
例:数字仪表板系统
添加数据流
例:数字仪表板系统
未经精化的变换结构
例:数字仪表板系统
未经精化的输出结构
4.4.2 内聚
4、过程内聚(Procedural Cohesion)
如果一个模块内部的处理成分是相关的,而且这些处 理必须以特定的次序执行,则称为过程内聚。 使用流程图做为工具设计程序时,把流程图中的某 一部分划出组成模块,就得到过程内聚模块。例 如,把流程图中的循环部分、判定部分、计算部分 分成三个模块,这三个模块都是过程内聚模块。
4.3.1 模块化
什么是模块化?
就是把程序划分成独立命名且可独立访问的模块, 每个模块完成一个子功能,把这些模块集成起来构 成一个整体,可以完成指定的功能满足用户的需 求。
图: 模块化和软件成本
4.3.1 模块化
五条标准
模块可分解性
把问题分解为子问题
模块可组装性
可复用
模块可理解性
无需参考其他模块,易于构造和修改
4.4.2 内聚
信息内聚 (Informational Cohesion)
模块多个功能在同一数据结构上操作,每一项功能 有一个唯一的入口点。由于这个模块的所有功能都 是基于同一个数据结构(符号表),因此它是一个 信息内聚的模块。
4.4.2 内聚
7、功能内聚 (Functional Cohesion)
详细设计
详细设计阶段详细地设计每个模块,确定完成每个模块功 能所需要的算法和数据结构。
4.1 概述
SA映射SD
4.1 概述
4.2 任务
1. 制定规范
确定设计的目标和优先顺序 选定设计方法 规定设计文档的编制标准
文档体系、详细程度、图形画法、纸张样式
编码形式
接口约定、命名规则
4.2 任务
2. 系统的结构设计
6、公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它们之 间的耦合就称为公共耦合。公共的数据环境可以是 全局数据结构、共享的通信区、内存的公共覆盖区 等。
4.4.1 耦合
公共耦合的复杂程度随耦合模块的个数增加而显著 增加。若只是两模块间有公共数据环境,则公共耦 合有两种情况。松散公共耦合和紧密公共耦合。
4.3 设计原理
模块化 抽象 逐步求精 信息隐藏
4.3.1 模块化
什么是模块?
模块是由边界元素限定的相邻的程序元素(例如,数 据说明,可执行的语句)的序列,而且有一个总体标 识符来代表它。 过程、函数、子程序和宏等,都可作为模块。 面向对象范型中的对象是模块,对象内的方法也是 模块。模块是构成程序的基本构件。
4.4.1 耦合
耦合的七种类型
1. 非直接耦合 2. 数据耦合 3. 特征耦合 4. 控制耦合 5. 外部耦合 6. 公共耦合 7. 内容耦合
4.4.1 耦合
1、非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系, 它们之间的联系完全是通过主模块 的控制和调用来 实现的,这就是 非直接耦合。这 种耦合的模块独 立性最强。
4.4.1 耦合
7、内容耦合 (Content Coupling)
如果发生下列情形,两个模块之间就发生了内容耦 合:
一个模块直接访问另一个模块的内部数据; 一个模块不通过正常入口转到另一模块内部; 两个模块有一部分程序代码重迭(只可能出现在汇编语言 中); 一个模块有多个入口。
4.4.1 耦合
耦合性
划分层次结构 确定模块功能 确定模块调用关系 确定模块的接口 评估模块划分的质量、导出模块结构规则
4.2 任务
3. 数据结构设计
确定输入、输出文件的结构 数据库设计
4. 可靠性设计(质量设计) 5. 书写文档
概要设计说明书、 数据库设计说明书、 用户手 册、 初步的测试计划
4.2 任务
6. 评审
教学内容
4.1 概述 4.2 任务 4.3 设计原理 4.4 模块独立性 4.5 图形工具 4.6 面向数据流的设计方法 4.7 数据库设计 4.8 小结 习题
4.1 概述
结构化设计(Structured Design,SD)分为两个 阶段:
总体设计(又称概要设计)
通过仔细分析软件规格说明,适当地对软件进行功能分 解,从而把软件划分为模块,并且设计出完成预定功能的 模块结构。
问题:请大家举个生活中 必须遵照特定次序 的例 子? 答案:排队买饭( 队列,要求先进先出) 。
4.4.2 内聚
5、通信内聚 (Communication Cohesion)
如果一个模块内各功能部分都使用了相同的输入 数据,或产生了相同的输出数据,则称之为通信 内聚模块。
A
打印 报告1 打印 报告2
4.5 图形工具
层次图 HIPO图 结构图
4.5.1 层次图
也称H图
是在总体设计阶段最常使用的图形工具之一,它常 用于描绘软件的层次结构。层次图中的每个方框代 表一个模块,方框间的连线表示模块间的调用关 系。
4.5.2 HIPO图
由H图和IPO 图两部分组成
4.5.3 结构图
4.5.3 结构图
耦合
用于衡量不同模块彼此间互相依赖(连接)的紧密程度;
内聚
用于衡量一个模块内部各个元素间彼此结合的紧密程度。
4.4.1 耦合
耦合是对一个软件结构内不同模块之间互联程 度的度量。 耦合强弱取决于模块间接口的复杂程度、进入 或访问一个模块的点以及通过接口的数据。 在软件设计中应该追求模块间尽可能松散耦合 的系统。
4.6.1 概念
面向数据流的设计方法把数据流映射成软件结 构,数据流的类型决定了映射的方法。 数据流有两种类型:
变换流 事务流
图:变换流
54
图:事务流
百度文库 图:混合型
整体? 中间?
4.6.2 设计过程
面向数据 流方法的设 计过程
4.6.3 变换分析
设计步骤
(1) 复查基本系统模型。 (2) 复查并精化数据流图。 (3) 确定数据流图具有变换特性还是事务特性。 (4) 确定输入流和输出流的边界,从而孤立出变换中 心。 (5) 完成“第一级分解”。 “ ” (6) 完成“第二级分解”。 “ ” (7) 使用设计度量和启发规则对第一次分割得到的软 件结构进一步精化。
相关文档
最新文档