Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 1 Use Cases Read Chapters 7 and 8 of Using UML Issue: How do we systematically capture requirements? Just asking stakeholders will produce random coverage of a domain. Use Cases Centric approach provides a mechanism for systematically capturing large related segments of domain requirements from the users’ perspective in the form of scenarios. Most stakeholders know how they interact or will interact with a system, or what needs a system must satisfy. By capturing large related chunks of specification, we are less likely to miss significant parts than we would be by dealing with individual requirements. If we have the large chunks it is easy to fill in the missing gaps. Use Cases modeling helps in more than four ways 1. Capturing requirements 2. Planning iterative development 3. Validating systems 4. Verifying systems Developed by Ivar Jacobson 1.1 Use Case Model/Diagram and Scenarios The use case centric approach is composes of diagrams and scenarios. Use Case Scenarios are short stories written in a specific format that define how the system is used. Sometimes these are called use case flows. Diagrams provide an abstraction of how uses cases interact with each other and the users of the system 1.1.1 Use Case Diagram Two components , Actors and Use Cases. See Figure 7.2 on page 94 Actors: Represented by stick people in the model Someone or something that the system interacts with. Can be a person, another system, but generally NOT a group. Has a role in or with the use case Identifying human actors: o Don’t specify individuals, but the roles they play in the domain Example: don’t use Bubba, but use Bubba’s role as a Bank Customer. o Roles – each unique actor role is represented by an Actor even if the different roles are played by the same individual. Non-human actors: allows abstraction of other systems that interact with our system. This simplifies the model, in that we don’t need to get into the details of other systems. ©2011 Mike Rowe Page 1 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design Use Case Represented by an oval in the model. A use case represents a sequence of actions or steps a system performs that yields an observable result of value to a particular actor. An action is a procedure that is invoked when an actor provides a signal to the system or when the system is triggered (example a time out occurs). An action is atomic – it is performed entirely or not at all. Use verb phases to name Use Cases (WithdrawMoney, CheckoutBook, OrderPizza, EatLunch, TakeOutTheGarbage, etc.) Do not use nouns (Withdrawal, Book Checkout, Pizza Order, Lunch, …) Scope of a Use Case can be controlled by the following guidelines: An observable result of value – an actor should not need to perform several use cases to achieve something useful. o This provides guidance for keeping the level of granularity high enough. o Example1: Entering one’s PIN in an ATM machine does not provide something meaningful to the actor, an ATM Bank Customer who is withdrawing money. o Example2: Taking a picture with a camera ( aiming, focusing, clicking the button) is at a good level in that it produces something of value for the Actor, whereas just clicking the button of the camera (alone) is not sufficient. A particular actor – forces the value of a use case to be relevant to a specific user or small class of users. o This provides guidance for keeping the level of granularity low enough. o Example: A Use Case should not include all transactions of an ATM machine (WithdrawMoney, PayBills, PayLoan, BuyStocks, …) as most Actor instances will never use all of these use cases. Use Case Diagram: A use case diagram relates the actors and use cases for a system or subsystem. Actors are connected to Use Cases by non-directed lines. Earlier versions of Use Cases used directed lines in order to show participation – receive benefit, provide signals, etc. One way of developing Use Cases: 1. The list of Use Case titles that your team has developed are the starting point for further development. 2. Next, you identify the actors (roles) for each of the use cases. Identify all actors that need to use (interact with) a use case or receive benefit from it. o Alternatively, you can identify all of the actors and then identify the use cases with which they interact. Note the book suggests this method. Identifying the users for a use case should be easy (if it's not, watch out we may have a bad use case!) Identifying non-human actors is trickier o What's an external system? keyboard? Internet? Another Computer? o Alternative sets to include: include all external systems that this system must get data from or supply data to ©2011 Mike Rowe Page 2 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design include those which initiate a contact include those which get value from the contact o Why exclude most some non-human actors? end up analyzing portions that are well outside scope example: for an ATM the posting payments to customer accounts at a bank. We should not go this deep, just use the main bank and not go deeper. For future planning: o Assess how much each actor needs a particular use case. o Identify any known risks associated with each use case. o Provide a first rough estimate of cost to implement each use case. o This will help prioritize the Use Cases. This will help in sorting out what is or is not needed in Phase I or Iteration I of the Project. Do the most needed first. Which use cases would the user most want to see early? o May want to start early on the more risky use cases to allow time to work things out. May help to identify which real people are associated with each actor. This can help with elaborating use case flows. Go to the individuals to get their perspective on a use case. System boundaries – a big system can be subdivided into subsystems. Rectangular boxes, UML Packages, are used to separate the subsystems of use cases. Once this is done, one can start elaborating the use cases (see Use Case Flow of events below). Look at library system in the book, page 94. List the Use Case Titles: ReserveBook, BorrowCopyOfBook, ReturnCopyOfBook, ExtendLoan, BorrowJournal, ReturnJournal, UpdateCatalog, BrowseForBook, ReturnBooksToShelf, PurchaseNewBooks, InventoryBooks, PutBookOnReserve, BarrowReserveBook, ReturnReserveBook, CheckOutCD, ReturnCD, … Identify Actors for each use Case: 1.2 Use Case (Flow of Events or Scenarios) Capture the details of WHAT a use case should do. Use cases can replace low-level requirements or augment low-level requirements by showing how they function altogether. A scenario defines a process from the user’s point of view. Written in concise steps from a user’s / actor’s perspective. Domain terms must be consistently defined in the project glossary. Example: Withdraw Money from an ATM (Note: I have capitalized Actor Names) 1. The use case begins when the Client inserts an ATM card. 2. The System reads the information on the ATM card 3. The System validates the information read from the ATM card. 4. The System prompts for PIN. 5. The Client enters PIN. 6. The System validates PIN. 7. The System asks which operation the Client wishes to perform. 8. The Client selects “Cash withdrawal” 9. The System prompts for the amount to withdraw. ©2011 Mike Rowe Page 3 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 10. The Client enters amount 11. The System displaces account types (“checking”, “saving”, “credit”) and requests the Client select one for withdrawal 12. The Client selects the account type 13. The System communicates with the ATM network to validate account ID, PIN, and availability of the amount requested. 14. The System asks the Client whether he/she wants a receipt. 15. The System asks the Client to withdraw the card. (This is a security measure to ensure that Clients do not leave their cards in the machine.) 16. The Client withdraws the card. 17. The System dispenses the requested amount of cash. 18. The System prints a receipt. 19. The Client pulls out the receipt. There are various paths through this use case based on o Input from the Client: (can cancel at anytime, want a receipt, which account, etc.) o Internal state of the System: (out of paper for receipt, too little cash in ATM, etc.) o Time-outs and errors: (System may cancel transaction on a timeout for Client action, network response, repeated wrong PIN, bad ATM card, etc.) o Each instance, represents unique path, and is called a Use Case Scenario. The set of all scenarios is a use case (class). o Sunny Day Scenario – term used to refer to the primary, everything goes smooth, path through a use case. o Rainy Day Scenario – any path that deviates from the “sunny day”. EX: paper jam in the ATM machine. Machine is out of money. Non-valid PIN entered, etc. What do we do under these exception cases? 1.2.1 Scope of a use case What is too little and what is too much for a single use case. o We could combine all ATM transactions into a single use case (Withdraw, Deposit, Transfer, Pay Loan, etc.). This would provide multiple observable results for an actor, therefore not a good idea. Also, subclasses of actors may never use all of these transactions. Has anyone used the Pay Loan use case? This is too large! o We could break the Withdraw use case into multiple use cases, Read Pin, Validate Pin, but each of these alone do not provide an observable of result of any real value to any actor. This is too small. o Focus on finding things of value that a system provides to its actors How detailed should the steps be? o Until there is agreement among stakeholders (users, testers, designers, developers, etc.) with respect to what a use case means. ©2011 Mike Rowe Page 4 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design Organization of Use Cases – Some huge systems may have 1000’s of use cases. Biggest system I worked on probably approached around 5,000 use cases. There were about 50 subsystems each with about 100 use cases. o Use Case Package – in larger systems one needs to group similar use cases together to help people access and analyze them. Systems, Subsystems, Subsubsystems, … seem to provide natural container boundaries. Usually a good size range in package will have from 5-20 Use Cases. Packages can contain other Packages. o Subflows – A main use case may be subdivided into several (alternative) subflows. This is generally done when the same set of steps is common to multiple main use cases. The concept is similar to a reusable function/procedure in a programming language. UML 1.3 – had two constructs for subflows, Uses and Extends . Uses – common steps that are ALWAYS executed in one or more use cases. Simply done for reuse of common concepts (code, doc, tests, …). EX: StartATM_Session, “ReadCard”, and “EnterAndValidatePIN” are common to all ATM functions (Withdraw, Deposit, Transfer, PayLoan, etc.). We could make a Uses use case of “UserAuthentication”. Extends – common steps that are CONDITIONALLY executed in one or more use cases. Done primarily to simplify the flow of scenarios. EX: what processing shall be done when user enters a bad PIN 3 times. OR. Adding the non-standard telephone services (CallWaiting, CallForwarding) to a standard 2-party call. UML 1.4 – has three constructs for subflows; Inclusion, Extension, Generalization/Specialization Inclusion – is the same as Uses, common steps that are ALWAYS executed in one or more use cases. The flow of a use case is incomplete if the Inclusion is not present. Extends – non-standard processing – the EXTENDS of UML 1.3. The point at which an extends attaches to another Use Case is called the “Extension Point” Generalize/Specialize – modifications of a use case to suit a more specialized function. The steps are generally the same as a class of use cases, but there may be more attributes involved. Also, generalize/specialize can be applied to Actors. Non-functional Requirements – requirements that relate to concurrency, performance, reliability are generally not covered by use cases. This is why we may need System Level requirements to cover this aspect. Validation – “Walking a use case”. Stakeholders act out the use case flows to determine whether they are valid. 1.3 Use Case Scenarios/Flows Rules of Thumb Effective Use of Language in Use Cases, By Kendall Scott ©2011 Mike Rowe Page 5 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design http://www.requirementsnetwork.com/sites/requirementsnetwork.com/files/Effective%20Use%20of%20Language%20in%20Use%20Cases .pdf Use active voice, and speak from the actor’s perspective o “ The customer selects the item” NOT “The item is selected by the customer” // this is passive voice Use present tense o “The customer selects the item.” NOT “The customer shall select the item” // future tense or “The customer selected the item” // past tense o Often times we use the future tense for requirements – see future tense above. Express your text in the form of “call and response.” o The text should reflect the fact that the actor performs some action(s) and the system responds accordingly o “The System prompts for a PIN.” (CALL) and o “The Client enters a PIN.” (RESPONSE) Keep the use case short o The use case should address one functional requirement, or perhaps a small set of requirements, and do it in a way that is obvious to anyone who reads it. Note that we may be using Use Cases rather than writing requirements and that we are using “one functional requirement” as a unit of measure rather than a concrete entity. o Each use case should be a small, mobile unit that lends itself to possible reuse in other contexts. Establish the initial context o You have to specify where the actor is, and what he or she is looking at, at the beginning of the use case. There are two ways to do this. 1. The first way involves specifying the context as part of the first sentence/step: “The Accountant enters his or her user ID and password on the System Login page,” 2. The second way involves defining a precondition: “The Accountant is looking at the System Login page” or “The system is displaying the System Login page.” Don’t do both and be consistent from use case to use case. Make sure that each use case produces at least one obvious result of value to one or more actors, even if that result is negative. o A use case can’t just end floating in space—something measurable has to happen. Of course, this is generally some positive result: “The actor is logged in to the system,” “The system creates an Order,” “The system generates a report.” ©2011 Mike Rowe Page 6 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design o Some like to specify this as a postcondition – don’t do it in both the last step of a use case and in a postcondition (this would be redundant). Write your alternate courses “rainy day scenarios” the same way you write your basic course, except of course that alternates have the word “if.” o Signal the presence of an alternate course involves using words such as “validates”, “verifies”, “ensures”, or “checks”. “The system verifies that the credit card number the Customer entered matches one of the numbers it has recorded for that Customer,” – this begs the question “Well what happens if the verification fails?” “If the system does not match the entered credit card number to any of its stored values, then it displays an error message and prompts the Customer to enter a different number.” Simplify, simplify, simplify. o “If a (sober) person off the street can’t read this and understand it right off the bat in 30 seconds, there’s something wrong with it.” o “Right off the bat” means that your reader should not be slowed down by unfamiliar acronyms, unclear jargon, sloppy verbiage, or, especially, Using Big Words Where Little Words Will Do Just Fine Syndrome. o Rowe’s version, “Should be simple enough for your grandmother to understand” End goal of Use Cases o This is a device to capture requirements in ways that the people building the system will understand and be able to run with. It’s a means to an end, not the end in itself o Use cases are the input artifact for many other process tasks: Design, Coding, Test Generation, Documentation, Maintenance, … Consider what information is necessary to complete these future project tasks. 1.4 Possible Problem with Use Cases (according to Stevens) Use Case centric approach will end up with a non-object oriented system. The author states that developers may rush to develop the use cases, which are procedural in nature, without bothering to develop objects. This leads to code that is difficult to maintain. o My opinion, this is more of a process problem and this situation is just as likely to occur with straight requirements. There is a danger of mistaking design for requirements. Use case flows are generally written as very concrete procedures from a user’s perspective. Requirements engineers may not consider better ways of providing the same or better functionality. o My opinion, this is no different from capturing straight requirements. Use Cases flows can often help stakeholders see better procedures. Use cases have been used for non-software systems to optimize people organizations, factories, etc. Until a process is modeled, it is hard to optimize it. ©2011 Mike Rowe Page 7 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design Author approach of specifying actors and then their needs may result in missing critical requirements. o My comment, sometimes it is also useful to start with use case titles (features) and then identify actors. The approach one takes may depend on how well you know a domain. If you know a domain, it may be better to start with Use Case titles. ©2011 Mike Rowe Page 8 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 2 Systematic Development of Use Cases Start with a casual format and successively refine them into a more formal (dressed up) style. The project’s needs determine what is formal enough. (The following material is from Cockburn, A., Writing Effective Use Cases, Addison-Wesley, 2004 – this is a great book with lots of practical ideas on Use Case centric development.) 2.1 Task-Level Goal List – Step One 1. Identify actors, 2. Identify goals of each of the actors in the form of short verb phrases, ATM_Customer – Withdraws money ATM_Customer – Checks money market account balance ATM_Machine – Runs built in test (BIT) ATM_Machine – Authorizes the ATM_Customer ... 3. Optionally one may add another column indicating what triggers an event/goal. For instance Run build-in-test may be triggered by an ATM_Customer starting any kind of transaction, and also periodically trigged by a timer (once an hour maybe). 4. Once a sizable number of goals have been defined, it is beneficial to prioritize them. Users and Requirements engineers arrive at priority. The priority may relate to a development release or iteration. 5. Optionally, may also want to add a column that indicates whether a goal is within the scope of a project. Or for large systems we may define to which subsystem the use case is belongs. Task-Level Goal List Priority ACTOR Task-Level Goal Bank_Clerk ATM_Customer ATM_Machine Produce ATM cards WithdrawMoney (ourBankCustomer) WithdrawMoney (anotherBanksCustomer) CheckMoneyMarketAccount balance RunBuiltInTest (BIT) ATM_Machine AuthorizeATM_Customer ATM_Customer Open new bank accounts ATM_other BanksCustomer ATM_Customer ©2011 Mike Rowe Page 9 2 User selected User selected Within Scope** NO YES 3 User selected YES 3 User selected YES 1 Timer, transactions, Maintenance subsystem Transactions Security subsystem User selected NO 1 Trigger 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design ... ** For large Systems, use the subsystem name for the “Within Scope” col. The Task-Level Goal list can be very useful in: Defining the scope of your current project, Planning multiple iterations. o For planning iterative phases, we can also concentrate on high priority goals first. o Sometime it makes sense to do some lower priority items first because they will make other items easier to implement/test/ … All stakeholders can quickly see the candidate goals for the system and negotiate priorities. . . 2.2 Use Case Briefs (not formal attire) – Step Two A use case brief is the next step. It consists of a couple (2 to 6) sentences, which describe the use case behavior. It includes only the most import activities and failures. In addition to getting agreement on what is important for a use case, a brief can also help initial estimates of effort. They can also be useful in selecting COTS components at this early stage. Use Case Brief Goal Brief WithdrawMoney An authorized ATM_Customer specifies the amount of (ourBankCustomer) money they wish to withdraw from one of their accounts. They receive the money, deduct this amount from their balance, and print a receipt. If they do not have enough money in their account, under some circumstances they may be able to receive a loan. ATM_Customer WithdrawMoney The ATM machine makes electronic contact with (anotherBankCustomer) (anotherBankCustom another bank to authorize that the ATM_Customer er) can withdraw a specified amount of money from one of their accounts. They receive the money, deduct this amount from their balance, and print a receipt. If they do not have enough money in their account, under NO circumstances will they receive a loan. ATM_Machine RunBuiltInTest (BIT) The ATM machine runs the BIT to determine the functionality of all the ATM subsystems. The ATM machine runs the BIT on both a configurable time schedule and at the beginning of each customer transaction. The results of the BIT determine which transactions are allowed. Some subsystems need not be functional for some of the transaction types (for Actor ATM_Customer (ourBankCustomer) ©2011 Mike Rowe Page 10 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design instance the printer is not needed for withdrawing money). 2.3 Design Scope – Step Three Defines the context for our system. It sometimes is called a context diagram. An ATM consists of all of the software and hardware in the box. The box is linked to a communications network, the network is linked to the ATM’s home bank computers, the home bank computers are linked to other bank’s computers and so on. This helps explicitly define the scope of the system for all stakeholders. It is also useful in identifying and defining which subsystem of a large subsystem a use case belongs. It also helps define which interfaces need to be defined For larger system, we represent each subsystem as a block and specify which use cases belong to each subsystem. Our Bank ATM Machine Another Bank's Customer use cases Our Banks ATM Customer ATM Comm Link Other Banks Central Bank Computer other applications Our Bank's Customer 2.4 Produce a detailed Use Case Diagram – Step Four From the Use Case Briefs and the Use Case Context Diagram produce a detailed Use Case Diagram showing all of the Actors and Use Cases within the scope of the system. Use Packages to organize these use cases into logical Subsystems, subsubsystems, … This diagram will continue to be modified as the next step is performed, as in step five you will find opportunity to <<includes>> and <<extends>> subflows. ©2011 Mike Rowe Page 11 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 2.5 Use Case Flows or Scenarios – Step Five There are many formats used to specify the detail flows of use cases. Generally, the format is based on the level of formality needed for the particular project. The Style and Form are generally refined based on project and company needs. Here is an example of a formal Use Case – once again, not All Fields are necessary for all projects. ©2011 Mike Rowe Page 12 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design Label : UC_WdMonOC TITLE : Use Case: WithdrawMoney(our customer) : Withdraw money from ATM (our bank customer) PRIMARY ACTOR: ATM customer (CUSTOMER) SECONDARY ACTOR(s): ATM machine (ATM) GOAL IN CONTEXT: ATM customer receives funds from an ATM machine SCOPE: {{Subsystem Name if this were a bigger system}} LEVEL: main/detail, extends/includes STAKEHOLDERS and INTERESTS: ATM customer (CUSTOMER): desires money, desires security of access to his/her account BANK: desires authentication that customer is a bank customer and has funds to cover withdrawal; desires that ATM machine remains secure. PRECONDITION: Our bank customer must have ATM card TRIGGER: User starts transaction by inserting an ATM card MAIN SUCCESS SCENARIO: 1. Customer inserts ATM card. 2. ATM runs BIT. 3. ATM reads information on the card. 4. ATM validates information on the card. 5. ATM displays prompts for PIN. 6. Customer enters PIN. 7. ATM validates PIN by checking a MD5 hash. 8. ATM displays prompt asking “Which operation do you want to perform?” 9. Customer selects “Cash withdrawal” 10. ATM displays prompt for amount to withdraw. 11. Customer enters amount 12. ATM displays prompt requesting from which account to withdraw. 13. Customer selects the account type (checking, saving, credit). 14. ATM communicates with the ATM network to authorize user by validating account ID, PIN, and availability of the amount requested. 15. The ATM displays prompt asking the Customer whether he/she wants a receipt. 16. ATM asks the client to withdraw the card. 17. Customer withdraws the card. (This is a security measure to ensure that Customers do not leave their cards in the machine.) 18. ATM sends a message over the ATM Comm link to the main bank computer commanding that the amount to be dispensed is deducted from the Customer’s account. 19. ATM dispenses the requested amount of cash. 20. ATM prints receipt. 21. The use case ends. EXTENSIONS: (Note: often extensions are complex. You will want to define the entry level condition here and reference the label for the Extension Use Case following the entry condition.) 2a. If BIT fails ATM displays “out of order message” to user and sends message to main bank ©2011 Mike Rowe Page 13 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design computer requesting service. (see UC_RequestService) 4a. If ATM cannot validate information on card the ATM displays message that indicates bad card and halts scenario. (see UC_RejectCard) 7a. If ATM cannot validate PIN the ATM keeps the card, displays a message that indicates PIN failure, and then halts scenario. (see UC_RejectPin) 11a. If the ATM does not have sufficient funds to cover withdrawal, a message indicating this and the maximum amount that can be funded is displayed to the CUSTOMER and then the Scenario is restarted at step 9. 14a. If the Customer does not have sufficient funds, but has more than $20, the ATM displays the maximum amount the user can withdraw and the Scenario is restarted at step 9. 14b. If the Customer has less in their account than the minimal amount that the machine can fund, then the ATM displays a message indicating this and the Scenario is halted after the card is ejected. 15a. This step is performed only if there is paper left to print the receipt. 20a. Receipt is printed only if Customer requests one. Inclusions: 2a. RunBIT the BIT will be run for each transaction and includes: UC_CheckPower, UC_CheckPrinter, UC_CheckTamper, UC_CheckMoney, UC_CheckCommLink, … 4a. AuthenticateUserCard checks the information on the card against bank records to make sure the user has an account from which they may perform a transaction. ... ISSUES and TBDs: a. Maximum withdrawal amount b. Minimum withdrawal amount c. Timeout interval for canceling session. d. Maximum number of withdrawal transactions per 24 hour period. e. . . . TRACING TO SYSTEM-LEVEL REQUIRES: R-Security-023 R-Security-064 ... RELATED USE CASES: UC_Deposit KNOWLEDGE SOURCE: where did the information come from like: Bobob the bank VP in charge of nickels. REQUIREMENTS ENGINEER: Bertha REVISION HISTORY: o Created: Who and when o Reviewed: Who and when engineer’s name/ customer’s name o Revised: Who and when engineer’s name o Revisions Reviewed: Who and when engineer’s name o Signed Off: Who and when customer’s name ... ©2011 Mike Rowe Page 14 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 2.6 Collecting Data Requirements It is often useful to collect data requirements as we develop our use cases. Historically data dictionaries contained information about the type, range, relationships and usage of data in a system. We may want to consider modifying this approach. Keith Matthews (2006) published a set of ideas in the Requirements Network Group http://www.requirementsnetwork.com/user_registration?destination=trackerlite that with a little modification (by me) seems to provide good utility. This new approach contains two different sets of tables. 2.6.1 Detailed Entity Table While we are capturing use case flow, it is generally also a good time to capture details about data entities. This will help all stakeholders come to a common understanding of the data entities and the relationships among the entities. Below are data that might be useful to capture at this time. Category Information Categories Entity Name, Definition, Notes, Volumetrics, Attributes, Relationships (Associations), Specific Business Rules, ....... Name, Definition, Notes, Cardinality, Data Type, Length, Precision, Volumetrics, Value Domain, Minimum, Maximum, Calculation, Specific Business Rules, Default Value, Order, Security Considerations, ....... Name, Entities it relates, Cardinalities, Navigability, ....... Attributes Associations If a lot of the above information would be useful for a project, a database of spreadsheet would be the suitable mechanism for maintaining it. Below is a simple example using a table to maintain a few of the information categories. ©2011 Mike Rowe Page 15 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design Detailed Entity Table Entity / Type Customer Attributes firstName lastName SSN driversLicenseNumber driversLicenseState creditLimit dateOfBirth PIN motherMaiden Description A person with an account at the bank Definition The first name of the Customer The last name of the Customer Social Security Number A drivers license number State that issued drivers license Upper borrowing limit for this Customer Date of birth of the Customer Personal Identification Number Mother’s Maiden name Sensitive No No Yes Yes No Yes Type Text Text Text Text Text Money Length 25 25 9 12 2 11.2 Yes Yes Yes Text numeric text YYYYMMDD nnnn 24 Relationships marriedTo parrentOf accountsOf accountIssuranceMax Business Rule A Customer may be married to zero or one Spouse A Customer may be the parent of zero, one or more Child A Customer may have one or more Accounts A Customer is insured for up to a maximum total across all Accounts of $1,000,000 by the F.D.I.C. Entity / Type Spouse Description A person to whom a Customer is married. Attributes firstName lastName SSN driversLicenseNumber driversLicenseState dateOfBirth PIN dateOfBirth motherMaiden Definition The first name of the Spouse The last name of the Spouse Social Security Number A drivers license number State that issued drivers license Date of birth of the Customer Personal Identification Number Date of birth of the Customer Mother’s Maiden name Relationships marriedTo parrentOf Business Rule A Spouse may be married to zero or one Customer A Spouse may be the parent of zero, one or more Child Entity / Type Description ©2011 Mike Rowe Page 16 Sensitive No No Yes Yes No Yes Yes Yes Yes Type Text Text Text Text Text Text numeric Text text Length 25 25 9 12 2 YYYYMMDD nnnn YYYYMMDD 24 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design Child A person who is legally classified as a dependent of a Customer or Spouse Attributes firstName lastName schoolName Definition The first name of the Child The last name of the Child Name of the school the Child attends or “n/a” if none Sensitive Yes Yes Yes Type Text Text Text Length 25 25 25 We can use this table to spot o missing relationships, o inconsistencies – we want all use cases to use the same labels for data entities and all of the data entities attributes, associations, … , o plan for a secure system – if we see some data are sensitive we know at all points that this data must have special handling, o possible reuse opportunities (inheritance), and o help in reviewing knowledge with the customers. Be wary of going too fast from analysis to design! 2.6.2 CRUD Table A CRUD (CreateReadUpdateDelete) Table defines at a high level where (by use case) a data entity is used and how it is used (Created, Read, Updated, Deleted). It does not get into the detail about the makeup of each entity. There is one CRUD table per system. If we see that a data entity is missing any CRUD stage, then it is likely that there is a gap in our use cases. CRUD Table for a Star Wars-type computer game Data Entity Defense GoldCoin Weapon Population Use Cases --Created-BuyDefense Use Cases --Read-DisplayScore BuyDefense CalculatePlanetOutput DisplayScore BuyWeapons Use Cases Use Cases --Updated---Deleted-ExecuteEngagement ExecuteEngadement BuyWeapons ... ... ... DisplayScore ... BuyDefense BuyWeapons BuyTechnology BuyDefense BuyWeapons BuyTechnology ... ... ... In this table we list the use cases that make use of each of the data entities and how the use cases use the entities. This table helps us keep track of the data lifecycle (creation through destruction) in a system. ©2011 Mike Rowe Page 17 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 2.6.3 Summary of Collecting Data Requirements The Detailed Entity Table maintains consistency in the data entities as we discover how they are being used and are associated. The CRUD table helps us keep track of the use of each of the entities. This is important when we need to react to changes. If one use case changes, it may require modifications to entities. In turn, the changes to an entity may cascade into the other use cases that use that entity. 2.7 Relationships among use cases This is old school Use Case Centric stuff from Jacobson circa 1998. Preconditions: 1. Have the high-level Use Case diagram 2. Have the Use Case Work Flows (somewhat complete, more than just titles needed) 2.7.1 <<Uses>> or <<Includes>> o Factor out common behavior from two or more main use cases o Shown as a dashed line with an arrow pointing at the behavior that is factored out (refactoring use cases) of the other use cases. o The flow of an <<includes>> is ALWAYS executed. This will be a significant difference between <<includes>> and the other factoring use cases. o EX: Check out book and Extend loan may both use Check for reservation Extend Loan <<includes> > Check for Reservations Check out Book ©2011 Mike Rowe <<includes>> Page 18 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design o The Check for reservations is also included in other use cases. The steps for included use cases are factored out of the main use cases and a notation is placed in the main use case flow to indicate the factoring. “Then the Librarian Actor checks to see if the book is already reserved. (See UC_CheckForReservations). Lets identify possible inclusions in the ATM machine. Withdraw Money from an ATM 1. Customer inserts ATM card. 2. ATM runs BIT. 3. ATM reads information on the ATM card. 4. ATM validates information on the ATM card. 5. ATM displays prompts for PIN. 6. Customer enters PIN. 7. ATM validates PIN. 8. ATM displays prompt asking “Which operation do you want to perform?” 9. Customer selects “Cash withdrawal” 10. ATM displays prompt for amount to withdraw. 11. Customer enters amount 12. ATM displays prompt requesting from which account to withdraw. 13. Customer selects the account type (checking, saving, credit). 14. ATM communicates with the ATM network to authorize user by validating account ID, PIN, and availability of the amount requested. 15. The ATM displays prompt asking the Customer whether he/she wants a receipt. 16. ATM asks the client to withdraw the ATM card. 17. Customer withdraws the card. (This is a security measure to ensure that Customers do not leave their cards in the machine.) 18. ATM sends a message over the ATM Comm link to the main bank computer commanding that the amount to be dispensed is deducted from the Customer’s account. 19. ATM dispenses the requested amount of cash. 20. ATM prints receipt. 21. The use case ends. Possible Inclusions ATM performs a BIT Authorize Customer Check printer, prompt for receipt, print receipt Update account balances Already written Components: Inclusions may be COTS or in house developed business objects. For example: we probably have something for Authorize Customer. When to stop factoring: If the work in factoring is more work than implementing – don’t factor. ©2011 Mike Rowe Page 19 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 2.7.2 Advantages of Inclusions: Can save further analysis and design work from this point on. Only need to develop the functionality once. Can share testing. Speeds validation walkthroughs. Only need to test it once as code. Can share documentation, this can be significant if functionality is visible to users. Indicates an early decision to reuse a component in particular parts. Need to pay particular attention to this component so that the component will be suitable for both instances. Can make the main uses cases simpler by abstracting detailed parts out. Can help refine project plan earlier. The more and earlier reuse is identified, the less resources are needed in the project. Estimating the efforts required for reused components is far easier that new work! The above are more difficult to do using a requirements only approach instead of use case centric approach. 2.7.3 Disadvantages (according to Stevens) Tends to push design/architecture down a functional v. OO approach. – I don’t think it does any more than a straight requirements driven start. o The author suggests developing the high-level object model in parallel. – I think that this will result in some speculative work and will increase throw away work, this increases the total work load. Modeling incorporating inclusions is harder for non-UML skilled people to follow. – At least there is a user perspective model to use v. no model at all (like a strict requirements only approach). The more complex the use case model the harder it is to maintain. – I don’t see how this is any different with requirements based approach. If you change a requirement you must review the changed requirement against other requirements to determine if there are conflicts, new gaps, etc. introduced into requirements. 2.7.4 Summary of Inclusion Can simply or provide an abstract view of the main use cases Show common functionality among use cases To document that we have a reuse opportunity To document the selection of a preexisting component (COTS). 2.8 Separating variant behavior <<extend>> If the two or more scenarios of a use case have significantly different behaviors /flows based on circumstances we need extension(s) <<extend>> use cases flows are NOT executed every time. Recall that this is a significant difference between <<include>> and <<extend>>. ©2011 Mike Rowe Page 20 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design In the book they have a scenario in which a book barrower is refused a book check out because (s)he has too many books checked out. We can have an <<extend>> for “Refuse loan”. An <<extend>> is connected to the extended use case by a dashed line and an arrow pointing back to the extended use case. The extended use case lists the point at which the extension occurs. The extended use case flow refers to the <<extend>> (See Refuse loan extends based check of number of books checked out). UC_CheckoutBook Extension points: UC_RefuseLoan <<extend>> UC_Refuses Loan Back to the ATM system, <<extend>> scenarios: o Refuse withdrawal (too much money withdrawn in a day) o Refuse withdrawal (user doesn’t have enough money in account) o Refuse withdrawal (ATM doesn’t have enough money to provide the service) o Refuse service because wrong PIN entered. o ... 2.9 Generalization o Use cases and Actors can be generalized or specialized. o Example from library system o Actors Journal Barrower is a specialization of a Book Barrower. o Use Cases Checkout Journal is a specialization of Book Checkout Checkout Book Book Borrower ©2011 Mike Rowe Page 21 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design Checkout Journal Journal Borrower 2.10 Level of a Use Case Diagram and the System Box From: http://www.andrew.cmu.edu/course/90-754/umlucdfaq.html 2.10.1 How do you know what to put in the "System" box? The system box only appears on the top-level diagram (remember that a typical UML Use Case description will be composed of many diagrams and sub-diagrams), and should contain use case ovals, one for each top-level service that your system provides to its actors. Any kind of internal behavior that your system may have that is only used by other parts of the system should not appear in the systemlevel box. One useful way to think of these top-level services is as follows: if a use case represents a toplevel service, then it should make sense for the actors who interact with it to request only that service of your system in a single session (in whatever sense a "session" is intelligible in your system.) What Level should a Use Case be, Example: In the diagram below we would like to represent the use cases for a camera. Suppose we choose "Open Shutter", "Flash", and "Close Shutter" as the top-level use cases. Certainly these are all behaviors that a camera has, but no photographer would ever pick up their camera, open the shutter, and then put it down, satisfied with their photographic session for the day. We must see or produce some observable benefit – “opening a shutter” by itself does nothing for the primary actor! The crucial thing to realize is that these behaviors are not done in isolation, but are rather a part of a more high-level use case, "Take Picture" does result in some useful goal being achieved by an Actor. (Note that it does make sense for a photographer to "Take Picture" just once during a session with their camera.) ©2011 Mike Rowe Page 22 02/06/2016 6:01 PM Notes: 004 – Use Cases CS/SE3430 / CS5430 - Object-Oriented Analysis and Design 2.11 Interactions between Use Cases Once relationships between use cases have been identified – it is important to understand what information will need to flow across this interface. ©2011 Mike Rowe Page 23 02/06/2016 6:01 PM