The Software Lifecycle. Software Lifecycles



Similar documents
Software Process for QA

2. Analysis, Design and Implementation

2. Analysis, Design and Implementation

Software Life Cycle Processes

(Refer Slide Time: 01:52)

Software Development: The Waterfall Model

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Chapter 8 Approaches to System Development

What is a life cycle model?

VAIL-Plant Asset Integrity Management System. Software Development Process

Software Project Models

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

Software Life-Cycle. Series of steps through which software product progresses. A life-cycle is selected during requirement Phase

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

Software Development Processes. Software Life-Cycle Models

JOURNAL OF OBJECT TECHNOLOGY

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

IV. Software Lifecycles

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

Software Development Process

Requirements Management

COURSE CODE : 4072 COURSE CATEGORY : A PERIODS / WEEK : 4 PERIODS / SEMESTER : 72 CREDITS : 4

Software Life Cycle. Management of what to do in what order

Time Monitoring Tool Software Development Plan. Version <1.1>

Waterfall vs. Agile Methodology

SOFTWARE DEVELOPMENT PLAN

In this Lecture you will Learn: Systems Development Methodologies. Why Methodology? Why Methodology?

Development Methodologies

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

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

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

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

Software Process Models. Xin Feng

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

How To Design An Information System

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

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

SOFTWARE ENGINEERING INTERVIEW QUESTIONS

Listening to the Customer s Voice 1

Chakra Vs Spiral Model - A Practical Approach

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

Software Requirements, Third Edition

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

Chapter 13: Program Development and Programming Languages

How To Model Software Development Life Cycle Models

Object Oriented Programming. Risk Management

11 Tips to make the requirements definition process more effective and results more usable

DEVELOPING REQUIREMENTS FOR DATA WAREHOUSE SYSTEMS WITH USE CASES

TECH. Requirements. Why are requirements important? The Requirements Process REQUIREMENTS ELICITATION AND ANALYSIS. Requirements vs.

CS 6361, SPRING 2010 Advanced Requirements Engineering Web Based Meeting Scheduler- Project Plan

Benefits of Test Automation for Agile Testing

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

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

Project management. Organizing, planning and scheduling software projects

Software Engineering. What is a system?

SOFTWARE PROCESS MODELS

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

Process for Sales Projection Process Documentation Template: Description Sales Projection (Sales Forecasting) Process

Software Development Life Cycle

The Software Development Life Cycle (SDLC)

A Survey of Software Development Process Models in Software Engineering

The So5ware Development Process (SDLC)

Software Process and Models

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

SharePoint Project Management: The Key to Successful User Adoption

A comparison of BON and Hodge-Mock. oriented software development methodologies

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

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

How era Develops Software

Introduction. Introduction. Software Engineering. Software Engineering. Software Process. Department of Computer Science 1

Building Software in an Agile Manner

Sample Exam Syllabus

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

Software Life Cycles and Configuration Management

Carnegie Mellon University Master of Science in Information Technology Software Engineering (MSIT-SE) MSIT Project (17-677) Approval Form

Automated Module Testing of Embedded Software Systems

Software Development Methodologies in Industry. By: Ahmad Deeb

PROJECT MANAGEMENT METHODOLOGY OF OBJECT- ORIENTED SOFTWARE DEVELOPMENT

The Rap on RUP : An Introduction to the Rational Unified Process

Project management. Organizing, planning and scheduling software projects. Objectives. Chapter 3. Chapter 3 Project Management. Learning Objective

Research on Risk Analysis and Management in the Software Development Process. Quanzhou Huang

System Development Life Cycle Guide

Software Project Management Plan (SPMP)

How To Write An Slcm Project Plan

Chapter 3. Technology review Introduction

So You Want To Be a Requirements Analyst? 1

Classical Software Life Cycle Models

IT2404 Systems Analysis and Design (Compulsory)

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

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

How To Develop Software

Unit 1 Learning Objectives

How To Understand The Business Analysis Lifecycle

Karunya University Dept. of Information Technology

Total Quality Management (TQM) Quality, Success and Failure. Total Quality Management (TQM) vs. Process Reengineering (BPR)

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Transcription:

The Software Lifecycle Examining the phases of large-scale software development projects Jeff Stephenson Software Lifecycles Software Engineering vs. Programming What you have done for our past assignments is mostly programming -- (write a method to do this, etc.) Programming is only one part of creating a software system An incredibly important part!!! In real systems, a smaller part than you would imagine. For real systems, there is a lot of work to be done both before programming and afterwards. 1

Software Lifecycles Adopting an engineering approach to software development means taking a holistic view. A software system has a lifecycle. Extending from the conception of the idea (hey, wouldn t it be great if..) Until the system is no longer needed (always longer than the engineers anticipated -- Y2K bugs, etc). Software Engineering addresses all of the parts of the lifecycle. Software Lifecycles Software projects need to be planned! (obviously) We ll want to follow a process for developing software. Each published process for software development assumes a certain lifecycle for a proposed project. The process will take the project through a series of phases according to a lifecycle model. 2

Waterfall Model This is one type of lifecycle model. Each phase is completed before moving on to the next phase. Requirements Design/Specification Implementation Verification Maintenance Requirements Elicitation and Analysis System Design and Specification Implementation (coding) Verification (Testing) Maintenance Requirements Elicitation and Analysis Step 1: Requirements Elicitation/Analysis The initial step of the process is defining (in as precise terms as possible) what problems the user needs the proposed system to solve. The focus is on the PROBLEM, not the system. You should not worry about the constraints of technology (or your skill) when establishing the user requirements. 3

Requirements Elicitation and Analysis Step 1: Requirements Elicitation/Analysis (2) The fundamental challenge of this stage is gaining an understanding of what the user truly wants. Natural language descriptions are ambiguous, and users often operate on a different set of assumptions than developers. Often, software engineers employ techniques such as: Over the Shoulder Requirements Gathering Use Cases/Scenarios Prototypes/Mock-ups Requirements Elicitation and Analysis Step 1: Requirements Elicitation/Analysis (3) The deliverable of this phase is a document specifically describing the user requirements that the system must satisfy (SRS). Traditionally, both the customer and the development team sign off on this document. Errors at this stage are the most costly to fix (such as omitted requirements or misunderstood requirements). Approx. 10% of total project time, and 5% of project cost expended during this phase (as high as 20% of time). 4

System Design and Specification Step 2: Design and Specification We now know WHAT the system will do, but HOW will it be done? In this phase we will describe the software architecture that we will later build. We will most likely use both textual and graphical notations that correspond with a design methodology. System Design and Specification Step 2: Design and Specification (2) Structured Design (Flow Charts, Data Flow Diagrams) Entity-Relationship Diagrams (Data Driven) Object Oriented Design (Object Models, Class Diagrams, UML) Show the classes to be created What services (methods) each class will offer. The relationship between classes (inheritance trees, association diagrams). We may also use formal specification languages to specifically describe the behavior of the system and prove properties about 5

System Design and Specification Step 2: Design and Specification (3) We may also use formal specification languages to specifically describe the behavior of the system These languages are mathematically based and are often used when you need to prove some invariant of the system (such as Our system will never deadlock ). Examples of formal languages include: Z (based on set theory) CSP (specifically for concurrent systems). NP (used along with a formal model checking program) System Design and Specification Step 2: Design and Specification (4) Errors at this stage are also very expensive to fix and a lot of effort is put into verifying designs (with CASE tools, etc). Poor designs often lead to maintenance nightmares, and band-aided systems. Typically around 30% of project time, and 20% of project cost will be expended in this phase. The deliverable of this phase is a document which describes the software architecture of the proposed system in detail (SDD, etc.). 6

Implementation Step 3: Implementing the System This part involves translating each of the modules described in the system design into functioning code. 90% of a typical computer science education focuses solely on this phase Implementation is made much easier if your choice of language supports your design methodology. You won t have an easy time implementing an object-oriented design in a non-object-oriented language! Typically, 30% of project time and 35% of project cost expended in this phase. Verification Step 4: Testing the System This part results from a larger concern of quality assurance. Several levels of testing occur. Unit Testing -- Testing each module to see that it functions as specified Integration Testing -- Testing the integration of several modules System Testing -- Testing that the system meets the user requirements!!! Typically, 30% of project time and 40% of project cost expended in this phase. (Yes, that is a huge amount.) 7

Maintenance Step 5: Maintaining the System So, you have delivered the system. Congratulations! However, in most cases, you are nowhere near finished. Customers are good testers, and their needs change over time. You may perform three types of maintenance: Perfective Maintenance (improving the quality over time without changing functionality). Adaptive Maintenance (changing the system to react to changing environments). Corrective Maintenance (correcting errors found in the system). Maintenance Step 5: Maintaining the System (2) Depending on the project, maintenance costs can rise far above the original cost of developing the system. IT systems for large companies (HR systems, Traveler s Insurance Claim-Agent system, POS systems, etc) require large amounts of maintenance. Maintenance for commercial products (like Microsoft Word, etc) is often rolled into a new release. The future maintenance needs of a system should be a major concern during system design and development. 8

Software Lifecycles Now you have seen the phases that most largescale software projects go through. What do you think are the problems with using the waterfall model of a software lifecycle? (: no looking ahead :) Software Lifecycles The waterfall model was used for many years, and has proven to be a terrible model for software development. Reason 1: All of the planning and design is done at the beginning of the project. The problem is that during a two-year project (or even a twomonth project) user requirements often change. In the middle of development, a customer is likely to say we don t need that any more, what we would really like is this. This will happen! And the waterfall model has no way to deal with this problem. 9

Software Lifecycles Reason 2: All of the testing is at the end of the project. A scenario: One entire year is spent coding a new system for a new target platform. At the end of the implementation phase, the work of 10 developers is combined to form a system with 500,000 lines of code. This code is largely untested. Result: CHAOS. Even good developers create bugs, and combining code with other people always causes unanticipated bugs. Debugging 500,000 lines of untested code is a nightmare that may never end. There are tons of case studies of large software systems that get to this stage and are cancelled or restarted from scratch. Software Lifecycles Thus, we can t realistically save all of the testing until the end, and we also need to revisit the requirements and design phases throughout the product. 10

Software Lifecycles A number of software lifecycle models have been introduced to deal with this problem Prototyping Iterative Development Spiral Model In each of these models, you cycle through multiple iterations of requirements gathering, design, implementation and testing. Like several instances of the waterfall model! 11