37
September 30, 2010 COMS W4156 1 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser [email protected] http://bank.cs.columbia.edu/classes /cs4156/

September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser [email protected]

Embed Size (px)

Citation preview

Page 1: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 1

COMS W4156: Advanced Software Engineering

Prof. Gail Kaiser

[email protected]

http://bank.cs.columbia.edu/classes/cs4156/

Page 2: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 2

Topics covered in this lecture

• Introduce software process

• Describe several generic process models and consider advantages/disadvantages

Page 3: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 3

Software Process

Page 4: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 4

What is a software process?

• A structured set of activities required to develop a software product– Specification;

– Design and implementation;

– Validation;

– Evolution (operation and maintenance).

Page 5: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 5

Software specification

• The process of establishing what features and services are required, as well as the constraints on the system’s operation and development.

• Requirements engineering process– Feasibility study;– Requirements elicitation and analysis;– Requirements specification;– Requirements validation.

Page 6: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 6

Software design and implementation

• The process of converting the system specification into an executable system.

• Software design– Design a software structure that realizes the

specification;

• Implementation– Translate this structure into an executable

program;

• The activities of design and implementation are closely related and may be inter-leaved.

Page 7: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 7

Software validation

• Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the customer(s).

• Involves checking and review processes, and acceptance or beta testing.

• Custom software: Acceptance testing involves executing the system with test cases that are derived from the real data to be processed by the system in the customer’s environment.

• Generic software: Beta testing executes the system in many customers’ environments under real use.

Page 8: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 8

Software evolution

• Software is inherently flexible and can change.

• As requirements change due to changing business circumstances, the software that supports the business must also evolve and change.

• Although there has historically been a demarcation between development and evolution, this is increasingly irrelevant as fewer and fewer systems are completely new.

Page 9: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 9

Process Models

Page 10: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 10

Software Process

• A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.– Major Task Identification– Sequencing

In the beginning was......

Page 11: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 11

Build FirstVersion

Retirement

Operations

Modify untilCustomer satisfied

Code-and-Fix

Page 12: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 12

Discussion of Code-and-Fix• Really Bad• Really Common• Advantages

– No Overhead– No Expertise

• Disadvantages– No means of assessing progress– Difficult to coordinate multiple programmers

• Useful for “hacking” single-use/personal-use programs: start with empty program and debug until it works

Page 13: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 13

Requirements

Validate

Retirement

Operations

Test

ImplementationVerify

Design

Waterfall

Page 14: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 14

More Detailed WaterfallREQUIREMENTS

ANALYSIS

SYSTEMDESIGN

PROGRAMDESIGN

CODING

UNIT & INTE-GRATION TESTING

SYSTEMTESTING

ACCEPTANCETESTING

OPERATION& MAINTENANCE

Page 15: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 15

Discussion of Waterfall• Articulated by Win Royce, ~1970• Widely used today• Advantages

– Measurable progress– Experience applying steps in past projects can be used in

estimating duration of “similar” steps in future projects– Produces software artifacts that can be re-used in other

projects• Disadvantages

– Difficulty of accommodating change after the process is underway: One phase has to be complete before moving onto the next phase.

Page 16: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 16

Discussion of Waterfall• The original waterfall model (as interpreted by many)

disallowed iteration– Inflexible partitioning of the project into distinct stages

makes it difficult to respond to changing customer requirements.

– Therefore, this model is only appropriate when the requirements are very well-understood and changes will be very limited during the design process.

– But few business systems have stable requirements.• The “waterfall with feedback” model was, however,

what Royce had in mind

Page 17: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 17

Requirements

Validate

Retirement

Operations

Test

ImplementationVerify

Design

Requirements Change

Waterfall*

Page 18: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 18

Waterfall*REQUIREMENTS

ANALYSIS

SYSTEMDESIGN

PROGRAMDESIGN

CODING

UNIT & INTE-GRATION TESTING

SYSTEMTESTING

ACCEPTANCETESTING

OPERATION& MAINTENANCE

Page 19: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 19

Evolutionary• Throw-away prototyping

– Objective is to understand the system requirements.– Should start with poorly understood requirements to clarify

what is really needed.

• Incremental development – Objective is to work with customers to evolve a final

system from an initial outline specification. – Should start with well understood requirements and stage

development and delivery.

Page 20: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 20

Prototyping

Initial Concept

Complete and Release

Prototype

Refine Prototype Until Acceptance

Design and Implement

Initial Prototype

Page 21: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 21

Discussion of prototyping• Mock-ups allow users to visualize an application that

hasn't yet been constructed• Used to help develop requirements specification

– Useful for rapidly changing requirements– Or when customer isn’t sure what specification should be

• Prototypes should be discarded once requirements are “known”, and another process model used for development– Prototypes should not be used as a basis for implementation,

since rapid prototyping tools do not create production quality code

– Customer (and management) may need to be “educated” about prototypes: a prototype is not 80-90% of the final product, usually not even 10%

Page 22: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 22

Incremental (staged) delivery

Detailed Design, Implement, Test, Deliver Feature Set

Requirements

Validate

Retirement

Operations

Verify

Architectural Design

Page 23: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 23

Discussion of incremental delivery

• Iterations are classified according to feature sets:

– e.g., features 1 and 2 will be delivered in this iteration, features 3 and 4 are next.

• Series of increasingly “complete” releases.

• Lack of process visibility - when will it be done?

• Systems are often poorly structured.

Page 24: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 24

Process Iteration

• System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems.

• Iteration can be applied to any of the generic process models.

• Several approaches.

Page 25: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 25

Iterative delivery

Initial Concept

Operations

Acceptance Testing

and Delivery

Requirements and Iteration

Planning

Next Iteration

Design andImplement

Page 26: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 26

Discussion of iterative delivery• Rather than deliver the system as a completed product,

the development and delivery is broken down into iterations, with each iteration delivering part of the required functionality.

• User requirements are prioritized and the highest priority requirements are included in early iterations.

• Once the development of an iteration is started, the requirements are frozen - but requirements for later iterations can continue to evolve (this is the distinction compared to incremental delivery of feature sets)

Page 27: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 27

Discussion of iterative development

• Customer value can be delivered with each iteration so system functionality is available earlier.

• Each iteration’s deliverable is not a prototype, but an operational system.

• However, early iterations act as a prototype to help elicit requirements for later iterations (exploratory).

• Lower risk of overall project failure.• The highest priority system services tend to receive

the most testing.

Page 28: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 28

Agile (eXtreme) Programming

• Iterative, but with a lot of hype• Timeboxing:

– Set the date for delivering an iteration– Date cannot change– Only functionality (scope) can change– Short duration iterations (weeks, not

months)

Page 29: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 29

Spiral model

PLAN DEVELOP AND TEST

DETERMINE GOALS,ALTERNATIVES,CONSTRAINTS

EVALUATE ALTERNATIVESAND RISKS

Requirements,life-cycle plan

Budget1

Alternatives1

Constraints1

Risk analysis1

Risk analysis2

Risk analysis3

Risk analysis4

Constraints 2

Constraints 3

Constraints 4

Budget2

Budget3Budget4

Altern

atives 2

Altern

ative

s 3Altern

ative

s 4

Prototype 1

Proto -type2

Proto -type3

Proto -type4

Concept ofoperation

Softw

are

requ

irem

ents

Validated

requirements

Developmentplan

Integrationand test plan

Softw

are

desig

n

Validated,

verified design

Detaileddesign

Code

Unit test

SystemtestAcceptance

testImplementation

plan

start

Page 30: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 30

Discussion of Spiral Model

• Proposed by Barry Boehm, ~1986

• Process is represented as a spiral rather than as a sequence of activities with backtracking.– Each loop in the spiral represents a phase in the

process. – No fixed phases such as specification or design -

loops in the spiral are chosen depending on what is required.

Page 31: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 31

Discussion of Spiral Model

• Each iteration is driven by “risk management”

– Determine objectives and current status

– Identify risks and priorities

– Next iteration addresses (current) highest risk and/or highest priority items

Page 32: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

September 30, 2010 COMS W4156 32

The Basic Problem: Risk

• The spiral and agile iterative process models view “risk” as the main problem of software development– Schedule slips– Business changes– Staff turnovers– New technologies– …

Page 33: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

Upcoming Assignments

September 30, 2010 COMS W4156 33

Page 34: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

Upcoming Assignments

• Project Concept due Tuesday 5 October, 10am• Posted on course website• Submit via CourseWorks

September 30, 2010 COMS W4156 34

Page 35: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

Team Project Planning and Progression

September 30, 2010 COMS W4156 35

Page 36: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

First Iteration Assignments

• First Iteration Plan due Tuesday 19 October.• First Iteration Progress Report due Tuesday 26

October. • First Iteration Demo Wednesday 3 November –

Thursday 11 November.• First Iteration Final Report due Friday 12

November.

September 30, 2010 COMS W4156 36

Page 37: September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

COMS W4156: Advanced Software Engineering

Prof. Gail [email protected]

http://bank.cs.columbia.edu/classes/cs4156/

September 30, 2010 COMS W4156 37