特定领域软件体系结构的主要目的是在一组相关的应用中共享软件体系结构。
DSSA (Domain Specific Software Architecture) 就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构。对 DSSA 研究的角度、关心的问题不同导致了对DSSA 的不同定义。
Hayes Roth 对 DSSA 的定义如下: “DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。”
Tracz 的定义为: “DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。”
通过对众多的 DSSA 的定义和描述的分析,可知 DSSA 的必备特征如下:
(1)一个严格定义的问题域和问题解域。
(2)具有普遍性,使其可以用于领域中某个特定应用的开发。
(3)对整个领域的构件组织模型的恰当抽象。
(4)具备该领域固定的、典型的在开发过程中可重用元素。
一般的 DSSA 的定义并没有对领域的确定和划分给出明确说明。从功能覆盖的范围的角度有两种理解DSSA 中领域的含义的方式:
(1)垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。
(2)水平域:定义了在多个系统和多个系统族中功能区城的共有部分。在子系统级上涵盖多个系统族的特定部分功能。
在垂直域上定义的 DSSA 只能应用于一个成熟的、稳定的领域,但这个条件比较难以满足。
若将领域分割成较小的范围,则相对更容易,也容易得到一个一致的解决方案。
实施DSSA的过程中包含了一些基本的活动。虽然具体的 DSSA 方法可能定义不同的概念、步骤和产品等,但这些基本活动大体上是一致的,普遍分为三个阶段:领域分析、领域设计、领域实现。
这个阶段的主要目标是获得领域模型(领域需求)。识别信息源(需求),即整个领域工程过程中信息的来源,可能的信息源包括现存系统、技术文献、问题域和系统开发的专家、用户调查和市场分析。领域演化的历史记录等,在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。
举例:在医疗系统中,领域分析阶段,团队收集了与医院管理相关的信息源,包括医疗领域的法规、患者需求、医院流程和现有系统。通过与医院管理员、医生和护士的讨论以及研究医疗保健法规,他们确定了系统的需求,如患者信息记录、医生排班、药物管理等。这些需求构成了领域模型,也就是医院信息管理领域的需求。
这个阶段的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求DSSA。
举例:在领域设计阶段,基于领域模型,团队提供了医院信息管理系统的高层次设计。这个设计不是一个具体的应用程序,而是一个通用的架构。它包括模块化组件,如患者信息管理模块、医生排班模块、药物管理模块等。这些模块设计成可扩展和可重用的,以便满足不同医院的需求。这个领域设计能够适应医院信息管理领域中多个系统的需求。
这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。
举例:在领域实现阶段,团队根据领域模型和领域设计来开发具体的医院信息管理系统。他们实现了患者信息管理模块,包括患者信息录入、查看和编辑功能。同时,他们也开发了医生排班模块,以及药物管理模块,确保这些模块符合领域设计的要求。这些模块的开发是基于领域模型和DSSA的指导原则,以确保系统的可维护性和可重用性。
领域分析用于确定需求,领域设计用于提供通用架构,而领域实现用于将该架构转化为具体的应用程序模块。这个过程有助于确保系统能够满足特定领域的需求,并具备可维护和可重用的特性。
参与 DSSA 的人员可以划分为4种角色:领域专家、领域分析人员、领域设计人员和领域实现人员。
DSSA的建立过程分为 5 个阶段,每个阶段可以进一步划分为一些步骤或子阶段。每个阶段包括一组需要回答的问题,一组需要的输入,一组将产生的输出和验证标准。本过程是并发的 (Concurrent)、 递归的 (Recursive)、 反复的 (Iterative)。 或者可以说,它是螺旋模型 (Spiral)。 完成本过程可能需要对每个阶段经历几遍,每次增加更多的细节。
(1)定义领域范围。本阶段的重点是确定什么在感兴趣的领域中以及本过程到何时结束。这个阶段的一个主要输出是领域中的应用需要满足一系列用户的需求。
(2)定义领域特定的元素。本阶段的目标是编译领域字典和领域术语的同义词词典。在领域工程过程的前一个阶段产生的高层块圈将被增加更多的细节,特别是识别领域中应用间的共同性和差异性。
(3)定义领域特定的设计和实现需求约束。本阶段的目标是描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论。
(4)定义领域模型和体系结构。本阶段的目标是产生一般的体系结构,并说明构成它们的模块或构件的语法和语义。
(5)产生、搜集可重用的产品单元。本阶段的目标是为 DSSA增加构件,使它可以被用来产生问题域中的新应用。
DSSA 的建立过程是并发的、递归的和反复进行的。该过程的目的是将用户的需求映射为基于实现限制集合的软件需求,这些需求定义了 DSSA。 在此之前的领域工程和领域分析过程并没有对系统的功能性需求和实现限制进行区分,而是统称为“需求”。下图是DSSA的三层系统模型。