在单独设计对象模型时,您使用了哪些技术?

时间:2008-10-09 19:34:56

标签: oop tdd

毫无疑问,建立一个领域模型是我认为当你像团队一样接近它时最好的东西。甚至包括那些不是技术人员和建模会议中“业务”成员的人。当你把合适的人放在一个房间里并在白板上锤出东西时,可以很快完成这么多工作。但是你没有那种奢侈的时代呢?当你必须单独构建一个复杂的域模型时呢?我在过去一个月左右的时间里一直这样做,并做了以下事情:

  1. 从Noun Idendtification开始,然后使用Class-Role-Collaborations分析关系
  2. 寻找可用于优化模型,派对等的分析模式。
  3. 一旦掌握了基础知识,我就会破坏IDE并开始编写XUnit测试,以证明模型让我做我想做的事情
  4. 虽然这些技术运作良好,但我不确定它们是否与真正的协作努力一样高效。我认为很容易被一个概念带走,后来才意识到它违反了x或y的要求。您在隔离工作时使用了哪些技术来确保您的对象/域模型在目标上?

2 个答案:

答案 0 :(得分:3)

我认为每个人都有不同的做法,但是......

我几乎总是从类图(通常是UML和纸上)开始,特别注意类和它们之间的关系。在这个阶段的验证主要是试图理解实体的高级语义是否一起有意义。

然后开始勾画关键功能,特别是那些参与协作的功能。确保协作中的对象可以通过关系相互联系。在这个阶段,我将使用绘图工具(StarUML)。

然后来gedanken实验。我精神上了解了我能想到的最棘手的用例,看看我是否可以设想一种方法来解决给定的设计问题。这不是伪代码,只是单步执行每个主要任务/函数,并按照图表的行来确保我不会错过回调,循环依赖等等。

我认为一个关键是不要对设计的任何特定方面过于嫁接,直到你满意自己它可能会运作得相当好。在我看来,如果你无法通过精神上的设计来评估/验证它,你或者对问题缺乏了解,或者纸上的设计不够完整......

然后,如果时间允许的话,把它放在一边,看看你能不能提出一些真正不同的东西......

答案 1 :(得分:1)

如果你自己构建它,只要确保它适应性强,因为你无法想到第一次拍摄的所有东西。

获得一些大论文。把一切都画出来,弄得一团糟。不要担心让它变得完美。按照你的想法放下所有东西,把它们当作证明没用的东西。这篇论文看起来就像是你的思绪在整个地方抛出一个物体模型的碎片。当你想到已经写下来的东西时,要让这些东西脱颖而出。在这个过程结束时,你会有一团糟,但肯定你会有很多好主意。在这一点上,我建议向人们展示这一点,但既然你说这是不可能的,我们将继续前进。

现在坐在带有UML工具的计算机前面,并绘制出类似于大脑转储突出显示的内容。想一想对象模型的主要部分,然后想一下使这些部分能够协同工作的更小的事情。一旦确定了某些东西,将该UML转换为代码并开始编写一些测试以查看它是否有效。冲洗并重复。