Software development lifecycle



Similar documents
Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

Rapid Development & Software Project Survival Guide Steve McConnell Dave Root (Developed with Mel Rosso-Llopart)

Software Development Life Cycle (SDLC)

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

CSC 492 The Practice of Software Engineering. Lecture 3 University of Mount Union Software Life Cycle Models

6. Software Lifecycle Models. A software lifecycle model is a standardised format for planning organising, and running a new development project.

Software Project Models

A Comparison between Five Models of Software Engineering

A Capability Maturity Model (CMM)

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

Software Engineering. What is a system?

Objectives. The software process. Basic software process Models. Waterfall model. Software Processes

Software Development Processes. Software Life-Cycle Models

Foundations of software engineering

Software Development Life Cycle

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring

INTERNATIONAL JOURNAL OF ADVANCES IN COMPUTING AND INFORMATION TECHNOLOGY An International online open access peer reviewed journal

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

CPSC 310 Software Engineering Lecture 2 Software Processes. Thanks to Eric Wolhstader, Emerson Murphy-Hill

Modelli di sviluppo software. Enrico Giunchiglia

Software Life Cycle Models

Software Engineering. Objectives. Designing, building and maintaining large software systems

Lifecycle Models: Waterfall / Spiral / EVO

Agile Projects 7. Agile Project Management 21

ASSESSMENT OF SOFTWARE PROCESS MODELS

The software process. Generic software process models. Waterfall model. Software Development Methods. Bayu Adhi Tama, ST., MTI.

AGILE vs. WATERFALL METHODOLOGIES

Managing TM1 Projects

Principles of Software Engineering: Software Methodologies. COSI 120b, Spring 2005

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

CSCI-485: Software Design

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

A Comparison Between Five Models Of Software Engineering

Software Life Cycle Processes

To introduce software process models To describe three generic process models and when they may be used

Lecture 3 Software Development Processes

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Unit 1 Learning Objectives

Software Development Process

Software Development Life Cycle Models - Process Models. Week 2, Session 1

SELECTING A DEVELOPMENT APPROACH Original Issuance: February 17, 2005 Revalidated: March 27, 2008

Advanced Software Engineering. Software Development Processes

1. Software Process Models (Sommerville Chapters 4, 17, 19, 12.4)

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Software Engineering. Software Engineering. Software Costs

CSE 435 Software Engineering. Sept 16, 2015

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

How To Model Software Development Life Cycle Models

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

Software Development Methodologies

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

IV. Software Lifecycles

Software Engineering

Software Development Life Cycle & Process Models

COMP 354 Introduction to Software Engineering

LECTURE 1. SYSTEMS DEVELOPMENT

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Information Systems Development Process (Software Development Life Cycle)

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

1. Software Process Models (Sommerville Chapters 4, 17, 19, 12.4)

(Refer Slide Time: 01:52)

Agile-Fall Process Flow Model A Right Candidate for Implementation in Software Development and Testing Processes for Software Organizations

Introduction to Software Engineering

Software Development: The Waterfall Model

A Survey of Software Development Process Models in Software Engineering

SOFTWARE PROCESS MODELS

Project Management. Session 3: Planning

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

Controlling Change on Agile Software Development Projects

Alternative Development Methodologies

Agile in a Safety Critical world

Agile Processes and Methodologies: A Conceptual Study

Building Software in an Agile Manner

Establishing Great Software Development Process(es) for Your Organization. By Dale Mayes

Unit I. Introduction

International Journal of Advanced Research in Computer Science and Software Engineering

The Software Life Cycle. CSE 308: Software Engineering

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Agile and lean methods for managing application development process

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

Software Process. Process: A sequence of activities, subject to constraints on resources, that produce an intended output of some kind.

Scale agile throughout the enterprise A PwC point of view

Agile and lean methods for managing application development process

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

CS4507 Advanced Software Engineering

Integrating PRINCE2 and Scrum for successful new product development

INTRODUCTION. Chapter Motivation

Project Management 1/20/2015

Transcription:

Software Life Cycle Software development lifecycle The power of process

How complex is software?

What is complex?

How complex is software? Measures of complexity: lines of code number of classes number of modules module interconnections and dependencies time to understand # of authors many more

How complex is software? Measures of complexity: lines of code number of classes number of modules module interconnections and dependencies time to understand # of authors many more Windows Server 2003: 50 MSLoC Debian 5.0: 324 MSLoC

How big is 324 MSLoC? 50 lines/page 6.5M pages 1K pages/ream 6.5K reams 2 inches/ream 13K inches 13K inches 13x the height of the Allen Center 5 words/loc@ 50 wpm 32M min 61 years Just to type! No breaks and no thinking allowed!

Addressing software complexity What are/is the? Requirements Design Implementation Testing plan Who does the? Requirements Design Implementation Testing Two sides of the same coin Different approaches, representations, etc. are needed for the artifact-oriented components Different skill-sets, knowledge, etc. are needed for the human-oriented components 7

Outline What is a software development lifecycle? Why do we need a lifecycle process? Lifecycle models and their tradeoffs Code-and-fix Waterfall Spiral Evolutionary prototyping Staged delivery Agile (XP, scrum, ) many others

Lifecycle stages Virtually all lifecycles share these steps/stages/phases: Requirements Design Implementation Testing Maintenance Key question: how do you combine them, and in what order? 9

Ad-hoc development Ad-hoc development: creating software without any formal guidelines or process Advantage: easy to learn and use! Disadvantages? may ignore some important tasks (testing, design) not clear when to start or stop doing each task scales poorly to multiple people hard to review or evaluate one's work code may not match user's needs (no requirements!) code was not planned for modification, not flexible The later a problem is found in software, the more costly it is to fix.

The software lifecycle Software lifecycle: series of steps / phases, through which software is produced from conception to end-of-life can take months or years to complete Goals of each phase: mark out a clear set of steps to perform produce a tangible item allow for review of work specify actions to perform in the next phase

Some lifecycle models code-and-fix: write some code, debug it, repeat (i.e., ad-hoc) waterfall: standard phases (req., design, code, test) in order spiral: assess risks at each step; do most critical action first evolutionary prototyping: build an initial small requirement spec, code it, then "evolve" the spec and code as needed staged delivery: build initial requirement specs for several releases, then design-andcode each in sequence

Benefits of using a lifecycle It provides us with a structure in which to work It forces us to think of the big picture and follow steps so that we reach it without glaring deficiencies Without it you may make decisions that are individually on target but collectively misdirected It is a management tool Drawbacks?

Limitations of lifecycle models Can lead to compromises and artificial constraints Risk of overemphasizing process (not the end in itself) Ways of evaluating models risk management, quality/cost control, predictability, visibility of progress, customer involvement/feedback

Are there analogies outside of SE? Consider the process of building the Paul Allen Center

Project with little attention to process Survival Guide: McConnell p24

Project with early attention to process Survival Guide: McConnell p25

Let s talk about some lifecycle models

Code-and-fix model

Code-and-fix model Advantages Little or no overhead just dive in and develop, and see progress quickly Applicable sometimes for very small projects and short-lived prototypes But DANGEROUS for most projects No way to assess progress, quality or risks Unlikely to accommodate changes without a major design overhaul Unclear delivery features (scope), timing, and support

Waterfall model System Requirements Validation Software Requirements Validation Preliminary Design Validation Detailed Design Validation Code & Debug Development test Test Validation test Operations & Maintenance Revalidation

Waterfall model advantages Can work well for projects that are very well understood but complex Tackles all planning upfront The ideal of no midstream changes equates to an efficient software development process Supports inexperienced teams Orderly, easy-to-follow sequential model Reviews at each stage determine if the product is ready to advance

Waterfall model limitations Difficult to specify all reqs of a stage completely and correctly upfront requires a lot of planning up front (not always easy) assumes requirements will be clear and well-understood Rigid, linear; not adaptable to change in the product costly to "swim upstream" back to a previous phase No sense of progress until the very end nothing to show until almost done ("we're 90% done, I swear!") Integration occurs at the very end Defies integrate early and often rule Solutions are inflexible, no feedback until end Delivered product may not match customer needs Phase reviews are massive affairs Inertia means change is costly

Spiral model risk oriented Determine objectives and constraints Identify and resolve risks Evaluate options to resolve risks Develop and verify deliverables Plan next spiral Commit (or not) to next spiral

Spiral model Oriented towards phased reduction of risk Take on the big risks early, make decisions are we building the right product? do we have any customers for this product? is it possible to implement the product with the technology that exists today? tomorrow? Progresses carefully to a result tasks can be more clear each spiral

Advantages Spiral model Especially appropriate at the beginning of the project, when the requirements are still fluid Provides early indication of unforeseen problems Accommodates change As costs increase, risks decrease! Always addresses the biggest risk first

Spiral model disadvantages A lot of planning and management Frequent changes of task But, get to stick with one product feature/goal Requires customer and contract flexibility Developers must be able to assess risk Must address most important issues

Staged delivery model Waterfall-like beginnings Then, short release cycles: plan, design, execute, test, release with delivery possible at the end of any cycle

Staged delivery model advantages Can ship at the end of any release cycle Looks like success to customers, even if not original goal Intermediate deliveries show progress, satisfy customers, and lead to feedback Problems are visible early (e.g., integration) Facilitates shorter, more predictable release cycles Very practical, widely used and successful

Staged delivery model disadvantages Requires tight coordination with documentation, management, marketing Product must be decomposable Extra releases cause overhead

Evolutionary prototyping model Develop a skeleton system and evolve it for delivery

Evolutionary prototyping model Another popular and successful model, especially for custom products Staged delivery evolu onary prototyping Staged delivery: requirements are known ahead of time Evalutionary: discovered by customer feedback on each release Advantages Addresses risks early Produces steady signs of progress, builds customer confidence Useful when requirements are unknown or changing Customer involvement ("What do you think of this version?")

Evolutionary prototyping limitations Requires close customer involvement Assumes user's initial spec is flexible Problems with planning Especially if the developers are inexperienced Feature creep, major design decisions, use of time, etc. Hard to estimate completion schedule or feature set Unclear how many iterations will be needed to finish Integration problems fails for separate pieces that must then be integrated bridging; new software trying to gradually replace old Temporary fixes become permanent constraints

Design-to-schedule Design-to-schedule useful when you absolutely need to ship by a certain date similar to the staged delivery model but less flexible because of the fixed shipping date requires careful prioritization of features and risks to address Design-to-tools a model where the project only incorporates features that are easy to implement by using or combining existing components reduces development time at cost of losing control of project

Why are there so many models? Choices are good! The choice of a model depends on the project circumstances and requirements A good choice of a model can result in a vastly more productive environment than a bad choice A cocktail of models is frequently used in practice to get the best of all worlds. Models are often combined or tailored to environment

What s the best model? Consider The task at hand Risk management Quality / cost control Predictability Visibility of progress Customer involvement and feedback Aim for good, fast, and cheap. But you can't have all three at the same time.

Model category matrix Rate each model 1-5 in each of the categories shown: Risk Visibility code-and-fix waterfall spiral staged delivery 37 Risk mgmt. of progress Customer involvement 1 1 1 3 2 2 4 3 1 2 5 5 3 3 3 evolutionary prototyping 3 3 2 5 5 3 5 3 3 4 Quality/ Predict- cost ctrl. ability design-toschedule 4 3 5 3 2

What s the best SW dev model? A system to control anti-lock braking in a car A hospital accounting system that replaces an existing system An interactive system that allows airline passengers to quickly find replacement flight times (for missed or bumped reservations) from terminals installed at airports