大家好,假设我有一个新项目,即库存系统。我将使用Java。我去我的客户那里收集一些需求,在我收集它们之后,我将对这些需求进行建模。我应该先做什么?我的类图/域模型?还是数据模型?为什么?我真的很想你对此发表意见。您在现实世界中从事软件开发的工作是什么?
我使用这些技术:Java、Hibernate(ORM)、Scrum(方法)、postgresql(数据库)
大家好,假设我有一个新项目,即库存系统。我将使用Java。我去我的客户那里收集一些需求,在我收集它们之后,我将对这些需求进行建模。我应该先做什么?我的类图/域模型?还是数据模型?为什么?我真的很想你对此发表意见。您在现实世界中从事软件开发的工作是什么?
我使用这些技术:Java、Hibernate(ORM)、Scrum(方法)、postgresql(数据库)
我的2美分...
数据往往比代码寿命更长、更稳定,最终更重要。所以你的方法应该以数据为中心。如果你正确地组织和规范你的数据(ER图是这样做的重要工具),其余的自然会随之而来。
不要先做任何一个。并行创建域(对象)模型和 ER 模型。它们应该非常相似,只是域模型关注数据和行为,而 ER 模型只关注数据。
但是,您需要非常小心,以免陷入许多从业者,甚至是专家级的人的陷阱。这就是分析和设计之间的混淆。你的领域模型和你的 ER 模型都应该是分析模型而不是设计模型。这意味着它们描述了问题和要求,而不是您在设计解决方案时要添加的功能。
特别是,您在本论坛中看到的许多 ER 图实际上都是关系数据模型,即使它们使用 ER 表示法。它们结合了外键等设计功能,并且不将自身限制为信息需求中固有的功能。
在设计开始之前未能相当准确地确定需求是大型项目失败的主要原因。在小型项目中,没有那么多。
IMO 你绝对不应该首先考虑你的数据模型。
原因是您的领域层可以满足所有业务需求。
您的域层必须是不可知的。它不应该与任何特定的技术实现联系在一起,也不应该引用任何类型的框架。它应该是自包含的并且可以单独工作。在设计领域层时,不要考虑持久性,甚至不要考虑数据的显示方式。如果您需要存储数据的方法,或从特定 UI 容器(如 )收集信息的方法Session
,只需使用Interfaces
.
在设计数据模型时,您与将用于存储数据的 RDBMS 绑定在一起。您将考虑如何构建架构以有效地存储和访问数据。但问题是业务部门并不关心您的查询执行得有多好。
尽可能推迟 UI、框架、数据库等关键决策总是一件好事。这样您就只关注业务需求。