分析的另一种重要产品是领域模型,其目标是使负责该系统基本行为的所有核心类可视。 ——Grady Booch,《面向对象项目的解决方案》
本篇记录6大步骤中的第二步:领域建模。包括如下内容:
- 什么是领域模型?
- 领域模型的价值和意义所在
1、什么是领域模型
“是什么”
领域模型,就是将领域概念(即这个领域内的行话)以可视化的方式抽象成一个或一套模型。
领域模型比《领域词汇表》更进一步,它不仅关注重要的领域概念,而且它还刻画这些概念之间的关系。
“什么样”
就UML而言,领域模型最常采用下面两种图表示:
- 类图
- 状态图
“为什么”
领域建模是公认的促使OO项目成功的最佳实践之一。
2、领域模型的价值
领域模型在软件开发中的作用,如上图所示。那么,它的意义又在哪里呢?
领域建模是探索问题领域的工具,可以帮助我们探索和提炼问题领域知识。
2.1对于需求人员
对于需求人员,领域建模能够帮助他们促进用户沟通,解决分析瘫痪。
需求分析阶段,常会遇到两个困难,
- 第一个困难,用户的参与不够,造成需求分析成果中假设的成分太多。
“参与不够”,表现为用户参与不够多,用户参与不够深入。 - 第二个困难,问题领域太复杂时,需求分析的开展会遇到困难。
2.2对于开发人员
对于开发人员,领域建模能够破解“领域知识不足”的死结。
破解“领域知识不足”的死结的关键是要“理顺概念关系,搞清业务规则”。这恰是领域模型的强项——通过对复杂的领域进行概念抽象和关系抽象从而建立模型,获得对领域知识总体上的把握,就不会掉入杂乱无章的概念堆里。
2.3可扩展性
领域建模的输入和输出如下图所示:
从图中可以看到,领域模型的驱动因素是功能,反过来,领域模型的质量高低能够决定软件的可扩展性。可以说,“功能决定如何建模,模型决定功能扩展”。
功能是领域建模的核心驱动力,也是领域模型评审和改进的驱动力。