Properties of Good Requirements Chapter 8. Understandable by end users  End-users are not often software engineers.  Terminology used must agree with.

Slides:



Advertisements
Similar presentations
What colour is the house on the hill? Waterloo – Wellington IIBA Chapter presentation April 11, 2007 David Milne.
Advertisements

Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
1 CHAPTER 4 RELATIONAL ALGEBRA AND CALCULUS. 2 Introduction - We discuss here two mathematical formalisms which can be used as the basis for stating and.
Properties of Good Requirements Chapter 8. Understandable by end users End-users are not often software engineers. Terminology used must agree with end-
Describing Process Specifications and Structured Decisions Systems Analysis and Design, 7e Kendall & Kendall 9 © 2008 Pearson Prentice Hall.
Evaluating Requirements. Outline Brief Review Stakeholder Review Requirements Analysis Summary Activity 1.
System Design System Design - Mr. Ahmad Al-Ghoul System Analysis and Design.
Programming Logic and Design, Third Edition Comprehensive
Learning Objectives Explain similarities and differences among algorithms, programs, and heuristic solutions List the five essential properties of an algorithm.
Chapter 10 Algorithmic Thinking. Copyright © 2013 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Learning Objectives List the five essential.
Requirements and Design
Requirements Analysis CS 414 – Software Engineering I Donald J. Bagert Rose-Hulman Institute of Technology January 7, 2003.
Software Requirements
Chapter 9 Describing Process Specifications and Structured Decisions
Unit 211 Requirements Phase The objective of this section is to introduce software system requirements and to explain different ways of expressing these.
Computer Engineering 203 R Smith Requirements Management 6/ Requirements IEEE Standard Glossary A condition or capability needed by a user to solve.
Software Requirements
Soft. Eng. II, Spr. 2002Dr Driss Kettani, from I. Sommerville1 CSC-3325: Chapter 1 (cont ’d) Title : Client requirements (Review) Mandatory reading: I.
SE 555 Software Requirements & Specification Requirements Validation.
Overview of Software Requirements
1 Software Requirements Specification Lecture 14.
Guide To UNIX Using Linux Third Edition
Chapter 1 Program Design
Algorithms Describing what you know. Contents What are they and were do we find them? Why show the algorithm? What formalisms are used for presenting.
Numeral Systems Subjects: Numeral System Positional systems Decimal
Dineshwari Byrappa Nagraj Rashi Gupta Shreya Modi Swati Satija Magesh Panchanathan.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 6 Slide 1 Software Requirements.
Chapter P Prerequisites: Fundamental Concepts of Algebra
Negotiation and Specification Process
Writing Quality Requirements Karl E. Wiegers Presented by: Ricardo Carlos.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
CS Fall 2007 Dr. Barbara Boucher Owens. CS 2 Text –Main, Michael. Data Structures & Other Objects in Java Third Edition Objectives –Master building.
Programming Concepts Chapter 3.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 4: Developing Requirements.
Disclosure risk when responding to queries with deterministic guarantees Krish Muralidhar University of Kentucky Rathindra Sarathy Oklahoma State University.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 5: Software Design & Testing; Revision Session.
An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 5 Arrays.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Requirements Reference: Chapters 5, 6, & 8. CMSC 345, Fall Objectives To introduce the concepts of user and system requirements To explain functional.
Systems Life Cycle A2 Module Heathcote Ch.38.
Control Structures II Repetition (Loops). Why Is Repetition Needed? How can you solve the following problem: What is the sum of all the numbers from 1.
Algorithms & Flowchart
© 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 10 Slide 1 Chapter 13 Finalizing Design Specifications.
Requirements Specification. Welcome to Software Engineering: “Requirements Specification” “Requirements Specification”  Verb?  Noun?  “Specification”
1 Software Requirements l Specifying system functionality and constraints l Chapters 5 and 6 ++
Review: Properties of Good Requirements 8th week quick review.
Chapter 4 Software Requirements
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
1 Quality Attributes of Requirements Documents Lecture # 25.
Copyright ©2004 Virtusa Corporation | CONFIDENTIAL Requirement Engineering Virtusa Training Group 2004 Trainer: Ojitha Kumanayaka Duration : 1 hour.
Requirements / Specifications. 01/18/10CS-499G2 Requirements Determine what the customer needs (wants) the software to do  What are requirements?  An.
Evaluating Requirements
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
Software Requirements
Requirement engineering & Requirement tasks/Management. 1Prepared By:Jay A.Dave.
Software Engineering, COMP201 Slide 1 Software Requirements BY M D ACHARYA Dept of Computer Science.
Chapter 1 The Phases of Software Development. Software Development Phases ● Specification of the task ● Design of a solution ● Implementation of solution.
Copyright © 2011 Pearson Education Process Specifications and Structured Decisions Systems Analysis and Design, 8e Kendall & Kendall Global Edition 9.
Requirement Elicitation Review – Class 8 Functional Requirements Nonfunctional Requirements Software Requirements document Requirements Validation and.
1 Software Requirements Descriptions and specifications of a system.
Abstract  An abstract is a concise summary of a larger project (a thesis, research report, performance, service project, etc.) that concisely describes.
 System Requirement Specification and System Planning.
Chapter 9: Value-Returning Functions
Chapter 4 – Requirements Engineering
Lecture 2 Introduction to Programming
Software Requirements analysis & specifications
Requirement Documentation &
Chapter 11 Describing Process Specifications and Structured Decisions
Software Reviews.
Presentation transcript:

Properties of Good Requirements Chapter 8

Understandable by end users  End-users are not often software engineers.  Terminology used must agree with end-user’s understanding (for instance, standard accounting terminology.)  End-users understanding must agree with ours. Everyone must understand the same thing!  To ensure predictable operations, the system shall not employ nondeterministic methods The system shall not employ nondeterministic methods  Derived requirement – understood by the implementor System operation shall be predictable and repeatable  Primary requirement – understood by the end user

Non-prescriptive  Non-presecriptive means that the requirement must stipulate what must be done, but not how it must be done.  Requirements are “what”, and the design activity is “how”  Data structures and algorithms belong in the design documents, not the requirements!  The software shall employ B-trees for storage of information kept in memory This is a how, not a what

Correct  Obviously, the behavior specified must be the proper behavior.  Correct implies “completely correct”. For instance, the requirement must indicate the fullest possible conditions. While a requirement to support “at least 3” terminals can be considered correct, if the user expects to eventually expand to 300, the requirement should reflect it! “will support 3 terminals initially, but may expand to 300 over time”

Complete  Complete is a quality that can apply to both the individual requirement and the sum of the requirements.  The requirements set should be considered complete only if it is not missing any requirements that would separate an acceptable system from one that isn’t acceptable!  The system shall provide the operator with the information needed to safely shut down the controlled machinery when an exception occurs. “blanket” requirement, not good  The system shall provide the operator with time-stamped messages describing system exceptions. More complete  The system shall provide the operator with time-stamped messages describing system exceptions (list of exceptions TBD). The messages shall not lag more than TBD seconds behind the exceptions they describe. Best to use TBD if information is not known at time.

Concise (succinct)  Run-on requirements (and prose) can confuse the requirement reader.  Requirements should consist of only the necessary information!  William of Occam, the philosopher, said that argument should be made “without unnecessary ornament”, and that applies to requirements as well.  We feel that good systems provide the end user with good value. Because of this, we think that the system should provide adequate performance with a 3 GB disk, since this is the least expensive disk …  The system shall fulfill all specified functions when configured with a 2-gigabygte disk.

Precise  The bounds of the requirement should be evident and unambiguous. In the case of numerical bounds, it ought to be evident whether the end- points are included or not.  A great contributor to precise requirements is consistency in the means used to represent bounds. Words such as “inclusively” and “exclusively” should be used with care so they are consistent.  The system shall accept valid employee ID numbers from 1 to Are all numbers between 1 and 9999 valid? Is 2 OK as well as 0002?  The system shall accept only valid ID numbers as defined elsewhere. No otherwise valid number will be accepted unless it is an integer between 1 and 9999 inclusive, represented without leading zeros.

Clear  This is the stumbling block for some mathematical specification methods because end-users are not always mathematically adept.  However, even natural language specifications can be unclear if they use words with a ‘high level’ of abstraction.  The items in tab-separated columns and underscore-separated rows of the output may refer to each other, but no item in (row,column) position (i, j) may refer to another in position (p, q) unless p < i, or if i = p, q < j.  The output consists of rows and columns. Items across each row are separated by tabs. There is an underscore between rows. When item X refers to item Y, Y must either be in a row above X, or if they are in the same row, Y must be in a column to the left of X. Any item may not refer to itself.

Unambiguous  Ambiguity is perhaps one of the greatest problems. To parody an old saying: “one word is sometimes worth a thousand pictures.”  The “unspecified referent” is a great problem: when using words like “the”, “it”, “that”, readers can become confused about which “it” the writer is referring to!

Consistent  Requirements should agree with each other: one requirement should not stipulate something that is in conflict with other requirements.  In addition, writing requirements in the same ‘form’ provides the reader with a consistent appearance and (hopefully) understanding.  The system shall track detected airborne objects traveling at speeds from 200 to 400 miles per hour inclusive.  The system shall flag all detected airborne objects traveling at speeds from 300 to 500 miles per hour inclusive.

Traceable  Ultimately code ought to be traceable to the requirement(s) that the code supports. We ought to be able to answer the question “why is this code here?” by tracing the code back through the design to a set of requirements.  We ought to also be able to find the code that supports a requirement quickly, if the requirement should change late in the development cycle.  Support for traceability starts during requirements specification. Each requirement should have a unique identifier.

Modifiable  It’s a reality that requirements can change (sometimes frequently.)  The form used to write requirements should support easy modification of the requirement.  Avoid using “magic numbers” in the requirements. Instead specify “symbolic” values, and define the values elsewhere, very much like manifest constants in code (“ #define ” in C, for instance.)

Testable (verifiable)  Requirements ought to be something that can be verified. In short, they ought to provide outputs that are measurable based on a given set of inputs.  Sometimes, the testing process might impose requirements on the system that must be considered part of the requirments! This is called “design for testability”.

Feasible  “When the start button is pressed, the system shall transmute an ounce of lead into a ton of gold”: This is a clear, unambiguous, testable, modifiable, and even correct requirement, but it is not feasible.  Feasible means that the requirement has a sound basis for design. That is, we probably know at least one way to accomplish this. (If we aren’t sure, we have should be given an opportunity to prototype a solution to find out.)

Summary: how to write requirements?  Requirements describe what outputs we should expect given a set of inputs.  Our requirements could have a form that allows exactly that: If some set of values appear at the inputs Then some set of values appear at the outputs.  For instance: If the student id number is negative Then an error message is printed at the console: “Student ID is out of bounds”