© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development...

30
© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 1 14 Initial development • First stage in software lifespan • Makes the fundamental decisions • Consequences of these decisions will be reflected in the software throughout its life span.

Transcript of © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development...

Page 1: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 1

14 Initial development

• First stage in software lifespan

• Makes the fundamental decisions

• Consequences of these decisions will be reflected in the software throughout its life span.

Page 2: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 2

Tasks of initial development

Software plan

Initial product backlog

Initial design

Implementation of the first version

Page 3: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 3

Software plan

• Important management tool

• Overview of the entire software project before the start

• Serves managers to decide whether to start the project

• Estimates of the size of the project is an important component

Page 4: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 4

Software Project Management Plan• Introduction

– Project overview– Project deliverables– Evolution of SPMP– Reference materials– Definitions and acronyms

• Project organization– Process model– Organizational structure– Organizational boundaries and interfaces– Project responsibilities

• Managerial process– Management objectives and priorities– Assumptions, dependencies and constraints– Risk management– Monitoring and controlling mechanisms– Staffing plan

Page 5: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 5

SPMP cont…• Technical process

– Methods, tools and techniques– Software documentation– Project support functions

• Work packages, schedule and budget– Work packages– Dependencies– Resources requirements– Budget and resource allocation– Schedule

• Additional components– (subcontractor management plans, security plans, training plans, …)

Page 6: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 6

Initial product backlog

• There are no current product users

• Future users usually consider the project too far in the future

• Participation of the users at this stage is lukewarm

Page 7: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 7

Requirements elicitation

• Identify the stakeholders– future users, current or future project staff,

current or future project managers, veterans from similar past projects, experts on the project domain

• Specialized techniques and methods– questionnaires, interviews, surveys, focus

groups

Page 8: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 8

Prototyping

• Quick implementation of the basic functionalities

• Emphasis on the user interface

• Demonstrates to the future users the look-and-feel

• Users test this prototype and comment – these comments become the requirements of

the initial backlog.

Page 9: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 9

Scope of the initial backlog

• Scope must be limited

• It must cover the first important decisions – conflicting considerations affect the selection

of the requirements for the initial backlog.– user needs

• requirements that are most central to the future users get the highest priority

– project needs

Page 10: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 10

Project needs

• Project risks

• Address the most serious risks early on– untried algorithm is to be used– the collaboration with outside software…

• Address the most risky aspects of the project in the initial development

• there is still a time to resolve them• in extreme case to abandon the project before too

many resources are wasted

Page 11: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 11

Avoid expensive rework

• To postpone certain issues too far into evolution may mean that the evolution will require substantial rework– introduction of a project database too late in

the project – transactions to be conducted with other

already existing software, and so forth

Page 12: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 12

Limited size of initial development

• After initial development, the programmers receive the first feedback from the other stakeholders– it should not be postponed too long– the longer this feedback is postponed, the

larger the resulting rework may be

• The user and project needs increase the initial backlog– compromise must be found

Page 13: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 13

Requirements creep

• Initial development can become big

• Example: London Ambulance System– ambicious– untried solutions that backfired

• assignment of the nearest free ambulance to the call

• Initial development should deal with basics– remaining features should be postponed into

evolution

Page 14: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 14

Initial design

• Find classes

• Assign responsibilities

• Find dependencies

Page 15: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 15

Find classes

• Extract the set of concepts used in the initial backlog

• Delete insignificant concepts– intended for the communication with the

programmers– lie outside of the scope of the program

• Significant concepts become classes

• Trivial concepts become class members

Page 16: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 16

Class responsibilities

• Each trivial concept is assigned to the most closely related class

• List of actions that are to be performed– extracted from the initial backlog

• “order new items if supply runs low”• extracted assigned as a responsibility to a class

Page 17: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 17

Find dependencies

• Some of the responsibilities are too large– classes need a help– contract with other classes– the other classes assume new responsibilities

• that establishes dependencies among the classes

• Level of the detail in the design document– detailed description of contracts– just an associations among the classes

Page 18: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 18

CRC cards

Class name: Inventory

Responsibilities:

Order more items

Cooperations:

Item

Page 19: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 19

Phone directory

• The same initial backlog with the relevant concepts underlined is the following: A person's telephone number is found by searching a directory, which contains records of several persons. The user enters names and the program returns the respective phone numbers. The session is terminated by entering string "xxx".

Page 20: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 20

Relevant and significant concepts

Concept name in backlog Concept name in code

A person's telephone number phoneNumber

Searching search

directory Directory

record Record

user UserInterface

enters enterName

name Name

return the phone numbers returnPhone

terminated by entering string "xxx" terminate

Page 21: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 21

CRC CardsClass name: Directory

Responsibilities:search

listaddRecorddeleteRecord

CooperationRecordName

Class name: UserInterface

Responsibilities:

main

Cooperations:DirectoryRecordName

Class name: Record

Responsibilities:phoneNumberreturnPhone

putRecord

Cooperations:Name

Class name: Name

Responsibilities:enterNameterminate

nameStringcompare

Cooperations:

Page 22: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 22

UML Class diagram

+main()

UserInterface

+enterName()+terminate()+compare()

-name

Name

+deleteRecord()+addRecord()+search()

-list

List

+returnPhone()+putRecord()

-phoneNumber

Record

Page 23: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 23

Implementation

• Writing code and testing it

• Bottom-up implementation

• Guided by the dependency graph.– first implement the classes that do not have

any suppliers– then implement their clients, the clients of the

clients, and so forth

• Verification by the test drivers

Page 24: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 24

Dependency graph

Sequence:

Name, Record,

List, UserInterface

UserInterface

List

Record

Name

Page 25: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 25

Cycles in dependency graphA

B

C

D

A

B

C

D

StubB

D

CA

B

StubC

Page 26: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 26

Skeletons of the code• Design in UML class diagram

– substantial overlap between the information in the design documents and the code

• class names, class members, their arguments, etc.• can be directly copied into the code

• Tools that generate code skeletons• skeletons contain blanks that need to be filled in• skeletons save the programmers’ work.

Page 27: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 27

Team organization

• Tasks of initial development have a very dissimilar character – different skills are required

• Different teams with different qualifications may participate in these different tasks

• Or the same team uses the help of different specialists

• Opportunity to recruit people into the team

Page 28: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 28

Implementation

• Done iteratively – modified SIP, AIP, DIP, and CIP – Backlog consists of classes to be

implemented

Page 29: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 29

Transition to evolution

• Evolution fills in the missing requirements

• Reacts to the volatility that accumulated during the initial development

• Updated product backlog

Page 30: © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 141 14 Initial development First stage in software lifespan Makes the fundamental.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 30

Empty backlog after initial development

• Software is small, short-lived, or unusually stable domain– washing machine control program

• Waterfall model – there will be no evolution– next stage is servicing, phase-out, or close-

down.