如何根据用例创建 class 图表?
How do I create class diagrams from Use Cases?
我来自嵌入式系统领域,拥有 3 年多的经验。
在我现在的项目中,一开始我只负责软件开发,团队只有 3 个人。
但是,随着时间的推移,硬件工程师。和项目负责人。分别离职。到目前为止,该项目采用零架构文档以尽快提供输出。后来,新的项目负责人接手了这个项目,从头开始应用V-model。我们开始在 EXCEL 上创建产品规格->HLR->DLR。但是现在,他也离开了工作 :)。现在,我独自一人带着近 700 份写得很好的产品需求上路。无论如何,我开始收集和 classfying 需求,如非功能性、功能性、业务、利益相关者等。在收集非功能性需求时,我还 class 确定了它们的可扩展性、性能、监管、设计约束等. 到目前为止,我还没有画出任何用例。请在这里验证我,我所知道的是用例的输入是功能需求。所以,我创建了一个用例卡,现在我计划为每个功能需求编写用例卡,然后为每个用例卡编写一个序列图。现在到这里,我走对了吗?用例中使用的符号(例如 include、extend 等)是否可以帮助我创建 class 图?这也是对的办法吗?
可以类从用例中推导出来吗?
当 Ivar Jacobson 发明用例时,他的目标是一种由用例驱动的开发方法,并允许有条不紊地从用例中派生实现。那是他对 80 年代的愿景。他的第一次尝试被称为 Objectory,它被一家更大的公司收购并导致了 Rational Unified Process,后者被推广到 Unified Software Development Process(Unified Process,简称 UP)。
特别是一种允许将用例转化为 类 的实践:Entity Control Boundary 方法:用例变成 «control»
类,用例和参与者之间的链接变为 «boundary»
类,并且 «entity»
类 是为在(或派生的)中标识的业务对象创建的来自)用例叙述。
一旦这些第一个候选 类 被建模,在设计过程中会进行进一步的工作并且 类 可能会被重新组织以最适合解决方案(例如,几个边界 类 被重新分组用于设计 GUI,然后可以分解为 UI 个元素,等等...)。
但这对你来说是最好的方法吗?
UP 是迭代和增量的,非常适合 V-model 的现代版本,因为精化阶段的早期迭代旨在稳定架构和组件(或子系统)。
但是,这可能是一种非常耗时的方法,尤其是考虑到您拥有的大量用例。如果您查看对用例建模通常会提出的所有问题,尤其是如果您添加 «include»
和 «extend»
,您可能会花费大量时间(超过 300 天?)来绘制稳健的用例图。然后,使用 ECB,您的要求可能在您完成设计之前就已经过时了!
备选方案
另一方面,some non-academic authors 声称每个系统都有 3 到 5 个真正的主要用例:作为用户,我没有使用系统的 700 个目标。因此,您最好识别这些并查看它们之间的关系。许多其他要求可能过于详细,可以很容易地分配为主要用例的附加信息。
出于类似的想法,Ivar Jacobson 已采用 use-case 2.0 方法使他的方法适应当前的软件工程现实。不要误解我的意思,UML 仍然是一样的,但 ECB 不再出现(现代框架比用例模型对边界设计的影响更大,并且实体使用更集中的方法建模,例如 DDD) .
用例 2.0 背后的想法是将主要用例分成几个较小的部分,并开始开发对用户有意义的东西,然后可以进一步细化。
我来自嵌入式系统领域,拥有 3 年多的经验。 在我现在的项目中,一开始我只负责软件开发,团队只有 3 个人。 但是,随着时间的推移,硬件工程师。和项目负责人。分别离职。到目前为止,该项目采用零架构文档以尽快提供输出。后来,新的项目负责人接手了这个项目,从头开始应用V-model。我们开始在 EXCEL 上创建产品规格->HLR->DLR。但是现在,他也离开了工作 :)。现在,我独自一人带着近 700 份写得很好的产品需求上路。无论如何,我开始收集和 classfying 需求,如非功能性、功能性、业务、利益相关者等。在收集非功能性需求时,我还 class 确定了它们的可扩展性、性能、监管、设计约束等. 到目前为止,我还没有画出任何用例。请在这里验证我,我所知道的是用例的输入是功能需求。所以,我创建了一个用例卡,现在我计划为每个功能需求编写用例卡,然后为每个用例卡编写一个序列图。现在到这里,我走对了吗?用例中使用的符号(例如 include、extend 等)是否可以帮助我创建 class 图?这也是对的办法吗?
可以类从用例中推导出来吗?
当 Ivar Jacobson 发明用例时,他的目标是一种由用例驱动的开发方法,并允许有条不紊地从用例中派生实现。那是他对 80 年代的愿景。他的第一次尝试被称为 Objectory,它被一家更大的公司收购并导致了 Rational Unified Process,后者被推广到 Unified Software Development Process(Unified Process,简称 UP)。
特别是一种允许将用例转化为 类 的实践:Entity Control Boundary 方法:用例变成 «control»
类,用例和参与者之间的链接变为 «boundary»
类,并且 «entity»
类 是为在(或派生的)中标识的业务对象创建的来自)用例叙述。
一旦这些第一个候选 类 被建模,在设计过程中会进行进一步的工作并且 类 可能会被重新组织以最适合解决方案(例如,几个边界 类 被重新分组用于设计 GUI,然后可以分解为 UI 个元素,等等...)。
但这对你来说是最好的方法吗?
UP 是迭代和增量的,非常适合 V-model 的现代版本,因为精化阶段的早期迭代旨在稳定架构和组件(或子系统)。
但是,这可能是一种非常耗时的方法,尤其是考虑到您拥有的大量用例。如果您查看对用例建模通常会提出的所有问题,尤其是如果您添加 «include»
和 «extend»
,您可能会花费大量时间(超过 300 天?)来绘制稳健的用例图。然后,使用 ECB,您的要求可能在您完成设计之前就已经过时了!
备选方案
另一方面,some non-academic authors 声称每个系统都有 3 到 5 个真正的主要用例:作为用户,我没有使用系统的 700 个目标。因此,您最好识别这些并查看它们之间的关系。许多其他要求可能过于详细,可以很容易地分配为主要用例的附加信息。
出于类似的想法,Ivar Jacobson 已采用 use-case 2.0 方法使他的方法适应当前的软件工程现实。不要误解我的意思,UML 仍然是一样的,但 ECB 不再出现(现代框架比用例模型对边界设计的影响更大,并且实体使用更集中的方法建模,例如 DDD) .
用例 2.0 背后的想法是将主要用例分成几个较小的部分,并开始开发对用户有意义的东西,然后可以进一步细化。