113
Chair of Software Engineering Software Architecture Bertrand Meyer, Carlo A. Furia, Martin Nordio ETH Zurich, February-May 2011 Lecture 3: Requirements Engineering

Software Architecture - ETH Z

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Architecture - ETH Z

Chair of Software Engineering

Software Architecture

Bertrand Meyer, Carlo A. Furia, Martin Nordio

ETH Zurich, February-May 2011

Lecture 3: Requirements Engineering

Page 2: Software Architecture - ETH Z

2

Requirements and requirements engineering

“A requirement” is a statement of desired behavior for a system or a constraint on a system

“The requirements” for a system are the collection of all such individual requirements

“Requirements engineering” is the process of defining the services that a customer requires from a system and the constraints under which it operates

Page 3: Software Architecture - ETH Z

3

Statements about requirements: Brooks

The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is as difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the resulting system if done wrong. No other part is more difficult to rectify later.

Source*: Brooks 87

*For sources cited, see bibliography

Page 4: Software Architecture - ETH Z

4

Statements about requirements: Boehm

Source: Boehm, Barry W. Software Engineering Economics. Englewood Cliffs, NJ: Prentice-Hall, 1981

0

10

20

30

40

50

60

70

Requirements Design Code Development

Testing

Acceptance

Testing

Operation

Relative cost to correct a defect

Source*: Boehm 81

Page 5: Software Architecture - ETH Z

5

Some data on requirements

80% of interface fault and 20% of implementation faults due to requirements (Perry & Stieg, 1993) 48% to 67% of safety-related faults in NASA software systems due to misunderstood hardware interface specifications, of which 2/3rds are due to requirements (Lutz, 1993) 85% of defects due to requirements, of which: incorrect assumptions 49%, omitted requirements 29%, inconsistent requirements 13% (Young, 2001). Numerous software bugs due to poor requirements, e.g. Mars Climate Orbiter

Page 6: Software Architecture - ETH Z

6

A small case study

Consider a small library database with the following transactions:

1. Check out a copy of a book. Return a copy of a book.

2. Add a copy of a book to the library. Remove a copy of a book from the library.

3. Get the list of books by a particular author or in a particular subject area.

4. Find out the list of books currently checked out by a particular borrower.

5. Find out what borrower last checked out a particular copy of a book.

There are two types of users: staff users and ordinary borrowers.

Transactions 1, 2, 4, and 5 are restricted to staff users, except that ordinary borrowers can perform transaction 4 to find out the list of books currently borrowed by themselves. The database must also satisfy the following constraints:

All copies in the library must be available for checkout or be checked out.

No copy of the book may be both available and checked out at the same time.

A borrower may not have more than a predefined number of books checked out at one time.

Source*: Wing 88

Page 7: Software Architecture - ETH Z

Overview of the requirements task

Page 8: Software Architecture - ETH Z

8

Goals of performing requirements

Understand the problem or problems that the eventual software system, if any, should solve

Prompt relevant questions about the problem & system

Provide basis for answering questions about specific properties of the problem & system

Decide what the system should do

Decide what the system should not do

Ascertain that the system will satisfy the needs of its stakeholders

Provide basis for development of the system

Provide basis for V & V* of the system

Source: OOSC

*Validation & Verification, especially testing

Page 9: Software Architecture - ETH Z

9

Products of requirements

Requirements document

Development plan

V&V plan (especially test plan)

Page 10: Software Architecture - ETH Z

10

Practical advice

Don’t forget that the requirements also determine the test plan

Page 11: Software Architecture - ETH Z

11

Possible requirements stakeholders

Clients (tailor-made

system)

Customers (product for

general sale)

Clients’ and customers’

customers

Users

Domain experts

Market analysts

Unions?

Legal experts

Purchasing agents

Software developers

Software project managers

Software documenters

Software testers

Trainers

Consultants

Page 12: Software Architecture - ETH Z

12

Your turn! Who are the stakeholders?

Consider a small library database with the following transactions:

1. Check out a copy of a book. Return a copy of a book.

2. Add a copy of a book to the library. Remove a copy of a book from the library.

3. Get the list of books by a particular author or in a particular subject area.

4. Find out the list of books currently checked out by a particular borrower.

5. Find out what borrower last checked out a particular copy of a book.

There are two types of users: staff users and ordinary borrowers.

Transactions 1, 2, 4, and 5 are restricted to staff users, except that ordinary borrowers can perform transaction 4 to find out the list of books currently borrowed by themselves. The database must also satisfy the following constraints:

All copies in the library must be available for checkout or be checked out.

No copy of the book may be both available and checked out at the same time.

A borrower may not have more than a predefined number of books checked out at one time.

Page 13: Software Architecture - ETH Z

13

Practical advice

Identify all relevant stakeholders early on

Page 14: Software Architecture - ETH Z

14

Requirements categories

Functional

vs

Non-functional

Full system Software only

Procedural Object-oriented

Informal Formal

Textual Graphical

Executable Non-executable

Page 15: Software Architecture - ETH Z

15

Components of requirements

Domain properties

Functional requirements

Non-functional requirements (reliability, security, accuracy of results, time and space performance, portability...)

Requirements on process and evolution

Page 16: Software Architecture - ETH Z

16

15 quality goals for requirements

Justified

Correct

Complete

Consistent

Unambiguous

Feasible

Abstract

Traceable

Delimited

Interfaced

Readable

Modifiable

Verifiable

Prioritized*

Endorsed

Attributes in red are part of IEEE 830, see below * “Ranked for importance and/or stability”

Page 17: Software Architecture - ETH Z

Notes on quality goals

For further information on goals of IEEE-830 (red ones in previous slide) see the standard

Justified: Every requirement is related to a stakeholder’s need or has a connection with an external component

Feasible: The reqs. (requirements) capture a system that can be realized given time, and resource constraints. They should not be merely wishful thinking.

Abstract: The reqs. should not overspecify the system, i.e. they should not be implementation-oriented.

Delimited: The reqs. define the scope of the project.

Interfaced: The reqs. describe all interactions between the system and external components.

Readable: See discussion in 4.3.2.1 and 4.3.2.2 of IEEE-830.

Endorsed: Stakeholders must agree with the reqs.

17

Page 18: Software Architecture - ETH Z

18

Difficulties of requirements

Natural language and its imprecision

Formal techniques and their abstraction

Users and their vagueness

Customers and their demands

The rest of the world and its complexity

Page 19: Software Architecture - ETH Z

19

Stereotypes

How developers see users Don't know what they want Can't articulate what they

want Have too many needs that are

politically motivated Want everything right now. Can't prioritize needs “Me first”, not company first Refuse to take responsibility

for the system Unable to provide a usable

statement of needs Not committed to system

development projects Unwilling to compromise Can't remain on schedule

How users see developers Don't understand operational needs.

Too much emphasis on technicalities.

Try to tell us how to do our jobs.

Can't translate clearly stated needs into a successful system.

Say no all the time.

Always over budget.

Always late.

Ask users for time and effort, even to the detriment of their primary duties.

Set unrealistic standards for requirements definition.

Unable to respond quickly to legitimately changing needs.

Source: Scharer 81

Page 20: Software Architecture - ETH Z

20

A simple problem

Given a text consisting of words separated by BLANKS or by NL (new line) characters, convert it to a line-by-line form in accordance with the following rules:

1. Line breaks must be made only where the given text has BLANK or NL;

2. Each line is filled as far as possible as long as:

3. No line will contain more than MAXPOS characters

Source: Naur

See discussion at se.ethz.ch/~meyer/publications/ieee/formalism.pdf

Page 21: Software Architecture - ETH Z

21

“Improved”

The program's input is a stream of characters whose end is signaled with a special end-of-text character, ET. There is exactly one ET character in each input stream. Characters are classified as:

Break characters — BL (blank) and NL (new line);

Nonbreak characters — all others except ET;

The end-of-text indicator — ET.

A word is a nonempty sequence of nonbreak characters. A break is a sequence of one or more break characters. Thus, the input can be viewed as a sequence of words separated by breaks, with possibly leading and trailing breaks, and ending with ET.

The program's output should be the same sequence of words as in the input, with the exception that an oversize word (i.e. a word containing more than MAXPOS characters, where MAXPOS is a positive integer) should cause an error exit from the program (i.e. a variable, Alarm, should have the value TRUE). Up to the point of an error, the program's output should have the following properties:

1. A new line should start only between words and at the beginning of the output text, if any.

2. A break in the input is reduced to a single break character in the output.

3. As many words as possible should be placed on each line (i.e., between successive NL characters).

4. No line may contain more than MAXPOS characters (words and BLs).

Source: Goodenough & Gerhart

Page 22: Software Architecture - ETH Z

22

“Improved”

The program's input is a stream of characters whose end is signaled with a special end-of-text character, ET. There is exactly one ET character in each input stream. Characters are classified as:

Break characters — BL (blank) and NL (new line);

Nonbreak characters — all others except ET;

The end-of-text indicator — ET.

A word is a nonempty sequence of nonbreak characters. A break is a sequence of one or more break characters. Thus, the input can be viewed as a sequence of words separated by breaks, with possibly leading and trailing breaks, and ending with ET.

The program's output should be the same sequence of words as in the input, with the exception that an oversize word (i.e. a word containing more than MAXPOS characters, where MAXPOS is a positive integer) should cause an error exit from the program (i.e. a variable, Alarm, should have the value TRUE). Up to the point of an error, the program's output should have the following properties:

1. A new line should start only between words and at the beginning of the output text, if any.

2. A break in the input is reduced to a single break character in the output.

3. As many words as possible should be placed on each line (i.e., between successive NL characters).

4. No line may contain more than MAXPOS characters (words and BLs).

Contradiction Noise Ambiguity

Overspecification Remorse Forward reference

Source: Meyer 85

Page 23: Software Architecture - ETH Z

23

The formal specification

Page 24: Software Architecture - ETH Z

24

“My” spec, informal from formal

Given are a non-negative integer MAXPOS and a character set including two "break characters“ blank and new_line.

The program shall accept as input a finite sequence of characters and produce as output a sequence of characters satisfying the following conditions:

It only differs from the input by having a single break character wherever the input has one or more break characters.

Any MAXPOS +1 consecutive characters include a new_line.

The number of new_line characters is minimal.

If (and only if) an input sequence contains a group of MAXPOS +1 consecutive non-break characters, there exists no such output. In this case, the program shall produce the output associated with the initial part of the sequence up to and including the MAXPOS-th character of the first such group, and report the error.

Page 25: Software Architecture - ETH Z

25

Practical advice

Do not underestimate the potential for help from mathematics

Page 26: Software Architecture - ETH Z

26

Bad requirements

The Background Task Manager shall provide status messages at regular intervals not less than 60 seconds.

Source: Wiegers

The Background Task Manager (BTM) shall display status messages in a designated area of the user interface

1. The messages shall be updated every 60 plus or minus 10 seconds after background task processing begins.

2. The messages shall remain visible continuously.

3. Whenever communication with the background task process is possible, the BTM shall display the percent completed of the backround task.

Better:

Page 27: Software Architecture - ETH Z

27

Bad requirements

The XML Editor shall switch between displaying and hiding non-printing characters instantaneously.

Source: Wiegers

The user shall be able to toggle between displaying and hiding all XML tags in the document being edited with the activation of a specific triggering mechanism. The display shall change in 0.1 seconds or less.

Better:

Page 28: Software Architecture - ETH Z

28

Bad requirements

The XML parser shall produce a markup error report that allows quick resolution of errors when used by XML novices.

Source: Wiegers

1. After the XML Parser has completely parsed a file, it shall produce an error report that contains the line number and text of any XML errors found in the parsed file and a description of each error found.

2. If no parsing errors are found, the parser shall not produce an error report.

Better:

Page 29: Software Architecture - ETH Z

29

The two constant pitfalls

Committing too early to an implementation Overspecification!

Missing parts of the problem Underspecification!

Page 30: Software Architecture - ETH Z

30

15 quality goals for requirements

Justified

Correct

Complete

Consistent

Unambiguous

Feasible

Abstract

Traceable

Delimited

Interfaced

Readable

Modifiable

Testable

Prioritized

Endorsed

Page 31: Software Architecture - ETH Z

31

Verifiable requirements

Non-verifiable : The system shall work satisfactorily The interface shall be user-friendly The system shall respond in real time

Verifiable: The output shall in all cases be produced within 30

seconds of the corresponding input event. It shall be produced within 10 seconds for at least 80% of input events.

Professional train drivers will reach level 1 of proficiency (defined in requirements) in two days of training.

Adapted from: IEEE

Page 32: Software Architecture - ETH Z

32

Practical advice

Favor precise, falsifiable language over pleasant generalities

Page 33: Software Architecture - ETH Z

33

Complete requirements

Complete with respect to what?

Definition from IEEE standard (see next) :

An SRS (Software Requirements Specification) is complete if, and only if, it includes the following elements: All significant requirements, whether relating to functionality,

performance, design constraints, attributes, or external interfaces. In particular any external requirements imposed by a system specification should be acknowledged and treated.

Definition of the responses of the software to all realizable classes of input data in all realizable classes of situations. Note that it is important to specify the responses to both valid and invalid input values.

Full labels and references to all figures, tables, and diagrams in the SRS and definition of all terms and units of measure.

Page 34: Software Architecture - ETH Z

34

Completeness

Completeness cannot be “completely” defined

But (taking advantage of the notion of sufficient completeness for abstract data types) we can cross-check:

Commands x Queries

to verify that every effect is defined

Page 35: Software Architecture - ETH Z

35

Practical advice

Think negatively

Page 36: Software Architecture - ETH Z

36

The two parts of requirements

Purpose: to capture the user needs for a “machine” to be built

Jackson’s view: define success as

machine specification domain properties requirement

• Domain properties: outside constraints (e.g. can only

modify account as a result of withdrawal or deposit)

• Requirement: desired system behavior (e.g. withdrawal of n francs decreases balance by n)

• Machine specification: desired properties of the machine (e.g. request for withdrawal will, if accepted, lead to update of the balance)

Page 37: Software Architecture - ETH Z

37

Domain requirements

Domain assumption: trains & cars travel at certain max speeds

Requirement: no collision in railroad crossing

Page 38: Software Architecture - ETH Z

38

Your turn! Separate machine & domain

Consider a small library database with the following transactions:

1. Check out a copy of a book. Return a copy of a book.

2. Add a copy of a book to the library. Remove a copy of a book from the library.

3. Get the list of books by a particular author or in a particular subject area.

4. Find out the list of books currently checked out by a particular borrower.

5. Find out what borrower last checked out a particular copy of a book.

There are two types of users: staff users and ordinary borrowers.

Transactions 1, 2, 4, and 5 are restricted to staff users, except that ordinary borrowers can perform transaction 4 to find out the list of books currently borrowed by themselves. The database must also satisfy the following constraints:

All copies in the library must be available for checkout or be checked out.

No copy of the book may be both available and checked out at the same time.

A borrower may not have more than a predefined number of books checked out at one time.

Page 39: Software Architecture - ETH Z

39

Practical advice

Distinguish machine specification from domain properties

Page 40: Software Architecture - ETH Z

Standards and Methods

Page 41: Software Architecture - ETH Z

41

The purpose of standards

Software engineering standards:

Define common practice.

Guide new engineers.

Make software engineering processes comparable.

Enable certification.

Page 42: Software Architecture - ETH Z

42

IEEE 830-1998

”IEEE Recommended Practice for Software Requirements Specifications”

Approved 25 June 1998 (revision of earlier standard)

Descriptions of the content and the qualities of a good software requirements specification (SRS).

Goal: “The SRS should be correct, unambiguous, complete, consistent, ranked for importance and/or stability, verifiable, modifiable, traceable.”

Page 43: Software Architecture - ETH Z

43

15 quality goals for requirements

Justified

Correct

Complete

Consistent

Unambiguous

Feasible

Abstract

Traceable

Delimited

Interfaced

Readable

Modifiable

Testable

Prioritized

Endorsed

Page 44: Software Architecture - ETH Z

44

IEEE Standard: definitions

Contract: A legally binding document agreed upon by the customer and supplier. This includes the technical and organizational requirements, cost, and schedule for a product. A contract may also contain informal but useful information such as the commitments or expectations of the parties involved. Customer: The person, or persons, who pay for the product and usually (but not necessarily) decide the requirements. In the context of this recommended practice the customer and the supplier may be members of the same organization. Supplier: The person, or persons, who produce a product for a customer. In the context of this recommended practice, the customer and the supplier may be members of the same organization. User: The person, or persons, who operate or interact directly with the product. The user(s) and the customer(s) are often not the same person(s).

Page 45: Software Architecture - ETH Z

45

IEEE Standard

Basic issues to be addressed by an SRS:

Functionality

External interfaces

Performance

Attributes

Design constraints imposed on an implementation

Page 46: Software Architecture - ETH Z

46

IEEE Standard

Recommended document structure: 1. Introduction

1.1 Purpose

1.2 Scope

1.3 Definitions, acronyms, and abbreviations Glossary!

1.4 References

1.5 Overview

2. Overall description

2.1 Product perspective

2.2 Product functions

2.3 User characteristics

2.4 Constraints

2.5 Assumptions and dependencies

3. Specific requirements

Appendixes

Index

Page 47: Software Architecture - ETH Z

47

Practical advice

Use the recommended IEEE structure

Page 48: Software Architecture - ETH Z

48

Practical advice

Write a glossary

Page 49: Software Architecture - ETH Z

49

Recommended document structure

1. Introduction

1.1 Purpose

1.2 Scope

1.3 Definitions, acronyms, and abbreviations

1.4 References

1.5 Overview

2. Overall description

2.1 Product perspective

2.2 Product functions

2.3 User characteristics

2.4 Constraints

2.5 Assumptions and dependencies

3. Specific requirements

Appendixes

Index

Page 50: Software Architecture - ETH Z

Section: purpose

Delineate the purpose of the SRS

Specify intended audience

50

Page 51: Software Architecture - ETH Z

51

Section: scope

Identify software product to be produced by name (e.g., Host DBMS, Report Generator, etc.)

Explain what the product will and will not do

Describe application of the software: goals and benefits

Establish relation with higher-level system requirements if any

Page 52: Software Architecture - ETH Z

Example of purpose and scope (1)

52 SRS for Project Management System by I. Yevgeniy, DOSE course 07

Page 53: Software Architecture - ETH Z

Example of purpose and scope (2)

53 SRS for Tschau Sepp Logic Subcomponent, by A. Dima, O. Clerc, A. Garcia, DOSE course 09

Page 54: Software Architecture - ETH Z

Section: definitions, acronyms, abbreviations

Define all terms, acronyms, and abbreviations required to properly interpret the SRS.

54

Page 55: Software Architecture - ETH Z

Example of definitions… (1)

55 SRS for Project Management System by I. Yevgeniy, DOSE course 07

Page 56: Software Architecture - ETH Z

Example of definitions… (2)

56 SRS for Tschau Sepp Logic Subcomponent, by A. Dima, O. Clerc, A. Garcia, DOSE course 09

Page 57: Software Architecture - ETH Z

57

Section: product perspective

Describe relation with other products if any.

Examples:

System interfaces

User interfaces

Hardware interfaces

Software interfaces

Communications interfaces

Memory

Operations

Site adaptation requirements

Page 58: Software Architecture - ETH Z

Example of product perspective (1)

58 SRS for Project Management System by I. Yevgeniy, DOSE course 07

Page 59: Software Architecture - ETH Z

Example of product perspective (2)

59 SRS for Tschau Sepp Logic Subcomponent, by A. Dima, O. Clerc, A. Garcia, DOSE course 09

Page 60: Software Architecture - ETH Z

60

Section: constraints

Describe any properties that will limit the developers’ options

Examples:

Regulatory policies

Hardware limitations (e.g., signal timing requirements)

Interfaces to other applications

Parallel operation

Audit functions

Control functions

Higher-order language requirements

Reliability requirements

Criticality of the application

Safety and security considerations

Page 61: Software Architecture - ETH Z

61

Recommended document structure

1. Introduction

1.1 Purpose

1.2 Scope

1.3 Definitions, acronyms, and abbreviations

1.4 References

1.5 Overview

2. Overall description

2.1 Product perspective

2.2 Product functions

2.3 User characteristics

2.4 Constraints

2.5 Assumptions and dependencies

3. Specific requirements

Appendixes

Index

Page 62: Software Architecture - ETH Z

62

Specific requirements (section 3)

This section brings requirements to a level of detail making them usable by designers and testers.

Examples:

Details on external interfaces

Precise specification of each function

Responses to abnormal situations

Detailed performance requirements

Database requirements

Design constraints

Specific attributes such as reliability, availability, security, portability

Page 63: Software Architecture - ETH Z

63

Possible section 3 structure

3. Specific requirements

3.1 External interfaces

3.1.1 User interfaces

3.1.2 Hardware interfaces

3.1.3 Software interfaces

3.1.4 Communication interfaces

3.2 Functional requirements

3.3 Performance requirements

3.4 Design constraints

3.5 Quality requirements

3.6 Other requirements

Page 64: Software Architecture - ETH Z

Example of functional requirements (1)

64 SRS for Project Management System by I. Yevgeniy, DOSE course 07

Page 65: Software Architecture - ETH Z

Example of functional requirements (2)

65

Priority: 1: first version 2: final version >3: optional

Risk: C: critical H: high impact M: medium imp. L: low impact

SRS for Tschau Sepp Logic Subcomponent, by A. Dima, O. Clerc, A. Garcia, DOSE course 09

Page 66: Software Architecture - ETH Z

Example of non-functional requirements (1)

66 SRS for Project Management System by I. Yevgeniy, DOSE course 07

Page 67: Software Architecture - ETH Z

Example of non-functional requirements (2)

67 SRS for Tschau Sepp Logic Subcomponent, by A. Dima, O. Clerc, A. Garcia, DOSE course 09

Page 68: Software Architecture - ETH Z

68

Requirements under agile methods

Under XP: requirements are taken into account as defined at the particular time considered

Requirements are largely embedded in test cases

Benefits:

Test plan will be directly available

Customer involvement

Risks:

Change may be difficult (refactoring)

Structure may not be right

Test only cover the foreseen cases

Page 69: Software Architecture - ETH Z

69

Practical advice

Retain the best agile practices, in particular frequent iterations, customer involvement, centrality of code and testing.

Disregard those that contradict proven software engineering principles.

Page 70: Software Architecture - ETH Z

70

Some recipes for good requirements

Managerial aspects:

Involve all stakeholders

Establish procedures for controlled change

Establish mechanisms for traceability

Treat requirements document as one of the major assets of the project; focus on clarity, precision, completeness

Technical aspects: how to be precise?

Formal methods?

Design by Contract

Page 71: Software Architecture - ETH Z

71

Checklist

Premature design?

Combined requirements?

Unnecessary requirements?

Conformance with business goals

Ambiguity

Realism

Testability

After: Kotonya & Sommerville 98

Page 72: Software Architecture - ETH Z

72

Using natural language for requirements

Keys are:

Structure

Precision (including precise definition of all terms)

Consistency

Minimizing forward and outward references

Clarity

Conciseness

Page 73: Software Architecture - ETH Z

73

Advice on natural language

Apply the general rules of “good writing” (e.g. Strunk & White)

Use active form

(Counter-example: “the message will be transmitted…”)

This forces you to state who does what

Use prescriptive language (“shall…”)

Separate domain properties and machine requirements

Take advantage of text processing capabilities, within reason

Identify every element of the requirement, down to paragraph or sentence

For delicate or complex issues, use complementary formalisms:

Illustrations (with precise semantics)

Formal descriptions, with explanations in English

Even for natural language specs, a mathematical detour may be useful

Page 74: Software Architecture - ETH Z

74

Advice on natural language

When using numbers, identify the units

When introducing a list, describe all the elements

Use illustrations to clarify

Define all project terms in a glossary

Consider placing individual requirements in a separate paragraph, individually numbered

Define generic verbs (“transmitted”, “sent”, “downloaded”, “processed”…) precisely

After Mannion & Keepence, 95

Page 75: Software Architecture - ETH Z

Requirements elicitation

Page 76: Software Architecture - ETH Z

76

Case study questions

Define stakeholders

Discuss quality of statements -- too specific, not specific enough, properly scoped

Discuss completeness of information: what is missing?

Any contradictions that need to be resolved between stakeholders?

Identify domain and machine requirements

Identify functional and non-functional requirements

Plan for future elicitation tasks

Page 77: Software Architecture - ETH Z

77

The need for an iterative approach

The requirements definition activity cannot be defined by a simple progression through, or relationship between, acquisition, expression, analysis, and specification.

Requirements evolve at an uneven pace and tend to generate further requirements from the definition processes.

The construction of the requirements specification is inevitably an iterative process which is not, in general, self-terminating. Thus, at each iteration it is necessary to consider whether the current version of the requirements specification adequately defines the purchaser’s requirement, and, if not, how it must be changed or expanded further.

Source: Southwell 87

Page 78: Software Architecture - ETH Z

78

Before elicitation

At a minimum:

Overall project description

Draft glossary

Page 79: Software Architecture - ETH Z

79

Requirements elicitation: overall scheme

Identify stakeholders

Gather wish list of each category

Document and refine wish lists

Integrate, reconcile and verify wish lists

Define priorities

Add any missing elements and nonfunctional requirements

Page 80: Software Architecture - ETH Z

80

The four forces at work After: Kotonya & Sommerville 98

Requirements

Problem to be solved

Business context

Domain constraints

Stakeholder constraints

Page 81: Software Architecture - ETH Z

81

The customer perspective

“The primary interest of customers is not in a computer system, but rather in some overall positive effects resulting from the introduction of a computer system in their environment”

Source: Dubois 88

Page 82: Software Architecture - ETH Z

82

Requirements elicitation: who?

Users/customers

Software developers

Other stakeholders

Requirements engineers (analysts)

Page 83: Software Architecture - ETH Z

83

Requirements elicitation: what?

Example questions:

What will the system do?

What must happen if…?

What resources are available for…?

What kind of documentation is required?

What is the maximum response time for…?

What kind of training will be needed?

What precision is requested for…?

What are the security/privacy implications of …?

Is … an error?

What should the consequence be for a … error?

What is a criterion for success of a … operation?

Page 84: Software Architecture - ETH Z

84

Requirements elicitation: how?

Contract

Study of existing non-computer processes

Study of existing computer systems

Study of comparable systems elsewhere

Stakeholder interviews

Stakeholder workshops

Page 85: Software Architecture - ETH Z

85

Building stakeholders’ trust

Future users may be jaded by previous attempts where the deliveries did not match the promises

Need to build trust progressively:

Provide feedback, don’t just listen

Justify restrictions

Reinforce trust through evidence, e.g. earlier systems, partial prototypes

Emphasize the feasible over the ideal

Page 86: Software Architecture - ETH Z

86

Study of existing systems

Non-computerized processes

Not necessarily to be replicated by software system

Understand why things are done the way they are

Existing IT systems

Commercial products (buy vs build)

Previous systems

Systems developed by other companies, including competitors

Page 87: Software Architecture - ETH Z

87

Stakeholder interviews

Good questions: Are egoless Seek useful answers Make no assumptions

“Context-free” questions: “Where do you expect this to be used?” “What is it worth to you to solve this problem?” “When do you do this?” “Whom should I talk to?” “Who doesn’t need to be

involved?” “How does this work?” “How might it be different?”

Also: meta-questions: “Are my questions relevant?”

After: Winant 02

Page 88: Software Architecture - ETH Z

88

Probe further

What else? Can you show me? Can you give me an example? How did that happen? What happens next? What’s behind that? Are there any other reasons? “How” rather than “why”: What was the thinking behind that decision?

After: Derby 04

Page 89: Software Architecture - ETH Z

89

Uncovering the implicit

One analyst didn’t include in his requirements document the database that fed his system. I asked him why. He said, “Everyone knows it’s there. It’s obvious.” Words to be wary of! It turned out that the database was scheduled for redesign. [Winant]

Implicit assumptions are one of the biggest obstacles to a successful requirements process.

Page 90: Software Architecture - ETH Z

90

Requirements workshops

Often less costly than multiple interviews

Help structure requirements capture and analysis process

Dynamic, interactive, cooperative

Involve users, cut across organizational boundaries

Help identify and prioritize needs, resolve contentious issues; help promote cooperation between stakeholders

Help manage users’ expectations and attitude toward change

After: Young 01

Page 91: Software Architecture - ETH Z

91

Knowing when to stop elicitation

Keep the focus on scope

Keep a list of open issues

Define criteria for completeness

Page 92: Software Architecture - ETH Z

92

After elicitation

Examine resulting requirements from the viewpoint of requirements quality factors, especially consistency and completeness

Make decisions on contentious issues

Finalize scope of project

Go back to stakeholders and negotiate

Page 93: Software Architecture - ETH Z

93

15 quality goals for requirements

Justified

Correct

Complete

Consistent

Unambiguous

Feasible

Abstract

Traceable

Delimited

Interfaced

Readable

Modifiable

Testable

Prioritized

Endorsed

Page 94: Software Architecture - ETH Z

94

Practical advice

Treat requirement elicitation as a mini-project of its own

Page 95: Software Architecture - ETH Z

Use cases

and

Object-oriented analysis

Page 96: Software Architecture - ETH Z

96

Use Cases and scenarios

One of the UML diagram types

A use case describes how to achieve a single business goal or task through the interactions between external actors and the system can be used to capture functional requirements

Actors: interacting parties outside of the system, e.g. class of users, role of users, other system

Scenario: instance of a use case representing a single path through the use case

Page 97: Software Architecture - ETH Z

Use cases

A good use case must:

Have one single business task as goal

Describe a sequence of interactions delivering the service

Describe alternatives, failures, exceptional behavior

Treat the system as a black box

Not be implementation-specific

Provide appropriate level of detail

Be short enough to implement by one developer in one release

It captures who (actor) does what (interaction) why (goal)

97

Page 98: Software Architecture - ETH Z

Example of a use case – Define actors

98

Example taken from http://www.gatherspace.com/static/use_case_example.html

Page 99: Software Architecture - ETH Z

Example of a use case – Define actor goals

99

Page 100: Software Architecture - ETH Z

Example of a use case – Identify reuse

100

Page 101: Software Architecture - ETH Z

101

Use case example

Place an order: Browse catalog & select items

Call sales representative

Supply shipping information

Supply payment information

Receive conformation number from salesperson

May have precondition, postcondition, invariant

Page 102: Software Architecture - ETH Z

102

Your turn! Devise use cases

Consider a small library database with the following transactions:

1. Check out a copy of a book. Return a copy of a book.

2. Add a copy of a book to the library. Remove a copy of a book from the library.

3. Get the list of books by a particular author or in a particular subject area.

4. Find out the list of books currently checked out by a particular borrower.

5. Find out what borrower last checked out a particular copy of a book.

There are two types of users: staff users and ordinary borrowers.

Transactions 1, 2, 4, and 5 are restricted to staff users, except that ordinary borrowers can perform transaction 4 to find out the list of books currently borrowed by themselves. The database must also satisfy the following constraints:

All copies in the library must be available for checkout or be checked out.

No copy of the book may be both available and checked out at the same time.

A borrower may not have more than a predefined number of books checked out at one time.

Page 103: Software Architecture - ETH Z

103

Discussion of use cases for requirements

Use cases are a tool for requirement elicitation but insufficient to define requirements:

Not abstract enough

Too specific

Describe current processes

Do not support evolution

Use cases are to requirements what tests are to software specification and design

Major application: for testing

Page 104: Software Architecture - ETH Z

104

Object-oriented analysis

Classes around object types (not just physical objects but also important concepts of the application domain)

Abstract Data Types approach

Deferred classes and features

Inter-component relations: “client” and inheritance

Distinction between reference and expanded clients

Inheritance — single, multiple and repeated for classification.

Contracts to capture the semantics of systems: properties other than structural.

Libraries of reusable classes

Page 105: Software Architecture - ETH Z

105

What is O-O analysis?

Same benefits as O-O programming, in particular extendibility and reusability

Direct modeling of the problem domain

Seamlessness and reversibility with the continuation of the project (design, implementation, maintenance)

To be continued: we need abstract data types before continuing the discussion of O-O analysis. See lecture 3.

Page 106: Software Architecture - ETH Z

Conclusion

Page 107: Software Architecture - ETH Z

107

Key lessons

Requirements are software

Subject to software engineering tools

Subject to standards

Subject to measurement

Part of quality enforcement

Requirements is both a lifecycle phase and a lifecycle-long activity

Since requirements will change, seamless approach is desirable

Distinguish domain properties from machine properties

Domain requirements should never refer to machine requirements!

Page 108: Software Architecture - ETH Z

108

Key lessons

Identify & involve all stakeholders

Requirements determine not just development but tests

Use cases are good for test planning

Requirements should be abstract

Requirements should be traceable

Requirements should be verifiable (otherwise they are wishful thinking)

Object technology helps

Modularization

Classifications

Contracts

Seamless transition to rest of lifecycle

Page 109: Software Architecture - ETH Z

109

Key lessons

Formal methods have an important contribution to make:

Culture to be mastered by requirements engineers

Necessary for critical parts of application

Lead to ask the right questions

Proofs & model checking uncover errors

Lead to better informal requirements

Study abstract data types

Nothing to be scared of

Page 110: Software Architecture - ETH Z

110

Bibliography (1/4)

Barry W. Boehm: Software Engineering Economics, Prentice Hall, 1981.

Fred Brooks: No Silver Bullet - Essence and Accident in Software Engineering, in Computer (IEEE), vol. 20, no. 4, pages 10-19, April 1987.

John B. Goodenough and Susan Gerhart: Towards a Theory of Test: Data Selection Criteria, in Current Trends in Programming Methodology, ed. Raymond T. Yeh, pages 44-79, Prentice Hall, 1977.

Esther Derby: Building a Requirements Foundation through Customer Interviews, www.estherderby.com/articles/buildingarequirementsfoundation.htm.

Éric Dubois, J. Hagelstein and A. Rifaut: Formal Requirements Engineering with ERAE, in Philips Journal of Research, vol. 43, no. ¾, pages 393-414,1988.

Ellen Gottesdiener: Requirements Workshops: Collaborating to Explore User Requirements, in Software Management 2002, available at www.ebgconsulting.com/pubs/Articles/ReqtsWorkshopsCollabToExplore-Gottesdiener.pdf

Page 111: Software Architecture - ETH Z

111

Bibliography (2/4)

Gerald Kotonya & Ian Sommerville: Requirements Engineering: Processes and Techniques, Wiley, 1998.

IEEE: IEEE Recommended Practice for Software Requirements Specifiations, IEEE Std 830-1998 (revision of IEEE Std 830-1988), available at ieeexplore.ieee.org/iel4/5841/15571/00720574.pdf?arnumber=720574.

Michael Jackson: Software Requirements and Specifications, Addison-Wesley, 1996.

Mike Mannion and Barry Keepence: SMART Requirements, in ACM SIGSOFT Software Engineering Notes, vol. 20, no. 2, pages 42-47, April 1995.

Bertrand Meyer: On Formalism in Specifications, in Software (IEEE), pages 6-26, January 1985, also at se.ethz.ch/~meyer/publications/ieee/formalism.pdf.

[OOSC] Bertrand Meyer: Object-Oriented Software Construction, 2nd edition, Prentice Hall, 1997.

Peter Naur: Programming with Action Clusters, in BIT, vol. 3, no. 9, pages 250-258, 1969.

Page 112: Software Architecture - ETH Z

112

Bibliography (3/4)

Shari Lawrence Pfleeger and Joanne M Atlee: Software Engineering, 3rd edition, Prentice Hall, 2005.

Laura Scharer: Pinpointing Requirements, in Datamation, April 1981. Also available at media.wiley.com/product_data/excerpt/84/08186773/ 0818677384-2.pdf.

SEI (Software Engineering Institute): CMMISM for Software Engineering, Version 1.1, Staged Representation (CMMI-SW, V1.1, Staged), 2005, available at www.sei.cmu.edu/publications/documents/02.reports/02tr029.html.

Southwell et al., cited in Michael G. Christel and Kyo C. Kang, Issues in Requirements Elicitation, Software Engineering Institute, CMU/SEI-92-TR-012 and ESC-TR-92-012, September 1992, available at www.sei.cmu.edu/pub/ documents/92.reports/pdf/tr12.92.pdf.

Standish group: The Chaos Report, 1994.

Becky Winant: Requirement #1: Ask Honest Questions, www.stickyminds.com/ sitewide.asp?Function=edetail&ObjectType=COL&ObjectId=3264.

Page 113: Software Architecture - ETH Z

113

Bibliography (4/4)

Jeannette M. Wing: A Study of 12 Specifications of the Library Problem, in Software (IEEE), vol. 5, no. 4, pages 66-76, July 1988.

Ralph Young: Recommended Requirements Gathering Practices, in CrossTalk, the Journal of Defense Software Engineering, April 2002, available at www.stsc.hill.af.mil/crosstalk/2002/04/young.html.