概念:领域设计
在此概念中,将领域概念概述为开发所在的环境或问题区域。还进一步描述了三个方面:领域建模、领域分析和领域工程。
关系
主要描述

简介

任何开发项目的主要作用都是很好地理解与正在开发的软件或系统相关的环境或领域。领域总是指问题领域,问题领域被理解为用于定义解决方案领域的先兆。可以多种形式对领域进行描述。然而,创建该领域的模型有助于理解,有助于使项目干系人共享该领域的共同看法,为限定解决方案领域范围提供基础,并为以后的分析和设计任务提供有用的输入。

不同的人对领域建模有不同的看法,而“领域建模”这一术语被过多地滥用:它可能描述某一特定领域的各种功能,领域内功能的共同点和不同点,领域内正在处理的信息,等等。所以,我们可以审慎地将这个区域分为三个主要活动:

领域建模

领域模型是一个组织开展其业务所在的领域的模型。因此在实践中一个组织的领域应该与该领域中开展业务的任何其他组织相同。然而在实践中,领域建模之间的不同处是由下列两个因素造成的:领域模型的详细级别以及模型是如何在特定方法的环境中使用的。就最简单的方式而言,“领域模型”这一术语用来指代为了表示领域中的概念以及这些概念的主要关系而创建的类图。通常,将包含带有属性和操作的类来表示概念性的领域元素。这些模型可能标注了一些参考信息,受高级别业务用例支持,等等。

领域建模通常要了解领域内正在使用的现有软件系统。在那些例子中,领域建模的重点大多放在对反映该领域内软件系统特征的共同点和不同点进行识别和建模,以此来了解软件当前正在解决问题领域的哪些方面。领域建模用于定义“软件系统是什么”,方法是系统地对领域内软件系统的功能、对象、数据和关系进行建模。结果如下:

  • 了解该领域内使用的软件系统的功能。
  • 通用词汇表,用于捕获不同项目干系人对领域的不同理解。
  • 正在使用的软件系统的完整文档、它们的主要功能及关系。

领域建模的主要输出是扩展领域字典,该字典捕获用于描述领域模型中的功能和实体的元素,并且还概述了这些元素的主要用途。

要了解更多信息,另请参阅工件:业务分析模型

领域分析

领域分析是“根据对现有系统及其开发历史的研究、从领域专家那里得到的知识、底层理论和领域中的新兴技术,在领域中识别、收集、组织和表示相关信息的过程”[CMU/SEI-90-TR-21]

领域分析应“审慎地限制正作考虑的域,并考虑领域内系统的共同点和不同点,对领域内各个元素之间的关系形成理解,并用一种有用的方式表示这一理解”[CARDS94]。

领域分析有许多不同方法,这取决于正在分析的领域模型的形式以及用于分析的不同对象。例如,一些方法着重分析产品系列的相似处和不同处。面向功能的领域分析(FODA)旨在识别某类相关软件系统中的完全不同且用户可见的功能。其他领域分析方法侧重于领域内的特定观点或关注点。识别工作和安全分析(Cognitive Work and Safety Analysis,CWSA)侧重于人们所做的工作、所作的决策以及他们用来支持识别系统中不充分安全性的策略。

领域工程

领域工程是支持更高效率和复用以实现一系列相似系统的方法。领域工程涵盖了用于构建软件核心资产的所有任务。这些任务包括识别一个或多个领域,部署领域内的不同处,构造自适应的设计,并定义一些机制,这些机制用于将需求转换为从可复用组件中创建的系统。这些任务的产品(或软件资产)是领域模型、设计模型、特定于领域的语言、代码生成器和代码组件。该组任务是在组织内创建可复用的系统方法的根本。

引用

[CARDS94] CARDS: Nilson, Roslyn; Kogut, Paul; & Jackelen, George Component Provider's and Tool Developer's Handbook Central Archive for Reusable Defense Software(CARDS)。STARS Informal Technical Report STARS-VC-B017/001/00。Unisys Corporation,1994 年 3 月。

[CMU/SEI-90-TR-21]Feasibility Study(CMU/SEI-90-TR-21, ADA 235785)。

[EVANS03] E. Evans,Domain-Driven Design: Tackling Complexity in the Heart of Software,Addison-Wesley,2003。

[FODA] Kang, Kyo C.; Cohen, Sholom G.; Hess, James A.; Novak, William E.; & Peterson, A. Spencer Feature-Oriented Domain Analysis(FODA)

[SEI] 软件工程研究所的领域工程:http://www.sei.cmu.edu/domain-engineering/domain_eng.html