(软件工程复习核心重点)第四章总体设计-第二节:设计原理

文章目录

  • 一:模块化
    • (1)模块
    • (2)模块化
    • (3)优点或作用
  • 二:抽象(了解)
  • 三:逐步求精
    • (1)定义
    • (2)MIller法则:注意力集中在(7 ± pm± 2)
  • 四:信息隐藏和局部化(了解)
  • 五:模块独立
    • (1)定义
    • (2)重要性
    • (3)模块耦合及其分类
      • A:定义
      • B:分类
      • C:设计原则
    • (4)模块内聚及其分类
      • A:定义
      • B:分类
  • 软件设计目标

一:模块化

(1)模块

模块:模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件。过程、函数、子程序和宏等,都可作为模块。面向对象方法学中的对象是模块,对象内的方法也是模块

(2)模块化

模块化:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。模块化是为了使一个复杂的大型程序能被人的智力所管理,是软件应该具备的唯一属性

(3)优点或作用

  • 使软件结构清晰,不仅容易设计也容易阅读和理解
  • 使软件容易测试和调试,有助于提高软件的可靠性
  • 提高软件的可修改性
  • 有助于软件开发工程的组织管理

二:抽象(了解)

抽象:抽出事物的本质特性而暂时不考虑它们的细节

三:逐步求精

(1)定义

逐步求精:逐步求精是软件工程技术的基础,为了能集中精力解决主要问题而尽量推迟对问题细节的考虑

(2)MIller法则:注意力集中在(7 ± pm ± 2)

这是对人类能力的研究得到的结果:一个人能力的极限也只能把注意力集中在7±2个信息块。这就像人弹跳的极限,人忍受肌饿的极限一样,是不可改变的客观因素。它很大程度上限制人的思维能力。这个法则被成为:Miller法则我更喜欢这样来描述这个法则:一个人的注意力的极限是集中注意力在7±2个事物上。我们知道,相比安静的环境,在吵闹的环境中,我们比较难以集中注意力,所以我这里使用“事物”来代替“信息块”,因为我不想把吵闹声成为信息。另外还有一种定义是:一个人在任何时候只能把注意力集中在(7±2)个知识块上。这说明了一个普通人(特异人士除外)能同时学习的能力是有限的,所以这个法则对于我们如何分配工作和学习的精力,也提供了很好的指导和参考

四:信息隐藏和局部化(了解)

信息隐藏:指一个模块内包含的信息对于不需要这些信息的模块来说是不能访问的,主要是指模块的实现细节

局部化:指把一些关系密切的软件元素物理地放得彼此接近,有助于实现信息隐藏

  • 在模块中使用局部数据元素是一个典型的例子

五:模块独立

(1)定义

模块独立:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。其质量标准是耦合和内聚

(2)重要性

  • 具有独立的模块的软件比较容易开发出来
  • 独立的模块比较容易测试和维护

(3)模块耦合及其分类

A:定义

耦合:是对一个软件结构内不同模块间互连程序的度量。耦合强度取决于模块接口的复杂程度、通过接口的数据等。耦合度越高,模块独立性越弱

B:分类

耦合度从低到高

  • 完全独立
  • 数据耦合
  • 特征耦合
  • 控制耦合
  • 外部耦合
  • 公共耦合
  • 内容耦合

完全独立:如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,则称它们彼此完全独立,耦合程度最低。但是,在一个软件系统中不可能所有模块之间都没有任何连接

特征耦合: 如果整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素,则称它们是特征耦合。在这种情况下,被调用的模块可以使用的数据多于它确实需要的数据,这将导致对数据的访问失去控制,从而给计算机犯罪提供了机会

外部耦合: 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合和公共耦合很像,区别就是一个是简单变量,一个是复杂数据结构

内容耦合: 内容耦合是最高程度的耦合,一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

(软件工程复习核心重点)第四章总体设计-第二节:设计原理

C:设计原则

  • 力求做到低耦合
  • 尽量使用数据耦合
  • 少用控制耦合特征耦合
  • 限制公共耦合的范围
  • 完全不用内容耦合

(4)模块内聚及其分类

A:定义

内聚:是用来度量一个模块内部各个元素彼此结合的紧密程度。内聚度越高,紧密程度越高

B:分类

内聚度从低到高。其中1-3属于低内聚;4-5属于中内聚;6-7属于高内聚

  1. 偶然内聚
  2. 逻辑内聚
  3. 时间内聚
  4. 过程内聚
  5. 通信内聚
  6. 顺序内聚
  7. 功能内聚

偶然内聚: 如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚。有时在写完一个程序之后,发现一组语句在两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块

逻辑内聚: 如果一个模块完成的任务在逻辑上属于相同或相似的一类, 则成为逻辑内聚

时间内聚: 如果一个模块包含的任务必须在同一段时间内执行,就叫时间内聚。时间关系在一定程度上反映了程序的某些实质,所以时间内聚比逻辑内聚好一些

过程内聚: 如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。使用程序流程图作为工具设计软件时,往往得到的是过程内聚的模块。

通信内聚: 如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚

顺序内聚: 如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,则称为顺序内聚。根据数据流图划分模块时,通常得到顺序内聚的模块

功能内聚: 如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。

软件设计目标

高内聚、低耦合

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月1日
下一篇 2022年1月1日

相关推荐