0

我需要创建一个费用跟踪工具。该工具将允许个人用户记录他们的开支,并预测某个日期的财务状况。

用户界面

这将构建为 .NET C# windows 窗体桌面应用程序。您可以根据需要自由设计用户界面,但这是最低要求。

界面必须至少有这些视图:

  1. 用于输入和更新联系人(付款人或收款人)详细信息的联系人视图。
  2. 用于输入和更新某一天的费用明细的费用条目视图。
  3. 财务报告视图——显示选定日期范围内的所有费用。
  4. 使用户能够查看其在特定日期的预测财务状况的视图。

额外学分:

  1. 用于输入事件的视图:约会和任务。
  2. 显示每日事件和费用的每周视图。

如何设计表单取决于您。我们故意不给您一个设计示例,以避免每个人都有相同的设计。建议您创建模型和故事板,并在开发设计文档时反复修改它们。您的设计决策应包含在您的报告中。

运行时数据的持久存储

费用数据将由一个视图创建,该视图允许输入日期的费用规范,这应该是一个程序化的动态界面。用户完成后,您需要将费用数据保存为 XML 文件并保存在您选择的数据库中。当应用程序再次运行时(关闭后),系统将使用 XML 数据填充界面上的数据。它应该使用财务报告的数据库数据。当写入或读取数据库时,活动应该是线程化的(以使接口在写入外部数据库时可用)

我的 UML 图

你能看看下面的图表吗?

用例图

4

2 回答 2

3

用例是否适合 UI 要求?

用例代表参与者想要实现的目标。它是一种行为(通常是一种行为)。这不是用户如何实现目标;不是用户界面的描述;更不用说数据模型了。

如果您必须设计一个用户界面(正如您的练习叙述所要求的那样),您可能不需要 UC,而是需要线框来绘制 UI。

你对UC有什么要求?

考虑到这一点,我将在您的要求中确定以下 UC:

  • Manage contact details(#1) - 我用 Ma强调文本nage 来缩短Enter 或更新- 开放式问题:也许两个 UC 毕竟:Manage Payer details+ Manage payee details
  • Manage expenses for a day(#2) - 日期的选择是 UI 的细节,而不是 UC!
  • Report expenses(#3) - 日期范围的选择是 UI 的细节,而不是 UC!
  • Forecast financial situation(#4)
  • Enter (maintain?) events(#5)
  • Report weekly situation(#6)

您的图表中有哪些可以改进的地方?

现在回顾一下你自己的 UC 图:

  • Select data range可能是和的包含(注意:错字),因为它是行为的一部分,并且包含的​​ UC 是不完整的,没有包含的 UC。请注意,在我看来,将其作为单独的 UC 似乎是人为地详细说明,不建议这样做。 Add transationGenerate reports
  • Select data range原则上不应该是 的扩展Add transation因为扩展是可选的,扩展的 UC 应该是完整的,没有扩展。在这里,Add a transaction不知道日期是没有意义的。
  • 我建议将 UC 名称从更改为主动行为: 选择/选择数据范围生成/报告每周视图
  • 您当前在用例中使用泛化。虽然这不是最常见的做法,但这是完全合法的:UC 是一个分类器,分类器可以泛化。但是,当在 UC 中使用泛化时,它通常与所有其他“链接”具有相同的图形风格,仅在两个元素之间单独和之间,并且通常不是共享目标形式示例)。请注意,您的专业名称听起来像是对应于数据对象(例如Payer)而不是行为(例如Manage payers)的名词。另请注意,错字导致收款人出现两次

编辑:更多关于 UC 中的泛化

在 UC 中使用继承存在一些争议,因为它的实际意义不如其他类型的关系那么直观。

当同一 UC有多个变体时,继承可能很有用。这是抽象的原则。但是 UC 应该提供一个简单的概述,而不会失去读者的详细信息。因此,更好的做法是保留您的图表而不显示专业化,并有第二张图表专门用于这些细节。

但就个人而言(并查看评论和其他答案,我并不孤单)我建议不要使用它。它制作了一个简单易懂的图表,具有不同抽象级别的更复杂的东西。在这方面,值得一提的是 UC 的发明者Ivar Jacobson

  • 在将继承包含在 UML 中之前,他没有在他的 UC 中使用继承。
  • 他在他最近关于用例 2.0的工作中也没有使用它,在那里他提倡使用用例切片来处理变体。
于 2019-02-23T21:36:56.063 回答
1

用动词来命名你的UC,收入,费用,收款人,数据范围周视图不是UC,但它们主要对应于数据。

缺少一些 UC,用户可以向系统询问的所有内容均未涵盖

我不知道DataRange的正确 UC 是什么,所以很难检查您的扩展/包含,但作为 Thomas Kilian,我对它们有疑问

于 2019-02-23T18:50:59.270 回答