Uml 扩展用例的规范
我试图弄清楚如何指定扩展用例 例如,假设我有一个用例Uml 扩展用例的规范,uml,extend,use-case,Uml,Extend,Use Case,我试图弄清楚如何指定扩展用例 例如,假设我有一个用例支付在正常流程中按点描述: 1. User select the product 2. User make the payment 3. System validates the payment 该流程包含在规范表中(包括参与者、前置条件、后置条件等) 现在我想在扩展使用案例规范中引用这个用户案例,比如用信用卡支付,而不重复所有相同的步骤;我该怎么做 在这种情况下,我需要扩展的唯一步骤是步骤2。,它以如下方式扩展: 2.1 User cho
支付
在正常流程中按点描述:
1. User select the product
2. User make the payment
3. System validates the payment
该流程包含在规范表中(包括参与者、前置条件、后置条件等)
现在我想在扩展使用案例规范中引用这个用户案例,比如用信用卡支付
,而不重复所有相同的步骤;我该怎么做
在这种情况下,我需要扩展的唯一步骤是步骤2。,它以如下方式扩展:
2.1 User choose payament with credit card
2.2 User insert credit card
2.3 User insert Pin
但是,我如何才能在不重复步骤1和步骤3的情况下将其放入规范中呢
或者有另一种方法来处理这个问题?基本上,用例应该只显示正在考虑的系统向其参与者之一交付的附加值。通常,人们倾向于通过误用extends/includes开始功能分解。然而,有时候,当添加不同的支付方法来扩展支付过程时,显示像这里这样的变化是很有用的 首先,“Pay”不是用例(它只是动词)。甚至“付费产品”也不是一个用例。我怀疑演员是否会将其视为附加值——事实恰恰相反。用例(我猜)相当于“购买产品”,这是一个很大的区别。演员想要得到这个产品,很明显,获得这个产品需要一些交换条件(在几乎所有的情况下都是金钱)。现在您已经有了这个用例,您希望显示放入气泡中的选项(!)。这些基本上不是用例本身。它们只是扩展了现有的用例。“信用卡支付”和“现金支付”就是这样的扩展。(不幸的是,UML在真实用例和此类伪用例的图形中并没有什么区别。) 现在,在您的文本描述中,您将在付款地点和相应的分支机构作出决定。例如
基本上,用例只应显示正在考虑的系统向其参与者之一交付的附加值。通常,人们倾向于通过误用extends/includes开始功能分解。然而,有时候,当添加不同的支付方法来扩展支付过程时,显示像这里这样的变化是很有用的 首先,“Pay”不是用例(它只是动词)。甚至“付费产品”也不是一个用例。我怀疑演员是否会将其视为附加值——事实恰恰相反。用例(我猜)相当于“购买产品”,这是一个很大的区别。演员想要得到这个产品,很明显,获得这个产品需要一些交换条件(在几乎所有的情况下都是金钱)。现在您已经有了这个用例,您希望显示放入气泡中的选项(!)。这些基本上不是用例本身。它们只是扩展了现有的用例。“信用卡支付”和“现金支付”就是这样的扩展。(不幸的是,UML在真实用例和此类伪用例的图形中并没有什么区别。) 现在,在您的文本描述中,您将在付款地点和相应的分支机构作出决定。例如
如果用例
PayWithCreditCard
用例Pay
,则Pay
应明确标识扩展将在何处插入其行为
对于用例的表格规范也是如此(尤其是?):规范应列出潜在的扩展点,并在事件流中识别这些扩展点。例如,Spence&Bittner建议使用花括号来标识扩展点(参见他们的书用例建模,第7章)
在您的情况下,这将如下所示:
Use-Case: Pay
Actors: Buyer
Extension-points: Provide payment details
Validate payment
Basic flow:
1. Buyer selects the product
2. Buyer makes payment
2.1. Buyer selects the payment method
2.2. { Provide payment details }
3. System validates payment
3.1. { Validate payment }
3.2. Inform buyer that the payment was accepted
Pre-conditions: ...
扩展点将在扩展中定义。根据所选的支付方式,{validate payment}
扩展点可以触发与银行的即时信用卡交易,或者等待会计师延迟手动确认收到传入电汇
为了识别备用流,您可以使用:
At { Validate payment }, if rejection or time-out: ....
重要的是要知道,扩展用例可能需要知道它扩展的用例的扩展点。这不同于包含关系,其中包含的UC被理解为独立于包含它的用例 如果用例
PayWithCreditCard
用例Pay
,则Pay
应明确标识扩展将在何处插入其行为
对于用例的表格规范也是如此(尤其是?):规范应列出潜在的扩展点,并在事件流中识别这些扩展点。例如,Spence&Bittner建议使用花括号来标识扩展点(参见他们的书用例建模,第7章)
在您的情况下,这将如下所示:
Use-Case: Pay
Actors: Buyer
Extension-points: Provide payment details
Validate payment
Basic flow:
1. Buyer selects the product
2. Buyer makes payment
2.1. Buyer selects the payment method
2.2. { Provide payment details }
3. System validates payment
3.1. { Validate payment }
3.2. Inform buyer that the payment was accepted
Pre-conditions: ...
扩展点将在扩展中定义。根据所选的付款方式,{validate payment}
exte