软件设计方法主要分为两个方面:1.概要设计 2.详细设计
概要设计:
一.软件设计的目标和任务
1.定义
将文字转化为结构图,根据用信息域表示的软件需求,以及功能和性能需求进行数据设计,系统结构设计,过程设计
2.软件设计过程
指定规范;软件系统结构的总体设计;处理方式设计;数据结构设计;可靠性设计;编写概要设计阶段的文档;概要设计评审
3.软件设计基础
(1) 自顶向下,逐步细化:对各个层次的过程细节和数据细节逐层细化
(2) 软件结构:程序的模块结构和数据结构
(3) 程序结构:树状结构,网状结构
(4) 结构图:反应程序模块之间的层次调用关系
(5) 抽象化:软件系统进行模块设计时,可有不同的抽象层次信息隐蔽
由结构图引出模块相关内容
二.模块
1.模块
2.模块之间的调用关系和接口
3.模块间的信息传递
4.模块调用
5.模块的独立性
(1).三个基本属性:
功能:描述该模块实现什么功能
逻辑:描述模块内部怎么做
状态:该模块使用时的环境和条件
(2).用耦合和模块内聚来度量模块独立性(高内聚,低耦合)
模块间的耦合:
- 非直接耦合:两个模块之间没有直接关系(弱耦合)
- 数据耦合(弱):一个模块访问另一个模块时,彼此之间是通过简单数据参数来交换输入输出信息
- 标记耦合(弱):一组模块通过参数表传递记录信息
- 控制耦合(中):一个模块通过传送开关,标志等控制信息明显地控制选择另一模块的功能
- 外部耦合(较强):模块与软件的外部环境相联系,一组模块都访问同一全局简单变量而不是同一全局数据结构
- 公共耦合(较强):一组模块都访问同一个公共数据环境
- 内容耦合:直接引用另一模块的内容
(3).模块内聚(理想状态高内聚)
- 功能内聚:模块的各个部分是不可分割的
- 信息内聚:各个功能都能在同一数据结构上操作,按顺序尽心,每一项功能有一个唯一的入口点
- 过程内聚:使用流程图作为工具设计程序时,把流程图中的某一部分划出组成模块
- 时间内聚:通常要求所有功能必须在同一时间段内执行
- 逻辑内聚:若干个逻辑功能相同的模块组成
- 巧合内聚:模块各部分之间没有联系,及时有联系也很松散