an overview of software process. 2 cmsc 345, version 1/11 objectives to introduce the general phases...

33
An Overview of Software Process

Upload: ezra-summers

Post on 17-Dec-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

An Overview of Software Process

Page 2: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

2CMSC 345, Version 1/11

Objectives

To introduce the general phases of the software development life cycle (SDLC)

To describe various generic software process models and discuss their pros and cons

To introduce some specific software processes To discuss software process assessment and

improvement

Page 3: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

3CMSC 345, Version 1/11

Requirements

system servicesand constraints

“What”

Generalizing the Software Development Life Cycle (SDLC)

Specify system scope Elicit and specify system services Elicit and specify system constraints Begin designing the user interface (isn’t this design?!) Establish deliverables Discuss open issues Document Verify

Page 4: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

4CMSC 345, Version 1/11

Requirements Design

system servicesand constraints

“What”

“How”

system structureintended

Generalizing the Software Development Life Cycle (SDLC)

Overall architectural design Component design Component interface design Algorithm design Data structure design Hardware and software decisions Discuss open issues Document Verify

Page 5: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

5CMSC 345, Version 1/11

Requirements Design

Implementation

system servicesand constraints

“What”

“How”

system structureintended

code

Generalizing the Software Development Life Cycle (SDLC)

Coding Successful compilation of code units Unit testing Code inspection Document

Page 6: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

6CMSC 345, Version 1/11

Requirements Design

Implementation Testing

system servicesand constraints

“What”

“How”

system structureintended

code

final product

Generalizing the Software Development Life Cycle (SDLC)

Component testing Integration testing

Subsystem testing System testing

Acceptance testing Document Deployment (actually its own phase)

Page 7: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

7CMSC 345, Version 1/11

Requirements Design

Implementation Testing

Maintenance

system servicesand constraints

“What”

“How”

system structureintended

code

final product

Generalizing the Software Development Life Cycle (SDLC)

Bug fixes Refactoring Upgrades Document

Page 8: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

8CMSC 345, Version 1/11

Software Process Models

An abstract representation of how the SDLC phases can be addressed

Major models:WaterfallSpiral Iterative and Incremental Development (IID)Prototyping

Evolutionary Throwaway

Page 9: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

9CMSC 345, Version 1/11

Waterfall Model

Requirements

Design

Implementation

Maintenance

Testing

Winston Royce, 1970

Page 10: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

10CMSC 345, Version 1/11

Observations

Contains all phases of the SDLC May have to return to the previous phase Still widely used, especially on very large

projects

Requirements

Design

Implementation

Maintenance

Testing

Page 11: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

11CMSC 345, Version 1/11

Spiral Model

Riskanalysis

Riskanalysis

Riskanalysis

Riskanalysis Proto-

type 1

Prototype 2Prototype 3

Opera-tionalprotoype

Concept ofOperation

Simulations, models, benchmarks

S/Wrequirements

Requirementvalidation

DesignV&V

Productdesign Detailed

design

CodeUnit test

IntegrationtestAcceptance

testService Develop, verifynext-level product

Evaluate alternativesidentify, resolve risks

Determine objectivesalternatives and

constraints

Plan next phase

Integrationand test plan

Developmentplan

Requirements planLife-cycle plan

REVIEW

Barry Boehm, 1988

Page 12: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

12CMSC 345, Version 1/11

Observations Each loop in the spiral represents a phase in the

process. Is iterative Risks are explicitly assessed and resolved throughout

the process. Uses prototyping Risk

analysis

Riskanalysis

Riskanalysis

Riskanalysis Proto-

type 1

Prototype 2Prototype 3

Opera-tionalprotoype

Concept ofOperation

Simulations, models, benchmarks

S/Wrequirements

Requirementvalidation

DesignV&V

Productdesign Detailed

design

CodeUnit test

IntegrationtestAcceptance

testService Develop, verifynext-level product

Evaluate alternativesidentify, resolve risks

Determine objectivesalternatives and

constraints

Plan next phase

Integrationand test plan

Developmentplan

Requirements planLife-cycle plan

REVIEW

Page 13: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

13CMSC 345, Version 1/11

Iterative and Incremental Development (IID)

Requirements

Implementation

Design

TestingMaintenance

Determine the “pieces”

Develop each “piece,” adding to the previous

ones Final system emerges

Page 14: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

14CMSC 345, Version 1/11

Observations Contains all phases of the SDLC Development and delivery is broken down into functional

increments (“pieces”) The increments are prioritized Is an iterative, incremental process Common to deploy at the end of each iteration

Requirements

Implementation

Design

TestingMaintenance

Determine the “pieces”

Develop each “piece,” adding to the previous

onesFinal system

emerges

Page 15: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

15CMSC 345, Version 1/11

Prototyping

Requirements

Implementation

Design

Testing

Design

Implementation

Testing

Maintenance

Prototyping (waterfall, spiral, IID,

etc.)

Final System Development

(waterfall, spiral, IID,

etc.)

Throw prototype away?

Page 16: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

16CMSC 345, Version 1/11

Observations Contains all phases of the SDLC Terrific requirements elicitation and validation technique There is always a “working” model (prototype) of the

final system Is an iterative process Prototype can be thrown away (throwaway

prototyping) or evolved into the final system (evolutionary prototyping)

Requirements

Implementation

Design

Testing

Design

Implementation

Testing

Maintenance

Prototyping (waterfall, spiral, IID,

etc.)

Final System Development

(waterfall, spiral, IID,

etc.)

Throw prototype away?

Page 17: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

17CMSC 345, Version 1/11

Software Processes Rational Unified Process (RUP) (’90’s) Agile processes (late ’90’s)

ScrumExtreme Programming (XP)

Customized

Page 18: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

18CMSC 345, Version 1/11

Rational Unified Process (3) Rational Unified Process (RUP)

Rational Software Corporation, now owned by IBM

“Three Amigos” Grady Booch James Rumbaugh Ivar Jacobson

A popular type of Unified Process (UP)

Page 19: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

19CMSC 345, Version 1/11

Rational Unified ProcessRational Unified Process (1)

Page 20: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

20CMSC 345, Version 1/11

Rational Unified Process (UP) (2) Set of activities (workflows), artifacts (e.g., documents, diagrams,

code), and roles (e.g., architect, code reviewer, tester) Customizable generic process framework Characteristics

Use case driven (functional requirements) Architecture-centric (system structure) Iterative (cycles through “workflows”) Incremental (incremental deliveries of a specified set of use

cases) Makes extensive use of the Unified Modeling Language (UML)

Page 21: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

21CMSC 345, Version 1/11

Agile Processes Agile Manifesto (2001)

Emphasizes “lightweight” processes Values

Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

www.agilemanifesto.org SD Magazine, The Agile Manifesto, August 2001

Some agile processes Scrum Extreme Programming (XP) (Is it a process?)

Page 22: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

22CMSC 345, Version 1/11

Scrum (1)

Rugby – A way of restarting the game after an infringement or after the ball goes out of play

Page 23: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

23CMSC 345, Version 1/11

Scrum (2) [Reference: Schwaber & Beedle]

“Scrum is superimposed on and encapsulates whatever engineering practices already exist.”

Roles Scrum Master

Responsible for ensuring that Scrum values, practices, and rules are enacted and enforced

Represents management and the team to each other Responsible for the success of the Scrum

Product Owner Solely controls the Product Backlog

Scrum Team Commits to achieving a Sprint goal Accorded full authority to do whatever it decides is necessary to achieve the

goal Responsible for doing all of the analysis, design, coding, testing, and user

documentation Self-organizing, cross-functional

Stakeholders Customers, vendors, others

Page 24: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

24CMSC 345, Version 1/11

Scrum (3) Some Tasks

Daily Scrums What the team has accomplished since the last meeting What it is going to do before the next meeting What obstacles are in its way

30-day Sprints Sprint planning meeting Sprint goal End-of-Sprint review

Some Artifacts Product Backlog

An evolving, prioritized queue of business and technical functionality that needs to be developed into a system.

Release Backlog The subset of the Product Backlog that is selected for a release.

Sprint Backlog Tasks that the Scrum Team has devised for a Sprint.

Page 25: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

25CMSC 345, Version 1/11

Extreme Programming (XP) (1)

Basic principles (Beck)Rapid feedbackAssume simplicity Incremental changeEmbracing changeQuality work

Page 26: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

26CMSC 345, Version 1/11

Extreme Programming (XP) (2) Practices

The planning game Small releases Metaphor Simple design Testing Refactoring Pair programming Collective ownership Continuous integration 40-hour week On-site customer Coding standards

Page 27: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

27CMSC 345, Version 1/11

Customized Processes Sometimes (usually?) it’s best to “pick and

choose” Questions to ask:

Is there a required process?Are the requirements well-understood?What else? (Think about this on your own.)

Page 28: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

28CMSC 345, Version 1/11

Assessing Process (1)

Software “crisis” in the 1960’s, ’70’s, ’80’s Over budget Over schedule Poor quality

Software Engineering Institute (SEI) Carnegie Mellon University Federally-funded, non-profit research and

development center Consortium of academia, government, and industry Mission: to “advance the practice of software

engineering” (from www.sei.cmu.org)

Page 29: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

29CMSC 345, Version 1/11

Assessing Process (2)

SEI Capability Maturity Model (CMM), 1991 Provides guidance for software process improvement Also a method for assessing the maturity of an organization’s

software process Capability Maturity Model Integration (CMMI), 2002

Successor to CMM Version 1.2, released August 2006 Five levels of process “maturity”

• Incomplete1. Initial (ad hoc)2. Managed (can repeat earlier successes)3. Defined (standardized and documented process)4. Quantitatively Managed (software process metrics gathered)5. Optimizing (continuous process improvement)

Is not a specific process Is process-independent

Page 30: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

30CMSC 345, Version 1/11

Assessing Process (3)

Some government agencies and other organizations require contractors to have achieved a specific minimal CMMI level

Other standards and certifications: ISO 9000 (International Organization for

Standardization) A family of standards Can be certified as “ISO 9000 compliant”

Six Sigma Originally developed by Motorola Origins in quality (defect) control in manufacturing Various certifications

Page 31: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

31CMSC 345, Version 1/11

CMSC 345 Process (1)

Basically, waterfall. Why? First time through the entire life cycle Semester is very short I must give you hard deadlines

Probably will have to integrate some iteration into the process

Prototyping strongly recommended For requirements elicitation Keep your customer informed (and happy!)

Take a look at ourCMSC345Process_S11.ppt

Page 32: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

32CMSC 345, Version 1/11

References (1) Boehm, Barry, A Spiral Model of Software Development

and Enhancement, IEEE Computer, 21(5):61-72, May 1988.

Beck, K., Extreme Programming Explained. 2000, New York: Addison-Wesley.

Capability Maturity Model: Guidelines for Improving the Software Process, ed. C.M.U. Software Engineering Institute. 1995, New York: Addison-Wesley.

Fowler, M. and J. Highsmith, The Agile Manifesto, in Software Development Magazine, August 2001.

International Organization for Standardization, http://www.iso.ch/iso/en/ISOOnline.frontpage

Jacobson, I., G. Booch, and J. Rumbaugh, The Unified Software Development Process 1999, New York: Addison-Wesley.

Page 33: An Overview of Software Process. 2 CMSC 345, Version 1/11 Objectives To introduce the general phases of the software development life cycle (SDLC) To

33CMSC 345, Version 1/11

References (2) Kruchten, P., The Rational Unified Process: An Introduction. 3rd ed.

2003, New York: Addison-Wesley. Manifesto for Agile Software Development, www.agilemanifesto.org Royce, Winston, Managing the Development of Large Software

Systems: Concepts and Techniques, in WESCON Technical Papers, 1970, reprinted in The Proceedings of the Ninth International Conference on Software Engineering, 1987, pp. 328-338.

Scott, K., The Unified Process Explained 2001, New York: Addison-Wesley.

Schwaber, K. and M. Beedle, Agile Software Development with SCRUM. 2001, Prentice Hall.

Software Engineering Institute (SEI), www.sei.cmu.edu Software Engineering Institute CMMI Website,

http://www.sei.cmu.edu/cmmi/