目录
(填空) 总体设计过程通常由两个主要阶段组成,系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。典型的总体设计过程包括9个步骤:设想供选择的方案、选取合理的方案、推荐最佳方案、功能分解、设计软件结构、设计数据库、指定测试计划
1. 软件设计步骤(填空)
从工程管理的角度来看,软件设计分两步完成;总体设计(概要设计)和详细设计两个阶段。
2. 软件设计阶段任务(填空)
1、划分模块,确定软件结构
开发方法不同,确定软件结构的方法也不同。例如SD法,是从分层的DFD图导出初始的结构图,再对初始的结构图进行改进,获得最终的结构图。
一般包括确定系统的软件结构,分解模块 ,确定系统的模块层次关系。
2、确定系统的数据结构
数据结构的建立对于信息系统而言尤为重要。要确定数据的类型,组织、存取方式,相关程度及处理方式等。
3、确定模块内部的算法
4、设计用户界面
作为人机接口的用户界面起着越来越重要的作用,它直接影响到软件的寿命。
3. 软件设计过程(填空)
1、设想供选择的方案
2、选取合理的方案
3、推荐最佳方案
4、功能分解
5、设计软件结构
6、设计数据库
7、制定测试计划
8、书写文档
9、审查和复审
3. 什么是模块化(名词解释)(降低系统复杂度)
模块是由边界元素限定的相邻程序元素的序列
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
3.1 模块化的目的——将系统
3.2 模块化的好处——提升开发效率
4. 抽象
人类在认识复杂现象的过程中使用最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似性的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。
5. 逐步求精
逐步求精是人类解决复杂问题时采用的基本方法也是许多软件工程技术的基础。
6. 信息隐蔽和局部化——提升内聚性、独立性
信息隐藏指出,应该设计和确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。
局部化是指把一些关系密切的软件元素物理地放得彼此靠近。
7. 模块独立性如何衡量(名词解释)
独立性强的,高内聚低耦合
模块独立性是指软件系统中每个模块只涉及软件要求的具体的子功能。模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口最简单。衡量模块独立性的标准是耦合性和内聚性。(低耦合高内聚)
7.1 耦合
7.1.1 概念
耦合是对一个软件结构内不同模块之间互连程度的度量(耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。)
7.1.2 类型
- 内容:两个部分内容重合/共用,一个模块直接访问另一模块的内部数据。
一个模块不通过正常入口转到另一模块的内部。
一个模块有多个入口。
两个模块有部分代码重迭。 - 公共:若一组模块都访问同一个公共数据环境
- 特征:把整个数据结构作为参数传递,而被调用的模块只需要其中一部分数据元素。
- 控制:若一个模块通过传送开关、标志、名字等信息,明显的控制选择另一模块的功能。
- 数据:若两模块之间通过参数传递信息,信息仅限于数据参数而非控制参数。
- 非直接:若模块间没有直接关系,都能不依赖对方独立工作。
耦合
由高到低
7.2 内聚
7.2.1 概念
内聚标志着一个模块内各个元素彼此结合的紧密程度(内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度量模块间的联系。)
7.2.2 类型
-
偶然:模块内各部分之间没有联系。
-
逻辑:这种模块把几种相关的功能组合在一起,由传送模块的判定参数来确定应执行哪一种功能。
-
时间: 模块内的诸任务必须在同一时间内完成(如初始化模块)。
低级内聚 -
过程:模块内各部分之间彼此相关,且必须按特定的次序执行。
-
通信:模块内各成分都对数据结构的同一区域进行操作
中级内聚 -
顺序:一个模块内各处理成分均与某一具体功能相关,且各处理成分必须顺序执行。
-
功能:一个模块内各成分都是完成某一具体功能必不可少的组成部分。
高级内聚
内聚
由弱到强
8. 启发性规则(理解)(判断题)
模块数目越多越好(错误)
模块数目越少越好(错误)
规模适中(正确)
降低模块接口复杂程度,有助于提高模块独立性(正确)
作用域应该在控制域之内(正确)
- 一个模块内各成分都是完成某一具体功能必不可少的组成部分
- 深度、宽度、扇入和扇出都应适中
- 力争降低模块接口的复杂程度
- 模块规模应该适中
- 模块的作用域应该在控制域之内
- 设计单入口单出口的模块
- 模块的功能应该可以预测