总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计。
总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。

5.1 设计过程

总体设计过程

  • 系统设计阶段
  1. 设想供选择的方案(需求分析阶段得出的数据流图是总体设计的极好的出发点)
  2. 选取合理的方案(通常至少选取低成本、中等成本和高成本的3种方案)
    对每个合理的方案,分析员都应该准备下列4份资料。
    (1) 系统流程图。
    (2) 组成系统的物理元素清单。
    (3) 成本/效益分析。
    (4) 实现这个系统的进度计划。
  3. 推荐最佳方案
  • 结构设计阶段
  1. 功能分解(为确定软件结构,首先需要从实现角度把复杂的功能进一步分解)
  2. 设计软件结构(层次系统)
  3. 设计数据库
  4. 制定测试计划(在设计时注意提高软件的可测试性)
  5. 书写文档
    在这个阶段应该完成的文档通常有下述几种:
    (1)系统说明
    (2)用户手册
    (3)测试计划包括测试策略,测试方案,预期的测试结果,测试进度计划等
    (4)详细的实现计划
    (5)数据库设计结果
  6. 审查和复审(期末会检查)
    审查时团队内部做的,复查是客户做的

5.2 设计原理

【模块坏,耦合,内聚】

5.2.1 模块化

  • 模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件。
  • 模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

    随着模块数目增加,设计模块间接口所需要的工作量也将增加。虽然目前还不能精确地决定M的数值,但是在考虑模块化的时候总成本曲线确实是有用的指南。在第六章和5.3节讲解。

5.2.2 抽象

抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
软件工程过程的每一步都是对软件解法的抽象层次的一次精化。

  • 在可行性研究阶段,软件作为系统的一个完整部件;
  • 在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;
  • 当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;
  • 当源程序写出来以后,也就达到了抽象的最低层。

5.2.3 逐步求精

5.2.5 模块独立

模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。

  1. 耦合
    耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。
    模块耦合分为数据耦合、控制耦合、特征耦合、公共环境耦合和内容耦合
    【紧耦合要联合测试】
  2. 内聚
    内聚衡量一个模块内部各个元素彼此结合的紧密程度。
    内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。
    内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。
    内聚分为三大类低内聚、中内聚和高内聚

5.3 启发规则

【扇入和扇出】

  1. 深度、宽度、扇出和扇入都应适当
    深度:软件结构中控制的层数
    宽度:软件结构内同一个层次上的模块总数的最大值
    扇出:一个模块直接控制(调用)的模块数目
    扇入:一个模块被多少个上级模块直接调用的数目
  2. 模块的作用域应该在控制域之内
    作用域:受该模块内一个判定影响的所有模块的集合。
    控制域:模块本身以及所有直接或间接从属于它的模块的集合。

总体设计系统架构设计 总体设计和系统设计_课程总结

3. 力争降低模块接口的复杂程度

4. 设计单入口单出口的模块:避免全局变量,别人审核

5.4 描绘软件结构的图形工具

5.4.1 层次图和HIPO图

总体设计系统架构设计 总体设计和系统设计_总体设计系统架构设计_02


方便查文档。

总体设计系统架构设计 总体设计和系统设计_课程重点_03

5.4.2 结构图

总体设计系统架构设计 总体设计和系统设计_课程重点_04

5.5 面向数据流的设计方法

【明确的信息,数据流向的软件】

5.5.1 概念

  • 变换流
  • 事件流
  • 设计流

变换分析

事务分析

设计优化