软件制造工程期末复习知识点汇总(二)——软件设计基本概念

总体设计

(对应软件生命周期软件开发时期的总体设计阶段)

总体设计的过程由两个主要阶段组成:

  1. 系统设计阶段,确定系统的具体实现方案
    + 设想供选择的方案
    + 选取合理的方案
    + 推荐最佳方案
  2. 结构设计阶段,确定软件结构,模块划分、模块之间的调用关系
    + 功能分解
    + 设计软件结构
    + 设计数据库
    + 制定测试计划
    + 书写文档
    + 审查和复审

设计原理(原则):模块独立原理

  1. 模块化(箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块)
    + 模块调用关系
    在这里插入图片描述
    + 模块间接口的表示
    在这里插入图片描述
  2. 抽象
  3. 逐步求精
  4. 信息隐藏和局部化
  5. 模块独立

模块独立程度的两个定性标准度量

  1. 耦合(耦合要低,不同模块互相依赖的紧密程度)
    + 非直接耦合/完全独立
    在这里插入图片描述
    + 数据耦合(两个模块交换的信息仅仅是数据,尽量使用
    在这里插入图片描述
    举例:函数调用时,调用者传递实际参数
    在这里插入图片描述
    + 控制耦合(传递的信息中有控制信息,少用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    修改控制耦合为数据耦合:
    在这里插入图片描述
    + 特征耦合(整个数据结构作为参数传递,少用
    在这里插入图片描述
    改为数据耦合:
    在这里插入图片描述
    + 公共环境耦合(多个模块通过一个公共数据环境相互作用,限制范围
    在这里插入图片描述
    + 内容耦合(最高程度的耦合,完全不用
    在这里插入图片描述
    + 总结:
    在这里插入图片描述
  2. 内聚(内聚要高,模块内部各元素结合的紧密程度)
    + 偶然内聚(各元素之间没有实质性联系)
    在这里插入图片描述
    + 逻辑内聚(完成的任务在逻辑上属于相同或相似的一类)
    在这里插入图片描述
    分解:
    在这里插入图片描述
    + 时间内聚(一个模块包含的任务必须在同一段时间内执行)
    + 过程内聚(一个模块内的处理元素是相关的,而且必须以特定次序执行)
    在这里插入图片描述
    + 通信内聚(模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据)
    在这里插入图片描述
    + 顺序内聚(模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行)
    在这里插入图片描述
    + 功能内聚(模块内所有处理元素属于一个整体,完成一个单一的功能,最高程度的内聚模块可重用
    + 总结
    在这里插入图片描述

启发规则

  1. 模块功能应该可以预测
    **功能可预测:**如果一个模块可以当做一个黑盒子,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。
  2. 力争降低模块接口的复杂程度
  3. 设计单入口单出口的模块
  4. 模块规模应该适中(通常规定50~100行语句,最多不超过500行)
  5. 改进软件结构提高模块独立性
  6. 模块的作用域应该在控制域之内
    模块的作用域:定义为受该模块内一个判定影响的所有模块的集合。
    模块的控制域:是这个模块本身以及所有直接或间接从属于它的模块的集合。
  7. 深度宽度扇出扇入都应适当
    深度:软件结构中控制的层数
    宽度:同一个层次上的模块总数的最大值
    扇出:一个模块直接控制(调用)的模块数目。
    扇入:有多少个上级模块直接调用它。

总结:

  1. 总体设计阶段的基本目的
    用比较抽象概括的方式确定系统如何完成预定的任务
  2. 总体设计阶段的两个小阶段
    系统设计(完成系统功能的物理方案)
    软件结构设计(模块划分、模块之间的调用关系)
  3. 进行软件结构设计时要遵循的主要的原理
    模块独立原理
  4. 进行软件结构设计时的一种有效方法
    从抽象到具体地构造出软件的层次结构
  5. 启发式规则
  6. 软件结构设计的常用途径
    自顶向下逐步求精
  7. 在详细设计和编码之前进行结构设计的好处
    在软件开发早期站在全局高度对软件结构进行优化,可以使软件质量得到重大改进,而代价却不高。
发布了21 篇原创文章 · 获赞 0 · 访问量 391

猜你喜欢

转载自blog.csdn.net/qq_41800649/article/details/103224710