微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为财务软件设计域模型类图

如何解决为财务软件设计域模型类图

在准备软件工程考试的过程中,我遇到了旧考试中的以下任务:

对于客户,您可以创建一个新的财务软件,其任务主要是执行税额计算。客户已向您传达了以下要求:

  • 系统必须能够:
    • 计算并显示不同国家/地区的增值税和税率(德国19%,奥地利20%,瑞士8%)。
    • 根据国家/地区特定的税表(德国,奥地利,瑞士的单独表)计算并显示所得税。
  • 系统必须允许用户
    • 输入与税收相关的数据(增值税总额,所得税的年收入)
    • 在网络打印机上打印税额计算结果。
    • 将税收计算结果发送到相应的税务部门。

任务1 :使用以下信息捕获客户在域模型(类图)中传达的需求:类,属性方法,关系,多重性,关系名称

解决方案: 我不确定如何定义正确的类,关系和多重性。但是我尝试了一下,得出了以下不完整的解决方案:

Solution for first Task:

第一次更新:

Solution for first Task:

第二次更新:

enter image description here

有人可以帮我吗?谢谢:)

解决方法

查看图表

我建议您阅读您的第一个图表,并将其作为练习来交叉检查它是否确实满足要求:

  • “税率由一个国家组成”(最主要的组成部分)。因此,国家并非独立于税法而存在。这真的是你的意思吗?要求中是否有任何内容表明每个国家只有一个税率?
  • “税率由(可选的)所得税率和(可选的)增值税率组成”(中间是双重构成)。哦!?
  • “每个所得税税率都有其自己的税种”(底部构成)。将类别归为相似所得税率的想法不是吗?
  • “税率汇总了税收管理,而税收管理可能出现在多个汇总中”(汇总)。为什么应在税法中汇总主管部门?

第一条建议:在您的课程中阅读关联,聚合和组成之间的区别。原则上,使用同意和组合是例外,必须有充分的理由使用它。

更多问题:

  • 关系的名称在哪里?
  • 什么要求证明税收管理合理?如果有道理,应该与某个国家无关吗?
  • 打印某些元素确实是域模型的一部分,还是已经属于某些用户界面?

第二个建议:仅显示您可以合理地从需求中得出的元素,并避免任何与用户界面相关的行为。

编辑:在我们在评论部分进行的交流之后,您的最终图表代表了您最初想要代表的更好的结果。您可以为1个类别添加重复率1 .. *。您也可以添加一个分隔符,以使类与属性和操作节一致地显示,即使两者之一为空。设计仍然是基本的,因为所有属性/属性都是公开的,因此不建议这样做(但我想您这样做是为了避免设计中出现很多额外的获取器/设置器)。

替代方法:

您的叙述描述了一个单一的用例,它是执行税收计算,包括输入计算数据,打印并发送。演员可能是您客户的某些文员,也许是税务局的职员。

在阅读叙述时,我按时间顺序找到了以下类别的候选人:增值税,国家/地区,税率,所得税,“特定国家/地区的税表”,总额,年收入,税收计算,税务局。让我们仔细看看:

  • 税收办公室非常不清楚:每个税收办公室都有网络打印机吗?如何确定相关税务部门?每个国家有一个办事处,还是组织可以更复杂?
  • 增值税和所得税有很大不同:
    • 用于增值税的different rates per country。适用率始终是已知的,并且计算基于适用率和总价值。
    • 对于所得税,该叙述涉及特定国家/地区的税率表:这意味着税率可能无法事先知道,但取决于应税收入水平。 (例如,Austria中有一个最低费用,并且超出了固定费用;但France中有一个正常费用,前50万欧元的费用已降低)。实际上,所得税要复杂得多,因为它也可能取决于企业的法律形式或收入的处理方式(再投资与分配),但让我们简化工作。无论每个国家有一张桌子还是几张桌子,措辞都含糊不清。
    • 尽管如此,如果您希望在本练习中考虑税额是根据基本金额(总金额或年收入)计算的,您可以推广税收的概念。
  • 税收计算尚不完全清楚:仅仅是税收的用户界面,还是实际上是某些领域对象。这将给我们:

这将导致如下图所示:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?