目录
-
-
- 总体设计概述
-
- 目的
- 任务
- 设计过程
- 设计原理
-
- 什么是模块是模块化li>
- 模块化的优点
- 模块化和软件成本
- 逐步求精
-
- 什么是逐步求精li>
- Miller法则
- 抽象
- 信息隐藏和局部化
-
- 什么是信息隐藏
- 信息隐藏的优点
- 模块独立
-
- 耦合
- 内聚(==内聚程度由低到高:偶-逻-时-过-通-顺-功==)
- 启发规则
- 面向数据流的设计方法
- 总结
- 本章练习
-
总体设计概述
目的
总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题。因此,总体设计又称为概要设计或初步设计。
任务
① 划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等(但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计)
② 总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
设计过程
总体设计过程通常由两个主要阶段组成
- 系统设计阶段(确定系统的具体实现方案)
- 结构设计阶段(确定软件结构)。
典型的总体设计过程包括以下9个步骤:
- 设想供选择的方案。需求分析阶段得出的数据流图是总体设计的极好的出发点(上一阶段的DFD在本阶段细化之后可以被下一阶段使用)。
- 选取合理的方案
- 推荐最佳方案
- 功能分解。功能分解导致数据流图的进一步细化,同时还应该用IPO图或其他适当的工具简要描述细化后每个处理的算法。
- 设计软件结构。通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块从而完成程序的一个子功能,最下层的模块完成最具体的功能。软件结构(即由模块组成的层次系统)可以用层次图或结构图来描绘。
- 设计数据库
- 制定测试计划
- 书写文档
- 审查和复审
设计原理
什么是模块是模块化h4>
答:模块是由边界元素限定的相邻程序元素序列,而且有一个总体标识符代表它。像C、C++和Java语言中的{…}对,都是边界元素的例子。按照模块的定义,函数、子程序都可作为模块。面向对象方法学中的对象是模块,对象内的方法也是模块。模块是构成程序的基本构件。
模块化就是把程序划分成为独立命名且可以独立访问的模块,每个模块完成一个子功能,把所有的模块集成起来构成一个整体,可以完成指定的功能,满足用户的需求。
模块化的优点
- 采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。
- 因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。
- 因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性。
- 模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。
模块化和软件成本
如果无限地分割软件,最后为了开发软件而需要的工作量就小得可以忽略了。上述结论不能成立,如下图,当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本确实减少了,但是随着模块数目增加,设计模块间接口所需要的工作量也将增加。根据这两个因素。得出了图中的总成本曲线。每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。
- 接收输入数据(输入数据又称为事务)
- 分析每个事务以确定它的类型
- 根据事务类型选取一条分支(活动通路)
66
总结
1、总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务。因此,总体设计阶段主要由两个小阶段组成。首先需要进行系统设计,然后进行软件结构设计。
2、在软件结构设计中,层次图和结构图是描绘软件结构的常用工具。
3、自顶向下逐步求精是进行软件结构设计的常用途径。但是,如果已经有了详细的数据流图,也可以使用面向数据流的设计方法,用形式化的方法由数据流图映射出软件结构。 应该记住,这样映射出来的只是软件的初步结构,还必须根据设计原理并且参考启发式规则,认真分析和改进软件的初步结构,以得到质量更高的模块和更合理的软件结构。(数据流图的作用 —— 软件结构设计)
本章练习
1、模块是构成程序的基本构件。
2、模块是构成程序的基本构件。
3、如果无限地分割软件,最后为了开发软件而需要的工作量就小得可以忽略了。(×)
4、数据耦合可有可无。(×)
(数据耦合是低耦合。系统中至少必须存在数据耦合,因为只有当某些模块的输出数据作为另一些模块的输人数据时,系统才能完成有价值的功能)
5、控制耦合通常可以被数据耦合代替。(√)
(控制耦合是中等程度的耦合,它增加了系统的复杂程度。控制耦合往往是多余的,在把模块适当分解之后 通常可以用数据耦合代替控制耦合。)
6、任何软件系统都可以用数据流图示。(√)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!