DDD学习笔录——提炼问题域之有效提炼知识的模型(一)
创建一个有用的模型是一个协作的实践过程;不过,业务用户也可能发现这一过程令人疲倦且认为它效果不佳。业务用户都是很忙的人。要让你的知识提炼环节充满有趣的互动,可以引入一些有促进作用的游戏以及其他形式的需求收集方式来吸引你业务用户。
方式一:专注在最有意思的对话上
不要一次只与领域专家和业务相关人员探讨需求列表中的一项,这会让他们感到厌倦。就如之前所描述的,领域专家的时间是宝贵的。首先处理问题域中让业务人员需要深夜加班的部分——那些将使得业务发生改变且对于应用程序取得成功是核心部分。例如,询问领域专家当前系统的哪些部分难以使用,或者哪些手动处理过程阻止了他们进行更具创造性、有附加值的工作。或者哪些修改将提高收益或提高运营效率并最大限度地节省资金。
追踪资金去向并找出花费业务资金的区域 或者找出减少这些支出以提升收益 ,这通常是一个好的做法。
最有意思的对话将揭示出你应该在何处花费最大的精力来达成共识和创建通用语言。
方式二:从用例开始
在尝试理解一个新领域时,通过用例映射进行描绘是一个最佳的起点。用例会列出达成目标所需的步骤,其中包括用户和系统之间的交互。与业务用户一同工作以理解用户使用当前系统会做什么,是基于书面的过程还是电脑化的处理过程。仔细留意领域专业术语,因为这会形成用于描述和交流问题域的通用语言的基础。
按照你自己的理解向领域专家复述用例也是有用的,这样他们就能验证你是否像他们一样确实理解了用例。
记住:抓住真实情况的过程图,理解实际的工作流程,在你真正理解并重视问题之前不要视图过快地跳到解决方案。
方式三:提出有力的问题
你在知识提炼环节中提出的问题将一路伴随你对于正在构建的产品重要性以及其背后的目的 的理解过程。
这里有一些让你的领域专家表达并揭示领域中一些深刻见解的示例:
1、这个系统的需求来自何处。?
2、这个系统会如何为业务提供价值?
3、如果不构建这个系统会发生什么情况?
一个关于有力问题的优质博客:http://goodenoughsoftware.net/2012/02/29/powerful-questions/
方式四:草图
通过查看当前讨论 的概念 的视觉图像,人们通常会学习得更快一些。所以绘制简单图表的草图是一项常用的可视化技术,DDD实践者使用它能够强化知识提炼环节,并且能够最大限度地利用与领域专家协作时间。
草图绘制方法:你首先可以在白板或纸面上绘制最简单的草图。如果保持快速而非正式的绘制,就可以随着对话交流的进行快速对其进行迭代。
基本原则:将你的图表保持在一致稳定的细节水平。 举例说:如果讨论的是高层次的概念,就像独立的软件系统交流以满足业务用例那样;那就不要试图降低到低层次概念,例如会让图表混乱的类或模块名称。将你的图表保持在一致稳定的细节水平会避免你展示过多或过少的细节,这也意味着每个人都能理解你视图表达的内容。创建多个图表以分别对应每一种不同的细节水平,通常会更好。
区分于UML:UML是一门奇妙的语言,可以使用它在使用少量或不使用技术专业知识的情况下以可以理解的方式交流复杂系统。 不过,对于快速的知识提炼环节来说,它可能太过正式,因为团队将需要多次重新尝建模。不要尝试使用像Visio或者Rational Rose这样惊心设计的程序包来固化变化中的模型。