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



Similar documents
Unit I. Introduction

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

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

Software Development Life Cycle (SDLC)

Software Project Models

A Comparison between Five Models of Software Engineering

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

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

Software development lifecycle

LECTURE 1. SYSTEMS DEVELOPMENT

Modelli di sviluppo software. Enrico Giunchiglia

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

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

A Capability Maturity Model (CMM)

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

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

ASSESSMENT OF SOFTWARE PROCESS MODELS

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

Software Engineering. What is a system?

Software Development Life Cycle

A Comparison Between Five Models Of Software Engineering

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

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

How To Model Software Development Life Cycle Models

An Assessment between Software Development Life Cycle Models of Software Engineering

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

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

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

Alternative Development Methodologies

Software Development Methodologies

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

Software Development Processes. Software Life-Cycle Models

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

Software Process for QA

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

SOFTWARE PROCESS MODELS

How To Understand The Software Process

Object-Oriented and Classical Software Engineering

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

Software Development Process

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

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

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

ABHINAV NATIONAL MONTHLY REFEREED JOURNAL OF RESEARCH IN SCIENCE & TECHNOLOGY

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

(Refer Slide Time: 01:52)

Software Life Cycle Processes

11.1 What is Project Management? Object-Oriented Software Engineering Practical Software Development using UML and Java. What is Project Management?

PROJECT MANAGEMENT PLAN Outline VERSION 0.0 STATUS: OUTLINE DATE:

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

Proposal: Application of Agile Software Development Process in xlpr ORNL- 2012/41412 November 2012

Lecture 3 Software Development Processes

Foundations of software engineering

SWEBOK Certification Program. Software Engineering Management

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

10 Keys to Successful Software Projects: An Executive Guide

Problems that haven t happened yet Why is it hard? Some are wary of bearing bad news. Define a strategy early in your project

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

Chapter 1: Introduction to Rapid Application Development (RAD) 1. Introductions

COMP 354 Introduction to Software Engineering

Managing TM1 Projects

Selecting a Software Development Methodology based on. Organizational Characteristics. Adrienne Farrell

Software Development Process Models

Software Process Models. Xin Feng

Introducing Agility into a Phase Gate Process

Software Development Life Cycle & Process Models

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Unit 1 Learning Objectives

The Spiral development model is a risk-driven process model generator. It

Software Life Cycle Models

Supporting Workflow Overview. CSC532 Fall06

A Comparative Study of Different Software Development Life Cycle Models in Different Scenarios

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

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

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 Projects 7. Agile Project Management 21

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

3C05: Unified Software Development Process

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

Outline. The Spiral Model of Software Development and Enhancement. A Risk-Driven Approach. Software Process Model. Code & Fix

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Chakra Vs Spiral Model - A Practical Approach

A Survey of Software Development Process Models in Software Engineering

Development Methodologies Compared

Keywords Software Engineering, Software cost, Universal models. Agile model, feature of software projects.

PROJECT RISK MANAGEMENT

How To Design An Information System

General Problem Solving Model. Software Development Methodology. Chapter 2A

Overview. Software engineering and the design process for interactive systems. Standards and guidelines as design rules

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

Evolving a Ultra-Flow Software Development Life Cycle Model

CS4507 Advanced Software Engineering

Agile Software Development

Christina Wallin ABB Corporate Research Department of Industrial IT Västerås +46 (0)

Transcription:

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

Software Life Cycle Models Every program (no matter what size) has several distinct phases that occur in its development Requirements (what) Design (how) Coding (how) Testing Release Maintenance/Evolution (change)

Software Life Cycle Models Every life cycle model is a variation on two fundamental types Do each phase in order Do a complete life cycle, release, then start again

Software Life Cycle Models The software life cycle describes the sequence in which all major activities will occur May cover from concept development to product retirement May include planning, reviews, documentation, and baselines Decision points between activities

Code and Fix Model In other words, the lack of any SLC model lack of formal SE process No formal requirements, documentation, QA, testing, etc. Works okay for quick, disposable tasks (e.g. proof of concept) - no maintenance Works well for single person projects VERY DANGEROUS model for anything larger

Code and Fix Model

Waterfall Model One of the first models to be developed at the dawn of SE Covers all major software development activities Based on an assembly-line mentality Assumption is you finish phase N - 1 before proceeding to phase N Little or no communication among life cycle phases

Waterfall Model Originated from the manufacturing and construction industries Highly structured physical environments in which after-thefact changes are prohibitively costly (if not impossible). Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adopted for software development. It turns out that software is different from other products small changes are almost free (debugging and recompiling) even major changes

Properties of Waterfall Model Works well for: Known requirements AND known technologies Weak or inexperienced staff (lots of structure) High quality requirements (must have!) Problems: Very rigid if used without modification For the majority of projects, it is nearly impossible to define requirements adequately to make Waterfall work Few signs of ongoing progress (easy to fall behind) In practice, unmodified waterfall is almost never used but it s useful as a starting point to describe models

Waterfall Model

Waterfall With Subprojects After Requirements and Architectural Design of project, break out next 3 phases [Detailed Design, Coding, and Unit Testing] for several subprojects Then integrate the whole system and do complete system testing for a single release of the product Pros include faster development of known tasks, and possibly better use of resources Cons include unforeseen dependencies between subprojects You re much more likely to see this than classic waterfall

Waterfall With Subprojects

Waterfall With Feedback Take the phases of a classic waterfall and add explicit feedback loops. Recognizes that you have to start work with incomplete requirements, design, tests, etc. You will have to go back and do re-work Problems: Much more difficult to establish schedule & benchmarks When is product complete (when to stop)?

Waterfall With Feedback

Staged Delivery Also known as: Rapid Application Development (RAD) Like Waterfall model for Requirements Analysis and Architectural Design; then [Design, Code, Test, and Deliver] the product in stages Project defined from the start and is delivered in stages, based on feature priorities Increases chance of getting key features into product Key idea: overlapping stages makes for more efficient division of labor on team

Staged Delivery (RAD)

Spiral LCM First incremental delivery model. Focuses on addressing major risk areas for a project (requirements, architecture, etc.) Each mini-project addresses one or more risk areas, then start the next mini-project think of a cinnamon roll

Spiral LCM Each mini-project has four steps: 1) Determine objectives, alternatives, and constraints for this mini-project 2) Identify and resolve risks 3) develop products/deliverables and test 4) plan for next iteration

Spiral LCM Risks: a potential problem that may affect the project, its timing and/or its budget lawsuits equipment failure buggy release inadequate performance/quality Risks may be classified during Requirements Analysis as low, medium or high Risk Exposure: (probability of risk) (cost of occurrence) Team should address areas of highest risk exposure first

Spiral LCM

Spiral LCM Pros: Handles risk very well Cons: Very complicated Hard to define and resolve many mini-projects Hard to stay focused on overall project goals

Evolutionary Prototyping (aka Incremental Prototyping) Develop visible parts of system first, then work on the rest of the system, prioritizing requirements as you get them Keep refining the prototype until customer accepts it as the final product Good for changing requirements, or a poorly understood application area

Evolutionary Prototyping Very hard to plan full project from the start Risky, but has good track record Pros: improved progress visibility, good customer and end user input to requirements Cons: danger of unrealistic schedule, budget, and progress expectations possibility of bad design low maintainability may have lots of re-work

Evolutionary Prototyping

Design-To-Schedule The usual Requirements Analysis and Architectural Design; then do stages of [design, code, and fully test] until time or money runs out. Then deliver product. Good for non-critical portions of product. Put highest priority features in first stages. Usually done when you ve got a hard deadline Needs very good schedule estimates to succeed

Design-To-Schedule

Evolutionary Delivery Cross between Evolutionary Prototyping and Staged Delivery Draft initial Requirements Analysis and Architectural Design do { Prioritize the features Develop the product within a fixed timeframe Deliver it to the customer, receive feedback to modify requirements } while ( needed ); Deliver final version when customer is happy.

Evolutionary Delivery Pros: good project visibility reduced risk strong customer interaction with requirements definition Cons: reduced project control may result in feature creep or unrealistic estimates This is the way many software products are developed (e.g. OS s, embedded systems,...)

Evolutionary Delivery

Extreme Programming A relatively new lightweight model (meaning less documentation and fewer process controls) Useful for small teams (up to 20 developers; 10-12 is optimal) Main focus: customer satisfaction Relies on: Heavy customer involvement Continuous Unit Testing and reviews Pair Programming Short release cycles and frequent releases

How to Choose a Life Cycle? Questions to consider: How well known and stable are your requirements? How big is the project? (How many features?) How well known and stable is your architecture? What are your reliability needs? Will there be many versions of your product? How much risk do you expect?

How to Choose a Life Cycle? Questions to consider (continued): How constrained is the schedule? (drop-dead date?) Will midcourse corrections be likely? Does the customer need visible progress? Does your management need visible progress? How sophisticated is your team with respect to the life cycle you pick? How big is your team?

How to Choose a Life Cycle? See table 7.1 in section 7.11 of McConnell s Rapid Development, 3/e (available on Safari) Some guidelines: High Risk, Big Budget: Spiral Legacy system or well-defined reqs: Waterfall, or one of the Waterfall variants Visible Progress needed, working model needed quickly, features can be added later: Staged Delivery Hard Deadline (can t be extended): Design-To-Schedule

How to Choose a Life Cycle? More guidelines: Lots of changes probable, or requirements not well understood: Evolutionary Prototyping or Evolutionary Delivery My favorite (not that my opinion matters a great deal ): Evolutionary Delivery important consideration: skills and experience of team members

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