1

...下一步是什么?

在你定义了哪些演员做什么动作之后,你会走哪条路?您是对数据库建模还是更喜欢从类开始?

我认为更好的方法是从类建模图开始,专注于对象之间的关系。这已被证明是错误的,因为我在详细类上走得太深了,即使系统“似乎工作”,当我进行数据库建模时,一切都不会自然地适合我在前一阶段选择的位置。

我读到有人说应该将应用程序逻辑放入数据库并利用其检索数据的速度,而不是在内存中构建大型对象以进行查询并提供底层数据库的抽象。我一直认为数据库是用来存储我的数据并提供一种快速访问它的方法。但也许我错了,我的意思是,我真的必须建立一个数据库,它的内部逻辑与我放在一组类上的逻辑相同吗?数据库不是缺少实现这一点的工具吗?

我认为我无法确定从哪里开始的正确点,如果我选择从数据库开始,我发现很难不只是将其视为“存储数据的地方,让我们在更高级别上执行应用程序逻辑“事情,如果我从类开始,数据库最终看起来像是类的不自然表示,我会感觉错过了一些重要的东西,比如没有为正确的工具分配正确的目的。

你如何处理这个问题?在决定是从数据库还是类建模开始时,根据您的经验,哪种方法已被证明可以导致自然而干净的实现?

提前致谢

4

2 回答 2

2

我使用Robustness Analysis取得了成功。

本文侧重于健壮性分析,包括分析用例的叙述性文本并识别将参与每个用例的初步猜测对象集,然后将这些对象分为三类:

  1. 边界对象,参与者用于与系统通信。
  2. 实体对象,通常是来自域模型的对象(“驱动设计:问题域”的主题,2001 年 1 月)。
  3. 控制对象(我们通常称为控制器,因为它们通常不是真实对象),充当边界对象和实体对象之间的“粘合剂”。图 1 显示了这三种对象的可视化图标。

实体对象是(通常)最终在数据库中的对象/

关于类和数据库之间的映射,我会推荐S.Lott 的文章“The ORM Problem”(他也是 StackOverflow 的参与者)

于 2009-04-30T12:39:46.830 回答
1

如果使用测试驱动开发,请先编写单元测试。您的课程将在您进行时进行概述。

您可以选择在没有数据库(模拟或存根对象)的情况下开发业务逻辑,或者在继续测试时开发数据库。

请记住,您的数据库和域模型不应彼此一对一地映射。

于 2009-04-30T12:00:55.053 回答