首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >领域建模-产品与使用

领域建模-产品与使用
EN

Software Engineering用户
提问于 2015-02-24 20:37:06
回答 2查看 142关注 0票数 3

我有一个问题,我似乎总是遇到一个问题,当建立一个领域模型。每当在我所说的“提供”场景和“使用”场景中使用域对象时,问题就会出现。例如,让我们去一所小学校。

这所学校提供学习课程。每个程序都要求学生注册并完成一定数量的某一类型的课程。换句话说,一个程序可能需要两个“通识”类型的类,一个“数学”类型的合作。以下是这方面的域模型:

到目前为止一切都很好。现在,让我们考虑一下参加这个项目的学生。学生可以选择两个“通识”班和一个“数学课”。一旦选择了这些课程,它们就需要与学生所注册的课程相关联。下面是一个域模型:

这两个领域模型似乎都很好。然而,当你把它们加在一起时,你会得到一些根本不清楚的东西。你可以得到以下信息:

这是令人困惑的,因为您无法知道哪些关系适用于哪种情况(“提供”或“使用”,换句话说,提供的程序和学生已经注册的项目)。看起来学校提供的课程可能已经有了选定的课程。或者,您可能会认为,即使一个学生注册了一个班级,仍然有班级选项。

是否有一般的方法来处理这个问题?我发现它出现在大多数企业中,因此也出现在软件项目中。对于这样的事情有域建模“模式”吗?

谢谢你能提供的任何帮助。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2015-02-24 21:45:53

实际上,您发现了Fowler可能称之为有界上下文的概念--将一个域模型分成两个不同的子模型,一个用于“类选项”,另一个用于学生的选择。

只需将第三个模型作为数据库模式的蓝图,并将另外两个模型保留为规范的一部分。或者试着在你的物体周围画一些栅栏,像这样:

票数 2
EN

Software Engineering用户

发布于 2015-02-24 22:41:59

除了Brown博士提到的关于有限上下文的内容之外,您可能还想考虑一下,您是在勾结两个关于学生的不同事件。它们在程序中注册,但是类的选择不会通过程序本身。也就是说,您有一个学生的ProgramEnrollment,而学生的ClassEnrollment有一个单独的概念。该程序定义了一组必修课或课程类别,学生可以从中选择,但注册与课程本身是分开的。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/274327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档