重点掌握软件设计的概念、过程、软件设计的基本原理等。
1.软件设计的基本概念
软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。从工程管理的角度来看,软件设计分两步完成(概要设计和详细设计)。
概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。
详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。
2.软件设计的基本原理
(1)抽象
抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。
(2)模块化
模块是指把一个待开发的软件分解成若干小的简单的部分。每个模块可以完成一个特定的子功能,各个模块可以按一定的方法组装起来成为一个整体,从而实现整个系统的功能。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
(3)信息隐蔽
信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。
(4)模块独立性
模块独立性是指每个模块只完成系统要求的独立的子功能,且与其他模块的联系最少、接口简单。
模块的独立程度是评价设计好坏的重要度量标准。通常从耦合性和内聚性两个度量标准衡量软件的模块独立性。
①
内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系。一个模块的内聚性越强则该模块的模块独立性越强。
在各种内聚性中,内聚性由弱到强的是:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
②
耦合性是模块间互相连接的紧密程度的度量。一个模块与其他模块的耦合性越强则该模块的模块独立性越弱。
在各种耦合性中,耦合度由高到低的顺序是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。
总之,耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
3.概要设计
概要设计的基本任务是:对系统进一步分解,划分模块及确定模块的层次结构。
4.详细设计
详细设计的任务,是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
常用的工具有程序流程图、N-S图、PAD图、过程设计语言(PDL)等。