文档介绍:高级软件工程
软件设计
软件设计的基本目的就是回答“系统应该如何实现?”。
软件设计的任务,就是把分析阶段产生的软件需求说明转换为用适当手段表示的软件设计文档。
不管采用何种软件设计方法,软件设计一般都包括数据设计、体系结构设计、接口设计和过程设计(或称构件级设计)等设计活动。
软件设计的过程和目标:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计。
在每个设计活动中,软件开发者产生软件的数据设计模型、体系结构设计模型、接口设计模型和过程设计模型。
软件设计过程最终目标是产生一个设计规约,该规约包括描述数据、体系结构、接口和构件的设计模型。
体系结构设计
定义软件主要结构性元素之间的关系。
体系结构设计表示(即基于计算机的系统的框架)可以从系统规约、分析模型以及分析模型中所定义子系统的交互导出。
数据设计
将分析阶段创建的信息模型转变成实现软件所需的数据结构。
部分数据设计可能和软件体系结构的设计同时发生,但更详细的数据设计活动则会发生在每个具体软件构件(或模块)设计的时候。
接口设计
描述软件内部模块之间以及软件与人之间是如何通信的(包括数据流和控制流)。
一个接口意味着特定信息流(如数据流和/或控制流)以及行为类型,因此,数据和控制流图提供了接口设计所需的信息。
构件级设计
将软件体系结构的结构性元素转变成对软件构件的过程性描述,即描述软件构件的详细内部设计细节。
软件设计非常重要,它将最终影响软件构造是否成功、最终软件的质量以及软件维护的难易程度。
软件设计为我们提供了可以用于质量评估的软件表示,设计是我们能将用户需求准确地转化为完整的软件产品或系统的唯一方法。
软件设计是所有软件维护步骤的基础。
从工程管理的角度来看,传统的软件设计任务通常分两个阶段完成:
第一个阶段是概要设计(总体设计或初步设计),将软件需求转化为数据结构和软件的系统结构,包括结构设计和接口设计,并编写概要设计文档。
第二阶段是详细设计阶段(过程设计),其任务是通过对结构表示进行细化,确定各个软件构件的详细数据结构和算法,产生描述各软件构件的详细设计文档。
概要设计主要确定实现目标系统的总体思想和设计框架。
系统分析员使用系统流程图或其他工具,描述每种可能的系统,推荐一个较好的系统方案(最佳方案),并且制定实现所推荐系统的详细计划。在用户确认后,系统分析员就要设计软件的整体结构和框架,确定程序有哪些某块组成,以及模块与模块之间的关系,最后提出总体设计说明书;
详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统。
面向对象开发方法中,概要设计的部分内容,例如类及对象的设计将提前到OOA阶段开始,而在OOD阶段,概要设计将更多地关心对象之间的协作与交互。