《软件建模与设计:UML、用例、模式和软件体系结构》一书介绍了一种被称为协作的对象建模和设计方法(COMET)的软件系统设计方法论。COMET基于用例将软件系统设计分为需求,分析和设计建模三个部分。本文对COMET软件工程方法论进行简要概括,并提供全书的阅读导览。
一. 软件设计的关键要素
建模就是在编码之前对软件应用的设计。
一个好的软件设计方法通常包含以下4个关键要素:
-
软件设计表示法
-
软件设计思想
-
软件设计策略
-
软件结构组织准则
软件设计表示法就是使用图形或者文本或者图形+文本的形式对软件设计进行描述的方法。比如伪代码就是一种文本形式的描述方法,而UML则是一种图形形式的描述方法。但光有表示法是不够的,因为它没有提供一种系统化的,分步骤的方法来阐述如何从无到有设计和实现软件系统。软件设计思想则是指设计系统的根本性思想。比如我们说的信息隐藏,它使得系统模块独立,具有更好的可修改和可维护性;类和继承可以以一种系统化的方式对类进行调整。软件设计策略对设计的整体规划和方向性提供指导,例如面向对象的分解就是一种软件设计策略。软件结构组织准则是一组将软件系统组织为构件的启发式规则或指导方针。
软件设计方法是一种在需求的基础上创建设计方案的系统化方法,它基于一组设计思想,使用一种或多种设计策略,并采用某种设计表示法来描述所得到的设计,最后提供一组结构设计准则来帮助架构师将系统分解为构件。
二. COMET:协作的对象建模和设计方法
COMET是一种软件设计方法,它使用UML2描述设计,采用信息隐藏,类,继承和并发任务等设计思想,使用并发对象设计的策略,并提供结构设计准则将系统结构组织为对象。
comet.png2.1 COMET软件生存周期
2.1.1 需求建模
在需求建模阶段,需要以参与者结合用例的方式来描述功能性需求,并陈述非功能性需求。在这个阶段软件系统的相关干系人(比如用户或者客户)要积极参与帮助澄清需求。如果需求没有被很好理解,则需要采用抛弃型原型的方法来确认需求。
2.1.2 分析建模
分析建模的输出包含静态模型和动态模型。静态建模定义问题域类之间的结构关系,对象的组织准则决定分析模型中要考虑哪些对象;动态建模包含两个部分:动态交互建模用于实现来自需求模型的用例,分为无状态的动态建模和状态有关的交互建模,动态状态机建模定义了状态相关的对象。
2.1.3 设计建模
分析模型强调的是问题域,而设计模型强调的是解域。设计建模就是设计软件系统的体系结构。软件体系结构将系统的总体结构(包括构件及其连接关系)与各个构件内部细节相分离。先进行全局性编程:提供子系统组织准则来将系统组织为子系统,设计构件及其连接关系;再进行局部性编程:子系统被视为聚合或者复合对象,设计每个子系统,对单个构件进行详细设计。在较高细节层次上,体系结构描述软件系统如何分解为子系统;在较低细节层次上,体系结构描述子系统如何分解为模块或构件。设计软件体系结构还要考虑与非功能性需求有关的软件质量属性,如性能,安全性和可维护性。对顺序系统的设计要考虑信息隐藏,类和继承;对并发系统的设计除了考虑面向对象,还要考虑并发任务。
2.1.4 增量软件构建
每个软件增量由增量软件构建和增量软件集成构成。增量软件构建为每次增量选择系统的一个子集进行构建,包括包含在该增量中的用例和参与这些用例的对象。要完成的活动有类的详细设计,编码以及单元测试。
2.1.5 增量软件集成
增量软件集成要完成软件增量的集成测试(白盒测试),需要为每个用例开发测试用例,然后对参与每个用例的对象之间的接口进行测试。
2.1.6 系统测试
发布给客户的任何软件增量都要经历系统测试阶段。它是一种功能测试(黑盒测试):为每一个黑盒用例构建功能测试用例,针对系统的功能性需求测试系统。系统测试应该由分离的测试团队来承担。
五. 软件建模的成果:多视图软件架构
软件体系结构可以从不同的视图进行描述,重要的是要同时保证体系结构的功能性(软件必须做什么)和非功能性需求(软件应当做得多好)。软件体系结构是详细设计和实现的出发点。在用例建模阶段产生用例视图,它是一种功能性需求视图,是软件体系结构的输入,每个用例描述一个或多个参与者(外部用户)与系统之间的交互序列。分析建模阶段首先产生静态视图,该视图用类以及类之间的关系描述体系结构,关系包括关联、整体/部分(组合或聚合),泛化/特化关系,表示为UML类图;然后动态交互视图通过对象和对象之间的消息通信来描述体系结构,表示为UML通信图;最后动态状态机视图用来描述控制构件的内部控制和定序,表示为UML状态图。设计建模阶段产生结构构件视图,用构件描述软件体系结构,表示为UML结构化类图;动态并发视图将软件体系结构描述为在分布式结点上执行并通过消息进行通信的并发构件,表示为UML并发通信图;部署视图描述分布式体系结构中构件如何分配到不同硬件结点上的特定配置,表示为UML部署图。
六. 阅读指南
全书分为概述,需求建模,分析建模,设计建模和案例研究5个部分。
概述:
- 第2章:UML表示法
- 第3章:各种常见的软件过程模型
- 第4章:COMET用到的软件设计思想。
需求建模:
- 第6章:功能性需求分析
- 第20章:非功能性需求相关的软件质量指标
分析建模:
- 第7章:静态建模
- 第8章:对象和类组织
- 第9章:动态交互建模中的无状态的动态建模
- 第10章:动态状态机建模
- 第11章:状态相关的动态交互建模
设计建模:
-
第13章:集成对象的通信模型,关于子系统结构和接口的决策
-
第12,15,16,17和18章:软件体系结构模式和设计模式决策
-
第14章:类接口决策和类的设计
-
第13,15,16和17章:分布式应用组织为分布式子系统的决策
-
第18章:关于对象特性的决策
-
第12,13,15,16,17和18章:关于消息特性的决策
案例研究:
- 第21章:以银行系统为例介绍C/S架构
- 第22章:以电商为例介绍SOA架构
- 第23章:以应急监控系统为例介绍基于构件的架构
- 第24章:通过自动引导车辆系统介绍实时软件架构
网友评论