software requirements engineering - eth zse.inf.ethz.ch/.../slides/requirements.pdf · software...

100
Software Engineering Software Requirements Engineering Material for Software Engineering for Outsourced & Offshore Development Bertrand Meyer Bernd Schoeller Chair of Software Engineering, ETH Zurich Fall 2005 2 Software Engineering 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

Upload: others

Post on 21-Jun-2020

38 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

1

Software Engineering

SoftwareRequirementsEngineering

Material for Software Engineering for Outsourced & Offshore Development

Bertrand MeyerBernd Schoeller

Chair of Software Engineering, ETH Zurich

Fall 2005

2Software Engineering

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 2: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

2

3Software Engineering

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 DevelopmentTesting

AcceptanceTesting

Operation

Relative cost to correct a defect

Source*: Boehm 81

4Software Engineering

Topics

Part 1: OverviewPart 2: Standards & MethodsPart 3: ToolsPart 4: Object-Oriented RequirementsPart 5: Formal RequirementsPart 6: Non-functional requirements, conclusion

Complementary material: Glossary, Bibliography

Page 3: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

3

5Software Engineering

The 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

Software Engineering

Part 1:

Overview ofthe requirements task

Page 4: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

4

7Software Engineering

A definition

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

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

8Software Engineering

Goals of performing requirements

Understand problem or problems that the eventual software system, if any, should solvePrompt relevant questions about problem & systemProvide basis for answering questions about specific properties of problem & systemDecide what system should doDecide what system should not doAscertain that system will satisfy the needs of its stakeholdersProvide basis for development of systemProvide basis for V & V* of system

Source: OOSC

*Validation & Verification, including testing

Page 5: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

5

9Software Engineering

Products of requirements

Requirements document

Development plan

V&V plan (including test plan)

10Software Engineering

Possible requirements stakeholders

Clients (tailor-made system)Customers (product for general sale)Clients’ and customers’customersUsersDomain experts

Market analysts

Unions?

Legal experts

Purchasing agents

Software developers

Software project managers

Software documenters

Software testers

Trainers

Consultants

Page 6: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

6

11Software Engineering

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.

12Software Engineering

Requirements categories

Functional

vs

Non-functional

Full system Software only

Procedural Object-oriented

Informal Formal

Textual Graphical

Executable Non-executable

Page 7: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

7

13Software Engineering

Requirements vs prototyping

“Prototype” may mean:1. Pilot project2. Throw-away development

Brooks: “Plan to throw one away;you will anyhow”

3. Incremental development4. Preparing for reusable components5. Experimentation: user interface, implementation…6. Experimentation: requirements capture

A prototype (1, 5, 6) may help requirements, but is not a substitute for requirements.

14Software Engineering

14 habits of successful requirements

Correct

Complete

Consistent

Unambiguous

Feasible

Relevant

Abstract

Traceable

Delimited

Readable

Modifiable

Testable

Prioritized

Endorsed

Page 8: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

8

15Software Engineering

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

16Software Engineering

The two constant pitfalls

Committing too early to an implementation

Overspecification!

Missing parts of the problem

Underspecification!

Page 9: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

9

17Software Engineering

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

18Software Engineering

“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 MAXPOScharacters, 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 MAXPOScharacters (words and BLs).

Source: Goodenough & Gerhart

Page 10: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

10

19Software Engineering

“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 MAXPOScharacters, 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 MAXPOScharacters (words and BLs).Contradiction Noise Ambiguity

Overspecification Remorse Forward reference

Source: Meyer 85

20Software Engineering

“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 11: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

11

21Software Engineering

Your turn! Discuss these requirements

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.

22Software Engineering

14 habits of successful requirements

Correct

Complete

Consistent

Unambiguous

Feasible

Relevant

Abstract

Traceable

Delimited

Readable

Modifiable

Testable

Prioritized

Endorsed

Page 12: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

12

23Software Engineering

Your turn! Evaluate according to criteria

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.

24Software Engineering

About software quality factors

CORRECTNESSROBUSTNESSINTEGRITY

EASE OF USEREUSABILITYEXTENDIBILITYPORTABILITYEFFICIENCY…

Correctness:The ability of a software system to perform according to specification, in cases defined by the specification.

Robustness:The ability of a software system to react in a reasonable manner to cases not covered by the specification.

Correctness

RobustnessIntegrity

HOSTILE USEERRORSSPECIFICATION

Page 13: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

13

25Software Engineering

Software quality factors

Product quality (immediate):CorrectnessRobustnessIntegrityEase of useEase of learning

Process quality:Timeliness

Cost-effectivenessProduct quality (long term):

ExtendibilityReusabilityPortability...

26Software Engineering

The Software Engineering problem

Developing software systems that are

On time and within budgetOf high immediate qualityPossibly large and complexExtendible

Page 14: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

14

27Software Engineering

Lifecycle models

Origin: Royce, 1970, Waterfall model

Scope: describe the set of processes involved in the production of software systems, and their sequencing

“Model” in two meanings of the term:Idealized description of realityIdeal to be followed

28Software Engineering

The waterfall model of the lifecycle

Feasibilitystudy

Requirements

Specification

Globaldesign

Detaileddesign

Implemen-tation

Distribution

V & V

Page 15: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

15

29Software Engineering

The anti-process movement

“eXtreme Programming”(XP), “Agile” methods

Test-driven developmentRecommended practices, e.g. Pair ProgrammingShort iteration cycles

“The revenge of the cubicles”

30Software Engineering

V-shaped

FEASIBILITY STUDY

REQUIREMENTS ANALYSIS

GLOBAL DESIGN

DETAILED DESIGN

DISTRIBUTION

IMPLEMENTATION

UNITVALIDATION

SUBSYSTEMVALIDATION

SYSTEMVALIDATION

Page 16: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

16

31Software Engineering

Arguments for the waterfall

(After B.W. Boehm: Software engineering economics)

The activities are necessary(But: merging of middle activities)

The order is the right one.

Source: Boehm 81

32Software Engineering

The waterfall model

Feasibilitystudy

Requirements

Specification

Globaldesign

Detaileddesign

Implemen-tation

Distribution

V & V

Page 17: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

17

33Software Engineering

Problems with the waterfall

Late appearance of actual code.

Lack of support for requirements change — and more generally for extendibility and reusability.

Lack of support for the maintenance activity (70% of software costs?).

Division of labor hampering Total Quality Management.

Impedance mismatches.

Highly synchronous model.

34Software Engineering

Quality control?

RequirementAnalysts

Designers

Implementers

Testers

Customers

Page 18: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

18

35Software Engineering

Impedance mismatches

As Management requested it. As the Project Leader defined it. As Systems designed it.

As Programming developed it. As Operations installed it. What the user wanted.(Pre-1970 cartoon; origin unknown)

36Software Engineering

The Spiral model (Boehm)

Figure from: Ghezzi, Jazayeri, Mandrioli, Software Engineering, 2nd edition, Prentice Hall

Page 19: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

19

37Software Engineering

The Spiral model

M.C Escher:Waterval

38Software Engineering

Seamless development (as in Eiffel)

Seamless development:Single notation, tools, concepts, principles throughout Eiffel is as much for analysis & design as implementation & maintenanceContinuous, incremental developmentKeep model, implementation and documentation consistent

Reversibility: go back and forthSaves money: invest in single set of toolsBoosts quality

Example classes:

PLANE, ACCOUNT, TRANSACTION…

STATE, COMMAND…

HASH_TABLE…

TEST_DRIVER…

TABLE…

Analysis

Design

Implemen-tation

V&V

Generali-zation

Page 20: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

20

39Software Engineering

Seamless development

Use consistent notation from analysis to design, implementation and maintenance.

Advantages: Smooth process. Avoids gaps (improves productivity, reliability).Direct mapping from problem to solution, i.e. from software system to external model. Better responsiveness to customer requests.Consistency, ease of communication. Better interaction between users, managers and developers.

40Software Engineering

Single model principle

Use a single base for everything: analysis, design, implementation, documentation...

Use tools to extract the appropriate views.

Page 21: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

21

41Software Engineering

Generalization

Prepare for reusePossible tasks:

Remove built-in limitsReorganize inheritance hierarchyAbstraction (e.g. introduce deferred classes)Improve documentation

42Software Engineering

The cluster model

A

D

I

V

G

Permits dynamic reconfiguration

A

D

I

V

G

A

D

I

V

G

A

D

I

V

G

A

D

I

V

G

A

D

I

V

G

Mix of sequential and concurrent engineering

Page 22: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

22

43Software Engineering

Cluster development

Bottom-up development: from the most general clusters (providing utility functions) to the most application-specific ones.

Flexible scheduling of clusters – depending on resources, team experience, customer and management demands. Waterfall is one extreme; “trickle” is the other.

Sub-lifecycle sequencing: specification, design and implementation, validation, generalization.

Relations between clusters: each cluster may be a client of lower-level ones.

44Software Engineering

Consequences of this discussion

Requirements is generally viewed as a step, but it rather is an activity, normally carried out at the beginning but possibly needing to be taken up again later

Requirements will change

The lifecycle model should support requirements and their continuous adaptation

Page 23: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

23

45Software Engineering

The requirements processSource: Pfleeger & Atlee 05

46Software Engineering

Requirements elicitation: who?

Users/customers?

Software developers?

Requirements engineers (analysts)?

Page 24: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

24

47Software Engineering

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?

48Software Engineering

Requirements elicitation: how?

ContractUser interviewsStudy of existing non-computer processesStudy of existing computer systemsStudy of comparable systems elsewhere

Page 25: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

25

49Software Engineering

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.

50Software Engineering

Stereotypes

How developers see usersDon't know what they wantCan't articulate what they wantHave too many needs that are politically motivatedWant everything right now. Can't prioritize needs Refuse to take responsibility for the systemUnable to provide a usable statement of needsNot committed to system development projectsUnwilling to compromise Can't remain on schedule

How users see developersDon'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 users' primary duties.Set unrealistic standards for requirements definition. Unable to respond quickly to legitimately changing needs.

Source: Scharer 90

Page 26: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

26

51Software Engineering

The two parts of requirements

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

Jackson’s view: define success asmachine 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)

52Software Engineering

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 27: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

27

53Software Engineering

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

54Software Engineering

How to ensure good requirements?

Managerial aspects:Involve all stakeholdersEstablish procedures for controlled changeEstablish mechanisms for traceabilityTreat 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 28: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

28

Software Engineering

Part 2:

Standards and Methods

56Software Engineering

The purpose of standards

Software engineering standards:

Define common practice.Guide new engineers.Make software engineering processes comparable.Enables certification.

Page 29: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

29

57Software Engineering

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.”

58Software Engineering

IEEE Standard 830-1998

Recommended practice for Software Requirements Specifications

Recommended document structure:1. Introduction1.1 Purpose1.2 Scope1.3 Definitions, acronyms, and abbreviations Glossary!1.4 References1.5 Overview2. Overall description2.1 Product perspective2.2 Product functions2.3 User characteristics2.4 Constraints2.5 Assumptions and dependencies3. Specific requirementsAppendixesIndex

Page 30: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

30

59Software Engineering

Your turn! Outline some sections

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.

60Software Engineering

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 31: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

31

61Software Engineering

IEEE 830-1998

Main contents of the standard

1. Considerations for producing a good SRS2. Parts of an SRS

Annex A includes informative SRS templates

62Software Engineering

Capability Maturity Model Integration/ CMMI

Process improvement approachVarious aspects: systems engineering, software engineering, integrated product & process development, supplier sourcingCan be measured using:

Maturity levels: staged (across process areas)Capability levels: continuous (within an area)

Capability levels:0. Incomplete1. Performed2. Managed3. Defined4. Quantitatively managed5. Optimizing

Source: SEI

Page 32: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

32

63Software Engineering

Level definitions

Capability Level 0: Incomplete• Process is either not or partially performed.• One or more specific goals not satisfiedCapability Level 1: Performed• All specific goals of the process area are satisfied• Essential activities performed, work accomplished• Process may be unstable and inconsistently carried outMaturity Level 1: Initial• Processes performed but often ad-hoc or chaotic• Performance dependent on competence & heroics• Performance difficult to predict.

Source: SEI

64Software Engineering

2: Managed

Performed process, plus:Planned and executed in accordance with policyEmploys skilled people having adequate resources to produce controlled outputsInvolves relevant stakeholdersMonitored, controlled, reviewed, evaluated foradherence to its process description.InstitutionalizedDiscipline helps ensure that existing practices are retained during times of stress.Status visible to management at defined points.

Page 33: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

33

65Software Engineering

3: Defined

Defined process, plus:Description tailored from organization’s set of standard processes according to tailoring guidelinesThis contributes work products, measures, and other process-improvement informationStandard processes improved over time

66Software Engineering

4: Quantitatively managed

Defined, plus:Controlled using statistical & other quantitative techniquesStatistical predictabilityProjects use measurable objectives to meet needs of customers, end-users & organizationManagers & engineers use the data in managing processes & results

Page 34: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

34

67Software Engineering

5: Optimizing

Quantitatively managed, plus:Changed to meet current and projected business objectivesFocus on continually improving range of process performance through incremental, innovative technological improvements.Process improvement is inherently part of everybody’s role, resulting in cycles of continual improvement.

68Software Engineering

ISO 9001:2000

Quality rules:1. Develop quality management system2. Implement quality management system3. Improve quality management system4. Develop, control and maintain quality documentsManagement rules:1. Promote & manage quality quality2. Satisfy customers (identify requirements…)3. Establish quality policy4. Carry out quality planning5. Control quality system

Page 35: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

35

69Software Engineering

On the other hand…

English or Metric - why Mars Climate Orbiter was lost!Lord Wodehouse <[email protected]>Fri, 01 Oct 1999

The following quoted from NASA's press release shows that for the second time a mix-up in units resulted in an experiment failure, but this time it was a spacecraft.“The peer review preliminary findings indicate that one team used English units (e.g., inches, feet and pounds) while the other used metric units for a key spacecraft operation. This information was critical to the maneuvers required to place the spacecraft in the proper Mars orbit. “

70Software Engineering

Rational Unified Process

Defines phases of the software process:InceptionElaborationConstructionTransition

Requirements are part of inception. Includes:Business case (business context, success factors)Financial forecastUse case model

Page 36: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

36

71Software Engineering

Use Cases

One of the UML diagram typesA use case describes how to achieve a single business goal or task through the interactions between external actors and the system

A good use case must:Describe a business taskNot be implementation-specificProvide appropriate level of detail Be short enough to implement by one developer in one release

72Software Engineering

Use case example

Place an order:Browse catalog & select items Call sales representative Supply shipping informationSupply payment informationReceive conformation number

from salesperson

May have precondition, postcondition, invariant

Page 37: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

37

73Software Engineering

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.

74Software Engineering

Our view

Use cases are a minor tool for requirement elicitation but not really a requirement technique. They cannot define the requirements:

Not abstract enoughToo specificDescribe current processesDo not support evolution

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

Major application: for testing

Page 38: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

38

75Software Engineering

Literate Programming

First version called “WEB” was developed by Donald E. Knuth for the TeX work processing system.

Key characteristics:Regards programming as the transformation of a document into code.Natural language text and code are unified into one document. Automatic tools are used to extract the codeand generate the program.During development, parts can be left unspecified.Opens the “Analyse, Design, Implement”-Triatlon

76Software Engineering

Literate Programming (cont.)

Page 39: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

39

77Software Engineering

Agile Methods

Example: Extreme ProgrammingCombination of various ideas:

Rejects full requirements analysisFrequent releases (cf. Microsoft, daily build)Recommends rapid prototyping

“Code as fast a possible”“User stories” captured on story cards“Planning game” to counter mistrust between customer & supplier“Pair programming”User stories are converted into test cases (“test-driven development”)Tight integration of customer into software process.

78Software Engineering

Agile Methods (cont.)

Page 40: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

40

79Software Engineering

Your turn! Start an agile approach to this system

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.

Software Engineering

Part 3:

Requirement Tools for Management

Page 41: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

41

81Software Engineering

Tools for Management

OverviewWhat is Requirements Management ?TasksTool supportPresentation of two tools:

Rational Requisite ProDOORS

Summary

82Software Engineering

What is Requirements Management ?

Page 42: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

42

83Software Engineering

What is Requirements Management ? (cont.)

84Software Engineering

Tasks of Requirements Management tool

1. Extract2. Capture3. Store4. Collaborate5. Version6. Identify7. Categorize8. Trace9. Merge10. Present

Page 43: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

43

85Software Engineering

Extract

Sources for requirements come in different formsWord DocumentsPDF DocumentsDiagramsPhotosE-MailsVideo, Audio, ...

Requirements have to be extracted from these documentsAny extracted requirement has to be linked to its sourceSometimes it is difficult to “link into the source”.

86Software Engineering

Videos as requirements ?

Page 44: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

44

87Software Engineering

Capture

Are requirements always plain text?“A picture can say more than a thousand words.”Technical applications are often specified with mathematical equations.Same problem as requirement sources: video, audio, photos, etc.

88Software Engineering

Store

More or less a database issue.For large and long-term projects, the database with requirements can become very large.Fast retrieval of data ?Query mechanisms or languages ?

Very Important: Define your own fields ...

Page 45: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

45

89Software Engineering

Collaborate

If there are many people working on the same requirement data:

How can they all access the data ?How is tracked “Who changes what ?”Collision detection

90Software Engineering

Version

Software Development is a process that happens over time.Requirements are a moving target.Documents are constantly changed.Certain versions of the documents form the basis for contractual agreements.

Page 46: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

46

91Software Engineering

Identify

Every requirement needs an identificationThis identification has to be unique and stable over timeand spaceThe identification should be human-readable:

Facilitates communication between developers and stakeholders

92Software Engineering

Categorize

Categorization is the basic approach to organize data.Standard techniques:

hierarchical structuretags (labels)numbering

Development of a good categorization structure is critical.Categorizations can be reused between projects.Categorization schemas depend on

the software development methodology.the problem domain.

Page 47: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

47

93Software Engineering

Trace

Requirements do not stand alone.

During the requirements process we identify:Requirements that complement other requirementsRequirements that contradict other requirementsRequirements that are derived from other requirements

A tools has toRecord connectionsPresent connectionsAllow a “What if?” analysis of a possible change.

94Software Engineering

Example of a trace

Customer: Access to the server should be available at any time.

Manager: The system has to have a 99.999% availability.

Hardware Maintainer: The software must run in a distributed environment with a seamless failover functionality and no single point of fail.

Page 48: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

48

95Software Engineering

Merge

Many sources for requirementsAt least one for every stakeholder

A single document should be produced.A tool can support this process:

Showing differences between documents.Identifying similarities between documents.

96Software Engineering

Present

The final requirements document has toform the contractual basis between client and supplier.be well sorted.readable.understandable.

The tools should be able to automatically generate a current version of the requirements document at any time.

Page 49: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

49

97Software Engineering

Requisite Pro

Developed by Rational (now owned by IBM)Integrated into Microsoft Wordhttp://www.ibm.com/software/awdtools/reqproCurrent Version: 2003.06.15.734.000Using MS Access as Database engine (but may be replaced)Focus on Document Management

Tool Demonstration

98Software Engineering

DOORS

Developed by TelelogicAvailable for Windows, Linux, Solaris and HP-UXhttp://www.telelogic.com/corp/products/doors/Current Version: 8.0Has its own database engine

Tool Demonstration

Page 50: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

50

99Software Engineering

our turn! Enter this into DOORS

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.

100Software Engineering

Tools: summary and discussion

There are numerous requirements management tools out there.They all have their strength and weaknesses.Evaluate the tools on the basis of the 10 criteriapresented in this talk.

List of requirements engineering tools can be found at http://easyweb.easynet.co.uk/~iany/other/vendors.htm

Page 51: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

51

Software Engineering

Part 4:

Object-OrientedRequirements Analysis

102Software Engineering

deferred classVAT

inherit

TANK

feature

in_valve, out_valve: VALVEfill is

-- Fill the vat.require

in_valve.openout_valve.closed

deferredensure

in_valve.closedout_valve.closedis_full

end

empty, is_full, is_empty, gauge, maximum, ... [Other features] ...

invariant

is_full = (gauge >= 0.97 * maximum) and (gauge <= 1.03 * maximum)

end

Analysis classes

Page 52: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

52

103Software Engineering

What is object-oriented analysis?

Classes around object types (not just physical objects but also important concepts of the application domain)Abstract Data Types approachDeferred classes and featuresInter-component relations: “client” and inheritanceDistinction between reference and expanded clientsInheritance — single, multiple and repeated for classification.Contracts to capture the semantics of systems: properties other than structural. Libraries of reusable classes

104Software Engineering

Why 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)

Page 53: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

53

105Software Engineering

What O-O requirements analysis is not

Use cases

(Never to be used as requirements statement mechanism)

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

106Software Engineering

Television station example

class SCHEDULE featuresegments: LIST [SEGMENT]

end

Source: OOSC

Page 54: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

54

107Software Engineering

Schedules

notedescription :

“ 24-hour TV schedules”deferred class SCHEDULE feature

segments: LIST [SEGMENT ]-- Successive segments

deferredend

air_time : DATE is-- 24-hour period-- for this schedule

deferredend

set_air_time (t: DATE)-- Assign schedule to-- be broadcast at time t.

requiret.in_future

deferredensure

air_time = tend

print-- Produce paper version.

deferredend

end

108Software Engineering

Contracts

Feature precondition: condition imposed on the rest of the world

Feature postcondition: condition guaranteed to the rest of the world

Class invariant: Consistency constraint maintained throughout on all instances of the class

Page 55: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

55

109Software Engineering

Obligations & benefits in a contract

Client

Supplier

(Satisfy precondition:)Bring package before 4 p.m.; pay fee.

(Satisfy postcondition:)Deliver package by 10 a.m. next day.

OBLIGATIONS

(From postcondition:)Get package delivered by 10 a.m. next day.

(From precondition:)Not required to do anything if package delivered after 4 p.m., or fee not paid.

BENEFITSdeliver

110Software Engineering

Why contracts

Specify semantics, but abstractly!

(Remember basic dilemma of requirements:Committing too early to an implementation

Overspecification!Missing parts of the problem

Underspecification!)

Page 56: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

56

111Software Engineering

Segment

notedescription :

"Individual fragments of a schedule "deferred class SEGMENT feature

schedule : SCHEDULE deferred end-- Schedule to which-- segment belongs

index: INTEGER deferred end-- Position of segment in-- its schedule

starting_time, ending_time :INTEGER is deferred end-- Beginning and end of-- scheduled air time

next: SEGMENT is deferred end-- Segment to be played-- next, if any

sponsor: COMPANY deferred end-- Segment’s principal sponsor

rating: INTEGER deferred end-- Segment’s rating (for-- children’s viewing etc.)

… Commands such as change_next,set_sponsor, set_rating omitted …

Minimum_duration: INTEGER = 30-- Minimum length of segments,-- in seconds

Maximum_interval: INTEGER = 2-- Maximum time between two-- successive segments, in seconds

112Software Engineering

Segment (continued)

invariant

in_list: (1 <= index) and (index <= schedule.segments.count)

in_schedule: schedule.segments.item (index) = Currentnext_in_list: (next /= Void ) implies

(schedule.segments.item (index + 1) = next)

no_next_iff_last: (next = Void) = (index = schedule.segments.count)non_negative_rating: rating >= 0positive_times: (starting_time > 0 ) and (ending_time > 0)sufficient_duration:

ending_time – starting_time >= Minimum_durationdecent_interval :

(next.starting_time) - ending_time <= Maximum_intervalend

Page 57: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

57

113Software Engineering

Commercial

notedescription: "Advertizing segment "

deferred class COMMERCIAL inheritSEGMENT

rename sponsor as advertizer endfeature

primary: PROGRAM deferred-- Program to which this-- commercial is attached

primary_index: INTEGER deferred-- Index of primary

set_primary (p: PROGRAM)-- Attach commercial to p.

requireprogram_exists: p /= Voidsame_schedule: p,schedule = schedulebefore:

p.starting_time <= starting_timedeferredensure

index_updated:primary_index = p.index

primary_updated: primary = pend

invariantmeaningful_primary_index: primary_index = primary.indexprimary_before: primary.starting_time <= starting_timeacceptable_sponsor: advertizer.compatible (primary.sponsor)acceptable_rating: rating <= primary.rating

end

114Software Engineering

Diagrams: UML, BON

Text-Graphics Equivalence

Page 58: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

58

115Software Engineering

O-O analysis process

Identify abstractionsNewReused

Describe abstractions through interfaces, with contractsLook for more specific cases: use inheritanceLook for more general cases: use inheritance, simplifyIterate on suppliers

At all stages keep structure simple and look for applicable contracts

116Software Engineering

Your turn! Describe this in an O-O way

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 59: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

59

Software Engineering

Part 5:

Formal Methodsfor Requirements

118Software Engineering

Overview

What are Formal Methods?Advantages and Disadvantages of Formal MethodsFormal Methods in the Requirement ProcessMathematical Formulas and Free TextTools for Formal MethodsThe B Method and Language

Analysis of a problem in BImplementation and prove of the model in “Click’n’Prove”

Summary

Page 60: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

60

119Software Engineering

What are Formal Methods

Formal = MathematicalMethods = Structured Approaches, Strategies

Using mathematics in a structured way to analyze and describe a problem.

120Software Engineering

Formal Methods in Industrial Use

Hardwareno major chip is developed without it

Softwaresoftware verification and model checkingDesign by ContractBlast, Atelier B, Boogie

DesignUML‘s OCL, BON, Z, state charts

Testingautomatic test generationparallel simulation

Page 61: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

61

121Software Engineering

Why don‘t we like Math?

“Very abstract.“

“Lots of Greek letters.“

“Difficult to learn and read.“

“Can communicate with a normal person.“

122Software Engineering

The real reasons

The real reason:

We know math from school.There, the experience with math has been frustrating (even if we were good at it).The only feedback we get on math is either right or wrongNo exploration, no “playing with math“.

Page 62: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

62

123Software Engineering

Useful Mathematics

The type of math required consists of

Set theoryFunctions and RelationsFirst-order predicate logicBefore-After predicates

124Software Engineering

Set theory

“All humans are male or female.“

Humans = Male ∪ Female

“Nobody is male and female at the same time.“

Male ∩ Female = ∅

Male Female

Page 63: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

63

125Software Engineering

Functions and Relations

“Every customer must have a personal attendant.“

attendant : Customers → Employees

“Every customer has a set of accounts.“

AccountsOf: Customers → P(Accounts)

126Software Engineering

First-order Predicate Logic

“Everybody who works on a Sunday needs to have a special permit.“

∀p∈Employee: workOnSunday(p) ⇒ hasPermit(p)

“Every customer must at least have one account.“

∀c∈Customers: ∃a∈Accounts: a∈AccountsOf(c)

Page 64: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

64

127Software Engineering

Before-After Predicates

“People can enter the building if they have their ID with them. When entering, they have to leave their ID card at the registration desk.“

EnterBuilding(p) =PRE

hasAuthorization(p)carriesPassport(p)

THENpeopleInBuilding‘ = peopleInBuilding ∪ { p }passportsAtDesk‘ = passportsAtDesk ∪ {passportOf(p)}not carriesPassport(p)

128Software Engineering

Advantages of Formal Methods

The advantages of using math for any analytical problem

Short notationForces you to be preciseIdentifies ambiguityClean form of communicationMakes you ask the right questions

Page 65: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

65

129Software Engineering

Short Notation

Compare

“For every ticket that is issued, there has to be a single person that is allowed to enter the concert. This person is called the owner of the ticket.“

with

TicketOwner: IssuedTickets → Person

130Software Engineering

Forced Precision

“On red traffic lights, people normally stop their cars.“

What does “normally“ mean? How should we build a system based on this statement? What are the consequences? What happens in the exceptional case?

Formalization Fails

Page 66: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

66

131Software Engineering

Identified Ambiguity

“When the temperature is too high, the ventilation has to be switched on or the maintenance staff has to be informed.“

May we do both?

temperature_is_high ⇒ (notify_staff or ventilation_on)

or

temperature_is_high ⇒ (notify_staff xor ventilation_on)

132Software Engineering

Clean Form of Communication

Every mathematical notation has a precise semantic definition.New constructs can be added defined in terms of old constructs.Math does not need language skills and can be easily understood in an international context.

Page 67: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

67

133Software Engineering

Asking the Right Questions

“Every customer has is either trusted or untrusted.“

∀ c ∈ customer: trusted(c) xor untrusted(c)

“Upon internet purchase, a person is automatically registered as a new customer.“

InternetPurchase (by) =customers‘ = customers ∪ {by}

Is the new customer trusted or untrusted ?!

134Software Engineering

A Short Remark

This is not programming:Programming describes a solution and not a problemProgramming is constructive

This is not design:We do not only describe the softwareWe describe the full system (software and environment)No separation between software and environmentWe do so in an incremental wayWe want to understand the system

Page 68: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

68

135Software Engineering

General Approach

Ideas Natural LanguageDocument

FormalDocument

136Software Engineering

Merging Formal Requirements

Page 69: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

69

137Software Engineering

No Natural Language?

Ideas FormalDocument

138Software Engineering

Graphical Notations

Once we have a formal documentwe can transform it back into a natural language document.we can also transform it into a graphical document.

There are many graphical notations out there.Be careful when choosing a graphical notation:

Does it have a well defined semantics ?Does it really make things clearer than the formal or natural description ?

Page 70: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

70

139Software Engineering

Graphical Notations (cont.)

Sets as ClassesSubsets as Subclasses

Human

Male Female

140Software Engineering

Graphical Notations (cont.)

Sets as ClassesSubsets as Subclasses

Page 71: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

71

141Software Engineering

Graphical Notations (cont.)

Functions

instead of f : A → B

fA B

142Software Engineering

Tiny Example Problem

“The software should control the temperature of the room. It can read the current temperature from a thermometer. Should the temperature fall below a lower limit, then the heater should be switched on to raise the temperature. Should it rise above an upper limit, then the cooling system should be switched on to lower the temperature.“[...]“Safety concern: the heater and the cooler should never be switched on at the same time.“

Page 72: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

72

143Software Engineering

Formal Specification

current_temperature : INTEGERlower_limit: INTEGERupper_limit: INTEGER

144Software Engineering

Formal Specification (cont.)

cooling_system : { on, off }heating_system : { on, off }

(cooling_system = on) ⇒ (heating_system = off)(heating_system = on) ⇒ (cooling_system = off)

Page 73: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

73

145Software Engineering

Formal Specification (cont.)

Switch on event

start_cooling =PRE

coolingSystem = off &currentTemperature < lowerLimit

THENcoolingSystem := on

END

146Software Engineering

Tools

CategoriesBeautifiers, EditorsSyntax CheckersType ChecksExercisersModel CheckersInteractive ProversAutomatic Provers

Complexity

Page 74: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

74

147Software Engineering

Languages for Formal Methods

How should we formalize the requirements?

The Z notation

Developed in the late 1970 at OxfordISO Standard since 2002 (ISO/IEC 13568:2002)Support of large user communityLarge number of tools available

148Software Engineering

Languages for Formal Methods (cont.)

The B Method

Simplified version of ZGoal: ProvabilityIntroduction of “Refinement“Industrial Strength proof toolsMethodological ApproachCan also be used for Design and Implementation

Page 75: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

75

149Software Engineering

Languages for Formal Methods (cont.)

Other Candidates

There are numerous languages out thereMost tools invent an own language(Nearly) all are based on the same mathematical conceptsBiggest difference: The US keyboard does not have Greek letters.

In the end, it is all just math

150Software Engineering

Pro B

Pro B is an exerciser (animator) and (limited) model-checker for the B language

Accepts B (without refinement)Developed by Michael Leusche, Southamptonhttp://www.ecs.soton.ac.uk/~mal/systems/prob.html

Page 76: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

76

151Software Engineering

ProB

Tool Demo

152Software Engineering

Alloy

Alloy is a full model-checker for model based on a relational logic

Own input language modeled close to object-oriented languagesDeveloped by Daniel Jackson, MIThttp://alloy.mit.edu/

Page 77: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

77

153Software Engineering

Atelier B and Click‘n‘Prove

Prover for the B Method

Supports the B Method, including refinement, analysis, design and code generationInteractive ProverDeveloped by Jean-Raymond Abrial and Dominique Cansell, LORIA, FranceNew version currently developed at the ETH as part of the EU Rodin project http://www.loria.fr/~cansell/cnp.html

154Software Engineering

Click‘n‘Prove

Tool Demo

Page 78: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

78

155Software Engineering

Summary

New approach for Requirements EngineeringPowerful tools are currently developed

ProsClear and precise notationMakes you understand you problemDiscovers contradictionsHelps you to merge requirementsMakes you ask the right questions

ConsNotation requires some skills to masterNot suitable for non-functional requirements

156Software Engineering

Abstract Data Types

A formal way of describing data structuresBenefits:

Modular, precise description of a wide range of problemsEnables proofsBasis for object technologyBasis for object-oriented requirements

Page 79: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

79

Software Architecture

157

Chair of Software Engineering

A stack, concrete object

count

representation

(array_up)

capacity

representation [count] := x“Push” x on stack representation:

count := count + 1

1

x

x

Software Architecture

158

Chair of Software Engineering

A stack, concrete object

count

representation

(array_up)

capacity

representation [count] := x

free

(array_down)

1representation

“Push” x on stack representation:

count := count + 1

representation [free] := x“Push” x on stack representation:

free := free - 1

1

x

x

x

Page 80: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

80

Software Architecture

159

Chair of Software Engineering

A stack, concrete object

count

representation

(array_up)

capacity

representation [count] := x

free

(array_down)

1representation

nnew

(linked)

item

item

previous

item

previousprevious

“Push” x on stack representation:

count := count + 1

representation [free] := x“Push” x on stack representation:

free := free - 1

“Push” operation:new (n)n.item := xn.previous := lasthead := n

1

x

Software Architecture

160

Chair of Software Engineering

Stack: An Abstract Data Type (ADT)

Types:STACK [G]

-- G: Formal generic parameter

Functions (Operations):put: STACK [G] × G → STACK [G] remove: STACK [G] → STACK [G] item: STACK [G] → Gempty: STACK [G] → BOOLEANnew: STACK [G]

Page 81: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

81

Software Architecture

161

Chair of Software Engineering

Using functions to model operations

put , =( )

s x s’

Software Architecture

162

Chair of Software Engineering

Reminder: Partial functions

A partial function, identified here by →, is a function that may not be defined for all possible arguments.

Example from elementary mathematics:

inverse: ℜ → ℜ, such that

inverse (x) = 1 / x

Page 82: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

82

Software Architecture

163

Chair of Software Engineering

The STACK ADT (continued)

Preconditions:remove (s: STACK [G]) require not empty (s) item (s: STACK [G]) require not empty (s)

Axioms: For all x: G, s: STACK [G]item (put (s, x)) = xremove (put (s, x)) = sempty (new)(or: empty (new) = True)

not empty (put (s, x)) (or: empty (put (s, x)) = False)

put ( , ) =

s x s’

Software Architecture

164

Chair of Software Engineering

Exercises

Adapt the preceding specification of stacks (LIFO, Last-In First-Out) to describe queues instead (FIFO).

Adapt the preceding specification of stacks to account for bounded stacks, of maximum size capacity.

Hint: put becomes a partial function.

Page 83: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

83

Software Architecture

165

Chair of Software Engineering

Formal stack expressions

value = item (remove (put (remove (put (put(remove (put (put (put (new, x8), x7), x6)), item(remove (put (put (new, x5), x4)))), x2)), x1)))

Software Architecture

166

Chair of Software Engineering

Expressed differently

s1 = new

s2 = put (put (put (s1, x8), x7), x6)

s3 = remove (s2)

s4 = new

s5 = put (put (s4, x5), x4)

s6 = remove (s5)

y1 = item (s6)

s7 = put (s3, y1)

s8 = put (s7, x2)

s9 = remove (s8)

s10 = put (s9, x1)

s11 = remove (s10)

value = item (s11)

value = item (remove (put (remove (put (put (remove (put (put (put (new, x8), x7), x6)), item (remove (put (put (new, x5), x4)))), x2)), x1)))

Page 84: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

84

Software Architecture

167

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 1

Software Architecture

168

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

Page 85: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

85

Software Architecture

169

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

Software Architecture

170

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

x6

Page 86: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

86

Software Architecture

171

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

x6

Software Architecture

172

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

Stack 2

Page 87: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

87

Software Architecture

173

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 2

x5

Stack 1

x8

x7

Software Architecture

174

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 2

x5

x4

Stack 1

x8

x7

Page 88: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

88

Software Architecture

175

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 2

x5

x4

Stack 1

x8

x7

Software Architecture

176

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new, x5), x4)

))

) , x2)

), x1)

))

Stack 2

x5

Stack 1

x8

x7

Page 89: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

89

Software Architecture

177

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new,x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

Stack 2

x5

x5

Software Architecture

178

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new,x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

x5

x2

Stack 2

Page 90: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

90

Software Architecture

179

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new,x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

x5

x2

Stack 2

Software Architecture

180

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new,x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

x5

x1

Stack 2

Page 91: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

91

Software Architecture

181

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new,x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

x5

x1

Stack 2

Software Architecture

182

Chair of Software Engineering

Expression reduction

value = item (remove (

put (remove (

put (put (

remove (put (put (put (new,

x8), x7), x6))

, item (remove (

put (put (new,x5), x4)

))

) , x2)

), x1)

))

Stack 1

x8

x7

x5

Stack 2

Page 92: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

92

Software Architecture

183

Chair of Software Engineering

Expressed differently

s1 = new

s2 = put (put (put (s1, x8), x7), x6)

s3 = remove (s2)

s4 = new

s5 = put (put (s4, x5), x4)

s6 = remove (s5)

y1 = item (s6)

s7 = put (s3, y1)

s8 = put (s7, x2)

s9 = remove (s8)

s10 = put (s9, x1)

s11 = remove (s10)

value = item (s11)

value = item (remove (put (remove (put (put (remove (put (put (put (new, x8), x7), x6)), item (remove (put (put (new, x5), x4)))), x2)), x1)))

Software Architecture

184

Chair of Software Engineering

An operational view of the expression

value = item (remove (put (remove (put (put (remove (put (put (put(new, x8), x7), x6)), item (remove (put (put (new, x5), x4)))), x2)), x1)))

x8

x7

x6

x8

x7

s2 s3(empty)

s1x5

x4

s5(empty)

s4x5

s6

y1

x8

x7

x5

s7 (s9, s11)x8

x7

x5

s8

x2

x8

x7

x5

s10

x1

Page 93: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

93

Software Architecture

185

Chair of Software Engineering

Sufficient completeness

Three forms of functions in the specification of an ADT T:

Creators:OTHER → T e.g. new

Queries:T ×... → OTHER e.g. item, empty

Commands:T ×... → T e.g. put, remove

Sufficiently complete specification: a “Query Expression” of the form:

f (...)

where f is a query, may be reduced through application of the axioms to a form not involving T

Software Architecture

186

Chair of Software Engineering

Stack: An Abstract Data Type

Types:STACK [G]

-- G: Formal generic parameter

Functions (Operations):put: STACK [G] × G → STACK [G] remove: STACK [G] → STACK [G] item: STACK [G] → Gempty: STACK [G] → BOOLEANnew: STACK [G]

Page 94: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

94

Software Architecture

187

Chair of Software Engineering

ADTs and software architecture

Abstract data types provide an ideal basis for modularizing software.

Build each module as an implementation of an ADT:Implements a set of objects with same interfaceInterface is defined by a set of operations (the ADT’s functions) constrained by abstract properties (its axioms and preconditions).

The module consists of:A representation for the ADTAn implementation for each of its operationsPossibly, auxiliary operations

Software Architecture

188

Chair of Software Engineering

Implementing an ADT

Three components:(E1) The ADT’s specification: functions,

axioms, preconditions. (Example: stacks.)

(E2) Some representation choice.(Example: <representation, count>.)

(E3) A set of subprograms (routines) and attributes, each implementing one of the functions of the ADT specification (E1) in terms of the chosen representation (E2).(Example: routines put, remove, item, empty, new.)

Page 95: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

95

Software Architecture

189

Chair of Software Engineering

A choice of stack representation

count

representation

(array_up)

capacity “Push” operation:count := count + 1

representation [count] := x

1

190Software Engineering

Requirements for real-time systems

Issues:Specifying time constraints in an enforceable wayObserved time vs real timeSpecifying safety, liveness and fairness propertiesSpecifying concurrent aspectsTesting the requirements

Models:Synchronous (ESTEREL, LUSTRE, Statecharts): system responds instantaneouslyReactive systems: Petri Nets, StatechartsAsynchronous: external events occur at times in dense domain (e.g. real numbers)Temporal logic

Page 96: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

96

191Software Engineering

Three kinds of real-time system properties

Safety: no undesiredsituation will arise

“No two lights will begreen at the same time”

Liveness: there will alwaysbe an applicable event

“Some light will turngreen”

Fairness: every applicable event will happen after finite time

“If there is at least one car waiting, the light will turn green”

192Software Engineering

Statecharts (UML)

Finite-state machine for describing behavior of reactive systems Events cause transitions between states. They can have:

ParametersGuardsActionsTime values

Kinds of events:SignalEvent: asynchronous, queuedCallEvent: synchronous, blocks senderChangeEvent: occurs when state value changesTimeEvent: associated with timeout

Page 97: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

97

193Software Engineering

Statechart exampleSource: B. Powel-Douglass

Software Architecture

194

Chair of Software Engineering

Temporal logic

Logic plus new operators

□ ff holds now and rest of execution◊ ff holds sometime from now on

ff holds at the next statef U gf holds until when and if g holds

Page 98: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

98

195Software Engineering

Measures for requirements

Measures of sizeNumber of clustersNumber of classesNumber of deferred features (function points)Average number of: precondition/postcondition clauses per feature, invariant clauses per class

Measures of complexityNumber of intra-cluster cyclic relationshipsNumber of inter-cluster cyclic relationshipsAverage number of parents/children per class

196Software Engineering

Measures for requirements

Measures of quality (a posteriori)Number of requirements-originating bugsProportion of requirements-originating bugsAverage time from bug to detectionDistribution of bugs per requirements module

Page 99: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

99

197Software Engineering

Key lessons

Requirements are softwareSubject to software engineering toolsSubject to standardsSubject to measurementPart 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 propertiesDomain requirements should never refer to machine requirements!

198Software Engineering

Key lessons

Identify & involve all stakeholdersRequirements determine not just development but testsUse cases are good for test planningRequirements should be abstractRequirements should be traceableObject technology helps

ModularizationClassificationsContractsSeamless transition to rest of lifecycle

Page 100: Software Requirements Engineering - ETH Zse.inf.ethz.ch/.../slides/requirements.pdf · Software Engineering Software Requirements Engineering Material for Software Engineering for

100

199Software Engineering

Key lessons

Formal methods have an important contribution to make:Culture to be mastered by requirements engineersNecessary for critical parts of applicationLead to ask the right questionsProofs & model checking uncover errors!Lead to better informal requirementsStudy abstract data typesNothing to be scared of!

200Software Engineering

Final version of material

http://se.inf.ethz.ch/~meyer/down/requirements2005