introduction to software engineering lecture 5 andré van der hoek

32
Introduction to Software Engineering Lecture 5 André van der Hoek

Upload: oscar-mcdaniel

Post on 17-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Software Engineering Lecture 5 André van der Hoek

Introduction to Software Engineering

Lecture 5

André van der Hoek

Page 2: Introduction to Software Engineering Lecture 5 André van der Hoek

Today’s Lecture

Requirements engineering

Requirements specification

Page 3: Introduction to Software Engineering Lecture 5 André van der Hoek

Recurring, Fundamental Principles

Rigor and formality Separation of concerns

Modularity Abstraction

Anticipation of change Generality Incrementality

These principles apply to all aspects of software engineering

Page 4: Introduction to Software Engineering Lecture 5 André van der Hoek

ICS 52 Life CycleRequirements

phaseVerify

DesignphaseVerify

ImplementationphaseTest

TestingphaseVerify

Page 5: Introduction to Software Engineering Lecture 5 André van der Hoek

Requirements Phase

Terminology Requirements analysis/engineering

Activity of unearthing a customer’s needs Requirements specification

Document describing a customer’s needs

Note: requirements address what a customer needs, not what a customer wants A customer often does not know what they

want, let alone what they need Time-lag between initial desire and future

need Long and arduous, often educational,

process

Page 6: Introduction to Software Engineering Lecture 5 André van der Hoek

Requirements Analysis

System engineering versus software engineering What role does software play within the full

solution? Trend: software is everywhere

Contract model versus participatory design Contract: carefully specify requirements,

then contract out the development Participatory: customers, users, and

software development staff work together throughout the life cycle

Page 7: Introduction to Software Engineering Lecture 5 André van der Hoek

Techniques for Requirements Analysis

Interview customer Create use cases/scenarios Prototype solutions Observe customer Identify important

objects/roles/functions Perform research Construct glossaries Question yourself

Use the principles

Page 8: Introduction to Software Engineering Lecture 5 André van der Hoek

Requirements Specification

Serves as the fundamental reference point between customer and software producer

Defines capabilities to be provided without saying how they should be provided

Defines the “what” Does not define the “how”

Defines environmental requirements on the software to guide the implementers

Platforms, implementation language(s), … Defines constraints on the software

Performance, usability, … Defines software qualities

Page 9: Introduction to Software Engineering Lecture 5 André van der Hoek

Why Spend a Lot of Time?

A requirements specification is the source for all future steps in the software life cycle Lays the basis for a mutual understanding

Consumer (what they get) Software producer (what they build)

Identifies fundamental assumptions Potential basis for future contracts

Better get it right Upon delivery, some software is actually

rejected by customers Changes are cheap

Better make them now rather than later

Page 10: Introduction to Software Engineering Lecture 5 André van der Hoek

Use the requirements todevelop validation tests forthe system

Use the requirementsdocument to plan a bid forthe system and to plan thesystem development process

Use the requirements tounderstand what system is tobe developed

System testengineers

Managers

System engineers

Specify the requirements andread them to check that theymeet their needs. Theyspecify changes to therequirements

System customers

Use the requirements to helpunderstand the system andthe relationships between itsparts

Systemmaintenance

engineers

Users of a Requirements Document

Page 11: Introduction to Software Engineering Lecture 5 André van der Hoek

Non-Functional Requirement Types

Performancerequirements

Spacerequirements

Usabilityrequirements

Efficiencyrequirements

Reliabilityrequirements

Portabilityrequirements

Interoperabilityrequirements

Ethicalrequirements

Legislativerequirements

Implementationrequirements

Standardsrequirements

Deliveryrequirements

Safetyrequirements

Privacyrequirements

Productrequirements

Organizationalrequirements

Externalrequirements

Non-functionalrequirements

Page 12: Introduction to Software Engineering Lecture 5 André van der Hoek

Structure

Introduction Executive summary Application context Functional requirements Environmental requirements Software qualities Other requirements Time schedule Potential risks Future changes Glossary Reference documents

Page 13: Introduction to Software Engineering Lecture 5 André van der Hoek

Introduction

What is this document about? Who was it created for? Who created it? Outline

Page 14: Introduction to Software Engineering Lecture 5 André van der Hoek

Executive Summary

Short, succinct, concise, to-the-point, description Usually no more than one page

Identifies main goals Identifies key features Identifies key risks/obstacles

Page 15: Introduction to Software Engineering Lecture 5 André van der Hoek

Application Context

Describes the situation in which the software will be used How will the situation change as a result of

introducing the software? “World Model”

Identifies all things that the system affects Objects, processes, other software,

hardware, and people Provides an abstraction for each of those,

characterizing the properties and behaviors that are relevant to the software system

Identifies fundamental assumptions

Page 16: Introduction to Software Engineering Lecture 5 André van der Hoek

Functional Requirements

Identifies all concepts, functions, features, and information that the system provides to its users

Provides an abstraction for each of those, characterizing the properties and functions that are relevant to the user What is the system supposed to do? What information does the system need? What is supposed to happen when

something goes wrong?

An approximate user interface is part of functional requirements

Page 17: Introduction to Software Engineering Lecture 5 André van der Hoek

Environmental Requirements

Platforms Hardware

Operating systems, types of machines, memory size, hard disk space

Software CORBA, Jini, DCOM, 4GL, …

Programming language(s) Standards

Page 18: Introduction to Software Engineering Lecture 5 André van der Hoek

Software Qualities

Correctness Reliability Efficiency Integrity Usability Maintainability

Testability Flexibility Portability Reusability Interoperability

Page 19: Introduction to Software Engineering Lecture 5 André van der Hoek

Other Requirements

What about cost? What about documentation? What about manuals? What about tutorials? What about on-the-job training? What about requirements that do not fit

in any of the previous categories?

Page 20: Introduction to Software Engineering Lecture 5 André van der Hoek

Time Schedule

By when should all of this be done? Initial delivery date Acceptance period Final delivery date

What are some important milestones to be reached? Architectural design completed Module design completed Implementation completed Testing completed

Page 21: Introduction to Software Engineering Lecture 5 André van der Hoek

Potential Risks

Any project faces risks Boehm’s top ten risks (see lecture 3) It is important to identify those risks up-

front so the customer and you (!) are aware of them

One of the requirements could be to explicitly address the risks

Page 22: Introduction to Software Engineering Lecture 5 André van der Hoek

Future Changes

Any project faces changes over time It is important to identify those changes up-

front so the customer and you (!) are aware of them

These changes could simply pertain to potential future enhancements to the product

One of the requirements could be to build the product such that it can accommodate future changes

Note: structure the requirements document in such a way that it easily absorbs changes Define concepts once Partition separate concerns …

Page 23: Introduction to Software Engineering Lecture 5 André van der Hoek

Glossary

Precise definitions of terms used throughout the requirements document

Page 24: Introduction to Software Engineering Lecture 5 André van der Hoek

Reference Documents

Pointers to existing processes and tools used within an organization

Pointers to other, existing software that provides similar functionality

Pointers to literature

Page 25: Introduction to Software Engineering Lecture 5 André van der Hoek

Structure

Introduction Executive summary Application context Functional requirements Environmental requirements Software qualities Other requirements Time schedule Potential risks Future changes Glossary Reference documents

Page 26: Introduction to Software Engineering Lecture 5 André van der Hoek

Observations

Document is structured to address the fundamental principles Rigor Separation of concerns

Modularity Abstraction

Anticipation of change Generality Incrementality

Not every project requires every section of the document

Page 27: Introduction to Software Engineering Lecture 5 André van der Hoek

Specification Methods

Natural language Data flow diagrams

Office automation Finite state machines

Telephone systems Coin-operated machines

Petri nets Production plants

Formulas Matrix inversion package

Objects (in object-oriented methods) Use cases (in UML)

Page 28: Introduction to Software Engineering Lecture 5 André van der Hoek

Verification

Is the requirements specification complete?

Is each of the requirements understandable?

Is each of the requirements unambiguous?

Are any of the requirements in conflict? Can each of the requirements be

verified? Are are all terms and concepts defined? Is the requirements specification

unbiased?

Page 29: Introduction to Software Engineering Lecture 5 André van der Hoek

Acceptance Test Plan

Accompanies a requirements specification

Specifies, in an operational way, consistency between the requirements specification and the system that will be delivered

Binds a customer to accept the delivered system if it passes all the tests

Covers all aspects of the requirements specification

Page 30: Introduction to Software Engineering Lecture 5 André van der Hoek

V-Model of Development and Testing

Develop Acceptance TestsAcceptance Test Review

Requirements ReviewDevelop Requirements Execute System Tests

Develop Integration TestsIntegration Tests Review

Design ReviewDesign Execute Integration Tests

Develop Unit TestsUnit Tests Review

Code ReviewCode Execute Unit Tests

Page 31: Introduction to Software Engineering Lecture 5 André van der Hoek

Example

French fries and mayonnaise place

Page 32: Introduction to Software Engineering Lecture 5 André van der Hoek

Your Tasks

1. Read and study slides of this lecture

2. Read Chapter 9 of van Vliet

3. Note: discussion starts Friday