The Software Life Cycle Elaboration Production Software - - PowerPoint PPT Presentation

the software life cycle
SMART_READER_LITE
LIVE PREVIEW

The Software Life Cycle Elaboration Production Software - - PowerPoint PPT Presentation

Inception Software Communication Planning Increment The Software Life Cycle Elaboration Production Software Engineering Deployment Modelling Andreas Zeller Saarland University Construction Transition Construction A Software Crisis


slide-1
SLIDE 1

The Software Life Cycle

Software Engineering Andreas Zeller • Saarland University

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-2
SLIDE 2
slide-3
SLIDE 3

A Software Crisis

slide-4
SLIDE 4

Code and Fix

(1950–)

Build first version Modify until
 client is satisfied Operate Retirement

slide-5
SLIDE 5

Code and Fix: Issues

  • No process steps – no specs, docs,

tests…

  • No separation of concerns – no

teamwork

  • No way to deal with complexity
slide-6
SLIDE 6

Code and Fix

slide-7
SLIDE 7

Waterfall Model

(1968)

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

slide-8
SLIDE 8

Communication

Communicatio n


project initiation

slide-9
SLIDE 9

Waterfall Model

(1968)

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

slide-10
SLIDE 10

Planning

Planning

estimating
 scheduling
 tracking

slide-11
SLIDE 11

Waterfall Model

(1968)

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

slide-12
SLIDE 12

Waterfall Model (1968)

Modeling

analysis
 design

slide-13
SLIDE 13

Waterfall Model

(1968)

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

slide-14
SLIDE 14

Waterfall Model

Construction

code
 test

slide-15
SLIDE 15

Waterfall Model

(1968)

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

slide-16
SLIDE 16

Deployment

Deployment

delivery
 support feedback

slide-17
SLIDE 17

Waterfall Model

(1968)

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

slide-18
SLIDE 18
slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

Waterfall Model

(1968)

  • Real projects rarely follow a sequential

flow

  • Hard to state all requirements explicitly
  • No maintenance or evolution involved
  • Customer must have patience
  • Any blunder can be disastrous
slide-22
SLIDE 22

Boehm’s first law

Errors are most frequent
 during requirements and design activities and are the more expensive
 the later they are removed.

slide-23
SLIDE 23

Problem Cost

0.0 7.5 15.0 22.5 30.0 Coding Unit test Component test System test Field

Relative cost of problem per phase

slide-24
SLIDE 24

Incremental Model

Features Time

Communication

project initiation requirements gathering

Planning

estimating scheduling tracking

Modeling

analysis design

Construction

code test

Deployment

delivery support feedback

Increment #1

Communication

project initiation requirements gathering

Planning

estimating scheduling tracking

Modeling

analysis design

Construction

code test

Deployment

delivery support feedback

Increment #2

Communication

project initiation requirements gathering

Planning

estimating scheduling tracking

Modeling

analysis design

Construction

code test

Deployment

delivery support feedback

Increment #3

slide-25
SLIDE 25

Incremental Model

  • Each linear sequence produces a

particular “increment” to the software

  • First increment typically core product;

more features added by later increments

  • Allows flexible allocation of resources
slide-26
SLIDE 26

Prototyping

Quick Plan Quick Design Prototype Construction Deployment and Feedback Communication

slide-27
SLIDE 27

Prototypes

Bottom Layer Top Layer (GUI)

slide-28
SLIDE 28

Horizontal Prototype

Bottom Layer Top Layer (GUI)

slide-29
SLIDE 29

Prototypes

Bottom Layer Top Layer (GUI)

slide-30
SLIDE 30

Vertical Prototype

Bottom Layer Top Layer (GUI)

slide-31
SLIDE 31

Prototypes

  • A horizontal prototype tests a particular

layer (typically the GUI) of the system

  • A vertical prototype tests a particular

functionality across all layers

  • Resist pressure to turn a prototype into

a final result!

slide-32
SLIDE 32

Spiral Model

(1988)

Communication Planning Modeling Construction Test Deployment + Feedback

slide-33
SLIDE 33

Spiral Model

  • System is developed in series of

evolutionary releases

  • Milestones for each iteration of the spiral
  • Process does not end with delivery
  • Reflects iterative nature of development
slide-34
SLIDE 34

Unified Process

(1999)

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-35
SLIDE 35

Inception

Planning Communication Inception

  • Encompasses communication with user +

planning

  • Results in a set of use cases
  • Architecture is just a tentative outline

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-36
SLIDE 36

Elaboration

Planning Modelling Elaboration

  • Refines and expands

preliminary use cases

  • Provides architecture

and initial design model

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-37
SLIDE 37

Construction

Modelling Construction Construction

  • Builds (or acquires)

software components according to architecture

  • Completes design model
  • Includes implementation,

unit tests, acceptance tests

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-38
SLIDE 38

Transition

Construction Deployment Transition

  • Software given to end users for beta

testing

  • Feedback reports defects and changes

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-39
SLIDE 39

Production

Deployment Software Increment Production

  • Software is deployed
  • Problems are monitored

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-40
SLIDE 40

Re-Iteration

Deployment Communication

  • Feedback results in new

iteration for next release

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-41
SLIDE 41

Unified Process

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

slide-42
SLIDE 42

Unified Process

Planning Modelling Construction Deployment Communication Software Increment Inception Elaboration Construction Transition Production

  • Draws on best features of conventional

process models

  • Emphasizes software architecture and

design

  • Integrates with UML modeling techniques

(more on this later)

slide-43
SLIDE 43
slide-44
SLIDE 44
slide-45
SLIDE 45
  • Individuals and activities over processes and tools.
  • Working software over comprehensive

documentation.

  • Customer collaboration over contract negotiation.
  • Responding to change over following a plan..

Manifesto for Agile Software Development (2001)

slide-46
SLIDE 46
  • Fast development? Hacking? Prototyping?

Uncontrolled fun? Programmer heaven?

  • Agility = ability to react to changing situations

quickly, appropriately, and effectively.

  • notice changes early
  • initiate action promptly
  • create a feasible and effective alternative plan quickly
  • reorient work and resources quickly and effectively

What is Agile Development?

slide-47
SLIDE 47

Agile?

Communicatio n


project initiation

Planning

estimating
 scheduling
 tracking

Modeling

analysis
 design

Construction

code
 test

Deployment

delivery
 support feedback

slide-48
SLIDE 48

Incremental Model

Features Time

Communication

project initiation requirements gathering

Planning

estimating scheduling tracking

Modeling

analysis design

Construction

code test

Deployment

delivery support feedback

Increment #1

Communication

project initiation requirements gathering

Planning

estimating scheduling tracking

Modeling

analysis design

Construction

code test

Deployment

delivery support feedback

Increment #2

Communication

project initiation requirements gathering

Planning

estimating scheduling tracking

Modeling

analysis design

Construction

code test

Deployment

delivery support feedback

Increment #3

slide-49
SLIDE 49

Agile Processes

Time Scope

Analyse Design Implement Test Waterfall Iterative Agile Processes

Credits: Prof. Bodik

slide-50
SLIDE 50

Agile vs. Plan-driven

  • Low criticality
  • Senior developers
  • Requirements change very
  • ften
  • Small number of developers
  • Culture that thrives on chaos

Agile

  • High criticality
  • Junior developers
  • Requirements don't change

too often

  • Large number of developers
  • Culture that demands order

Plan-driven

slide-51
SLIDE 51

What is an Agile Process?

  • Difficult to predict which requirements

will persist or change in the future.

  • For many types of software, design and

development are interleaved.

  • Analysis, design, construction, and testing

are not as predictable.

slide-52
SLIDE 52

So, how to tackle unpredictability?

make the process adaptable...

slide-53
SLIDE 53

Extreme Programming

(1999–)

Design Coding Test Planning Software Increment

slide-54
SLIDE 54

Design Coding Test Planning Software Increment

Planning

Planning

  • In XP

, planning takes place by means of stories

  • Each story

captures essential behavior

slide-55
SLIDE 55

Extreme Programming

Design Coding Test Planning Software Increment Design Coding Test Planning Software Increment

slide-56
SLIDE 56

Extreme Programming

Design Design Coding Test Planning Software Increment

  • Design is made on the fly, using the KISS

(keep it simple) principle

  • Virtually no notation besides


CRC cards (object sketches) and
 spike solutions (prototypes)

slide-57
SLIDE 57

Extreme Programming

Design Coding Test Planning Software Increment Design Coding Test Planning Software Increment

slide-58
SLIDE 58

Coding

Coding Design Coding Test Planning Software Increment

  • Each story becomes

a unit test that serves as specification

  • The program is

continuously refactored to have the design match

slide-59
SLIDE 59

Coding

Coding Design Coding Test Planning Software Increment

  • To ensure

continuous review, XP mandates pair programming

slide-60
SLIDE 60

Extreme Programming

Design Coding Test Planning Software Increment Design Coding Test Planning Software Increment

slide-61
SLIDE 61

Testing

Test Design Coding Test Planning Software Increment

Unit tests

  • detect errors
  • find missing

functionality

  • measure progress
slide-62
SLIDE 62

Extreme Programming

Test Planning Software Increment Design Coding Test Planning Software Increment

  • The resulting

prototypes result in new stories

slide-63
SLIDE 63

Extreme Programming

Design Coding Test Planning Software Increment Design Coding Test Planning Software Increment

slide-64
SLIDE 64

Spot the Difference

slide-65
SLIDE 65

Scrum

slide-66
SLIDE 66

Scrum

  • An iterative and incremental agile software

development method for managing software projects and product or application development.

  • Small working teams to maximize communication,

minimize overhead and maximize knowledge sharing.

  • Adaptable to technical and business changes.
  • Yields frequent software increments that can be

inspected.

slide-67
SLIDE 67

Scrum

  • Development work and the people who perform it

are partitioned into clean, low coupling partitions.

  • Constant testing and documentation is performed.
  • Ability to declare project “done” whenever

required.

slide-68
SLIDE 68

Scrum

slide-69
SLIDE 69

Demos: Demonstrate software increment to the

customer for evaluation.

Scrum

A prioritized list project requirements or features that provide business value.

Backlog: Sprints: Consists of work units that are required to

achieve a defined backlog into a predefined time-box (usually 30 days).

Scrum Meetings: Short 15 mins. meetings held daily by the

scrum team. The Scrum master leads the meeting.

slide-70
SLIDE 70

Daily Scrum

slide-71
SLIDE 71

Daily Scrum

Each day during a Sprint (same time + place), the team holds a Daily Scrum, where each team member answers three questions:

  • 1. What did I do yesterday that helped the

Development Team meet the Sprint goal?

  • 2. What will I do today to help the Development

Team meet the Sprint goal?

  • 3. Do I see any impediment that prevents me or the

Development Team from meeting the Sprint goal?

slide-72
SLIDE 72

Your Sprints

Bottom Layer Top Layer (GUI)

  • 1. Core Use Case
  • 2. Top Layer
  • 3. May-Haves
slide-73
SLIDE 73
slide-74
SLIDE 74

Summary