|
Chapter 12 Moving From A BUC to AUCs In previous chapters we saw the difference between a business use case and an application use case. In this chapter we discuss a process for deriving impacted AUCs from a BUC. 12.1OverviewThe BUC includes business process steps making up its workflow. Each of these steps has the option to be automated. The business analyst (BA), systems analyst (often the same person), systems architect and business process owners (BPO) determine between them which steps are to be automated. The systems analyst and architect roles are mainly to determine the time and cost to automate the business process. The BA and BPO will determine the return on investment (ROI) in order to determine if there value in automating a business process. Once automated steps have been identified (and prioritized) the systems analyst copies each step into a candidate use case (CUC) template. (yes, we are copying, but only temporarily.) The systems analyst works with the CUCs in order to derive functionality that goes into an AUC. Once the AUC has been scoped the CUCs whose functionality was captured by the AUC can be discarded. The CUCs retain traceability to the BUC steps. Prior to being discarded, that traceability is transferred to the AUC. Impacted objects are added to the AUC. These will initially come from the business objects that were identified during the creation of the BUC. The AUC will supply some attributes and states for these objects. 12.2The Rationale behind the ProcessWe create CUCs for the automated BUC steps so that they may be manipulated and traceability to the BUC is not lost. Automation of 1 BUC step may be identical or be a partial implementation of another BUC step. The corresponding CUCs will be consolidated into a single AUC and that AUC retains the traceability to both steps. Traceability for the CUCs is graphical. AUC traceability is textual. 12.3Process DetailsThe following BUC steps are those that were identified as being automated from the restaurant example. · The head waiter hands the customer a menu. · The table waiter is informed they have a new customer. · The table waiter asks the customer for their order. · The customer gives their meal order to the table waiter. · The table waiter takes the customer order to the kitchen. · The meal is ready and the table waiter is informed. · The customer asks the waiter for the bill. · The table waiter gives the customer the bill. · The customer makes a payment to the cashier. · The cashier gives the customer a receipt. · The customer is not satisfied with their meal. · The waiter fetches the head waiter to the table. The following business rules apply to these steps: · The table waiter will request the customer order within 5 minutes of being informed that they have a new customer. · The meal will be delivered to the customer within 10 minutes of the customer placing their order. · The table waiter will give the customer their bill within 4 minutes of it being requested. · The cashier will process the customer’s payment within 2 minutes of the customer initiating payment. · Menu items are categorized by ‘Starters’, ‘Entrees’, ‘Desserts’, Soft Drinks’, ‘Alcoholic Drinks’. Notice that we no longer need the numbering, nor do we care if the step was in the basic workflow or an alternate flow. The steps have also been modified slightly in order to remove any manual parts. The steps are prioritized and assigned to an iteration. The following diagram shows just those steps that are slated for iteration 1. I use a dashed line to indicate that these steps are going to be automated.
Figure 1: BUC Steps For Automation Note that the ‘Waiting For Food’ and ‘Customer Eating Food’ steps are not automated. For each automated step we create an equivalent candidate application use case (CUC) and place these on activity diagram. (I realize that it is getting crowded, but if we were using a modeling tool we might be able to create a new diagram and re-use the activities and use cases on that diagram.) We connect the use cases to their equivalent action step.
Figure 2: CUCs Tracing From BUC Steps Now that we have our traceability in place we may work on the CUCs to turn them into AUCs. If a CUC is deleted we must revisit this diagram to fix the traceability. Similarly, if a CUC is created a traceability link should be added to this diagram. The following diagram shows the CUCs and their primary actor.
Figure 3: CUC Diagram With Primary Actors Now we create a high level description of the application’s functionality within each CUC. Handing Menu To Customer – The system is displaying the initial menu screen with instructions for the customer. The customer requests the system display the menu. The system displays the menu index to the customer, which contains an overview of each menu category. The customer may select a category and have the system display the items in that category. If there are too many items for a single page the system will indicate this and allow the customer to page through the items in that category. The customer may select any number of items from a category by inputting the number of each item into the system. The system will display the items selected by the customer to the customer, along with a running total of the cost of the customer’s selection. Asking Customer For Their Order – Anytime that a customer is making a selection of items from the menu system, the customer will be able to select the order option. The customer’s order is displayed to the customer, along an itemized pricing of each item and a total cost. The customer is prompted to verify that everything is correct and that they wish to pay the total cost of the order. The customer may go back to the menu categories and make changes to the selected items, or the customer may confirm the order. Once the order is confirmed a message is displayed to the kitchen containing the ordered items and the table that they are for. Waiter Is Delivering Food – Once an order has been placed in the pickup area the kitchen will inform the system of where the customer can obtain their food. The system will inform the customer where their food is located. Once the complete meal has been retrieved from the pickup area the system is informed and the system displays the initial menu screen to the customer. Getting Head Waiter – Anytime that the customer has access to the system they may request assistance from a member of the restaurant’s staff. Upon receiving this request, the system will display a message to the system administrator indicating which table is requesting assistance. Given these initial use case descriptions it is possible to update the CUC diagram with secondary actors.
Figure 4: CUC Diagram With Secondary Actors Notice that as a result of writing down the high-level description of the ‘Waiter Is Delivering Food’ use case we discovered that the primary actor wasn’t the customer at all, but the kitchen. Next we consolidate these CUC cases into AUCs and rename them appropriately. ‘Handing Menu To Customer’ and ‘Asking Customer For Their Order’ are closely related, so let’s combine these into a single use case. (We could move the common functionality concerning selecting items from the menu into an ‘included’ use case fragment. I discourage using ‘includes’ and ‘extends’ relationships, unless they either remove duplication from the use case model, or they add clarity to the model. The objective is to keep the model as simple as necessary, by keeping the number of elements in the model to a minimum.) The following diagram shows the CUCs converted to appropriate AUC names and the consolidated CUCs.
Figure 5: Initial AUC Diagram We need to revisit the BUC activity diagram and clean up the traceability.
Figure 6: Updated Traceability Diagram The ‘Handing Menu To Customer’ and ‘Ordering from Menu’ steps both trace to the ‘Order From Menu’ AUC. Once we have detailed the steps, the ‘Order From Menu’ AUC might look like the following: 12.4Example AUCThis section details the use case.
Figure 7: Use Case Diagram 12.4.1 NameOrder From Menu 12.4.2 DescriptionThis use case allows a customer to select any number of any items from the menu and request the system place those items as an order. The system updates the customer with a running total of their bill during the ordering process. 12.4.3 Primary ActorCustomer 12.4.4 Supporting ActorsKitchen, Administrator. 12.4.5 Precondition(s)The welcome screen is displayed. (This is a manual event that is performed by restaurant staff after the table has been cleaned and made ready for a customer.) 12.4.6 Successful PostconditionThe customer has picked up their food order. 12.4.7 Alternate PostconditionsThe administrator is requested to investigate the food order. 12.4.8 Basic Flow1. The customer initiates communication with the menu system. 2. The system displays the ordering instructions to the customer. 3. The customer requests to display the menu. 4. The system displays the menu categories to the customer. 5. The customer selects a category. 6. The system displays the menu items for that category to the customer. 7. The customer selects items from the menu. 8. The system displays the selected items and a running total of their cost. 9. The customer elects to place their order. 10. The system displays the order and requests confirmation that it is correct. 11. The customer confirms the order. 12. The system displays the order to the kitchen and displays the customer the confirmed order. 13. The use case ends. 12.4.9 Alternate FlowsA.1 Customer Changes Page 14. At step 9, the customer changes the page on the menu. 15. The system displays the selected page menu items. 16. The use case continues from step 7. A.2 Customer Changes Category 17. At step 9, the customer changes the menu category. 18. The use case continues from step 6. A.3 Customer Changes Order 19. At step 11, the customer changes their order. 20. The use case continues from 4. 12.4.10 Extension PointsNone.
Figure 8: Order From Menu Activity Diagram Note 1: I would question whether these four actions are displaying too much information. I have shown changing pages and selecting categories as alternative flows. I might also have combined these 4 actions into a single activity named 'Selecting Menu Items'. 12.4.11 Performance RequirementsWe identify performance requirements for the system. SUP.1 By default, all responses to the customer will occur within 2 seconds. SUP.2 All responses to selecting menu items on a page will occur within .5 seconds. SUP.3 When the customer places an order the kitchen staff will be informed within 30 seconds. 12.4.12 Supplementary RequirementsFinally we need to look at the business rules for the BUC and determine if any of these apply to our AUC. SUP.4 Menu items will be categorized in the following order; ‘Starters’, ‘Entrees’, ‘Desserts’, Soft Drinks’, ‘Alcoholic Drinks’. 12.5Impacted Potential ObjectsWe identify an initial set of objects and some potential states. These will probably change when modeled in class and state diagrams during the analysis and design activities.
Figure 9: Activity Diagram With Objects[1] Where an object might take a state, I have entered the state under the object name. For example, the Order Display may be either in a ‘Confirmed’ state or an ‘Unconfirmed’ state. 12.6SummaryWe saw a process for automating a Business Use Case (BUC), by detailing the steps of the BUC with an activity diagram, identifying which steps are to be automated, assigning these to Candidate Use Cases(CUCs), then working the CUCs to turn them into Application Use Cases. We identify performance requirements for the AUC steps and any supplementary requirements that may be derived from the business rules. Finally, we add potentially impacted objects to the AUC activity diagram. [1] For some reason, when copying activity diagrams, Visio insists on removing the labels from the control flows. |
| Back To Chapter 11 Index Forward To Chapter 13 |