使用 UML 进行有效的业务建模:: 描述业务用例和实现

UML用例建模,业务用例建模、概念用例建模、系统用例建模,领域建模 在面向对象软件开发的过程中,针对复杂系统,我们一般会先进行相关建模来了解现实世界问题,通过抽象方法,建立模型来表征现实世界,获得对现实事物本身的理解,然后将这些理解到的知识概念化,并将这些逻辑概念组织起来,形成对所观察事务的内部结构和工作原理便于理解的表达。在UML中通过用例驱动的方式来一步一步获取对现实世界的理解。 一般我们通过如下三个用例建模步骤来获取对现实世界问题的认知,然后将其转化为计算机世界的实现,主要有如下三个步骤: 业务用例建模 概念用例建模 系统用例建模 业务用例建模 业务用例建模早于需 阅读详情

 

就像大多数的软件开发从业者所知道的那样,统一建模语言 (UML)在表示真实世界的现象方面是非常优秀的。这种能力导致了 Business Modeling Profile 的发展,UML Business Modeling Profile 提供了扩展和原型以使用户和分析人员之间的交流更加容易。

正考虑应用 Business Modeling Profile 的组织通常都会有一些实际的问题,比如下面的问题:

  • 在什么时候我们真正需要一个业务模型?什么时候只需要用例模型就足够了?
  • 对于特定的业务建模情景,我们应该使用哪一种 UML 图?例如,我如何知道应该使时序图还是使用协作图?
  • UML 业务模型使如何与其他 UML 模型(领域模型、用例模型等等)相关联的?我应该所=如何组织这些模型呢?
识别业务参与者(Actor)

为系统建模识别参与者是容易的 - 任何系统外部的事物都是一个参与者,并且边缘十分清晰,因此人总是参与者。对于业务建模来说就不是那么简单的,因为一个人既可以是一个业务参与者(比如,一个与业务交互的外部人员)也可以是一个业务执行者(比如,一个业务内部的人员)。关于这个问题的一个方法是在将他们分类成为业务参与者或者业务执行者之前识别出与业务场景相关的所有人员。这意味着你必须在同一抽象级别上定义业务参与者和业务执行者:他们都是人或者人的群体。

不要尽力的将任何系统都定义成为业务参与者,虽然在你挖掘系统用例时一些系统将成为参与者。在业务建模中,你希望将注意力集中在业务流程上,因此将系统问题的处理推迟到以后来做可以避免使业务用例模型混乱。

在我们的业务用例模型调查中,业务参与者是人,而不是人的群体;也就是说,我们有一个最终用户的经理 ,而不是一个最终用户的部门,还有一个供应商经理,而不是一个供应商。这样在我们以后实现业务用例时,业务参与者和业务执行者是在同一抽象级别的。为了确定一个业务用例的范围,通常我们在类似表 1 中的某一个单独的工作流程中跟踪一个核心的圆舞曲目标。如果被获得的用例太长,我将细化核心的业务目标成为多个子目标,并将工作流程相应的分段,同时将一个长的工作流程水平的划分成几个业务用例。

不幸的是,关注于这些问题和应用 UML 业务建模 Profile 的文献资料比系统建模的资料相对来说少的多。这使那些认同使用 UML 进行业务建模的用户和分析人员十分失望,但是他们还是被迫的去努力使用这些符号。

本文通过了解一个样例用例来说明大家所关系的事情,这个样例用例建模了一个负责管理外包开发的 IT 部分的采购流程。这个由法律顾问、企业架构师和项目经理构成的部门负责和约的、系统架构的和项目管理的问题。这个部门的任务是将最终用户部分从 IT 相关的问题中解放出来,以便他们能够将经理放在业务运作上。当这些部门需要采购新的系统或者改进已有的系统时,他们会让 IT 部门准备最初的说明书,然后 IT 部门选择合适的供应商交付被需要的系统。

我们这个讨论的假设基础

我们假设你对 Rational 统一过程(RUP)中描述的业务建模 Profile 的知识有一定的了解。如果你对这个 Profile 还不是很熟悉,请参考文章尾部的附录。

进行一个业务用例模型调查

我们这个简单例子的第一部时完成一个业务用例模型调查。

如图 1 所示,存在两个参与者和两个用例。最终用户 Manager 想要一个供应商来自动化一些工作流程,因此 IT 部门通过准备最初的需求文档和包含几个候选供应商的方式来帮助业务部门。一旦和约敲定,采购部门将通过根据和约中的里程碑管理系统的交付来帮助最终用户 Manager 。



图 1: 业务用例模型

我们将业务用例总结如下:

  • 准备 Tender:描述准备系统说明的流程。
  • 选择供应商:描述供应商选择的流程,从 tender 的批准到与一个供应商签订能够在合理的成本和时间计划内满足需求的和约。

我们将业务用例总结如下:

  • 最终用户方面的经理 :要求自动化工作流程的最终用户部门的联系人。
  • 供应商方面的经理 :供应商一方的代表,负责合同投标和系统实施的监控。

表 1 :很长的工程流程

当最终用户的部门要求一个额外的自动化以改进业务运作时,业务用例就开始了。这个用例的目标是选择一个能够交付最终用户部门期望的系统的供应商。

1. 最终用户的经理选派。采购部门为整个采购过程指派一名最终用户的经理。

2. 准备需求系统说明。最终用户的经理准备并向 IT 部门提交需求系统说明。

3. 准备 Tender 文档。IT 部门检查被提交的需求说明并准备一份 tender 文档,增加一些和约性的需求说明。

4. Tender 文档的批准。最终用户的经理检查并批准 tender 文档。

5. 公开 Tender 。一旦 Tender 文档被批准, IT 部门将它送到一系列指定系统分类的供应商。

6. 准备投标。每个供应商准备一份投标估计成本和项目交付计划,并提交给 IT 部门。

7. 缩小投标范围。在招标期间的末期, IT 部门根据估计成本和交付计划的可行性缩小候选投标商(供应商)的范围。

8. 选择供应商。从缩小的供应商列表中,最终用户经理选择最合适的一个。

9. 准备和约。 IT 部门与被选中的供应商准备一份和约。

10. 签署和约。最终用户经理和被选中的供应商签署和约,并开始更详细的系统计划和设计。

在我们的例子中,采购一个新系统的核心业务目标是将目标分解成两个子目标。

  • 说明将要采购的系统。
  • 选择并评估一个候选供应商。

因此,准备 Tender 业务用例包括了表 1 中的步骤 1 到 步骤 4,选择供应商业务用例包括了表 1 中的步骤 5 到 步骤 10 。有很多方法可以分割工作流程,与客户讨论选择是重要的。然而,明白业务建模的真正价值在于理解被分解的工作流程之间是如何关联的是十分重要的。





进行业务用例说明

在这个部分,我们来看一下如何描述业务用例。RUP 中的业务用例模板由一些部分组成,但是我们将只关注在基本的和可选的工作流程上。我将在未来的文章中讨论其他的部分 - 包括目标、风险、职责等等。表 2 显示了为准备 Tender 业务用例的基本和可选的工作流程。

表 2: 业务用例说明

准备 Tender 的基本工作流程

当最终用户部门要求额外的自动化以改进业务运作时,这个业务用例就开始了。目标是将能够分发给候选供应商的 tender 文档最终定稿。

1. 最终用户的经理选派。采购部门为整个采购过程指派一名最终用户的经理。 2. 准备需求系统说明。最终用户的经理准备并向 IT 部门提交需求系统说明。 3. 准备 Tender 文档。IT 部门检查被提交的需求说明并准备一份 tender 文档,增加一些和约性的需求说明。 4. Tender 文档的批准。最终用户的经理检查并批准 tender 文档。

可选工作流程

1. 系统说明无效。在步骤 3 ,如果 IT 部门发现系统的说明是含糊不清或者是不可行的,最终用户经理需要重新指定系统的说明。步骤 2 的业务用例也要重新开始,或者如果最终用户经理不希望继续的话,将中止整个过程。

2. 系统已经存在。在步骤 3 中,如果 IT 部门发现最终用户部门需要的系统与在另一个部门中已有的系统非常的相似,那么 IT 部门将让最终用户经理参考那个部门的系统。如果最终用户经理希望继续采购“新的”系统,他或者她必须在系统的说明中指出不同的特性,重新提交系统说明,并继续步骤 2 。如果最终用户在=经理不希望继续,业务用例中止。

3. Tender 文档不一致。在步骤 4 中,如果最终用户经理注意到在 Tender 文档中的不一致,这个 Tender 文档将被拒绝,并且 IT 部门必须重新制作它。业务用例在步骤 3 处继续。





业务用例的实现

在这个部分,我们将讨论几个实现业务用例的方法:

基本和可选的工作流程

一个业务用例描述了一个业务执行活动的顺序以生成对特定业务参与者有价值的观察结果。在用例开始前识别出初始的条件是重要的 - 也包括用例的目标。基本工作流程应该文档化从初始条件直接到达最终目标的步骤。从基本工作流程出发,集中的集体讨论在每一步也许会出现的不同情况,并将他们文档化为可选工作流程。

在会面期间,客户常常描述很多可能的情况,这个可能会使分析人员的思想变得混乱,并且将分析人员的注意力从文档化主要的工作流程中转移。为了避免这种情况,分析人员能够在一个“停车场”中文档化这些可选的情景,(例如,对于将来的参考和讨论的一个临时但又明显的位置,象白板的以角),在基本工作流程上专心的工作。然后,当到了识别可选工作流程时,他能够从“停车场”中的文档中简单的挑出需要的文档。

作为流程定式的说明

业务用例说明描述了业务外部的视图,相反业务用例实现则描述了业务内部的视图。但是对于业务流程分析人员来说定义什么是“内部的”和什么是“外部的”通常不是很容易的。你总是仅仅描述业务参与者与业务之间的交互吗?,或者你进入到业务本身内部运作的细节了吗?这是用例社区中经典的“设计需求”方面的争论:什么时候需求是实际意义上的需求?什么时候需求应该转化成设计?

我所说的是,如果很难区别什么是内部的和什么是外部的,为什么不使用业务用例说明来从什么能够被重新设计中辨别过程定式(固定的元素)呢?然后,你能够在你的业务用例实现中文档化一个被选中的过程定式,并且在业务用例说明中的“可能的事情”部分列出其他的选项。

  • 关注工作流程。
  • 关注流程自动化。
  • 关注信息流程

接下来的子部分描述了每种方法的好处,和这些方法是如何互相补充的。

关注工作流程

我们将看一下业务用例实现,它关注在包括业务执行者和他们的职责的工作流程上。如图 2 所示,准备 Tender 业务用例有三个业务执行者。

  • IT 项目经理:与最终用户经理的主要联系点。
  • 企业架构师:通过确保被采购的系统能够满足组织的标准以降低系统集成的复杂度来帮助 IT 项目经理。
  • 法律官员: 通过补充和检查在 tender 内的合同条款来帮助 IT 项目经理。


图 2: 业务执行者 - 准备 Tender

一个时序图描述了准备 Tender 业务用例的基本工作流程的实现,如图 3 所示。



图 3: 准备 Tender (关注工作流程)的业务用例实现

在图 3 中的消息能够被映射到每一个业务执行者的职责上,如图 4 所示。这种技术非常类似于指导用例分析的技术,这恰恰是为什么 RUP 的业务建模技术是如此强大的原因:相同的技术能够被应用到业务建模和系统建模上。



图 4: 业务参与者和业务执行者参与业务的视图





事件/动作与职责/活动之间的区别

在业务用例实现中,在消息和操作中使用动词如“准备”和“检查”,并且避免如“提交”、“批准”和“拒绝”等等的动词是最好的。这样我们就能够区分事件/动作与职责/活动之间差别。否则,我们就会范类似于图 5 中的错误。



图 5: 错误:事件和职责有同样的名字

假设最终用户发送了一个消息 - “提交系统说明” - 给 IT 部门的经理,如图 5 左侧所示。这意味着 IT 项目经理有责任“提交系统说明”,但是这显然是错误的。最终用户的经理应该做这个事情。如果我们使用一个如图 6 所示的从最终用户经理到到它自身的反身消息“提交系统说明”,情况仍然是糟糕的。图 6 没有显示最终用户经理必须要“提交系统说明”。


关注业务参与者和业务执行者

理解业务参与者和业务执行者的职责是需求引出的非常重要的方面,因为我们想构建正确的系统来满足他们的需要并在他们的业务环境中高效的业务运作。

通常分析人员在没有考虑真实的问题、没有对真正的需求进行好的理解或者没有在一些业务上下文中放入需求的情况下就直接跳到了系统说明中。这通常会导致需求的变更。因此,在首次尝试实现业务用例时有意的关注业务参与者和业务执行者的职责是非常重要的。我强烈建议完全首次的尝试一定不要包括任何系统做什么的考虑,尤其是一些遗留系统被包括的情况,因为这样存在“忘记”那些系统在业务中应该具有的职责的倾向。当这种情况发生时,人们也会忘记询问关键的业务流程和在旧系统中隐藏的规则,并且会忘记在新的业务环境中仔细的检查他们。

也要注意,不论是业务远景文档还是远景文档都需要有对客户、用户和系统涉众职责的描述。

一旦你理解了各种角色的职责,识别出他们中的哪一些是耗时间的,哪一些是资源密集的,或者有错误倾向的 ,在哪里自动化能够创造最大的价值。在我的前一篇发表在 Rational Edge 的文章 ”Business Process Simulation with UML“ 中,描述了如何使用模拟从数量上估计不同的自动化选择。



图 6: 错误:反身消息不能指明谁收到了系统说明

被推荐的方案是在图 3 中使用消息 2 。子任务指明了系统说明准备额完成。此外,消息 2 的方向也表明了系统说明被最终用户经理提交给 IT 项目经理。

图 7 显示了对于一个直接的”提交系统说明“活动的一个相似的错误。被推荐的方案被显示在图 8 中;子任务是一个引发从”准备系统说明“向”准备 Tender 文档“转移的事件或者动作。这样做是更加简明;注意图 8 仅有两个活动而不象在图 7 中的 3 个。



图 7: 错误:最终用户经理既拥有活动也拥有动作












图 8: 方案:创建一个包含引发转移的动作的子任务





将注意力放在过程自动化上

现在我们准备探究业务参与者或者业务执行者的职责自动化 - 特别是他们什么时候和如何使用业务系统。在我们的例子中,我们有两个业务系统,入图 9 所示:

  • Tender 管理系统 (TMS):一个为准备 tenders 和选择供应商被开发的新系统。
  • 和约管理系统(CMS):一个跟踪已有和约的现有系统。


图 9: 对于准备 Tender 用例的业务系统

RUP 中的业务对象模型指南建议了定义一个新的原型图标的可能性。在本文中我们将为业务系统使用 ”Business Worker“ 图标,但是他们将在新的 UML 业务建模 Profile 中有一个新的图标。注意,不管用何种方法,我们的业务系统的概念要严格的于在新的 Profile 中相同。

图 10 显示了一个用来描述准备 Tender 业务用例的基本流程实现的时序图,包括了被要求的业务系统。



图 10: 业务用例实现 - 自动化准备 Tender 用例

在图 10 中的消息能够根据每一个业务执行者的职责进行映射,如图 11 所示。



图 11: 由业务参与者、执行者和系统构成的视图

图 11 中的类图显示了 Tender 管理系统 (TMS) 的上下文关系。通过这个关系,我们表达了需要 TMS 服务的客户和对于操作 TMS 需要的供应者。这个上下文关系能够在用例图中用另一种形式表示,如图 12 所示。



图 12: 源自业务用例实现的 Tender 管理系统的用例

在图 12 中的用例的名字要严格的符合在图 11 中 TMS 的操作的名字。在图 12 中的参与者的名字要严格的符合在图 11 中的业务参与者和业务执行者的名字。使用相同的命名习惯有利于从业务对象模型到系统用例模型的跟踪。

探究自动化选择 在图 10 中的时序图阐明了 Tender 管理系统 (TMS) 是如何从法律官员隐藏和约管理系统(CMS)的。这是可能的系统开发场景之一,包括:

场景 1: 没有被集成的异构系统

场景 2:仅仅提供一个新的前端系统

场景 3: 集成

有多少个业务用例?

总的来说,业务用例的数量应该比系统用例的数量要少。业务用例的实现包括了业务参与者和业务执行者的参与,者两者都将潜在的需要与系统进行交互,并且因此拥有他们自己的用例集合。通常情况下,业务用例对系统用例的比率应该在 1:5 到 1:10 之间。在我们的例子中,”准备 Tender“ 业务用例被用五个系统用例来表示,如图 12 。业务用例的价值在于它将用例放到了上下文关系中 - 显示一个业务用例组如何能够被实现以交付业务价值。

如果业务用例和系统用例的数量是可比的(比如, 1:1 到 1:3 的比率),我将提出对业务建模的要求。如果业务用例和系统用例的粒度是相似的,那么其中的一个类型就是多余的。

在场景 1 中,没有在 TMS 和 CMS 之间的集成,并且二者都被作为分离和独立的系统处理。对于法律官员的时序图被表示在图 13 中;注意法律官员要直接访问 CMS 。



图 13: 时序图 - 场景 1:没有集成的异构系统

对于源自图 13 中的 TMS 的用例图被在图 14 中进行了描述。注意 CMS 没有出现在图 14 中,因为它不和 TMS 进行交互。



图 14: 用例图:场景 1 :没有集成的异构系统

在场景 2 中, TMS 提供了一个封装 CMS 功能的前端系统。对于法律官员活动的时序图被显示在图 15 中。这个方法的目标是为最终用户提供一个一致的外观。然而,在使用法律条款进行检查和补充 Tender 中,没有额外的功能来支持法律官员。



图 15: 时序图 - 场景 2 :提供新的前端系统

对于源自图 15 的 TMS 的用例图被在图 16 中被描述。注意图 16 包含一个新的用例,”查找和约“,它与 CMS 交互。



图 16: 用例图 - 场景 2:提供新的前端系统

场景 3 被显示在图 10 的消息 4 中。 TMS 提供了一个 CMS 的前端,并且同时提供了方便法律官员用法律条款检查和补充 Tender 的额外功能。

消息能够映射到用例或流程上。在上面的讨论中,在时序图中的每一个消息被映射到一个用例。这意味着业务对象模型和用例模型一定是一致的 - 也就是说,用例是根据业务系统中的操作的名字命名的。这可能会太局限了,因为在很多的情况下,我们想要彼此独立的重构用例模型或者业务对象模型。然而,重构每一个模型都将使在两个模型之间的映射变得无效,我们希望维护一致性或者一些可跟踪的形式。我们能够通过允许一个消息被映射到每一个整体用例或者一个用例的一部分来实现这个目的,作为一个与消息语义相应的流程或者事件来支持这种映射。你可以在图 17 和 18 中看到他的表示。



图 17: 消息到用例的映射



图 18: 操作到用例的映射





关注信息流程

现在,让我们看一下关注与2信息流程的业务用例实现 - 也就是,业务实体如何被使用。我们的例子有几个业务实体,如图 19 :

  • 系统说明文档,描述系统的需求。它由最终用户经理最初开发出来,并通过 IT 项目经理被企业架构师来补充。
  • Tender 文档,将被分发给候选的供应商作为一个准备投标的基础。它包括系统的说明和法律的条款。
  • 法律条款,Tender 中的一个重要部分,定义了候选供应商必须履行的法律条款和条件。
  • 和约,能够引用已有的相关和约,以便法律官员不必每一次都在和约中写法律条款。


图 19: 业务实体 - 准备 Tender 用例

一个时序图描述了准备 Tender 业务用例的基本流程实现(信息流程),如图 20 所示。



图 20: 业务用例实现 - 准备 Tender 用例信息流程(顺序)

相应的协作图描述了用例的实现(信息流程),如图 21 所示。



图 21: 业务用例实现 - 准备 tender 用例信息(协作)

在图 20 和 21 中的消息能够被映射到每一个业务实体的职责上,如图 22 所示。



图 22: 由业务参与者、执行者和实体组成的视图

注意,业务实体是被动的,并且不能触发与自身的交互。因此,在图 20 和 21 中的消息代表可业务参与者和业务执行者如何操作这些实体,或者是手工操作或者是通过自动化的工具操作(比如,Tender 系统或者和约管理系统)。在大多数的情况下,组织将有不止一个系统,因此一个单个的业务实体的职责可能被映射带多个体统的职责上。在图 20 中描述哪一个业务系统被用于操作哪一个业务实体将使图 20 变得与图 21 和 22 一样复杂。

当你进行用例分析时,你能够将描述被系统操作的实体推迟到活来进行。可选的,你可以有一个映射业务系统和业务实体的类图。图 22 能够通过仅显示参与的业务实体被简化,如图 23 。



图 23: 业务实体参与的视图 - 准备 tender 用例

图 23 也被作为领域视图被引用,并且所有的业务实体集合组成了领域模型。领域模型也描述了动态的行为,通常是通过状态转换图。除了显示不同业务实体之间的关系,显示单独的业务实体的状态也是重要的。状态图显示了能够在每一个业务实体上执行的操作。图 24 是 tender 文档的状态图。



图 24: Tender 文档的状态图

业务规则

在需求引出中的一个挑战是如何组织业务规则和确保他们的完整性。我通常识别并对业务规则组进行分类,因为遗漏一个业务规则组要比遗漏一个组中的规则更具有破坏性。一些可能的业务规则组的来源是:

  • 在业务用例说明/实现中的可选流程。
  • 在领域模型中的事件。

例如,在真北 tender 的业务用例说明中,我们有一个可选的流程 - A1:系统说明无效。这表明一个检查列表被需要来确定是否系统说明是真的无效。这个检查列表能够作为一个业务规则组被文档化。

在领域模型中的状态表突出了可能发生的不同事件(比如,图 24 ),事件能够被笔筒的条件出发或者保持。因此,根据事件对业务规则分组是简单自然的。

”维护“用例

跨越”维护“类型的用例从业者经常会问:这些”维护“用例是从哪里来的,他们的业务目标是什么?在业务用例实现的每一个步骤中都有先决条件,这些条件能够被先前的步骤或被”维护“用例实现。例如,”查找和约“要求一些和约的存在作为前提条件。当在准备 Tender 业务用例中没有任何前提条件的创建一个和约,一个”维护“用例将被需要。对于”维护法律条款“用例没有需要,因为法律条款被作为”用法律图奥扩补充 Tender“步骤的一个部分被创建和更新。

在图 24 中,事件与 Tender 文档中的操作有相同的名字。Guard 条件(比如,在 UML 中被 "[" and "]" 界定的表达式)表示了操作的不同终止条件。例如,检查 Tender 文档操作有三个可能的终止条件,命名为:

  • 可接受的
  • 法律条款不可接受的
  • 系统说明不可接受的

这些终止条件必须被在图 12 中被识别的”检查 Tender 文档“用例处理。被接受的 Tender 文档可以是用例的基础流程,其他两个条件可以是可选流程。从状态转换到用例的映射能够得自于从如图 25 。

一个被映射到用例得事件,看守条件被映射映射到用例得一个流程,并且动作代表了下面的看守条件发觉的步骤。



图 25: 从状态转换到用例的映射

这样,在图 24 中被准备的 Tender 文档的状态被一个用例处理:检查 Tender 文档,如表 3 。准备的 Tender 文档的状态有三个分支的转换,他们被映射带在=基本流程的步骤 4 ,可选流程 A1 和 A2 上。

表 3: 检查 Tender 文档用例

基本流程

这个用例开始于最终用户经理被 IT 项目经理通知文档已经完成后,最终用户经理想要检查 tender 文档。

1. 列举 tender 文档。系统为最终用户返回并显示一个一个 tender 文档的总结列表,并显示他们的状态。

2. 打开 tender 文档。最终用户经理选择一个 tender 文档。系统返回并显示它。

3. 检查 tender 文档。最终用户奖励检查系统说明和法律条款。

4. Tender 文档接受。如果最终用户经理接受了内容,她或者他批准这个文档。系统记录决定,并且 IT 部门能够为招标到开 Tender。用例终止。

可选流程

1. 法律条款不可接受。如果在基本流程的步骤 3 最终用户经理发现法律条款不可接受,拒绝他们的原因被标注。系统通知 IT 项目经理和拒绝的法律官员。用例终止。

2. 系统说明不可接受。如果在基本流程的步骤 3 最终用户经理发现系统说明不可接受,拒绝他们的原因被标注。系统通知 IT 项目经理和拒绝的企业架构师。用例终止。

在表 3 中的可选流程处理Tender 文档的拒绝。在表 3 中的基本流程的步骤 1 中,系统显示tender文档的总结列表和他们的状态。这样,在业务模型中的状态图提供了一种详细描述以下方面用例的方法:

  • 识别可选流程。
  • 实体的列举状态被显示。




结论

软件系统被开发以达到业务目标。然而,用户、分析人员和开发人员通常生活在不同的世界里;他们有不同的看法并使用不同的行业术语。在这些人之间的沟通障碍导致了很多关于各种系统需求的解释和变更需求上的激烈讨论。通常,这些变化的发生不是应为最终用户改变他们的想法,而是因为最初的需求需要被澄清。

因此使用一种通用的符号系统(比如 UML)和通用的技术(UML 和 RUP 业务建模 Profile)是至关重要的,这些技术既可以描述业务流程也可以用于所有用户、分析人员和开发人员理解系统。这种被改进的沟通的确可以使软件工程项目更加成功。

在本文中,我们讨论了识别业务参与者和业务用例的步骤,并且使用三种方法描述了他们的实现,每一种都有不同的关注点(见表 4) 。

表 4: 描述业务用例实现的方法

关注点 目的 好处
工作流程 识别业务参与者和业务执行者的职责。
  • 在不被系统或者信息描述分散注意力的情况下理解业务流程。
  • 识别哪一个业务参与者和执行者和职责是耗时的、资源集中的,或者是对自动化需求的优先级划分的错误倾向。
流程自动化 识别在业务参与者或者执行者职责的支持中业务系统的职责。
  • 理解业务系统是如何被业务参与者和执行者用作他们工作流程的部分。
  • 便于系统用例的引出。
信息流程 识别被业务参与者和执行者使用的业务实体的操作。
  • 理解业务实体之间的关系。
  • 使系统用例的细化和确认更加容易。




附录: 业务建模简介

本文假设读者对 UML 有一定的了解,并对业务建模的 UML profile 有一些基本的理解。当前的用于业务建模的 UML profile 的简介在表 A-1 中。

表 A-1. 用于业务建模的 UML profile 的简介

原型 描述 UML 表示
业务用例模型
  • 面向业务功能的模型。
  • 被用作基本的输入来识别组织中的角色和交付产物。
模型,作为”业务用例模型“的原型
业务对象模型
  • 描述业务用例实现的对象模型
模型,作为”业务对象模型“的原型
业务用例
  • 一个定义了业务用例实例集合的类;每一个实例是一个业务执行的动作序列,业务产生一个对特定业务参与者有价值的结果。
用例,作为”业务用例“的原型
业务用例实现
  • 描述一个特定的业务用例是如何根据协作的对象(业务执行者和业务实体的实例)在业务对象模型中被实现的。
协作,作为”业务用例实现“的原型
业务参与者
  • 代表在业务环境中与业务相关的人或者事的角色。
参与者,作为”业务参与者“的原型
业务执行者
  • 一个代表与系统交互的人的抽象的类。
  • 与其他业务执行者交互,当参与业务用例实现时操作业务实体。
类,”业务执行者“的原型
业务实体
  • 一个不能发起与自身交互的被动类。
  • 可能会参与多个不同的业务用例实现。
  • 在业务建模中,代表业务执行者访问、检查、操作、产生等的对象。
  • 提供在不同的业务用例实现中业务执行者之间共享信息的基础。
类,作为”业务实体“的原型
组织单元
  • 业务执行者、业务实体、关系、业务用例实现、图和其他组织单元的集合。
  • 通过划分成更小的部分被用来结构化业务对象模型。
在业务对象模型中的包,作为”组织单元“的模型
 
关于采用业务用例视图来展示、归纳、整理业务用例的三点指导原则 今日,网友LeoXu给我发了封邮件,提到了业务建模如何组织业务用例的问题。这个问题还是第一次被问到,而且Leo同学显然走了一点小弯路。在回答他的同时,他的这个问题也非常好,把它分享出来。另一方面,Leo同学显然是喜欢思考的,他给我问题的同时也包含了他的许多思考,这点要赞之。为了表示对他热爱思考的鼓励和赞许,特地在最后又留了一个问题,请Leo同学来回答。同时也欢迎各位网友就该问题畅所欲言!Leo同学 阅读详情

相关推荐

统一建模语言 UML

统一建模语言 UML

xinyuan的专栏 6123

UML建模图实战总结

一、背景 UML:Unified Modeling Language(统一建模语言),是一种绘制软件蓝图的标准语言,为面向对象开发系统的产品进行说明、可视化、和编制逻辑文档。我们在软件开发项目中,面向对象的,在程序规划、设计阶段,通过过使用 UML 的面向对象图的方式来更明确、清晰的表达项目中的架设思想、项目结构、执行顺序等一些逻辑思维 ,以帮助我们完成应用规划,设计,开发。UML 统一了Booch、OMT、OOSE和其他面向对象方法所涉及的基本概念和建模符号。下面,让我们一起看下如何使用UML来建模实践。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 1万+

软件工程—统一建模语言UML

一、ULM概述 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。 UML主要内容 UML的主要特点 1. 统一的建模语言 2. 支持面向对象 3. 支持可视化建模 4. 强大的...

孙正_大正 1794

基于 UML 的业务建模举例

基于 UML 的业务建模   2011-05-30 作者:杨敏强 来源:网络   简介: 对于管理流程咨询项目、大型信息化建设项目和套装管理软件实施项目,对业务环境的分析和理解对项目的成功至关重要。系统、全面理解 IT 系统所处的业务环境,可以帮助 IT 系统能提供正确系统功能,并加速 IT 系统的部署和推广,

终日思 < 须臾学 1万+

ANSYS HFSS 中的相控天线阵列仿真方法

相控天线阵列系统广泛使用,从国防雷达应用到商业 5G 应用。设计这些天线阵列涉及复杂的数学运算,需要全波仿真。Ansys HFSS 全场 3D 电磁仿真软件可以在合理的时间内以较低的计算成本仿真复杂的相控阵天线系统,同时考虑复杂激励、环境(即附近的天线)和平台对其性能的影响。本博客介绍了可用于有效仿真相控天线阵列的不同方法。以下是不同仿真方法的简要概述,视频链接中提供了完整的演示。ANSYS HFSS 提供 4 种不同的相控天线阵列仿真方法:1) 晶胞-无限阵列。

jkh920184196的博客 4256

拆解歌尔2718硅麦:2.75mm超小封装背后的MEMS技术解析

本文深度解析歌尔2718硅麦的2.75mm超小封装技术,探讨MEMS麦克风在微型化过程中的声学性能与结构可靠性平衡。通过ASIC芯片堆叠、纳米级应力控制等创新技术,歌尔2718在TWS耳机和智能手机中实现卓越性能,同时克服微型化带来的声学挑战。

weixin_28292761的博客 610

UML统一建模与项目方案实现

UML统一建模与项目方案实现

lza_csdn2019的博客 1512

MATLAB/simulink电力系统之变压器仿真+变压器饱和仿真+空载变压器电流畸变原因及仿真+空载合闸励磁涌流仿真+simulink免费仿真资源

单相变压器空载运行时,原边电流主要用来产生主磁场,而电路损耗和铁芯损耗很小,因此即使外加电压很大,空载电流仍然很小。如果想观察某个相对磁导率下电感系数的数值,可以在程序中增加这样的语句,比如,在程序中end语句之后,加上L(100),运行程序后就可以得到相对磁导率为 100时的电感系数值。在交流铁芯线圈中,当交变磁通按照正弦规律变化时,受到磁路饱和的影响,线圈中的电流会发生畸变,并成为尖顶波,这就是所谓的交流磁路电流畸变。需要指出,铁芯内的主磁通Ф可以通过空载时的副边电压从来测量,两者之间的数学关系,即。

m0_37724753的博客 4230

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

看网上有很多关于 UML 图的介绍,但都不完整,于是参考了一些 UML 书籍、博客、视频、官网,并基于最新的 UML 2.5 版本(涵盖了 UML 14 种图),总结了这篇文章,希望能给系统分析设计的同学一点参考。本文分为上下两篇,主要讲解 UML 核心图的结构和一些案例,偏向于操作介绍,如果发现本篇文章有任何问题,或在使用 UML 画图过程中遇到问题,欢迎留言评论。

测试萌萌 6487

学Simulink--决策规划场景实例:基于Simulink的智能车辆行为决策仿真

本文基于Simulink平台构建智能车辆变道决策仿真系统,采用MOBIL算法实现"决策-规划-执行"全流程。系统包含自车动力学模型、环境感知模块(含5%噪声)、决策控制器和轨迹规划模块,通过五次多项式实现平滑变道。仿真验证了三种典型工况:正常变道(成功率100%)、邻车拒绝让行和紧急避障,各项指标均满足要求(TTC>3s,横向加速度<2m/s²,决策周期<100ms)。文章详细介绍了建模步骤、核心算法实现和参数配置方法,并提出了强化学习、多车协同等优化方向。该模型为智能

amy_mhd的博客 153

项目篇 | 图书管理系统 | 管理员模块 | 概述

图书管理系统管理员模块概述

百栗.的博客 405

基于UML的毕业设计管理系统的分析与设计

基于UML的毕业设计管理系统的分析与设计 <本段与标题无关,自行略过 最近各种忙,天气不错,导师心情不错:“我们要写一个关于UML的专著”,一句话:“一个完整的系统贯穿整个UML的知识”;我:“--o---k--”。忙里偷闲,先回顾一下吧> 毕业设计是实现本科教学培养目标的重要环节,从选题到答辩一般需要四至六个月的时间,其间工作量很大,尤其需要保留大量的文件...

weixin_30443731的博客 6566

GEE:本地影像上传到GEE的Assets中,并输入机器学习算法中作为特征变量

当我们在 Google Earth Engine(GEE)中应用机器学习算法时,会输入一些影像作为特征变量数据,进一步根据这些特征影像去推理未知区域的数据。但是 GEE 平台上计算特征变量的 API 函数并不是非常全面,我们希望获得更多的特征用于分类。这个时候,我们可以将本地计算的特征影像上传到 GEE 中进行后续处理。本文记录了从本地上传特征数据到 GEE 的 Assets 中的教程,用于后续在 GEE 中分类或者回归使用。本文也可作为《》一文的补充。

养乐多的博客 1730

使用 UML 进行有效的业务建模: 描述业务用例和实现

本文内容包括: 进行一个业务用例模型调查 进行业务用例说明业务用例的实现 事件/动作与职责/活动之间的区别将注意力放在过程自动化上 关注信息流程 结论 附录: 业务建模简介 就像大多数的软件开发从业者所知道的那样,统一建模语言 (UML)在表示真实世界的现象方面是非常优秀的。这种能力导

为天加朵云... 4074

AMD SDP 优快云 系列文章设计

摘要 本文档规划了7篇AMD SDP协议解析系列文章的技术博客设计方案。基于《Scalable Data Port (SDP) Specification》1.5.0版本(122页),面向SoC/NoC领域的RTL设计与验证工程师,构建从基础概念到验证实现的知识体系。 系列文章严格遵循协议规范边界,采用五类证据标签区分内容来源(规范原文、勘误、验证推导等),禁止补充未定义的实现细节。包含端口控制、事务传输、一致性协议等核心内容,最终落实到验证平台设计与覆盖率模型。 每篇文章采用统一模板:明确规范依据、问题导

元直的博客 163

YOLOv8推理程序

YOLOv8单独推理,有时候我们自定义的模块算子无法正常转换为其他框架,而且需要做成应用,因此需要一个单独推理的程序,返回的是识别后的照片还有各个类别及其对应数量。文章最后给出Flask封装为Server以及调用的实例还有Client请求代码,支持几十路多线程并发,只需加载一次模型,后边推理即可。

AIOT魔法师 698

使用 UML 进行有效的业务建模: 描述业务用例和实现

http://www-128.ibm.com/developerworks/cn/rational/r-biz-mod/

ecustsoa的专栏 1389

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

使用EA绘制UML业务用例模型

使用EA绘制UML业务用例模型使用EA绘制UML业务用例模型注意事项建模过程 UML软件:Enterprise Architect 软件版本:14.0.1422 使用EA绘制UML业务用例模型 注意事项 此方法主要适用于EA版本为14的平台,其他版本可以效仿此方法,效果应该都一样。 此博客主要是为了学生党撰写,主要是为了提交作业。毕竟有关这个的博客介绍及其稀少 uml-diagrams网址 ...

NoBugNoLife的博客 3266

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

业务用例和系统用例

<br />"业务用例:业务过程是描述这个业务的具体工作流的;一次涉众与实现业务目标的业务之间的交互。它可能包含手工和自动化的过程,也可能发生在一个长期的时间段中。" <br /> <br />系统用例的设计范围就是这个计算机系统设计的范围。它是一个系统参与者,与计算机系统一起实现一个目标。系统用例就是参与者如何与计算机技术相联系,而不是业务过程。着重系统的控制流、数据流和功能。<br /> <br />业务用例模型与系统用例模型图有什么其他相似之处呢?两者都有参与者。在业务用例图中,您将一个参与者原型化为

thunder09的专栏--没事就写点儿 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

UML建模知识点三-业务用例图

1.软件是组织的零件 对于软件开发来说,业务建模的目的是为了得到待引进软件系统的需求 可以从内外两个方面来研究组织。 1.从外部看,组织是一些价值的集合,我们可以用业务用例图表示; 2.从内部看,组织是一些系统的集合,我们可以用业务序列图来表示。 2.识别业务执行者 业务执行者:以某组织为研究对象,在该组织之外和该组织交互的组织(人群或机构)就是该组织的执行者。因为研究对...

小武的Blog 3011

UML:业务用例

业务用例(business use case)是定义了一组业务用例实例。业务用例具有名称。      业务用例实例(business use case instance)是在业务中执行的一系列动作,这些动作为业务的个体主角产生具有可见价值的结果。        业务流程被定义为数个不同的业务用例,其中每个业务用例都代表业务中某个特定的工作流程。业务用例确定了执行业务时将要发生的事情;它描述了一

技术收藏 1766

《大象 Thinking in UML》学习笔记(三)——UML核心元素之参与者、用例

一、版型在UML里有一个概念叫版型(stereotype),也被称为类型、构造型。版型是由UML里的元素扩展而来,每个元模型都有很多版型,比如用例有“业务用例”、“业务用例实现”等版型。当我们需要时候我们也可以根据UML里的元素自定义版型来辅助建模。二、参与者参与者(actor)是在系统之外与系统交互的某人或某事物,在建模过程中处于核心地位。参与者和系统之间有一个明确的边界,参与者只能存在于边界之

卡小基的博客 8185

UML建模方法论(中):业务建模

UML建模方法论(中):业务建模建模第四步:业务建模1.业务用例视图模型什么是用例图如何建立业务用例视图1.1定义边界什么是业务边界边界的作用定义边界的目的如何得到边界如何判断得到的边界是否合适1.2发现主角主角的定义哪些人是业务主角如何区分主角或者业务工人1.3获取业务用例什么是业务用例业务用例的作用定义业务用例的目的如何找到业务用例2.业务用例场景建模业务用例场景建模的目的 建模第四步:业务建模 业务建模包括 业务用例视图 业务用例场景 业务用例规约 业务规则 业务对象模型 业务用例实现视图 业务用例

九尾人柱力的博客 680
上一篇: 一组和软件有关的笑话
下一篇: OCL指南:业务规则
艾沙可牛
博客等级 码龄20年 54粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值