13.4架构复用-DSSA-ABSD
软件架构复用
- 软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场-或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理复用、集成新的系统。
- 软件架构复用的类型包括机会复用和系统复用。机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。
- 可复用的资产包括:需求、架构设计、元素、建模与分析、测试、项目规划、过程方法和工具、人员、样本系统、缺陷消除。
- 复用的基本过程主要包括3个阶段:首先构造/获取可复用的软件资产,其次管理这些资产(构件库),最后针对特定的需求,从这些资产中选择可复用的部分,以开发满足需求的应用系统。
特定领域软件架构(DSSA)
DSSA:Domain Specific Software Architecture
- DSSA 就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。
- DSSA 就是一个特定的问题领域中支持一组应用的
领域模型
、参考需求
、参考架构
等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。 - 垂直域:在一个特定领域中的通用的软件架构,是一个完整的架构。(如:在线教育/电子商务)
- 水平域:在多个不同的特定领域之间的相同的部分的小工具(如购物和教育都有收费系统,收费系统即是水平域)
DSSA的三个基本活动
领域分析
这个阶段的主要目标是获得领域模型(领域需求)。识别信息源(识别需求),即整个领域工程过程中信息的来源,可能的信息源包括现存系统、技术文献问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等,在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。
领域设计
这个阶段的目标是获得 DSSA。DSSA 描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求 DSSA。
领域实现
这个阶段的主要目标是依据领域模型和 DSSA 开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。
参与DSSA的四种角色人员
领域专家
包括该领域中系统的有经验的用户、从事该领域中系统的需求分析设计、实现以及项目管理的有经验的软件工程师等。提供关于领域中系统的需求规约和实现的知识,帮助组织规范的、一致的领域字典,帮助选择样本系统作为领域工程的依据,复审领域模型、DSSA等领域工程产品,等。
领域分析人员
由具有知识工程背景的有经验的系统分析员来担任。控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中。
领域设计人员
由有经验的软件设计人员来担任。根据领域模型和现有系统开发出DSSA,并对DSSA的准确性和一致性进行验证。
领域实现人员
由有经验的程序设计人员来担任。根据领域模型和DSSA,开发构件。
建立DSSA的过程
定义领域范围
领域中的应用要满足用户一系列的需求。
定义领域特定的元素
建立领域的字典,归纳领域中的术语,识别出领域中相同和不相同的元素。
定义领域特定的设计和实现需求的约束
识别领域中的所有约束,这些约束对领域的设计和实现会造成什么后果。
定义领域模型和架构
产生一般的架构,并描述其构件说明。
产生、搜集可复用的产品单元
为DSSA增加复用构件,使可用于新的系统。以上过程是并发的、递归的、反复的、螺旋型的。
三层次模型
领域开发环境
领域架构师决定核心架构,产出参考结构、参考需求、架构领域模型、开发工具。
领域特定的应用开发环境
应用工程师根据具体环境来将核心架构实例化。
应用执行环境
操作员实现实例化后的架构。
例题
题①
DSSA是在一个特定应用领域中为一组应用提供组织结构参考的软件体系结构,参与DSSA的人员可以划分为4种角色,包括领域专家、领域设计人员、领域实现人员和(1),其基本活动包括领域分析、领域设计和(2)。
(1)A.领域测试人员 B.领域顾问 A.领域分析师 D.领域经理
(2)A.领域建模 B.架构设计 C.领域实现 D.领域评估
答案:C、C;
题②
特定领域软件架构(Domain Specific Software Architecture,DssA)以一个特定问题领域为对象,形成由领域参考模型,参考需求,(1)等组成的开发基础架构,支持一个特定领域中多个应用的生成。DSSA的基本活动包括领域分析、领域设计和领域实现。其中领域分析的主要目的是获得(2),从而描述领域中系统之间共同的需求,即领域需求;领域设计的主要目标是获得(3),从而描述领域模型中表示需求的解决方案;领域实现的主要目标是开发和组织可重用信息,并实现基础软件架构。
(1)A.参考设计 B.参考规约 C.参考架构 D.参考实现
(2)A.领域边界 B.领域信息 C.领域对象 D.领域模型
(3)A.特定领域软件需求 B.特定领域软件架构 C.特定领域软件设计模型 D.特定领域软件重用模型
答案:C、D、B;
基于架构的软件开发*(ABSD)
- ABSD方法是架构驱动,强调由业务、质量和功能需求的组合驱动架构设计。它强调采用视角和视图来描述软件架构,采用用例和质量属性场景来描述需求。进一步来说,用例描述的是功能需求,质量属性场景描述的是质量需求(或侧重于非功能需求)。
- 业务、质量和功能需求的组合驱动架构设计。
- 视角和视图来描述软件架构。
- 用例和质量属性场景来描述需求。
- 使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求获取和分析还没有完成,就开始了软件设计。
- ABSD方法有三个基础:
- 功能的分解,使用已有的基于模块的内聚和耦合技术;
- 通过选择架构风格来实现质量和业务需求;
- 软件模板的使用,软件模板利用了一些软件系统的结构;
- ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,架构总是清晰的,有助于降低架构设计的随意性。
基于架构的软件开发过程
基于架构的软件开发过程可分为下列6步:
1. 架构需求:
重在掌握标识构件的三步。
2. 架构设计:
将需求阶段的标识构件映射成构件,进行分析。
3. 架构(体系结构)文档化:
主要产出两种文档,即**架构(体系结构)规格说明
,测试架构(体系结构)需求的质量设计说明书
**。文档是至关重要的,是所有人员通信的手段,关系开发的成败。
4. 架构复审:
由外部人员(独立于开发组织之外的人,如用户代表和领域专家等)参加的复审,复审架构是否满足需求,质量问题,构件划分合理性等。若复审不过,则返回架构设计阶段进行重新设计、文档化,再复审。
5. 架构实现:
用实体来显示出架构。实现构件,构件组装成系统。
6. 架构演化:
对架构进行改变,按需求增删构件,使架构可复用。
例题
题①
在基于体系结构的软件设计方法中,采用(1)来描述软件架构,采用(2)来描述功能需求,采用(3)来描述质量需求。
(1)A.类图和序列图 B.视角与视图 C.构件和类图 D.构件与功能
(2)A.类图 B.视角 C.用例 D.质量场景
(3)A.连接件 B.用例 C.质量场景 D.质量属性
答案:B、C、C;
题②
体系结构文档化有助于辅助系统分析人员和程序员去实现体系结构。体系结构文档化过程的主要输出包括(1)
A.体系结构规格说明、测试体系结构需求的质量设计说明书
B.质量属性说明书、体系结构描述
C.体系结构规格说明、软件功能需求说明
D.多视图体系结构模型、体系结构验证说明
答案:A;
转载请注明来源,欢迎大家进行交流讨论。还可通过邮箱联系:youngdream365##qq.com (##替换为@)。