Requirements Specification
Requirements Specification
Need to understand what customer wants first! Goal is to understand the customers problem Though customer may not fully understand it!
Requirements analysis says: Make a list of the guidelines we will use to know when the job is done and the customer is satisfied.
System specification says: Heres a description of what the program will do (not how) to satisfy the requirements.
Distinguish requirements gathering & system analysis? A top-level exploration into the problem and discovery of whether it can be done and how long it will take
Evolutionary requirements
Requirements are capabilities and conditions to which the system and the project must conform A prime challenge of requirements analysis is to find, communicate, and remember what is really needed, in the form that clearly speaks to the client and development team members.
Priority: rank order the features wanted in importance Criticality: how essential is each requirement to the overall system? Risks: when might a requirement not be satisfied? What can be done to reduce this risk?
Product cost (how do measure cost?) Performance (efficiency, response time? startup time?) Portability (target platforms?), binary or byte-code compatibility? Availability (how much down time is acceptable?) Security (can it prevent intrusion?) Safety (can it avoid damage to people or environment?) Maintainability (in OO context: extensibility, reusability)
Why might a small and concise initial spec be a good idea? Fosters initial buy-in and agreement by everyone on team Traditional real-world specs are usually much longer
Whats the purpose of a purpose or vision statement? Why is scope important? Why a glossary of terms and definitions? Business case and user perspective:
Business context and case: Who wants it and why? User characteristics: profile of user community, expected expertise with system & domain User objectives: wish list from users perspective Interface requirements: GUI, API, communication interfaces, software interfaces
FURPS+ model
(Grady 1992) FURPS is a checklist for requirements: Functional (features, capabilities, security) Usability (human factors, help, documentation) Reliability (frequency of failure, recoverability, predictability) Performance (response time, throughput, accuracy, availability, resource usage) Supportability (adaptability, maintainability, internationalization, configurability)
Use cases
First developed by Ivar Jacobson
Now part of the UML (though not necessarily object-oriented) Emphasizes users point of view Explains everything in the users language
A "use case" is a set of cases or scenarios for using a system, tied together by a common user goal
Essentially descriptive answers to questions that start with What does the system do if E.g., What does the auto-teller do if a customer has just deposited a check within 24 hours and theres not enough in the account without the check to provide the desired withdrawal? Use case describes what the auto-teller does in that situation
Use case model = the set of all use cases Why are use cases good for brainstorming requirements?
Fully dressed Use Case (from Fowler & Scott, UML Distilled)
Use Case: Buy a Product (Describe users goal in users language) Actors: Customer, System (Why is it a good idea to define actors?) 1. Customer browsers through catalog and selects items to buy 2. Customer goes to check out 3. Customer fills in shipping information (address; next-day or 3-day delivery) 4. System presents full pricing information, including shipping 5. Customer fills in credit card information 6. System authorizes purchase 7. System confirms sale immediately 8. System sends confirming email to customer (Did we get the main scenario right?) Alternative: Authorization Failure (At what step might this happen?) 6a. At step 6, system fails to authorize credit purchase Allow customer to re-enter credit card information and re-try Alternative: Regular customer (At what step might this happen?) 3a. System displays current shipping information, pricing information, and last four digits of credit card information 3b. Customer may accept or override these defaults Return to primary scenario at step 6
One path through the use case E.g., The scenario of buying a product
A use case is a collection of success and failure scenarios describing an actor using a system to support a goal.
What is the state of affairs before and after use case occurs? Why?
System use cases focus on interaction between actors within a software system Business use cases focuses on how a business interacts with actual customers or events Fowler prefers to focus on business use cases first, then come up with system use cases to satisfy them Note iterative approach in developing use cases, too
Birds eye view of use cases for a system Stick figures represent actors (human or computer in roles) Ellipses are use cases (behavior or functionality seen by users) What can user do with the system?
E.g., Trader interacts with Trader Contract via a Trade Commodities transaction
<<include>> relationship inserts a chunk of behavior (another use case) <<extend>> adds to a more general use case
Text descriptions explain functional behavior in users language Diagrams can show relationship between use case behaviors When should we bother with diagrams?
Use cases can drive the whole development process: Analysis understand what user wants with use cases Design and implementation realizes them How can use case help with early design of UI prototype? How can use cases set up test plans? How can use cases help with writing a user manual?
Requirements Assignments
By Monday, September 8, email me a tentative project title, customer and level of commitment to the project, and other team members their roles. By Monday, September 15, email me a link to a web site containing the above (perhaps revised), plus: 1. Write a high-level requirements specification 2. Write uses cases describing crucial system behavior 3. Preliminary estimates (person-hours) for project, including rest of analysis design, implementation & testing 4. Assess any risks associated with the project