软件工程- 概要设计_第1页
软件工程- 概要设计_第2页
软件工程- 概要设计_第3页
软件工程- 概要设计_第4页
软件工程- 概要设计_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、系统设计 4.1 概述 4.2 任务 4.3 设计原理 4.4 模块独立性 4.5 图形工具 4.6 面向数据流的设计方法 4.7 数据库设计 4.8 小结 4.1 概述 软件设计分为两个阶段: 总体设计(又称概要设计) 通过仔细分析软件规格说明,适当地对软件进行功能分 解,从而把软件划分为模块,并且设计出完成预定功能的 模块结构。 详细设计 详细设计阶段详细地设计每个模块,确定完成每个模块功 能所需要的算法和数据结构。 4.1 概述 软件分析软件分析映射软件设计软件设计 4.1 概述 4.2 任务 1. 制定规范 确定设计的目标和优先顺序 选定设计方法 规定设计文档的编制标准 文档体系、详细

2、程度、图形画法、纸张样式 编码形式 接口约定、命名规则 4.2 任务 2. 系统的结构设计 划分层次结构 确定模块功能 确定模块调用关系 确定模块的接口 评估模块划分的质量、导出模块结构规则 4.2 任务 3. 数据结构设计 确定输入、输出文件的结构 数据库设计 4. 可靠性设计(质量设计) 5. 书写文档 概要设计说明书、 数据库设计说明书、 用户手 册、 初步的测试计划 4.2 任务 6. 评审 可追溯性 确认该设计是否复盖了所有已确定的软件需求,软 件每一成份是否可追溯到某一项需求 接口 确认该软件的内部接口与外部接口是否已经明确定 义。模块是否满足高内聚和低耦合的要求。模块作 用范围是

3、否在其控制范围之内 风险 确认该设计在现有技术条件下和预算范围内是否能 按时实现 4.2 任务 实用性 确认该设计对于需求的解决方案是否实用 技术清晰度 确认该设计是否以一种易于翻译成代码的形式表达 可维护性 确认该设计是否考虑了方便未来的维护 质量 确认该设计是否表现出良好的质量特征 4.2 任务 各种选择方案 看是否考虑过其它方案,比较各种选择方案的标准 是什么 限制 评估对该软件的限制是否现实,是否与需求一致 其它具体问题 对于文档、可测试性、设计过程等进行评估 4.3 设计原理 模块化 抽象 逐步求精 信息隐藏 4.3.1 模块化 什么是模块? 模块是由边界元素限定的相邻的程序元素(例

4、如,数 据说明,可执行的语句)的序列,而且有一个总体标 识符来代表它。 过程、函数、子程序和宏等,都可作为模块。 面向对象范型中的对象是模块,对象内的方法也是 模块。模块是构成程序的基本构件。 4.3.1 模块化 什么是模块化? 就是把程序划分成独立命名且可独立访问的模块, 每个模块完成一个子功能,把这些模块集成起来构 成一个整体,可以完成指定的功能满足用户的需 求。 图: 模块化和软件成本 4.3.1 模块化 五条标准 模块可分解性 把问题分解为子问题 模块可组装性 可复用 模块可理解性 无需参考其他模块,易于构造和修改 模块连续性 微小修改只导致对个别模块 模块保护性 异常影响局限在模块内

5、部 人类在认识复杂现象的过程中使用的最强有力的思维 工具是抽象。人们在实践中认识到,在现实世界中一 定事物、状态或过程之间总存在着某些相似的方面(共 性)。把这些相似的方面集中和概括起来,暂时忽略它 们之间的差异,这就是抽象。或者说抽象就是抽出事 物的本质特性而暂时不考虑它们的细节。 4.3.2抽象 4.3.3 逐步求精 求精实际上是细化过程。 我们从在高抽象级别定义的功能陈述(或信息 描述)开始。也就是说,该陈述仅仅概念性地 描述了功能或信息,但是并没有提供功能的内 部工作情况或信息的内部结构。 求精要求设计者细化原始陈述,随着每个后续 求精(细化)步骤的完成而提供越来越多的细 节。 4.3

6、.4 信息隐藏 设计和确定模块时,使得一个模块内包含的信 息(过程和数据)对于不需要这些信息的模块来 说,是不能访问的。 模块内部的数据与过程,应该对不需要了解这 些数据与过程的模块隐藏起来。只有那些为了 完成软件的总体功能而必需在模块间交换的信 息,才允许在模块间进行传递。 4.4 模块独立性 模块独立性概括了把软件划分为模块时要遵守 的准则,也是判断模块构造是否合理的标准。 模块的独立性可以由两个定性标准度量: 耦合 用于衡量不同模块彼此间互相依赖(连接)的紧密程度; 内聚 用于衡量一个模块内部各个元素间彼此结合的紧密程度。 4.4.1 耦合 耦合是对一个软件结构内不同模块之间互联程 度的

7、度量。 耦合强弱取决于模块间接口的复杂程度、进入 或访问一个模块的点以及通过接口的数据。 在软件设计中应该追求模块间尽可能松散耦合 的系统。 4.4.1 耦合 耦合的七种类型 1. 非直接耦合 2. 数据耦合 3. 特征耦合 4. 控制耦合 5. 外部耦合 6. 公共耦合 7. 内容耦合 4.4.1 耦合 1、非直接耦合(Nondirect Coupling) 如果两个模块之间没有直接关系, 它们之间的联系完全是通过主模块 的控制和调用来 实现的,这就是 非直接耦合。这 种耦合的模块独 立性最强。 4.4.1 耦合 2、数据耦合 (Data Coupling) 如果一个模块访问另一个模块时,彼

8、此之间是通 过简单数据参数 (不是控制参数、公共数据结构或 外部变量) 来交换输入、输出信息的,则称这种 耦合为数据耦合。 4.4.1 耦合 3、标记耦合 (Stamp Coupling) 如果一组模块通过参数表传递记录信息,就是标记 耦合。这个记录是某一数据结构的子结构,而不是 简单变量。 4.4.1 耦合 4、控制耦合 (Control Coupling) 如果一个模块通过 传送开关、标志、名 字等控制信息,明显 地控制选择另一模块 的功能,就是控制耦 合。 4.4.1 耦合 5、外部耦合(External Coupling) 一组模块都访问同一全局简单变量而不是同一全局 数据结构,而且不

9、是通过参数表传递该全局变量的 信息,则称之为外部耦合。 6、公共耦合(Common Coupling) 若一组模块都访问同一个公共数据环境,则它们之 间的耦合就称为公共耦合。公共的数据环境可以是 全局数据结构、共享的通信区、内存的公共覆盖区 等。 4.4.1 耦合 公共耦合的复杂程度随耦合模块的个数增加而显著 增加。若只是两模块间有公共数据环境,则公共耦 合有两种情况。松散公共耦合和紧密公共耦合。 4.4.1 耦合 7、内容耦合 (Content Coupling) 如果发生下列情形,两个模块之间就发生了内容耦 合: 一个模块直接访问另一个模块的内部数据; 一个模块不通过正常入口转到另一模块内

10、部; 两个模块有一部分程序代码重迭(只可能出现在汇编语言 中); 一个模块有多个入口。 4.4.1 耦合 耦合性 应采取下述设计原则: 尽量使用数据耦合,少用控制耦合,限制公共环境 耦合的范围,完全不用内容耦合。 4.4.2 内聚 七种内聚: 1. 偶然内聚 2. 逻辑内聚 3. 时间内聚 4. 过程内聚 5. 通信内聚 6. 顺序内聚 7. 功能内聚 信息内聚 4.4.2 内聚 1、偶然内聚(Coincidental Cohesion) 又称巧合内聚 当模块内各部分之间 没有联系,或者即使 有联系,这种联系也 很松散,则称这种模 块为偶然内聚模块。 它是内聚程度最低的 模块。 4.4.2 内

11、聚 2、逻辑内聚 (Logical Cohesion) 这种模块把逻辑相关 的功能组合在一起, 每次被调用时,由传 送给模块的判定参数 来确定该模块应执行 哪一种功能。 例如一个模块读取各 种不同类型外设的输 入。 4.4.2 内聚 3、时间内聚(Classical Cohesion) 时间内聚又称为经典内聚,或瞬时内聚(Temporal Cohesion) 。 这种模块大多为多功能模块,但模块的各个功能的 执行与时间有关,通常要求所有功能必须在同一时 间段内执行。 问题:一般在某个系统中什么模块会是时间内聚 的? 答案:程序的初始化模块和终止模块。 4.4.2 内聚 4、过程内聚(Proce

12、dural Cohesion) 如果一个模块内部的处理成分是相关的,而且这些处 理必须以特定的次序执行,则称为过程内聚。 使用流程图做为工具设计程序时,把流程图中的某 一部分划出组成模块,就得到过程内聚模块。例 如,把流程图中的循环部分、判定部分、计算部分 分成三个模块,这三个模块都是过程内聚模块。 问题:请大家举个生活中 必须遵照特定次序 的例 子? 答案:排队买饭( 队列,要求先进先出) 。 4.4.2 内聚 5、通信内聚 (Communication Cohesion) 如果一个模块内各功能部分都使用了相同的输入 数据,或产生了相同的输出数据,则称之为通信 内聚模块。 A 打印 报告1

13、打印 报告2 打印 B 存入 打印 C 修改 删除 打印 报告2 其他定义:如果一个模块的所有成分都操作同一 数据集或生成同一数据集 。 4.4.2 内聚 4.4.2 内聚 6、顺序内聚 (Sequence Cohesion) 这种模块要求各个成分顺序执行,并且通常上一个 输出是下一个输入。 读入编辑 A 数据 累加打印 B 结果 4.4.2 内聚 信息内聚 (Informational Cohesion) 模块多个功能在同一数据结构上操作,每一项功能 有一个唯一的入口点。由于这个模块的所有功能都 是基于同一个数据结构(符号表),因此它是一个 信息内聚的模块。 4.4.2 内聚 7、功能内聚

14、(Functional Cohesion) 一个模块中各个部分都是完成某一具体功能必不可 少的组成部分,或者说该模块中所有部分都是为了 完成一项具体功能而协同工作,紧密联系,不可分 割的。则称该模块为功能内聚模块。 4.4.2 内聚 内聚度 设计内聚原则: 设计时应力争做到高内聚,并且能够辨认出低内聚的模块, 并采取措施进行修改,以提高模块的内聚程度、降低模块间 的耦合程度,从而获得较高的模块独立性。 4.5 图形工具 层次图 HIPO图 结构图 4.5.1 层次图 也称H图 是在总体设计阶段最常使用的图形工具之一,它常 用于描绘软件的层次结构。层次图中的每个方框代 表一个模块,方框间的连线表

15、示模块间的调用关 系。 4.5.2 HIPO图 由H图和IPO 图两部分组成 4.5.3 结构图 4.5.3 结构图 结构图中的每个方框代表一个模块,框内注明 模块的名字或主要功能;方框之间的箭头(或 直线)表示模块间的调用关系。 在结构图中通常还用带注释的箭头表示模块调 用过程中模块之间传递的信息。 注释箭头尾部是空心圆表示传递的是数据。 注释箭头尾部是实心圆则表示传递的是控制信息。 4.5.3 结构图 大学职业介绍系统 4.5.3 结构图 模块 模块用矩形框表示,并用模块的名字标记它。 4.5.3 结构图 模块的调用关系和接口 模块之间用单向箭头联结,箭头从调用模块指向被 调用模块,表示调

16、用模块调用了被调用模块。 4.5.3 结构图 条件调用 循环调用 4.5.3 结构图 4.6 面向数据流的设计方法 目标是给出设计软件结构的一个系统化的途 径。 面向数据流的设计方法定义了一些不同的“映 射”,利用这些映射可以把数据流图变换成软 件结构。 通常所说的结构化设计方法,也就是基于数据 流的设计方法。 4.6.1 概念 面向数据流的设计方法把数据流映射成软件结 构,数据流的类型决定了映射的方法。 数据流有两种类型: 变换流 事务流 图:变换流 54 图:事务流 图:混合型 整体? 中间? 2021-7-13 目标系统的DFD SC 图 - Structured Chart 该图常用来

17、表示系统的软件结构。利 用它可以清楚地表达软件结构中模块间的 层次调用关系和模块之间的联系。 SD 目标系统的SC 2021-7-13 A SC 图中的主要内容图中的主要内容 1、模块-在SC图中用矩形框表示,并用名字来标记它 - 模块调用关系 2、模块的调用关系和接口 B 被调用模块 调用模块 A(查询学生) B(查找学生记录) 数据信号 控制信号学 号 查找 成功 信号 - 模块间接口的表示 2021-7-13 产生最佳解产生最佳解 得到好的输入得到好的输入计算最佳解计算最佳解输出结果输出结果 读输入读输入编辑输入编辑输入 好输入 好 输 入 解 解 原始 输入 原始 输入 编辑 结果 结

18、果格式化结果格式化显示结果显示结果 解 格式化 的解 SC 图的一般格式图的一般格式 2021-7-13 1、在系统结构图中的模块 一、典型的系统一、典型的系统结构形式结构形式 原子模块: 在系统结构图中通常是指不能再分割的 底层模块 完全因子分解系统 如果一个软件系统,它的全部实际加工 (即数据计算或处理)都是由底层的原子模块来 完成,而其它所有非原子模块仅仅执行控制或 协调功能。 2021-7-13 传入模块 A A 传入模块 从下属模块取得数据,进行某些处理,再将其结果 传给上级模块。在此,将它传送的数据流称为逻辑输入 数据流。 在系统结构图中有四种类型的模块: 逻辑输 入数据流 成绩录

19、入成绩录入 2021-7-13 传出模块 从上级模块获得数据,进行某些处理,再将其结果 传给下属模块。在此,将它传送的数据流称为逻辑输出 数据流。 传出模块 D D 逻辑输 出数据流 成绩输出成绩输出 2021-7-13 变换模块 也叫加工模块。它是从上级模块获得数据,进行 特定的处理,将其转换为其他形式,再传回上级模块 它所加工的数据流叫做变换数据流。 变换模块 CB 变换 数据流 2021-7-13 协调模块 对所有下属模块进行协调和管理的模块。在一个 好的系统结构图中,协调模块应在较高层出现。 协调模块 YX YX 2021-7-13 2、典型的系统结构形式之一(变换型系统结构图) 取得

20、 数据 i aeo 变换 数据 给出 数据 传入部分变换中心传出部分 - 具有变换型数据流图 2021-7-13 主模块 C变换成D取得C给出D 取得BB变换成CD变换成E给出E 取得AA变换成B A AB B B C C DC D ED 取得 数据 CD 变换 数据 给出 数据 协调模块 变换模块传出模块 - 具有变换型系统结构图 DFD-SC 传入模块 2021-7-13 3、典型的系统结构形式之二(事务型系统结构图) “事务” 引起、触发或启动某一 动作或一串动作的任何数据 、控制信号、事件或状态的 变化。 由它接受一项事务,根据事务处理的特点和性质 选择分配一个适当的处理单元,然后给出

21、结果。 2021-7-13 输入 - 事务型 数据流图 ABC D E F G H 中心变换 输出 逻辑 输入 物理 输入 逻辑 输出 物理 输出 2021-7-13 ABC D E F G H MT 3 逻辑输入逻辑输出 C DC D,E,F - 事务型 数据流图(DFD) - 事务型 系统结构图(SC) 2021-7-13 事务中心 输入已分 析的作业 内部表示 的作业 结果 - 事务型系统结构(层次)图 输出结果 调度 作业 信息 读入作业分析作业事务1事务2事务3事务4 操作2操作3 操作4 操作5操作6操作1 细节2细节3 细节4 细节5细节6细节1细节7 结果 2021-7-13

22、-简化的事务型系统结构图 事务中心 得到作业 作业 结果 输出结果 分析 调度 事务1事务2事务3 2021-7-13 二、从二、从 DFD 图导出图导出 SC图的步骤图的步骤 开 始 细化修改SRS中 的DFD图 判断DFD图的结构类型 是变换型吗? F 事务分析变换分析 完善SC 图 T 对最终的SC 图进行评审 结束 2021-7-13 1、变换分析-是将具有变换型的DFD图导出SC图 2021-7-13 在 图上标出逻辑输入、逻辑输出和变换中心的分界 ab dv r p 变换中心变换中心 c,e 逻 辑输入 w,u 逻 辑输出 - 具有变换型数据流图 2021-7-13 完成第第一级分

23、解 ab v r p de Mc MAMTME C,e C,eU,w U,w 变换中心变换中心 顶层 第一层 第一级分解后的 SC 图 协调模块 YX YX 2021-7-13 ab v r p de 第一级分解后的 SC 图(另一种画法) Mc MA1ME1 C e U MA2QPRME2 e c,p p r r w,u w 2021-7-13 完成第第二级分解 ab v r p de MA 变换中心变换中心 对逻辑输入的分解 CE B A D a bd e c c b a ABC MA ED d e 逻辑输入模块的调用与执行过程 2021-7-13 MA CE B A D a bd e c

24、 MA Get CGet E BtoC AtoB DtoE a e c ReadDGet B Read A c,e a b bb c d e 2021-7-13 ab v r p de ME 变换中心变换中心 对输出的分解 WU V v u w MT QPR e C,p r U,w 对变换中心加工的分解 p r w,u 2021-7-13 MA C B A E D MT QPR 从变换分析导出的初始 SC 图 ME WU V MC c, eW,u W,uC,e 获得完整的 图 2021-7-13 运用变换分析方法建立系统的SC时需注意以下几点: 2021-7-13 主模块主模块 ABC A1A

25、2A3 A11A12A13 2021-7-13 低 功能 内聚 信息 内聚 通信 内聚 过程 内聚 时间 内聚 逻辑 内聚 巧合性 内聚 高 强弱 内聚性 模块独立性 低 非直接 耦合 数据 耦合 标记 耦合 控制 耦合 外部 耦合 公共 耦合 内容 耦合 高 弱 强 耦合性 模块独立性 具有高内聚低耦合的模块 才是模块独立性比较强的模块。 2021-7-13 具有高内聚低耦合的模块 才是模块独立性比较强的模块。 模块A 模块D模块C 模块B 非直接 耦合 通过参数通过参数 传递传递数据数据 ( (数据耦合数据耦合) ) 通过参数表通过参数表 传递传递数据结构数据结构 ( (标记耦合标记耦合)

26、 ) 具有松散型 的耦合类型 2021-7-13 请将上列给出的具有变换型的DFD图导出它的SC图 a1 a2 b1 c1c1 p1 P2 2021-7-13 2、事务分析-是将具有事务型的DFD图导出SC图 事务中心 事务源 2021-7-13 主模块 给出H取得ALMN A G H B E C F D 2021-7-13 发送部分 书库 保管员 F2 F1F5F6 F7 2021-7-13 发送部分 - 采购子系统的 SC 图 - 2021-7-13 三、软件模块结构的改进三、软件模块结构的改进 一、 模块 功能 的完 善化 2021-7-13 二、 消除重复功 能,改善软 件结构。 消除

27、重复功能,改善软件结构 完全相似:在结构上完全相似,可能只是在数据类 型上不一致。此时可以采取完全合并的方法。 局部相似:找出其相同部分,分离出去,重新定义 成一个独立的下一层模块。还可以与它的上级模块 合并。 2021-7-13 物理 输入 相似 部分 相似模块的各种合并方案的示意图 2021-7-13 三、 模块的作用范围应 在控制范围之内。 如果一个判定的作用范围包含在这个判定所在模块如果一个判定的作用范围包含在这个判定所在模块 的控制范围之内,则这种结构是简单的,否则,它的控制范围之内,则这种结构是简单的,否则,它 的结构是不简单的。的结构是不简单的。 2021-7-13 2021-7

28、-13 一个模块的作用范围,是指受这个模块中的 判定所影响的模块 。 关于模块的作用范围/控制范围的关系示意图 2021-7-13 理想的情况,应该使判定的作用范围和判定所在模块的控制范围 尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。 对于一个理想 SC图 中的模块设计, 所有受到 一个判定影响的模块应该 都从属该判定所在的模块 ,最好位于作出判定的那 个模块本身及它的直接下 属模块。 2021-7-13 计算 实发工资 取得 工资数据 工人 实发工资 工人 实发工资 人员 实发工资 计时制 工资额 税收 扣款 薪金制 工资额 常规 扣款 编外人员 工资 编外人员 税款 编外人

29、员 扣款 2021-7-13 四、 尽可能地减少高扇 出结构,随着深度 增大扇入。 扇入:指模块的上级模块数。 (即共有多少个模块需要 调用这个模块) 扇出:指模块调用其下属模块 数目。 调用的下属模块数应控制在 小于3-4个模块。 2021-7-13 P P1P2 Q1Q2Q3 Q 一个 设计得好的软件模块结构,通常上层扇出比较高,中间层扇出 较少,底层扇入到有高扇入的公用模块中。 2021-7-13 五、 模块的大小要 适中。 模块的大小,可以用模块中所含 语句的数量的多少来衡量。把模 块的大小限制在一定的范围之内。 通常规定其语句行数在50100左 右,保持在一页纸之内,最多不超 过500行。 体积大的模块往往是由于分解不充分,因此可以对功能进一步分 解,生成一些下级模块或同级模块。反之,对于体积过小的模块 也可以考虑是否可能与调用它的上级模块合并。 2021-7-13 六、应设计出功能可预测 的模块,但要避免过分受限制 的模块。 例如,A为不及格成绩处理模块,对于数组长度的使用限制,在成绩 处理中,由于要处理各班级人数不等,所以数组长度的定义应该随 着学生人数的不同而确定。 一个功能可预测的模块,不论内部处理细节如何, 但对相同的输入数据,总能产生同样的结果。但 是,如果模块内部蕴藏有一些特殊的鲜

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论