software lifecycle software lifecycle basics lifecycle models methods and tools

27
Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Post on 22-Dec-2015

239 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Software Lifecycle

Software Lifecycle Basics

Lifecycle Models

Methods and Tools

Page 2: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 2

Software Lifecycle

• A series of steps through which a software product progresses

• Lifetimes vary from days to months to years• Consists of

– people!

– overall process

– intermediate products

– stages of the process

Page 3: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

3Software LifecycleTopic 2

Software Production Personnel

• Client – individual or organization that wants product to be developed

• Developer(s) – (members of) organization producing product

• User – person on whose behalf client has commissioned developer, person(s) who will utilize software in operation

Page 4: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 4

Kinds of SW projects

• Internal software development: user = client = developer

• Contract software development: user = client developer

• Commercial software development: user client = developer.

Page 5: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

5Software LifecycleTopic 2

Quality Products through Process

• Quality software products developed through– systematic software processes

– with explicit product quality requirements

• Effective testing and analysis must be included– incremental analysis activities

– to complement synthesis activities

• Powerful tools and processes are essential to assure effectiveness

Page 6: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

6Software LifecycleTopic 2

What is a Process?

• Device for producing a product (getting job done)• Indirect nature

– Process description (program) created to describe wide class of instances

• Humans create process descriptions (models or programs) to solve classes of problems

• Software Processes: stratagem for creating and evolving software products

Page 7: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 7

Major Components of a Lifecycle Model:

• Phases

• Intermediate Products

• Reviews

Major Components of a Lifecycle Model:

• Phases

• Intermediate Products

• Reviews

The Lifecycle Approach

• Phasing promotes manageability and provides organization

• Intermediate software products promote visibility and assure continuity between phases

• Reviews assure ultimate satisfaction of requirements

Page 8: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 8

Phases of a Software Lifecycle

• Standard Phases– Requirements Analysis and Specification

– Design

– Implementation and Integration

– Operation and Maintenance

• Testing throughout!

• Requirements changes inevitable!

Page 9: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 9

Intermediate Software Products

• Objectives:– Demarcate end of phases

– Enable effective reviews

– Specify requirements for next phase

• Form:– Rigorous

– Machine processible

• Content:– Specifications

– Tests

– Documentation

Page 10: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 10

Lifecycle Reviews• Reviews conducted with each phase

• Review intermediate software products

• Objectives– Validate that inspected specification conforms with requirements and/or verify that

it conforms to product resulting from previous phase• Detect points of non-conformance

– Discover “all” defects currently present in the product under development (as early as possible)

• Detect defects in software specification

• Detect defects in a specification's representation

– Measure product quality

– Measure development process• Evaluate techniques and tools

Feedback for specifiers to improveFeedforward for process and quality control

Feedback for specifiers to improveFeedforward for process and quality control

Page 11: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

11Software LifecycleTopic 2

Requirements Analysis and Specification• Problem Definition —> Requirements Specification

– determine exactly what client (and user) wants and process constraints

– develop a contract with client

– what task the product is to do

• Difficulties– client asks for wrong product

– client is computer/software illiterate

– specifications may be ambiguous, inconsistent, incomplete

• Validation– extensive specification reviews to check that requirements specification

satisfies client needs

– look for ambiguity, consistency, incompleteness

– check for feasibility, testability

– develop system/acceptance test plan

Page 12: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

12Software LifecycleTopic 2

Design• Requirements Specification —> Design

– develop architectural design (system structure): decompose software into modules with module interfaces

– develop detailed design (module specifications): select algorithms and data structures

– maintain record of design decisions and traceability– how the product is to do its task

• Difficulties– miscommunication between module designers– design may be inconsistent, incomplete, ambiguous

• Verification– extensive design reviews (inspections with checklists) to determine that

design conforms to requirements– check module interactions– develop integration test plan

Page 13: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

13Software LifecycleTopic 2

Implementation and Integration• Design —> Implementation

– implement modules and verify they meet their specifications– combine modules according to architectural design– how the product does its task

• Difficulties– module interaction errors– order of integration has a critical influence on quality and productivity

• Verification and Testing– extensive code reviews (inspections with checklists) to determine that

implementation conforms to requirements and design– develop and test on unit/module test plan: focus on individual module

functionality– test on integration test plan: focus on module interfaces– test on system test plan: focus on requirements and determine whether

product as a whole functions correctly

Page 14: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

14Software LifecycleTopic 2

Operation and Maintenance• Operation —> Change

– maintain software after (and during) user operation

– integral part of process

– determine whether product as a whole still functions correctly

• Difficulties– design not extensible

– lack of up-to-date documentation

– personnel turnover

• Verification and Testing– extensive review to determine that change is made correctly and all

documentation updated

– test to determine that change is correctly implemented

– test to determine that no inadvertent changes were made to compromise system functionality (check that no affected software has regressed)

Page 15: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 15

Lifecycle Models

• Over time different lifecycle models developed, e.g.,– build-and-fix model

– waterfall model

– prototyping model

– incremental model

– spiral model

– .…

• Different lifecycle models decompose software engineering activities in different ways and are applicable for different applications and organizations

No "right" or "wrong" lifecycle modelNo "right" or "wrong" lifecycle model

Page 16: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 16

Build FirstVersion

Retirement

Operations Mode

Modify untilclient is satisfied

Build-and-Fix

Is this yourusual model?

Is this yourusual model?

Page 17: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 17

Requirements

Verify

Retirement

Operations

Test

ImplementationVerify

Design

Req. Change

Waterfall (collapsed)

Key features:- requirements phase- intermediate products- V & V steps

Key features:- requirements phase- intermediate products- V & V steps

Page 18: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 18

Rapid Prototype

Verify

Retirement

Operations

Test

ImplementationVerify

Design

Req. Change

Rapid Prototyping

Key feature:- prototype

Key feature:- prototype

Page 19: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 19

For each build:Perform detaileddesign, implement.Test. Deliver.

Requirements

Verify

Retirement

Operations

Verify

Arch. Design

Incremental

Key features:- incremental delivery- frequent builds

Key features:- incremental delivery- frequent builds

Page 20: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 20

Concept of Operation

Requirements Plan

Requirements OAC

Risk Assessment

Risk It

em Set

Risk M

anag

emen

t Plan

Requirements

Risk Control

Requirements Validation

Abstract Specification Plan

Abstract Specifcation OAC

Risk Assessment

Risk Control

Abstract Specification

Abstract Specification Validation

Concrete Specification Plan

Concrete Specification OAC

Concrete Specification

Concrete Specification Validation and Verification

Software Development Plan

Risk Assessment

Risk Control

Progress through steps

Cumulative cost

Evaluate alternatives, identify, resolve risks

Develop, verify next-level product

Plan next phases

CommitReview

partition

Determine objectives, alternatives, constraints (OAC)

The Spiral Model [Boehm,1988]

Page 21: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 21

Add a Risk Analysisstep to each phase!

Add a Risk Analysisstep to each phase!

Requirements

Verify

Retirement

Operations

Test

ImplementationVerify

Design

Req. Change

Risk Assessment

Risk Assessment

Risk Assessment

(Extremely) Simplified Spiral Model

Page 22: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 22

Synchronize-and-Stabilize

• Requirements phase similar to Waterfall model• Features are divided into “builds” or versions• Synchronize: code is integrated at the end of each day,

then tested and debugged• Stabilize: when all features of a build are completed and

known faults are fixed• Always have a working version of the product• Used successfully by Microsoft• Design phase is de-emphasized

Page 23: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 23

Extreme Programming

• Based on incremental model• Potential features are identified, along with cost (similar

to requirements phase)• Initial features are chosen based on cost-benefit analysis• Implementation proceeds by programming pairs• Design is de-emphasized• No specialization among team members; “ego-less

programming”

Page 24: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 24

Software Methods and Tools

• Methods provide a means or procedure for accomplishing a task

• Tools are devices for performing some task– analytical tools

– software tools

• Methodology guides the proper use of methods and tools• Process helps to enact a methodology• Environments are a synergistic collection of tools with

process support

Page 25: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 25

Analytical Tools

• Problem solving techniques that help in software development– cost-benefit analysis

• compare expected benefits against estimated costs

– stepwise refinement• divide and conquer

– abstraction• focus on some important property and ignore (for the time being)

irrelevant details

• Analytical tools underlie many software development methods

Page 26: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

Topic 2 Software Lifecycle 26

Software Tools

• Software tools are an automated implement for performing a task

• Tools facilitate work because they are– fast, immune to boredom and "cheating"

• Ideal Software Tools are ...– powerful, effective, convenient, natural, reliable, robust

• Most software development tools are not• exceptions: compilers, editors, loaders

– these have been polished, refined, and debugged through long-term use and hence made reliable and robust

– these have been made natural and effective through extended exposure and maintenance

Page 27: Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools

27Software LifecycleTopic 2

Tool Obstacles

• Tool use obstacles– developers tend to be like hammer and screwdriver carpenters

– tools are not powerful and/or effective

– tools are unreliable and/or unrobust• comes with time and money

– tools are inconvenient and/or unnatural • comes from successful use

• Tool building obstacles– Short history of large-scale software development

– Limited success in • developing software well

• exploiting “tools” successfully

– Few software techniques have had time and use required to achieve tool status

– No “tools” at all in some key areas (e.g., real-time analysis)