让我们说我列了个清单的概念,我将用于绘制我域模型。此外,我有一对夫妇的使用情况自我没有几个系统序列图。

当绘图领域模型,我从来不知道从哪里开始:

  1. 设计型号作为我相信系统。这是,如果我的模特一个人的身体,我开始通过添加类概念的核心、大脑、肠、胃、眼睛、头,等等。
  2. 开始通过设计什么的使用情况下需要得到完成。这是,如果我有一个使用情况,其目的是使人体内吞下的东西,我要提请第一类的概念的嘴里,喉咙,Stomatch,肠子,等等。

所以在我做的事情是无关紧要?我想说也许它会是最好的尝试,以设计使用情况的概念,因为它们一般都是你想要什么工作,而不是其它种类的概念是,虽然帮助描述整个系统,很多时候甚至可能不需要为目前的项目。是否有任何其他办法,我不在考虑在这里?你怎么通常的做法这个吗?

感谢

有帮助吗?

解决方案

我会开始通过描绘一类图与所有的关系,并落实只有这类需要根据该要求的应用程序。

你可以使用贫血的办法(特性加上吸气,并制定者)为了简单起见和避免的步骤编写业务逻辑相同的步骤。有贫血型的逻辑将进入一个相应的服务类。这样你可以考虑使用情况。

我知道有些人不理解这种做事情的方式,但它并帮助维护和避免一些依赖性问题。

回答吞噬了极乐世界的问题如下:

在条款的分析,开始使用的情况下(什么),然后进行的类图(如何)听起来像一个良好的法则。就个人而言,我会做的序列图(当和谁?) 之后,你会需要知道之间流程/对象的信息需要的发送。

超出我对东西的是,UML是一个简单的方式进行系统建模项目并没有一种方法本身(不同于Merise,RAD,RUP,争球,等等)。没有什么停下有人开始任何图只要他们有足够的信息来完成它。事实上,他们应该做的,同时因为每个图表的是一个不同的角度看相同的系统/项目。

因此,所有在所有这取决于你怎么去分析。在我研究我被教导的刚瀑布方法,在那里你做一个完整的分析,从开始到结束前产生一些代码。然而,事情可能是不同的,在实践中,如有必要可能产生的工作应用程序在时间最少为可能。

例如,我被介绍到敏捷教的方法最近的一运动涉及建立一个网站,人们可以发表自己的小说。因为有时间限制和明确的愿景是什么,应该是实现的,我们马上开始与一个光秃秃的骨头类图表示 领域模型.使用的情况下进行,然后推导出的一系列模拟的屏幕我们生产的。

从存储器,这些类别的故事,第一章,用户和类别。这最后一类是逐步淘汰赞成更灵活的标签类。你可以想象,整类图的现有项目会更加复杂,由于应用领域驱动的设计和具体情况的程序语言。

这种办法可能被看作马虎。然而,一个网站,这样可以很容易地将在几个星期使用一个迭代过程,仍然是精心设计的。优势的一个迭代的过程已在瀑布的做法是,你可以不断地调整要求。经常要求改变是一个现实,因为人们往往将改变他们的想法和可能产生的工作申请之后每次迭代,允许一个人留在当然可以这么说。

当然,当你提出一个项目,一个客户,完整的分析与UML图和一些模拟屏幕将是可取的,所以他们知道你提供什么。这是UML来。一旦你已经解释了一些可视公约,个人应该能够理解的图表。

完成了,如果你在的情况下,你们试图确定什么样的客户想要的,它可能是一个很好的想法,以逐步建立起一个调查表,你可以带你。采访一个人是唯一的方法可以确定哪些概念/特征是真正需要的应用程序的,你应该回去,以便澄清某些方面。另一个提示是执行一些快速研究网的时候你们面临着一个主题,你不熟悉的。

在你的实例,这将要通过的基础结构。除其他事项外,这将有助于你决定什么样的模式应包含什么粒度它应该(什么组的器官应该被认为是?如何精确它需要的是什么?做的只是该机构需要仿照或者他们应该被分解成他们的选民样的组织、细胞化学组成,等等。?).

其他提示

是否DDD,或者没有,我建议确定普遍存在的语言(UL)通过面试的产品的所有者(s)。建立通信方式,将有你和产品的业主来说相同的语言,不仅有助于通信,但能够讨论该项目在共同条款往往有助领域模型的定义本身。

因此,我的回答基本上是讨论,听取和学习。软件供应需要。了解模型的观点来看,专家会奠定坚实基础的应用程序。

我想开始的地方会是什么感觉的逻辑和舒适。也许最好开始使用情况,因为他们给你的明确方向和目标,并帮助避免YAGNI的情况。鉴于您应该尝试制定一个强大的领域模型,它不应该有真正的问题,作为全面的领域是重要的。

我想分享我的经验为这种类型的情况。我通常开始与编写测试和代码。和试图掩盖一个端到端使用情况。这给了我足够公平的想法有关的问题,并在结束时我也有东西与我合作,我可以展示我的客户。大多数时间随后的故事基于的前一个,但它也发生在我身后的故事,需要改变在以前的模型我想了.但是,这并不影响我作为我已经有了良好测试的复盖范围。在这一方式,我提出了模型适合当前的问题,不是的模型,该模型的地图的真正的世界。

你开始的业务要求,它可以正式化,或没有。如果正式会使用的使用情况的图表。

例如这里的使用情况的图表一个电子商务应用程序:http://askuml.com/blog/e-commerce/

http://askuml.com/files/2010/07/e-commerce-use-case.jpg http://askuml.com/files/2010/07/e-commerce-use-case2b.jpg

从这些使用情况,你自然可以推断的业务实体:产品类别的产品、购物车...这是开始准备类图。

这是最好的实践在许多方法,但是这也只是常识和自然的。

简短的回答

挑一的使用情况,得出一些合作示意图(和类图)要认识到域对象参与。只集中在那些对象参加了为了完成使用情况的目标。写TDD试验的情况下设置的预期和逐渐的模型域课程,以满足的期望。 TDD 是非常有助于了解预期的行为和它有助于获得更清洁的领域模型。你会看到你域演变,逐渐随着TDD的期望。

只要回答

我个人的经验与DDD是不容易的。那是因为我们没有必要的基础放在第一位。我们团队有许多弱点在不同的领域;要求均未获正常,我们只有一个客户代表的人是不是真的有帮助的(不参与).我们没有一个适当的释放计划,并开发了一个缺乏面向对象的概念,最好的原则等等。主要的问题是,我们已经花这么多时间在尝试理解该领域的逻辑。我们勾勒出了许多类图和我们从来没有得到该领域模型的权利,所以我们停止这样做,并发现了什么错误。问题是,我们尝试了太难以理解的领域逻辑,而不是通信我们做了 假设 在要求。我们决定改变我们的方法,我们应用求我们开始写作的预期行为和编码领域模型,以满足TDD的期望。有时候我们被困写TDD试验的情况下,因为我们不了解的领域。我们马上跟客户代表,并试图获得更多的投入。我们改变了我们的释放战略;用敏捷办法和释放常常使我们得到了真正的反馈,从终端用户。但是,需要确保最终用户的预期设定在正确的水平。我们重基础上的反馈,并以这种方式的领域模型的演变而逐步显现。随后,我们应用设计的模式,以提高可重复使用性和易维护性。我的一点是,DDD无法独立生存,我们必须建立生态系统,涵盖的领域、开发人员必须有坚强的面向对象的观念,并且必须更好和单元的测试。我会说DDD坐上所有的顶部面向对象的技术和做法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top