总体设计

学习

   阅读量:  

设计过程

总体设计阶段主要由系统设计结构设计两阶段 组成

image-20221226160640589

设计原理

  • 模块化

    • 模块化就是把程序划分成独立 命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求
  • 抽象化(Abstraction)

    • 软件工程过程的每一步都是对软件解法的抽象层次的一次精化
  • 自动化(Automation)

  • 逐步求精

    • 通过逐步分解对功能的宏观陈述而开发出层次结构,直至最终得出用程序设计语言表达的程序
  • 信息隐藏与局部化

    • 使一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的
  • 模块独立

内聚与耦合

耦合关系

image-20221104231902539

  • 数据耦合:两个模块彼此间通过参数交换信息,低耦合,尽量使用,main(){sum(x,y)}
  • 控制耦合 :传递的信息中有控制信息,中等耦合,少用
  • 标记,特征耦合 :当把整个数据结构作为参数传递,只需要使用其中一部分数据元素时,就出现了特征耦合,少用
  • 外部耦合:一组模块都访问同一环境联接(访问同一I/O)
  • 公共环境耦合 :当两个或多个模块通过一个公共数据环境(全局数据结构,内存共享区)相互作用,送取data,介于数据耦合与控制耦合之间,限制范围(一读一写)
  • 内容耦合:模块访问另一个模块的内部数据,或模块有多个入口 ,最高程度耦合,应该坚决避免使用内容耦合
    • root.m2.m1input = this.value;

内聚

4d32ae48c0ed6d6d35daf0610dca7c63.png

5ea223be79f3d3d4b7ecc8bd4510a36.jpg

启发规则

  • 改进软件结构提高模块独立性
  • 模块规模应该适中
  • 深度、宽度、扇出和扇入都应适当
    • 深度:软件结构中控制的层数
    • 宽度:软件结构内同一个层次上的模块总数的最大值
    • 扇出:一个模块直接控制(调用)的模块数目
    • 扇入:一个模块被多少个上级模块直接调用的数目
  • 模块的作用域应该在控制域之内
    • 作用域:受该模块内一个判定影响的所有模块的集合。
    • 控制域:模块本身以及所有直接或间接从属于它的模块的集合。
  • 力争降低模块接口的复杂程度
  • 设计单入口单出口的模块
  • 模块功能应该可以预测

描绘软件结构的图形工具

层次图

层次图用来描绘软件的层次结构。与数据结构的层次方框图相同,但是表现的内容却完全不同。层次图很适于在自顶向下设计软件的过程中使用。

image-20221226164417872

HIPO图

为了能使HIPO图具有可追踪性,在H图(层次图)里除了最顶层的方框之外,每个方框都加了编号

image-20221226164453773

Yourdon图

一个方框代表一个模块,框内注明模块的名字或主要功能; 方框之间的箭头(或直线)表示模块的调用关系。尾部是空心圆表示传递的是数据实心圆表示传递的是控制信息

image-20221104232041440

☆面向数据流的设计方法

用形式化的方法由数据流图映射出软件结构

面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流有下述两种类型

  • 变换流,一条变换链,输入流+变换流+输出流
  • 事务流,先确定事务类型,多条事务处理链,事务中心+活动通路

image-20221226171301726

变换分析

  • 一级分解

  • image-20221226171440211
  • 二级分解

    • image-20221226171818019

事务分析

image-20221226171957213
Licensed under CC BY-NC-SA 4.0
最后更新于 Dec 28, 2022 23:33 +0800