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在真实用例和此类伪用例的图形中并没有什么区别。)

现在,在您的文本描述中,您将在付款地点和相应的分支机构作出决定。例如

  • 选择付款方式

    2.1如果使用信用卡:执行用例“使用信用卡支付”

    2.2现金支付的其他情况:执行用例“用现金支付”

  • 处理异常在这里被证明是很棘手的(在图形和文本表示法中)。所以你可能需要继续

  • 如果拒绝付款,请在 等等

    UC图看起来像


    基本上,用例只应显示正在考虑的系统向其参与者之一交付的附加值。通常,人们倾向于通过误用extends/includes开始功能分解。然而,有时候,当添加不同的支付方法来扩展支付过程时,显示像这里这样的变化是很有用的

    首先,“Pay”不是用例(它只是动词)。甚至“付费产品”也不是一个用例。我怀疑演员是否会将其视为附加值——事实恰恰相反。用例(我猜)相当于“购买产品”,这是一个很大的区别。演员想要得到这个产品,很明显,获得这个产品需要一些交换条件(在几乎所有的情况下都是金钱)。现在您已经有了这个用例,您希望显示放入气泡中的选项(!)。这些基本上不是用例本身。它们只是扩展了现有的用例。“信用卡支付”和“现金支付”就是这样的扩展。(不幸的是,UML在真实用例和此类伪用例的图形中并没有什么区别。)

    现在,在您的文本描述中,您将在付款地点和相应的分支机构作出决定。例如

  • 选择付款方式

    2.1如果使用信用卡:执行用例“使用信用卡支付”

    2.2现金支付的其他情况:执行用例“用现金支付”

  • 处理异常在这里被证明是很棘手的(在图形和文本表示法中)。所以你可能需要继续

  • 如果拒绝付款,请在 等等

    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}
    扩展点可以触发与银行的即时信用卡交易,或者等待会计师延迟手动确认收到传入电汇

    为了识别备用流,您可以使用:

    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