我首先绘制一个具有所有关系的类图,并根据您的应用程序的要求仅实现必需的类。
您可以使用贫血的方法(属性加getter和setters)来保持简单并避免在同一步骤中编写业务逻辑的步骤。使用贫血模型时,逻辑将进入相应的Service类。这样你可以稍后考虑用例。
我知道有些人不喜欢这种做事方式,但它确实有助于维护并避免一些依赖性问题。
答到吞噬极乐世界的问题,下面:
在分析方面,从使用情况下(什么),然后继续到类图(如何)听起来像一个很好的经验法则。就个人而言,之后我会做序列图(何时和谁?),因为您需要知道哪些进程/对象消息需要发送。 (除了Merise,RAD,RUP,Scrum等),UML只是模拟系统/项目的一种方式,而不是一种方法。只要有足够的信息来完成任何图表,就没有任何东西阻止某人开始使用任何图表。事实上,它们应该同时完成,因为每个图都是同一个系统/项目的不同视角。
总而言之,这取决于你如何进行分析。在我的学习期间,我学习了刚性瀑布方法,在开始生成一些代码之前,您可以从头到尾做完整的分析。然而,事情在实践中可能会有所不同,因为必须尽可能在最短的时间内生成工作应用程序。
例如,最近我介绍了一个Scrum方法,其中涉及创建一个网站,人们可以发布他们的小说。由于时间有限,并且我们对应该达到的目标有清晰的认识,我们立即开始用骨骼类图来表示domain model。然后从我们制作的一系列模拟屏幕中推导出用例。
从内存中,类是故事,章节,用户和类别。最后一节课被淘汰,以支持更灵活的Tag类。正如您想象的那样,由于应用了领域驱动设计和Java编程语言的特性,现有项目的完整类图将会更加复杂。
这种方法可能被视为马虎。然而,像这样的网站可以使用迭代过程在几周内轻松完成,并且仍然设计得很好。迭代过程优于瀑布方法的优点是您可以随时随地调整需求。频繁的需求变化是一个现实,因为人们经常会改变主意,并且在每次迭代后都可以生成一个工作应用程序,从而让人们可以继续讲课。
当然,当您向客户展示项目时,使用UML图表和一些模拟屏幕进行完整的分析将是更可取的,因此他们可以了解您提供的内容。这就是UML的用途。一旦你解释了一些可视化约定,一个人应该能够理解这些图表。
最后,如果您处于您想要确定客户需求的情况下,逐步建立您可以随身携带的调查问卷可能是一个好主意。采访一个人是唯一可以确定应用程序真正需要哪些概念/功能的方法,并且您应该回过头来澄清某些方面。另一个提示是当你遇到你不熟悉的主题时,在网上做一些快速的研究。
在你的例子中,这将是通过解剖学的基础知识。除此之外,这将帮助你决定模型应该包含什么以及它应该具有什么粒度(应该考虑哪一组器官?它需要多精确?只有器官需要建模或者应该分解成他们的成分如组织,细胞,化学成分等?)。
在你的例子中,你所触及的是一个被称为上下文边界的概念。消化系统中的语言和关系可能会非常不同,而不是说对神经系统,你可能确实有两种不同的模型,序列和语言。 – Xian 2010-06-13 10:24:27