第3章 软件总体设计

发布于 2021-03-29  30 次阅读


  1. 总体(概要)设计的目的与任务

基本任务:是"系统如何实现应该如何做?"

内容:是一个将软件需求转换成软件具体表示的过程。

黑盒子。

任务:模块相互间的关系。

  • 总体设计之源是软件需求。

总体设计过程

系统设计:

1)设想供选择的方案

数据流图DFD是总体设计的极好出发点。

2) 系统架构设计

根据系统需求框架,确定系统的基本结构

3)选取合理的方案

从成本角度考虑问题定义和可行性分析工程规模和实现目标。

  1. 系统流程图
  2. 组成系统的物理元素清单;
  3. 成本/效益分析;
  4. 实现这个系统的进度计划

4)推荐最佳方案

分析利弊;并制定详细的实现计划和规范。

结构设计:

5)制定规范

6)功能分解

结构设计

过程设计

结构设计是总体设计阶段的任务。过程设计是详细设计阶段的任务。

7)设计软件结构

功能的层次结构建立软件结构(SC图)

  • 按照功能划分成模块的层次结构
  • 确定模块功能,并对功能进行说明
  • 建立与软件需求之间的联系(有效性)
  • 模块间的调用关系、接口

DFD细化道适当的层次。

8)可靠性设计

  • 质量设计
  • 特点:易于修改维护

9)设计数据库

系统数据模型(E-R图)

10)指定测试计划

验证软件正确性和有效性的关键。(需求阶段指定的测试问题)

11)书写文档:

  1. 系统说明书
  2. 用户手册
  3. 测试计划
  4. 详细的实现计划
  5. 数据库的设计结构

12)审查和复审

总体设计结构进行严格的技术审查;

可追溯性、结构、风险、实用性、技术实现的清晰度、可维护性、质量保证。

软件总体设计的重要性:是后续开发步骤及软件维护工作的基础;

3.2软件总体设计原理

3.2.1 设计原理

1.抽象——人的基本技能

2.模块化

“组件”

  • 功能
  • 逻辑
  • 状态

外部特性;

接口

内部特性

代码+数据

过程、函数、子程序、宏定义都可以作为模块

模块是构成程序的基本构件

作用:可独立访问的模块——每个模块仅仅完成一个功能

逐步求精:(迭代求精)

模块的独立性(精通掌握)

模块独立性的定性度量:

  • 模块之间的耦合性

耦合性越低,模块独立性越强;

数据耦合是低耦合;有控制信息,控制耦合。

  • 模块自身的内聚性

  • 整合数据结构作为参数出阿迪,特征耦合。

  • 通过公共数据环境。公共数据耦合。少用。

  • 最高程度耦合,内同耦合

最不好的耦合形式。

有多个入口,则说明有多种功能。

如何降低模块间的耦合:

(1)尽量使用数据耦合

少用控制耦合

限制公共耦合的范围

坚决避免使用内同耦合

(2)降低接口的复杂性

  1. 内聚性

高对高

低对弱

  • 模块的内聚更重要

(1)巧合内聚

(2)过程内聚(顺序性组合)/分解

(3)通信内聚

(4)信息内聚(内聚性较高)

强内聚,弱耦合

3.2.2 启发规则

经验+技巧

  1. 改进软件结构提高模块独立性
  2. 模块的规模应该适中
  3. 深度、宽度、扇出(一个模块直接调用的模块的数目。)和扇入(一个模块有多少个上级模块直接调用它)都应适当。
  4. 模块的作用域应该在控制域之内
  5. 力争降低模块接口的复杂度
  6. 设计单入口/单出口的模块
  7. 模块功能应该可以预测
  8. 软件包应该满足设计约束和可移植性

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

3.3.1 层次图和HIPO图

3.3.2 软件结构图

功能:与层次图类似。

条件选择调用。

循环调用。

3.4 映射数据流到软件结构

从细化后的DFD出发,映射数据流是建立软件结构系统化途径。

  • 信息流是一个关键考虑,DFD描述信息在系统中加工和流动
  • 任何软件都可以用DFD表示
  • 信息流的类型决定了映射办法——变化流和事务流

3.4.1 变换流

定义:是信息通过输入、进行处理得到的信息。

3.4.2 事务流

这类数据流是一类特殊数据流。

3.4.3 变换映射(变换分析)

变换分析是一系列软件设计步骤的总成

(1)复查基本系统模型(顶层模型)

(2)复查并细化数据流图

(3)确定dfd具备的变化特性是变换特性还是事务特性

(4)确定边界

(5)完成“第一级分解”

(6)第二层分解。

(7)使用模块设计度量准则和启发规则对前几次结构进一步精化或迭代。

3.4.4 事务映射

对“做什么”进行详细设计

  • 对高层模块采用以事务为中心的设计策略
  • 对底层模块采用以变换为中心的设计策略

3.4.5 设计优化——精化软件结构

在设计早期阶段尽量对软件结构精化。

优化设计的结果:

  • 在有效的模块化的前提下使用最少量的模块
  • 在能够满足信息要求的前提下使用最简单的数据结构。

3.5 数据库设计过程

需求分析:将业务中的单、证、表流转化成数据流,划分主体之间的边界。DFD图,完成数据字典;

概念设计:从DFD出发,绘制本主题的E-R图,并列出各个实体与关系的纲要表。

逻辑设计:

物理设计:

加载测试:

总结

  • 总体设计阶段基本目的是用比较抽象概括的方式确定系统如何完成预定的任务。
  • 总体设计阶段:系统统计,结构设计。层次图,结构图。

擦肩而过的概率