现代软件工程
上QQ阅读APP看书,第一时间看更新

4.1 软件工程中的设计

设计概念强调了:①抽象的必要性,它提供了一种创造可重用软件构件的方法;②体系结构的重要性,它有利于更好地理解系统整体结构;③基于模式的工程的有益性,它是一项用于已证明能力的软件的设计技术;④关注点分离和有效的模块化的价值,使得软件更容易理解、测试与维护;⑤信息隐藏的直接作用,当错误发生时,它能够减少负面影响的传播;⑥功能独立的影响,它是构造有效模块的标准;⑦求精作为一种设计方法的作用;⑧横切系统需求方面的考虑;⑨重构的应用,它是为了优化已导出的设计;⑩面向对象的类,以及与类相关特征的重要性。

设计的目标是创作出坚固、适用和令人愉悦的模型或表示。坚固,是指程序应该不含任何妨碍其功能的缺陷;适用,是指程序应该符合开发的目标;而愉悦,是指使用程序的体验应是愉快的。为此,设计师必须先实现多样化,即获取所有方案和设计的原始资料,包括目录、教科书,以及头脑中的构件、构件方案和知识,然后再进行聚合。在各种信息汇聚在一起之后,应从满足需求工程和分析模型所定义的需求中挑选适合的元素。此时,考虑并取舍候选方案,并进行聚合,使之成为“构件的某种特定的配置,从而创建最终的产品”。

软件设计是软件工程过程中的技术核心,并且它的应用与所使用的软件过程模型无关。一旦对软件需求进行分析和建模,软件设计就开始了。软件设计也是建模活动的最后一个软件工程活动,接着便要进入构造阶段,即代码的生成和测试。

需求模型的每个元素都提供了创建4种设计模型所必需的信息,这4种设计模型是完整的设计规格说明所必需的。软件设计过程中的信息流如图4-1所示。由基于场景的元素、基于类的元素、面向流的元素和行为元素所表示的需求分析模型是设计任务的输入。使用设计表示法和设计方法,将得到数据或类的设计、体系结构设计、接口设计和构件级设计(设计金字塔)。

978-7-111-52634-6-Chapter04-1.jpg

图4-1 需求模型到设计模型的转换

数据/类设计将类模型转化为设计类的实现及软件实现所要求的数据结构。CRC图中定义的对象和关系、类属性和其他表示法刻画的详细数据内容为数据设计活动提供了基础。在与软件体系结构设计的连接中可能会进行部分的类设计,更详细的类设计则在设计每个软件构件时进行。

体系结构设计定义了软件的主要构造元素之间的关系、可用于实现系统所定义需求的体系结构风格和设计模式,以及影响体系结构的实现方式。体系结构设计的表示,即基于计算机系统的框架,可以从需求模型导出。

接口设计描述了软件和协作系统之间、软件和使用人员之间是如何通信的。接口意味着信息流(如数据和/或控制)和特定的行为类型。因此,使用场景和行为模型为接口设计提供了所需的大量信息。

构件级设计将软件体系结构的构造元素变换为对软件构件的过程性描述。从基于类的模型、流模型和行为模型获得的信息可作为构件设计的基础。

在设计过程中所做出的决定将最终影响软件构建的成功,更重要的是会影响软件维护的难易程度。