设计的概念
11.1 软件工程中的设计
- 需求模型注重描述所需要的数据、功能和行为。
- 设计模型提供了软件体系结构、数据结构、接口和构件的细节。
- 设计创建的模型是实现系统所必须的。
- 设计模型的质量可以被评估和改建。
- 设计是确立软件质量的关键步骤。
- 软件设计包括一系列原理、概念和实践,用以指导高质量的系统和产品开发。
- 软件设计的目标是创作坚固(稳定)、适用和令人愉悦的模型或表示(这里借鉴了建筑上的观念)
- 坚固是指程序应该不含任何妨碍其功能的缺陷。适用是要程序符合开发的目标。赏心悦目是要求使用程序的体验应是愉快的。
- 设计中设计师的做法
- 先是实现多样化、再进行聚合。
- 多样化是指要获取多种方案和设计的原始资料,包括目录、教科书和头脑中的构件、构件方案和知识。
- 聚合是把各种信息汇聚在一起,从其中挑选能够满足需求工程和分析模型所定义的需求的元素。进行经取舍。
- 多样化和聚合需要直觉和判断力,其质量取决于设计师的水平、设计方式、评价标准、迭代过程等。
分析模型 -> 设计模型
- 数据或类设计:将类模型转化为设计类的实现及软件实现所要求的数据结构。
- 体系结构设计:定义了软件的主要结构化元素之间的关系、用于达到系统需求的体系结构风格和模式以及影响体系结构实现方式的约束。
- 接口设计:描述了软件和协作系统之间、软件和使用者之间是如何通信的。
- 构件级设计:将软件体系结构的结构化元素变换为对软件构件的过程性描述。
- 软件设计和软件质量密切相关。
- 设计是软件工程中形成质量的地方,设计为我们提供了可以用于质量评估的软件表示。
- 设计是我们能够将用户需求准确地转化为软件产品或系统的唯一方法。
- 软件设计是所有软件工程活动和随后的软件支持活动的基础。
- 软件设计和编码不同!!!
11.2 设计过程
- 软件设计是一个迭代的过程,通过设计过程,需求被变换为用于构建软件的“蓝图”。
- 初始时,蓝图描述了软件的整体视图,也就是说,设计是在高抽象层次上的表达,在该层次上可以直接跟踪到特定的系统目标和更详细的数据、功能和行为需求。
- 随着设计迭代和精化将导出更低抽象层次的设计表示。这些表示仍然能够追踪到需求,但是更加错综复杂。
- 指导评价良好设计迭代演化的三个特征:
- 设计必须实现所有包含在分析模型中的明确需求,而且必须满足客户期望的所有隐含需求。
- 对于那些