Software Engineering Process II Defining Requirements INFO 637 Glenn Booker INFO 637 Lecture #5 What are Requirements? Requirements describe key characteristics and capabilities desired for your product Requirements.
Download ReportTranscript Software Engineering Process II Defining Requirements INFO 637 Glenn Booker INFO 637 Lecture #5 What are Requirements? Requirements describe key characteristics and capabilities desired for your product Requirements.
Software Engineering Process II Defining Requirements INFO 637 Glenn Booker INFO 637 Lecture #5 1 What are Requirements? Requirements describe key characteristics and capabilities desired for your product Requirements include functions your product can perform (functional requirements), and every other aspect of your product or how it was created (non-functional requirements) INFO 637 Lecture #5 2 Requirements Scope Requirements can cover not only your product (which may include software, hardware, and networking components) but also: Documentation Training The process for creating the product Service or maintenance INFO 637 Lecture #5 3 FURPS+ One way of describing requirements is using the FURPS+ breakdown F is for Functional U is for Usability R is for Reliability P is for Performance S is for Supportability The “+” is for everything else (Stolen from Larman’s Applying UML and Patterns, 2nd ed.) INFO 637 Lecture #5 4 Functional Requirements Functional Requirements include every method of obtaining input, processing inputs, and generating outputs Often this is the most complex list of requirements Directly relates to system-level testing after product is completed – can each requirement be met? INFO 637 Lecture #5 5 Usability Requirements Usability requirements describe how your product was designed to accommodate interaction with humans Includes human factors, types of help available, and documentation Some non-functional requirements may be testable, others not INFO 637 Lecture #5 6 Reliability Requirements Reliability requirements may specify goals for mean time between failures (MTBF), recoverability, and predictability of results Particularly used for mission-critical systems INFO 637 Lecture #5 7 Performance Requirements Performance relates here to how fast or how much the product can accomplish These typically include response time for queries, volume of throughput, and/or resource usage (e.g. in terms of CPU, disk, memory, or network traffic) INFO 637 Lecture #5 8 Supportability Requirements How easy is it to support this system? How easy is it to adapt to new needs, or be reconfigured? How easy is it to maintain? Can it adapt to other countries (e.g. language, power needs, etc.)? INFO 637 Lecture #5 9 Other Requirements The “+” includes other kinds of requirements: Implementation constraints (hardware, resources, etc.) Interfaces to external systems (which you don’t control) Operations; how is it used operationally? Packaging; how is it shipped? Legal; export and licensing issues INFO 637 Lecture #5 10 Constraints Requirements can include constraints on your product or how it is created Comply with existing PC’s, or development environment, or database system Comply with business rules Comply with physical or logistical constraints Must be developed by a woman-owned, CMM level three small business (for example!) Or any other kind of constraint INFO 637 Lecture #5 11 Software Requirements Spec Requirements can be captured in a Software Requirements Specification (SRS) The SRS can also be used as a contract, binding the developer to commit to exactly what they will create for the customer Helps avoid misunderstandings and unhappy customers by making expectations clearer INFO 637 Lecture #5 12 Communication is the Key While a good SRS is very helpful, the bigger need is for the developers and customer to communicate with each other Driving 100 mph in the wrong direction won’t get you to your destination and faster! Similarly, starting development without knowing what you need to create won’t help you finish quickly INFO 637 Lecture #5 13 Requirements Change Even projects with “well known requirements” from the beginning typically have 30% of those requirements change before the project is completed Must expect requirements will change, and create a process to control those changes INFO 637 Lecture #5 14 Requirements Change Changes cost time and effort – need to quantify those to know how much cost to expect Otherwise it’s like taking your car to a mechanic and telling them to do whatever they want Often a Configuration Control Board (CCB) is used to determine whether a particular change is acceptable INFO 637 Lecture #5 15 Change Control To determine if a change is needed, follow some sort of process See Change Control handout First step is to screen or scrub the proposed change Do we understand what is suggested? Is it really needed? Has someone already suggested it? INFO 637 Lecture #5 16 Change Control Then we need to estimate how much work the change will be Estimate size, cost, and effort needed to implement it Determine who could best implement it Determine its priority Then start implementing the change after approval by the CCB INFO 637 Lecture #5 17 Change Control The developers create the change, do unit testing, and get peer review approval of the change Once ready, the CCB may determine when the change will be implemented (often the next available build) Many changes may be built together, and tested to make sure they all work INFO 637 Lecture #5 18 Change Control Then the CCB reviews the system test results, and approves release of the change The change is now part of the new system baseline Process is very similar for software system maintenance, not just development INFO 637 Lecture #5 19 Extracting Requirements Requirements are obtained (elicited) by working from the most clearly understood aspects to the most vague Assess system feasibility Understand organizational issues Identify system stakeholders Record requirements sources INFO 637 Lecture #5 20 Extracting Requirements Define operating environment Assess business issues Define domain constraints Record requirements rationale Prototype poorly understood requirements Define usage scenarios Define operational processes INFO 637 Lecture #5 21 Another Example The sample RFI includes examples of functional requirements, constraints, and meaningless jabber See Sample SIR handout Can you tell them apart? INFO 637 Lecture #5 22 SRS Structure Many different structures are available for an SRS The text’s is on page 113 An SRS may range from a few pages long to hundreds The SRS may be used to write systemlevel test procedures, to test whether every requirement works in the final product INFO 637 Lecture #5 23 SRS Script The development script for creating the SRS includes: Reviewing and clarifying the system needs Allocating parts of the SRS to be done by each team member Developing the system test plan Inspecting the SRS and test plan Refining the SRS and test plan INFO 637 Lecture #5 24 End Product This phase results in a completed (baselined) SRS and the system test plan While simple in concept, these control everything which happens from this point on They are now baselined documents, so changes to them need to be submitted via the change process (form CCR) INFO 637 Lecture #5 25