【问题标题】:Should notifications be a class in the class diagram?通知应该是类图中的一个类吗?
【发布时间】:2020-12-02 00:27:40
【问题描述】:

假设我为一个社交网络系统(例如 facebook)制作了一个类图。通知和讨论消息是否应该有自己的类?

我确实认为他们应该这样做。我为这样的系统制作了完整的类图,将通知和消息作为类,但我的老师告诉我要排除它们。现在我很困惑。

【问题讨论】:

  • 不使用类如何实现它们?是什么让您认为答案可能是“不”?
  • 呵呵,@bruno,我用通知和消息作为类制作了整个类图,但实际上我的老师告诉我要排除它们,这就是让我迷惑的原因,所以我相信我老师的建议已经不值得了,我只是根据我的第一直觉来判断我是对还是错,不过,谢谢你的回复
  • 这取决于您当前设计的详细程度。您的老师可能会担心您添加了太多细节。当您处于想要规划系统架构的阶段时,担心实现细节还为时过早。它不会增加价值,但会分散注意力和额外的努力来定位可能会改变的细节。当架构设置时,例如所有组件及其关系都已确定,您可以处理业务实体。对于信使,这当然是消息和通知。
  • 这里还是不细说了。仍然不要计划诸如类名或成员之类的详细信息。这是一个增量或迭代的过程。最重要的一点是你意识到你正在学习。质疑内容或建议非常好,有助于获得很好的理解。你的老师在那里教你。我想他会很高兴知道你的同情心。我强烈建议问问他为什么这么认为。告诉他你对他得出结论的思维过程感兴趣。这就是你学习的方式:提出问题并找到答案。
  • 不要傲慢地认为你的老师是愚蠢的而不知道他的意图。您可能会找到与老师所说的相反的答案。他仍然很有可能是对的。有时没有正确或错误的解决方案,只有意见。你无法判断。在不知道你谈话的细节的情况下,我认为他是对的。您永远不会将完整的 facebook 系统放入单个类图中。您将选择您在之前的设计过程中确定的组件,并开始逐渐了解更多细节。

标签: uml social-networking modeling diagram class-diagram


【解决方案1】:

这是一个非常有趣的问题,原因有三个。

1。范围是多少?

对于您在开发人员职业生涯中所做的任何工作来说,这是一个核心问题:系统的范围是什么?

  • 它只是一对多通信的核心社交网络功能,就像您早期在 Facebook 上的那样吗?
  • 或者它是 facebook 的完整克隆,包括它的消息传递功能,还有它的广告和审核功能?

如果是第一个,你做的太多了。如果是第二个,你就忘记了重要的部分。

规则 1: 每当对范围存有疑问时,请先与您的教练/经理/利益相关者澄清,然后再认为您知道该做什么。

这将避免您因做不被重视的工作而感到沮丧。这将避免您的未来客户因没有得到他们所期望的东西而感到沮丧,或者为他们没有要求的东西支付过多的费用。

2。方法是什么?

每当您为某些软件建模时,都是有目的的。类图可以用于不同的目的。例如:

  • 是为了分析需求吗?在这个域中,你肯定会有PostCommentUserAccounts 的类以及它们之间的关联。但是您会将自己限制在“问题空间”,而不是解决软件解决方案及其 UI。
  • 是为了系统的设计?那么它可能应该解决系统将如何工作,并提供有关 UI 如何与域对象交互的更多细节。这种图表可能更详细,并显示“解决方案空间”。

规则 2:如果被要求做一些建模,一定要明确目的。在现实世界中,如果没有明确要求建模,请阐明团队内部商定的方法。

3。始终与最接近消息来源的人澄清

(字幕已经是规则了)。

现在,通知是否是 UI 的一部分,因为它们显示已更改的帖子并且它是解决方案设计的一部分?或者它是域的一部分,因为通知的需要独立于所选的软件解决方案?而且因为需要跟踪和传递通知,并且它们在移动应用程序(推送)和网页(拉取)上的工作方式不同?如您所见,有一些解释的余地​​,根据他/她的论点,老师不一定是错的。

结论

如您所见,这没有对错之分:两者之间有很多细微差别。有很多理由可以证明你老师的立场是正确的。我至少看到了另外两个不相关的:

  • 根据班级的平均能力调整练习时间(这对你来说是个好兆头)
  • 因为老师已经知道接下来的问题,并且他/她已经知道通知会使问题变得更加困难(这表明老师很好)。

我的建议:相信你的老师,无论如何都要进行讨论以理解论点,然后再迅速得出未经证实的结论。

要点:需求分析和建模是一种沟通活动,而不是技术活动。如有疑问,请先与您的利益相关者进行讨论,然后再在网上寻求陌生人的建议;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多