软件工程复习 第五章

第五章 结构化设计

  • 目标

    • 回答系统应该“怎么做”这个问题。
  • 意义

    • 软件设计在软件开发过程中处于核心地位,它是保证质量的关键步骤。

    • 设计为我们提供了可以用于质量评估的软件表示、

    • 设计是我们能够将用户需求准确地转化为软件产品或系统的唯一方法

    • 软件设计是所有软件工程活动和随后的软件支持活动的基础。

    • 软件设计是一个迭代的过程,通过设计过程,需求被变换为用于构建软件的“蓝图”。

  • 良好设计演化的三个特征

    • 设计必须实现所有包含在分析模型中的明确需求,而且必须满足用户期望的所有隐含需求。

    • 对于程序员、测试人员和维护人员而言,设计必须是可读的、可理解的指南。

    • 设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域。

    • 以上每一个特征实际上都是设计过程应该达到的目标。

  • 原则

    • 模块化

      • 模块是数据说明、可执行语句等程序对象的集合,是构成程序的基本构件,可以被单独命名并通过名字来访问。在面向过程的设计中,过程、函数、子程序、宏都可以作为模块;在面向对象的设计中,对象是模块,对象中的方法也是模块。

      • 模块化就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。模块集成起来可以构成-一个整体,完成特定的功能,进而满足用户需求。

      • 模块的公共属性:

        • 接口:指模块的输入、输出。

        • 功能:指模块的逻辑功能。

        • 状态:指模块的运行环境,即模块的调用和被调用关系

        • 逻辑:描述内部如何实现要求的功能及所需的数据。

内聚的分类

内聚的种类由紧到松(越紧越好)依次为:

  1. 功能内聚:指模块内的所有元素共同作用完成一个功能,缺一不可。

  2. 顺序内聚:指一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一个功能元素的输入。

  3. 通信内聚:指模块内所有处理元素都在同一个数据结构上。

  4. 过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。

  5. 瞬时内聚:把需要同时执行的任务或动作组合在一起(如初始化模块)。

  6. 逻辑内聚:模块完成逻辑上相关的一组任务。

  7. 偶然内聚:指一个模块内的各处理元素之间没有任何联系或有松散的联系。

耦合的分类

耦合的种类从高到低(越低越好)依次为:

  1. 内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时,这种耦合关系就是内容耦合。

  2. 公共耦合:指一组模块访问一个公共数据环境,如全局数据结构。

  3. 外部耦合:指一组模块访问一个公共变量,这里指基本数据类型而不是数据结构(或者说对象)。

  4. 控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值选择执行模块内某一功能。那么也就是说,被调用的模块应具有多个功能。

  5. 标记耦合:耦合模块之间以数据结构传递(比如在 java 程序中,传递的就是一个对象)。

  6. 数据耦合:耦合模块之间有调用关系,传递的是简单数据类型的值(比如在 java 程序中,传递的就是一个基本数据类型的值)。

  7. 无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。


软件工程复习 第五章
2023/02/07/subject/software_project/chapter5/
作者
charlesix59
发布于
2023年2月7日
许可协议