• Ingen resultater fundet

Software Engineering I (02161)

N/A
N/A
Info
Hent
Protected

Academic year: 2022

Del "Software Engineering I (02161)"

Copied!
31
0
0

Indlæser.... (se fuldtekst nu)

Hele teksten

(1)

Software Engineering I (02161)

Week 2

Assoc. Prof. Hubert Baumeister

Informatics and Mathematical Modelling Technical University of Denmark

Spring 2011

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 49 / 92

(2)

Recap

Recap

Software Engineering is an engineering discipline focusing on theories, methods, and tools for the production of (large) software Basic activities in software engineering (each with their own set of theories, methods, and tools):

Understand and document what kind of the software the customer wants

Determine how the software is to be built Build the software

Validate that the software solves the customers problem

Software development process: Organise the production of the software

Waterfall

Rational Unified Process (iterative process) eXtreme Programming (agile process) Lean software development (agile process)

Exercise: Library application: Set of tests to be implemented

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 51 / 92

(3)

What are software requirements?

Requirements Engineering

Requirements Analysis

Understand and document the kind of software the customer wants Describe mainly the external behaviour of the system and not how it is realised

But: Sometime the costumer defines realisation constraints: E.g.

the application should be a Web application, . . . Steps

1) Discover and understand the requirements 2) Document the requirements

3) Validate the requirements

→ iterative

Techniques for discovering, understanding, and documentation Use Cases

Detailed Use Cases Use Case Diagram Glossary

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 53 / 92

(4)

What are software requirements?

Travel Agency Example

The travel agency TravelGood comes to you as software developers with the following proposal for a software project:

Problem description or user requirements

TravelGood wants to offer a trip-planning and booking application to its customers. The application should allow the customer to plan trips consisting of flights and hotels. First the customer should be able to assemble the trip, before he then books all the flights and hotels in on step. The user should be able to plan several trips. Furthermore it should be possible to cancel already booked trips.

What do you do?

What are the system requirements?

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 54 / 92

(5)

What are software requirements?

Usage of the term ”requirement”

1. User Requirements

Used to describe the requirements in informal language and in broad terms.

Intended, e.g., to solicit bids from software companies 2. System Requirements

More precise than user requirements

Used in the contract phase to define how the system should work

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 55 / 92

(6)

What are software requirements?

Requirements: Issues

Problem descriptions can be very vague

→ it is important to discuss with the customer what his/her requirements are

→ Process called: Requirements elicitation Requirements can change

e.g. after the customer has seen a first version of the software the business situation has changed (cf. finance crises)

Requirements need to be documented

Customer and software developer agree on what the system should be doing)

Several ways: user stories and acceptance tests or use cases (use case diagram, detailed use case)

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 56 / 92

(7)

What are software requirements?

Types of Requirements

Functional Requirements

Describe the users expectation which functionalities the system should have; i.e. what the system should do E.g.

the user should be able to plan and book a trip Non-functional Requirements

Everything which the user requires from the system, but which is not functionality: E.g.

Where should the software run (e.g. operating system, software environment, . . . )

What kind of UI the user prefers (e.g. stand alone application, Web application, command line interface, graphical interface, . . . )

Travel Agency Example of non-functional requirements

System should be a Web application accessible from all operating systems and most of the Web browsers

It must be possible to deploy the Web application in a standard Java application servers like GlassFish or Tomcat

The system should be easy to handle (it has to a pass a usability test)

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 57 / 92

(8)

What are software requirements?

Categories of non-functional requirements

Ian Sommerville, Software Engineering - 9

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 58 / 92

(9)

What are software requirements?

Non-functional requirements need to be measurable

The system should be easy to use by medical staff and should be organised in such a way that user errors are minimised

Can’t be measured; when does the system satisfy the requirement?

Better: Medical staff shall be able to use all the system functions after four hours of training. After this training, the average number of errors made by experienced users shall not exceed two per hour of system use.

Ian Sommerville, Software Engineering - 9 c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 59 / 92

(10)

Requirements engineering process

Requirements engineering process

A spiral view of the requirements engineering process

Ian Sommerville, Software Engineering - 9 c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 61 / 92

(11)

Requirements engineering process Requirements elicitation

Requirements elicitation and analysis

How to discover the requirements?

Several techniques Interviews Use cases

Scenarios → User stories in XP . . .

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 63 / 92

(12)

Requirements engineering process Requirements elicitation

Travel Agency functional requirements: Overview use case diagram

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 64 / 92

(13)

Requirements engineering process Requirements elicitation

Use Case

Use Case (Wikipedia)

A use case in software engineering and systems engineering is a description of a system’s behaviour as it responds to a request that originates from outside of that system.

In other words, a use case describes who can do what with the system in question.

Use Case Diagram

A use case diagram provides and overview over the use cases of a system and who is using the functionality.

Detailed Use Case description

A detailed use case description describes the interaction between the user and the system as a set of scenarios

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 65 / 92

(14)

Requirements engineering process Requirements elicitation

Travel Agency functional requirements: Detailed use case diagram manage trip

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 66 / 92

(15)

Requirements engineering process Requirements elicitation

Travel Agency functional requirements: Detailed use case diagram plan trip

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 67 / 92

(16)

Requirements engineering process Requirements elicitation

Travel Agency functional requirements: Detailed use case diagram manage flights

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 68 / 92

(17)

Requirements engineering process Requirements elicitation

Travel Agency functional requirements: Detailed use case diagram manage hotels

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 69 / 92

(18)

Requirements engineering process Requirements elicitation

Detailed use cases: Template

Template to be used for detailed use case descriptions name: The name of the use case

description: A short description of the use case actor: One or more actors who interact with the system

precondition: Possible assumptions on the system state to enable the use case main scenario: A description of the main interaction between user and system

→ Note: should only explain what the system does from the user’s perspective

alternative scenarios:

note: Used for everything that does not fit in the above categories Note: One can find many different types of templates in the literature

However, all have in common to state the main scenario and the alternative scenarios

”A use case is a set of scenarios tied together by a common user goal” (From Martin Fowler, UML Destilled)

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 70 / 92

(19)

Requirements engineering process Requirements elicitation

Travel Agency: detailed use case list available flights

name: list available flights

description: the user checks for available flights actor: user

main scenario:

1. The user provides information about the city to travel to and the arrival and departure dates

2. The system provides a list of available flights with prices and booking number

alternative scenario:

1a. The input data is not correct (see below)

2. The system notifies the user of that fact and terminates and starts the use case from the beginning

2a. There are no flights matching the users data 3. The use case starts from the beginning

note: The input data is correct, if the city exists (e.g. is correctly spelled), the arrival date and the departure date are both dates, the arrival date is before the departure date, arrival date is 2 days in the future, and the departure date is not more then one year in the future

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 71 / 92

(20)

Requirements engineering process Requirements elicitation

Travel Agency: detailed use case cancel trip

name: cancel trip

description: cancels a trip that was booked actor: user

precondition:

the trip must have been booked

the first date for a hotel or flight booking must be one day in the future

main scenario:

1. user selects trip for cancellation

2. the system shows how much it will cost to cancel the trip 3. selected trip will be cancelled after a confirmation

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 72 / 92

(21)

Requirements engineering process Requirements elicitation

Travel Agency: detailed use case plan trip

name: plan trip

description: The user plans a trip consisting of hotels and flights actor: user

main scenario:

repeat any of the following operations in any oder until finished 1. list available flights (use case)

2. add flight to trip (use case) 3. list available hotels (use case) 4. add hotel to trip (use case) 5. list trip (use case)

6. delete hotel from trip (use case) 7. delete flight from tip (use case)

Note: the trip being planned is referred to as the current trip

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 73 / 92

(22)

Requirements engineering process Requirements elicitation

Travel Agency: detailed use case save trip

name: save trip

description: provides the current trip with a name and saves it for later retrieval

actor: user

precondition: the current trip is not empty main scenario:

1. user provides a name for the trip alternative scenarios:

1: the name is not valid

2: notify the user of the fact and end the use case 1: a trip with the name already exists

2: ask the user if the trip should overwrite the stored trip 3a: If yes, overwrite the stored trip

3b: If no, end the use case

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 74 / 92

(23)

Requirements engineering process Requirements elicitation

User stories from eXtreme Programming

A user story describes a scenario of interaction with the system relevant for the user of the system

Can be, e.g., a main scenario of a use case; but also one of the alternative or exceptional scenarios

e.g. borrow book scenario

focus on: books (not general media), number of books borrowed (no overdue books), e.t.c.

On contrast: a use case for borrow books need to describe all these aspects

Can define also non-functional requirements

Are documented informally as index cards and formally using acceptance tests

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 75 / 92

(24)

Requirements engineering process Requirements elicitation

Example of a User story index card

Kent Beck, Extreme Programming, 1st ed.

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 76 / 92

(25)

Requirements engineering process Requirements elicitation

User stories and requirements engineering

Important: Requirements engineering is done in parallel with the development of the system

User story index cards are created by the customer and discussed with the developer

User story index cards are assigned to iterations based on importance to the customer

Only within each iteration the user stories are refined and tests are implemented

Two level approach

1) Make coarse user stories for planning

2) Detail user stories when they are about to be implemented

→ Compare with waterfall: Already in the requirements phase make all the requirements as precise and detailed as possible

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 77 / 92

(26)

Requirements engineering process Software requirements document

Contents of the software requirements document

Generic document structure (IEEE standard) Preface

Introduction Glossary

User requirements definition System architecture

System requirements specification

e.g. Use Case Diagram and detailed use cases System models

(System evolution) Appendices Index

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 79 / 92

(27)

Requirements engineering process Software requirements document

Users of the software requirements document

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 80 / 92

(28)

Requirements engineering process Software requirements document

Glossary

Purpose: capture the customer’s knowledge of the domain so that the system builders have the same knowledge

Helps customer and system builders to speak the same language

→ Necessary to define the terminology used

→ Glossary

glossary (plural glossaries)

”1. (lexicography) A list of terms in a particular domain of knowledge with the definitions for those terms.” (Wikitionary)

List of terms with explanations

Terms can be nouns (e.g. those mentioned in a problem description) but also verbs or adjectives e.t.c.

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 81 / 92

(29)

Requirements engineering process Software requirements document

Example

Part of a glossary for the travel agency

User: The person who is using the travel agency

Trip: A trip is a collection of hotel and flight informations. A trip can be booked and, if booked, cancelled.

Booking a trip: A trip is booked by making a hotel reservation for the hotels on the trip and a flight booking for the flights of the trip

Flight booking: The flight reservation is booked with the flight agency and is payed.

Reserving a hotel: A hotel is reserved if the hotel informed that a guest will be arriving for a certain amount of time. It is possible that the hotel reservation requires a credit card guarantee.

. . . Warning

Capture only knowledge relevant for the application Don’t try to capture all possible knowledge

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 82 / 92

(30)

Requirements engineering process Requirements validation

Requirements validation

Checks

Validity checks

Does the system fit the needs of the user?

Consistency checks

Are the requirements consistent with each other?

Completeness checks Are they complete?

Realism checks

Can they be realised?

Verifiability

Can one decide if the system fulfils a requirement or not?

Validation techniques Requirements reviews Prototyping

Test-case generation

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 84 / 92

(31)

Summary

Summary

Requirements analysis is about finding out what the software should be able to do

Two types of requirements functional and non-functional requirements

Process: Discover, Document, Validate Use cases

Used for both finding and documenting the requirements What are the functions the user can perform with the software?

Detailed use cases: Detailed (textual) description of what the software should do

Use case diagram: Graphical overview over the functionality of the software

User Stories (used in XP)

Focus on interaction scenarios relevant for the user; tell a ”story”

about the system

Glossary: Document domain knowledge and define a common language between customer and software developer

c

°2011 H. Baumeister (IMM) Software Engineering I (02161) Spring 2011 86 / 92

Referencer

RELATEREDE DOKUMENTER

public void borrowBook(Book book) throws TooManyBooksException { if (book == null) return;. if (borrowedBooks.size() >= 10) { throw

Scenario: User borrows book but has already more than 10 books Given the user has borrowed 10 books. And a user is registered with the library And a book is in

Software Development Process (cont.) From Requirements to Design: CRC Cards Version control... Resource

I new velocity: story points of finished user stories per iteration. → What can be done in the

Scenario: Buy a fruit with enough money Given the vending machine has fruits. When the user enters enough money for a fruit And the user selects

Travel Agency functional requirements: System use cases Part I: manage trip.. Travel Agency functional requirements: System use cases Part II:

Recommended (but not mandatory) Design process 1 Create glossary, use cases, and domain model 2 Create user stories based on use case scenarios. 3 Create a set of initial classes

Software Testing (JUnit, Test Driven Development, Systematic Tests, Code Coverage). System Modelling (mainly based on