一.特定领域软件体系架构的定义
特定领域软件体系架构DSSA就是在一个特定应用领域中为了一组应用提供组织结构参考的标准软件体系架构。对DSSA研究的角度、关系的问题不同导致了对DSSA的不同定义。通过众多的DSSA的定义和描述的分析,可以总结出DSSA的必备特征如下:
(1)一个严格定义的问题域和问题解决域。
(2)具有普遍性,使其可以用于领域中某个特定应用的开发。
(3)对整个领域的构件组织模型的恰当抽象。
(4)具备该领域固定的、典型的在开发过程中可重用元素。
一般的DSSA的定义并没有对领域的确定和划分给出明确的说明,从功能覆盖的范围角度有两种理解DSSA的领域的含义的方式。
(1)垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可以作为系统的可解决方案的一个通用软件体系结构。
(2)水平域:定义了在多个系统和多个系统族中功能区域的共有部分。在子系统级上涵盖多个系统族的特定部分功能。
在垂直域上定义的DSSA只能应用与一个成熟的,稳定的领域,但这个条件比较难以满足。若将领域分割成较小的范围,则相对更容易,也容易得到一个一致的解决方案。
二.DSSA的基本活动
实施DSSA的过程中包含可一些基本的活动,这些基本活动主要包括三个阶段。领域分析,领域设计,领域实现。
1.领域分析
领域分析的阶段的目标是获得领域模型。领域模型描述领域中系统之间的共同需求,即领域模型所描述的需求为领域需求。在这个阶段中首先要进行一些准备性的活动,包括定义领域的边界,从而明确分析的对象。识别信息源,即整个领域工程中的信息的来源。可能的信息源包括现存系统,技术文献,问题域和系统开发的专家,用户调查和市场分析,领域演化的历史记录等。在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的。
2.领域设计
领域设计阶段的主要目标是获取DSSA。DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA,由于领域模型中的领域需求具有一定的变化性,DSSA也要相应的具有变化性。因此在这个阶段通过获得DSSA,也就同时形成了重要基础设施的规约。
3.领域实现
这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。他们依据领域模型和DSSA进行组织,也就是领域模型和DSSA定义了这些可重用信息的重用时机,从而支持了系统化的软件重用。这个阶段也可以看作是重用基础设施的实现阶段。
值得注意的是,以上过程是一个反复的、逐渐求精的过程。在实施领域工程的每个阶段中, 都可能返回到以前的步骤,对以前的步骤得到的结果进行修改和完善,再回到当前步骤,在新的基础上进行本阶段的活动。
三.参与DSSA的人员
参与DSSA的人员可以划分四种角色:领域专家,领域分析人员,领域设计人员和领域实现人员。
1.领域专家
领域专家可能包该领域中系统的有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。领域专家的主要任务包括提供关于领域中系统的需求规约和实现的知识,帮助组织规范的,一致的领域字典,帮助选择样本系统作为领域工程的依据,复审领域模型,DSSA等领域工程产品等。领域专家应该熟悉该领域中系统的软件设计和实现,硬件限制,未来的用户需求及技术走向等。
2.领域分析人员
领域分析人眼应由具有知识背景的有经验的系统分析人员来担任。领域分析人员的主要任务包括控制整个领域分析过程,进行知识获取,将获取的知识组织到哦领域模型中,根据现有系统、标准规范等验证领域模型的准确性和一致性,维护领域模型。
领域分析人员应该熟悉软件重用和领域分析方法:熟悉进行知识获取和知识表示所需的技术,语言和工具;应该具有一定的该领域的经验,以便于分析领域中的问题及领域专家进行交互;应具有较高的进行抽象、关联和类比的能力;应该具有较高的与他人交互和合作的能力。
3.领域设计人员
领域设计人员应由有经验的软件设计人员来担任。领域设计人员的主要任务包括控制整个软件设计过程,根据领域模型和现有的系统开发出DSSA,对DSSA的准确性和一致性进行验证,建立领域模型和DSSA之间的联系。领域设计人员应熟悉软件重用和设计领域的方法:熟悉软件设计方法;应有一定的该领域的经验,以便于分析领域中的问题及与领域专家进行交互。
4.领域实现人员
领域实现人员应由有经验的程序设计人员来担任。领域实现人员的主要任务包括根据领域模型和DSSA,或者从头开发可重用构件,或者利用再工程的技术从现有系统中提取可重用构件,对可重用构件进行验证,建立DSSA与可重用构件之间的联系。
领域实现人员应熟悉软件重用、领域实现以及软件再工程技术;熟悉程序设计;具有一定的该领域的经验。
四.DSSA的建立过程
因所在的领域不同,DSSA 的创建和使用过程也各有差异,一般情况下,需要用所应用领域 的应用开发者习惯使用的工具和方法来建立 DSSA模型。DSSA的建立过程分为5个阶段每个阶段可以进一步划分为一些步骤或子阶段。每个阶段包括一组需要回答的问题,一组需要的输入,一组将产生的输出和验证标准。本过程是并发的 (Concurrent)、 递归的 (Recursive)、 反复的 (Iterative)。 或者可以说,它是螺旋模型(Spiral)。 完成本过程可能需要对每个阶段经历几遍,每次增加更多的细节。
(1)定义领域范围。本阶段的重点是确定什么在感兴趣的领域中以及本过程到何时结束。这个阶段的一个主要输出是领域中的应用需要满足一些列用户的需求。
(2)定于领域特定的元素。本阶段的目标是编译领域字典和领域术语的同义词词典。在领域工程过程的前一个阶段产生的高层块圈将别增加更多的细节,特别是识别领域中应用间的共同性和差异性。
(3)定义领域特定的设计和实现需求约束。本阶段的目标是描述解空间中有差异的特性。
(4)定义领域模型和体系结构。本阶段的目标是产生一般的体系结构,并说明构成它们的模块或构件的语法和语义。
(5)产生、搜集可重用的单元产品。本阶段的目标是为DSSA增加构件,使它可以被用来产生问题域中的新应用。
(6)DSSA 的建立过程是并发的、递归的和反复进行的。该过程的目的是将用户的需求映射为基于实现限制集合的软件需求,这些需求定义了 DSSA。 在此之前的领域工程和领域分析过程。并没有对系统的功能性需求和实现限制进行区分,而是统称为“需求”。