软件设计是从软件需求规格说明出发,形成软件的具体设计方案的过程,也就是说在需求分析阶段明确软件是“做什么”的基础上,解决软件“怎么做”的问题。结构化设计方将把软件设计分为概要设计和详细设计两个阶段。概要设计的主要任务是,通过分析需求规格说明对软件进行功能分解,确定软件的总体结构;详细设计阶段确定每个模块功能所需要的算法和数据结构,设计出每个模块的逻辑结构。软件设计阶段结束时的工作成果是软件设计说明书,它描述软件系统的组成模块结、模块间的调用关系,以及每个模块的输入、输出和详细的过程描述 [3] 软件设计的基本目标是用比较抽象、概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径 [4] 从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计 [4] (1)结构设计定义软件系统各主要部件之间的关系 [4] (2)数据设计将分析时创建的模型转化为数据结构的定义 [4] (3)接口设计描述软件内部、软件和协作系统之间及软件与人之间如何通信 [4] (4)过程设计则把系统结构部件交换为软件的过程性描述 [4] (4)模块独立性 模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是信息隐蔽和局部化概念的自然扩展。一个模块的内聚性越强,则该模块的独立性越强。一个模块与其他模块的耦合性越强则该模块的独立性越弱 [4] 内聚性是度量一个模块功能强度的一个相对指标。内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。它们之间的内聚度由弱到强排列 [4] 耦合性是模块之间互相连接的紧密程度的度量。耦合性取决于各个模块之间接口的复杂度、调用方式及哪些信息通过接口。耦合可以分为下列几种:内容耦合、公共耦合、外部耦合,控制耦合、标记耦合、数据耦合、非直接耦合。它们之间的耦合度由高到低排列 [4] [1]  李霞主编,大学计算机基础,西安电子科技大学出版社,2016.12,第302-303页 [2]  谢职安,何芳,IT服务外包英语阅读教程 学生用书,知识产权出版社,2017.02,第114页 [3]  李莉主编,计算机软件技术基础,兵器工业出版社,2003.08,第241页 [4]   刘广峰,黄霞主编,计算机基础教程,华中科技大学出版社,2016.08,第116-117页 [5]  宋丕丞著,商业技术实验教程,首都经济贸易大学出版社,2018.03,第160页 [6]  刘伟主编,软件质量保证与测试技术,哈尔滨工业大学出版社,2011.12,第26页