14 Initial development First stage in software lifespan

  • Slides: 30
Download presentation
14 Initial development • First stage in software lifespan • Makes the fundamental decisions

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. © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 1

Tasks of initial development Software plan Initial product backlog Initial design Implementation of the

Tasks of initial development Software plan Initial product backlog Initial design Implementation of the first version © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 2

Software plan • Important management tool • Overview of the entire software project before

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 3

Software Project Management Plan • Introduction – – – Project overview Project deliverables Evolution

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 4

SPMP cont… • Technical process – Methods, tools and techniques – Software documentation –

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, …) © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 5

Initial product backlog • There are no current product users • Future users usually

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 6

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

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 7

Prototyping • Quick implementation of the basic functionalities • Emphasis on the user interface

Prototyping • Quick implementation of the basic functionalities • Emphasis on the user interface • Demonstrates to the future users the lookand-feel • Users test this prototype and comment – these comments become the requirements of the initial backlog. © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 8

Scope of the initial backlog • Scope must be limited • It must cover

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 9

Project needs • Project risks • Address the most serious risks early on –

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 10

Avoid expensive rework • To postpone certain issues too far into evolution may mean

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 11

Limited size of initial development • After initial development, the programmers receive the first

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 12

Requirements creep • Initial development can become big • Example: London Ambulance System –

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 13

Initial design • Find classes • Assign responsibilities • Find dependencies © 2012 Václav

Initial design • Find classes • Assign responsibilities • Find dependencies © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 14

Find classes • Extract the set of concepts used in the initial backlog •

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 15

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

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 16

Find dependencies • Some of the responsibilities are too large – classes need a

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 17

CRC cards Class name: Inventory Responsibilities: Cooperations: Order more items Item © 2012 Václav

CRC cards Class name: Inventory Responsibilities: Cooperations: Order more items Item © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 18

Phone directory • The same initial backlog with the relevant concepts underlined is the

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". © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 19

Relevant and significant concepts © 2012 Václav Rajlich Software Engineering: The Current Practice Ch.

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

CRC Cards Class name: Directory Class name: User. Interface Responsibilities: search Responsibilities: list add.

CRC Cards Class name: Directory Class name: User. Interface Responsibilities: search Responsibilities: list add. Record delete. Record Cooperation Record Name Cooperations: Directory Record Name main Class name: Record Class name: Name Responsibilities: phone. Number return. Phone Responsibilities: enter. Name terminate put. Record © 2012 Václav Rajlich Cooperations: Name Cooperations: name. String compare Software Engineering: The Current Practice Ch. 14 21

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

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

Implementation • Writing code and testing it • Bottom-up implementation • Guided by the

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 23

Dependency graph Sequence: Name, Record, List, User. Interface © 2012 Václav Rajlich Software Engineering:

Dependency graph Sequence: Name, Record, List, User. Interface © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 24

Cycles in dependency graph © 2012 Václav Rajlich Software Engineering: The Current Practice Ch.

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

Skeletons of the code • Design in UML class diagram – substantial overlap between

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. © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 26

Team organization • Tasks of initial development have a very dissimilar character – different

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 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 27

Implementation • Done iteratively – modified SIP, AIP, DIP, and CIP – Backlog consists

Implementation • Done iteratively – modified SIP, AIP, DIP, and CIP – Backlog consists of classes to be implemented © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 28

Transition to evolution • Evolution fills in the missing requirements • Reacts to the

Transition to evolution • Evolution fills in the missing requirements • Reacts to the volatility that accumulated during the initial development • Updated product backlog © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 29

Empty backlog after initial development • Software is small, short-lived, or unusually stable domain

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 closedown. © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14 30