1 Authoring Use Cases (Filled and Focused) from Use Case Modeling, by Bittner and Spence, Chapters...

36
1 Authoring Use Cases (Filled and Focused) from Use Case Modeling , by Bittner and Spence, Chapters 4, 6, and 7

Transcript of 1 Authoring Use Cases (Filled and Focused) from Use Case Modeling, by Bittner and Spence, Chapters...

1

Authoring Use Cases (Filled and Focused)

from Use Case Modeling, by Bittner and Spence, Chapters 4, 6, and 7

2

Introduction

We: Know that Use Cases represent / can

capture the functional requirements of an application.

Know that there are ‘levels of maturity’ of Use Cases.

Know about Façade Use Cases and Know about the use of a template. Know different organizations will likely

require different formats, attributes…

3

Use Case Number:

Use Case Name:

Actor (s):

Maturity: (Façade/Focused/…

Summary:

Basic Course of Events: Actor Action System Response

Alternative Paths:

Exception Paths:

Recall the format we will use:

4

Extension Points:

Triggers:

Assumptions:

Preconditions:

Post Conditions:

Reference: Business Rules:

Reference: Risks

Author(s):

Date:

5

Façade Use Cases

Also recall facts about Façade Use Cases: Identify the Use Cases Placeholders Help to establish a framework for further

maturity development Help to establish application boundary Contain a number of attributes, but no basic

course of events is included. Often features may map one to one to a use

case if feature is general (abstract) enough.

6

Outline the Use Case

Use Cases can be: a short as half a page to as long as a number of pages Whatever is required to capture both

the basic and alternative flows in a form that satisfies ALL of the stakeholders.

If at all possible, abstract out some of the details (glossary; domain model; subflows, include and extend use-cases).

KISS.

7

Start off with an Outline of Use Case

Start off with the Use Case name, a brief description of the use case and identify actors (persons, systems, …)

Identify the basic flow of events as steps. Walk through these! This is an art! Enumerate the alternate flows as A1, A2, etc.

just an outline here. Will undertake the real use case authoring shortly.

Example:

8

Sample Outline – Withdraw Money Basic Flow (Outline format)

Insert Card Validate Card Validate Bank Customer Select Withdraw Select Amount from List of Standard Amounts Confirm Transaction with Banking System Dispense Money Eject Card

List of Alternate Flows A1. Card cannot be identified A2. Customer cannot be identified A3. Withdraw not required A4. Non-standard amount required A5. No money in the account A6. Attempt to withdraw more than daily amount A7. No connection to the banking system A8. Link goes down A9. Card stolen – the card is on the hot-card list A10. The ATM is out of money A11. The card cannot be dispensed A12. A receipt is required A13. The withdrawal is not from the card’s primary account etc.

9

Sample Outline - Comments

Can see from outline format some are core functionalities some are extra, or complementary functions

e.g. If receipt is always required, A12 is NOT an alternate flow (found in basic flow).

some are non-essential flows (like withdrawing from other accounts than primary) Might not be needed.

Must be able to Trace the use cases back to business rules, features, constraints, …

Don’t create requirements that do not trace back to required features!

10

There are a number of other Use Case Styles

11

Sample Conversational FormUser Action System Response. . .

Display product offerings showing categories selected by user

Browse product offeringsSelect items for purchase For each selected item in stock record

select items and quantities, reserving them in the inventory

Prompt for payment instructionsProvide payment instructions

Record payment instructions capturingpayment terms and credit card type, numberand expiration date using secure protocol

Prompt for shipping instructionsProvide shipping instructions

Record shipping instructions, capturingbilling address, shipping addresspreferences, and delivery options

Complete transactionRecord transaction and provide receipt containing a list of the products ordered, their quantity and prices as well aspayment terms. Credit card information should be partially omitted, displaying only the last four digits of the cc number.

12

Comments – on Conversational Style

Good for single actor; where system/actor engage in interactive dialog.

Can contain a lot of detail – good – but this can become a liability.

Not good for capturing a number of actors Not good for complex responses, like

controlling an antilock braking system.

13

A Short List of Styles Outline formats – extremely cryptic. Conversational Format (shown) Narrative formats in sentence format

The user …. The system …. The system… The user…. (almost like prose)

Flexible format; can show multiple actions and actors. Supports ongoing evolution of use case and use of

subflows…. Often the preferred format for complex systems. This one is our choice…

There are other formats too, naturally…

14

Sample “Maturity Levels”

Bittner and Spence: Discovered Briefly Described Bulleted Outline Essential Outline Detailed Description Fully Described….

Kulak and Guiney: Façade Filled Focused Finished (eliminated this one in latest book)

Other authors: other ‘maturity levels.’

15

Flows in Use Cases

Many and varied. ‘Captured’ differently by different authors. Called different things by different authors. Doesn’t really matter what they are

called as long as the alternate flows (all kinds) are indeed captured and understandable by all stakeholders.

16

Subflows, Alternate Behaviors, Extension Points

Subflows: Some Use Cases are simply just complex and long. It is often best to remove some of the detail

and/or complexity (factor it out), and Break it up into more manageable segments.

(Subflows) We may abstract these parts out of basic flow. This means we put some kind of note or

designator or some kind of tag or notation into the flow to indicate that another segment ‘goes here.’

17

Subflows, Alternate Behaviors, Extension Points

Alternate Behaviors: Some use cases need to capture and insert alternate behaviors that are not necessarily “conditional,” but ‘may’ be… ) (Alternates) Paths that are perhaps just not quite as likely as the Basic Course

of Events, but still viable paths! E.g. Withdraw money from savings account vice checking. Not ‘happy path’ but still quite commonly done.

Exceptional Behaviors: Some use cases have behaviors that are executed conditionally. (Exceptions) especially error conditions – would be executed if some kind of

unexpected condition occurs. Some people call things like – not enough money in account as an

exception; others might call this an alternative.

18

Subflows, Alternate Behaviors Extension Points

Extension Points: Some use cases have the need to be able to insert additional placeholders, to bound statements, or to tag alternate behaviors that may/may not be

“conditional.” Also need a syntax for indicating WHERE in the flow of

events, these other behaviors inserted, referenced, etc. (Extension Points).

Further, upon ‘branching’ to these behaviors, we need to be able to unambiguously indicate where the return, if any, should be.

Essential thinking for mature use cases. Let’s look at these in more detail…

19

Subflows (1 of 4) Subflows are often used

for complex use cases. to break down the complexity of some use cases.

Different authors have different styles…

Normally (not always) a subflow may be given a tag of S1 (, …, Sn) and/or a name.

Subflows are documented separately rather than inserting text in line …and cluttering basic flow.

Executions are atomic. Use Case can ‘perform’ subflows in optional

sequences or in loops or even several at a time. Abstracting in ‘higher level flow’ greatly

assists ‘complexity.’

20

Subflow Examples (2 of 6) Within the body of the flow of events, one might see the

specification:

The system captures the payment instructions using a secure prototcolPerform Subflow Validate Payment Instructions

The system prompts the Customer to enter shipping instructions

The system captures the shipping instructions using a secure protocol

Perform Subflow Validate Shipping Instructions…

Another example within the body of the flow of events:

The client logs into the application Perform Subflow S1 Login

…. (In this case, Login is not an “included” use case…)

21

Sample Subflow Login Narrative (3 of 4)Subflow: S1 Login1. When the user enters the system for the first time, the system prompts

the user for a password2. The user enters this password (the system echos only ‘*’

characters to the screen as they do so). When the userindicates (note: no implementation details…) completion of entering the password, the system compares the password to the one associated with the user’s profile.

3. If the password matches, the user is granted access to the system and the use case continues note this…we’d ‘return.’If the user does not enter the correct password the systemreports that the password is incorrect

i. The user is given two additional opportunities to enterthe correct password

ii. If the user fails to enter a correct password in threeattempts, the system logs the failure attempt dateand time along with the user profile and the useris logged off the system

b. If the password finally matches, the user is granted access to the system and the use case continues note this; return otherwise, the system reports that the password is incorrect.

22

Subflows – more (4 of 4)

Must be documented as a flow of events. Notice: “Perform” or “Do”…. Like a subroutine / subprogram ‘call.’ Captures specific functionality… A great way to reduce complexity and

clutter and yet keep essential functionality.

23

Extension Points (1 of 7) Extension Points are named places in

the flow of events where additional behavior can be inserted or attached.

May be ‘private’ (used only in the user case in which they appear) or ‘public’ (used by other extending use cases).

Can be found anywhere in flow of events. Within a flow of events, extension points are

shown in bold and enclosed in curly brackets (braces)

Example: {Display Product Catalog}, {Out of Stock}, {Process the Order}, and {Order Processed}.

These extension points are normally included as text in the Extension Point attribute of a standard Use Case template.

24

Extension Points – (2 of 7) There are no specific naming conventions for

extension points. The named extension point should sum up or

capture some aspect of where the position is in the use case such as {Process Order} or what the use case has achieved, such as, {Order Processed} (like a ‘comment’)

Extension Point is like a ‘tag’ or ‘label’ While the extension point can normally occur

anywhere in flow of events, it is best implemented when placed on their own line and not embedded in a chunk of text.

25

Extension Points – (3 of 7)

Three kinds of extension points 1. A single location – here, it defines a

single point in the flow of events (inserted behavior)

2. May be used to define a ‘state’ that the flow of events is in. (May appear multiple times)

3. May delineate a range of activities, that is, mark off a set of activities (begin…end)

Examples: (next two slides)

26

Use Case Including Extension Points (4 of 7)(In the flow of events)

1. The use case starts when the actor Customer selects to browse the catalog of product offerings

{Display Product Catalog}

(Note that this is: on a line by itself, and is an example of the ‘state’ the use case is in… and is an example of type 2 (see previous slide)). Next interchange shows this.

2. The system displays the product offerings highlighting the product categories associated with the Customer’s profile.

{Select Products}

(Note again, an example of type 2: shows the state the flow is in.) Actor is selecting products…

27

Use Case Including Extension Points (5 of 7)(In the flow of events) – Continuing…

3. The Customer selects a product to be purchased, entering the number of items required.

4. For each (note: implies iterative behaviors) selected item that is in stock, the system records the product identifier and the number of items required, reserving them in the inventory and adding them to the Customer’s shopping cart.

{Out of Stock} (This is an example of type 1 extension point. Behavior

can be placed here or ahead…addressed ahead) 5. Steps 3 and 4 are repeated until the Customer selects

to Order the Products. {Process the Order}

(Again, shows the state the flow is in. type 2)6. The system prompts the Customer to enter payment

instructions.….

28

Use Case Including Extension Points (6 of 7)(In the flow of events)

Recall the {Out of Stock} extension point:This extension point may be placed in multiple

places in the flow of events if there were/are multiple places where the use case is dependent on the system not being out of stock. In this case, the behaviors would be documented separately – perhaps at the end of the use case.

Or {Out of Stock} //additional behavior could be placed

in here in line if the condition only appears once (style).

Clearly the reference would be preferred to inline behavior if the condition appears multiple times.

29

Example of Extension Point (7 of 7)

And…example of the third kind:In a use case for a system that controls a pump to dispense fuel, you could delimit the section of the flow of events where fuel is being dispensed with extension points:

{pump activated} … …{pump deactivated}

30

Alternate and Exception Behaviors (1 of 6)

Note: These are alternate or exceptional behaviors. Always dependent upon some condition occurring at an

explicit point in a flow of events. Alternate / Exceptional Flows are conditional flows!

Conditional flows are not necessarily errors. Conditional flows may be choices the user makes Conditional flows may be errors.

May be absolutely essential flows basic to the Use Case

Reference alternative / exceptional behaviors in the Use Case Narrative? Can use ‘step’ references, such as A4 or E6, or Reference them numerically, A1, A2, E1, …or, use a name like an Extension Point or combination…

31

Alternate and Exception Behaviors (2 of 6)

Three kinds: 1. General Alternate Flow

Can start at any point within a use case 2. Specific Alternate Flow

Can start at a specific named point in another flow of events (public reference)

3. Bounded Alternate Flow Like the general flow, but can only occur

between two named points.

First, the syntax for alternative flows…

32

General Alternative Flows (3 of 6)

Alternative (and exception) flows are named and numbered.

Can number the alternative flow A1…An that captures the purpose. (may have a name too)

The first line of the alternative flow’s flow of events identifies the point at which the alternative will be activated and the conditions under which it will occur.

This clause is always of the form:At {extension point} when <some event occurs>… or

At {extension point} if <some event occurs> (two and three slides ahead)

33

General Alternative Flows (4 of 6) Before looking at an example, note: The last line of the

alternate flow and any other exit points within it must state explicitly where the actor resumes the flow of events! may be where original extension point was triggered, or may be at some other extension point elsewhere in the flow of

events – unless the use case ends.

If behavior is optional, return is normally to the original extension point and flow may continue there or at some other designated point.

For ‘exceptional’ (e.g. error condition) behavior, return may be to the end of the use case

(If use case ends in the alternative flow, then an explicit ‘use case ends here’ needs to be included.)

34

Examples of Specific alternate flow (5 of 6) A3. Product Out of Stock

Could indicate this in Extension Points attribute.At {Out of Stock}, if there are insufficient amounts of the product in the inventory to fulfill the Customer request, the system informs the user that the order cannot be fulfilled

(… the flow continues to describe the offering of alternative amounts and products to the customer)

The flow of events is likely resumed from the point at which it was interrupted. However, the use-case might end here too.

35

Example of a Bounded Alternate Flow

A1. Undertake a Keyword Search Documentation:

At any point between {Display Product Catalog} and {Process Order}, when the Customer selects to undertake a keyword search

The system prompts the Customer to enter the product search criteria

The Customer enters the product search criteria(…the flow continues to describe what the

Customer and the System do to complete the search…)

The flow of events is resumed at {Select Product}

36

Summary

So, there is no ‘one style fits all.’ Remember: the most important thing

– by far – is to be certain to capture and document all the required functionality.

Ensure sufficient detail is present to support follow-on design.

All the ‘whats’ must be addressed.