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



Similar documents
CS4507 Advanced Software Engineering

Software Development Life Cycle (SDLC)

Advanced Software Engineering. Software Development Processes

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

Vragen. Software development model. Software development model. Software development model

COMP 354 Introduction to Software Engineering

How To Understand The Software Process

Software Engineering. Natallia Kokash N. Kokash, 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.

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Unit 1 Learning Objectives

A Capability Maturity Model (CMM)

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

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

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

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

Agile Projects 7. Agile Project Management 21

Software Development Methodologies

Quality Assurance Software Development Processes

SOFTWARE PROCESS MODELS

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

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

Singhania University, Jhunjhunu, Rajasthan, India. 2 Department of Information Technology King Abdul Aziz University, Jeddah, Saudi Arabia

System development lifecycle waterfall model

Development Methodologies

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

Chapter 2 Software Processes

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

Software Development Process

How To Understand The Limitations Of An Agile Software Development

Introduction to Agile Software Development

Hamid Faridani March 2011

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Software Engineering

A Comparison between Five Models of Software Engineering

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

Software Process and Models

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

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Agile project management: A magic bullet?

AGILE vs. WATERFALL METHODOLOGIES

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

Elite: A New Component-Based Software Development Model

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

Basic Trends of Modern Software Development

Comparison between Agile and Traditional software development methodologies

Agile So)ware Development

COMPARATIVE STUDY ON SOFTWARE PROJECT MANAGEMENT MODELS

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

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

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

ABHINAV NATIONAL MONTHLY REFEREED JOURNAL OF RESEARCH IN SCIENCE & TECHNOLOGY

Plan-Driven Methodologies

Classical Software Life Cycle Models

Development models. 1 Introduction. 2 Analyzing development models. R. Kuiper and E.J. Luit

Software Life Cycles and Configuration Management

CSE 435 Software Engineering. Sept 16, 2015

Agile and the role of the business analyst

Software processes that are:

A Comparison Between Five Models Of Software Engineering

Development Methodologies. Types of Methodologies. Example Methodologies. Dr. James A. Bednar. Dr. David Robertson

AGILE SOFTWARE DEVELOPMENT. BY Sysop Technology Aurangabad

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

Applying Agile Methods in Rapidly Changing Environments

An Assessment between Software Development Life Cycle Models of Software Engineering

ASSESSMENT OF SOFTWARE PROCESS MODELS

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

Web Application Development Process

Software Development Processes. Software Life-Cycle Models

The most suitable system methodology for the proposed system is drawn out.

Software development processes Life-cycle Models

Prototyping and Rapid. Contents. Application Development (RAD) What is RAD. RAD - Background. Definitions Anecdotal advantages! Anecdotal problems!

Agile Software Engineering Practice to Improve Project Success

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

Project Management. Session 3: Planning

RUP for Software Development Projects

Introduction to Software Engineering: Project Management ( Highlights )

Outline. Agile Methods. Converse of Conway s Law. The Silver Bullet Fantasy (Brooks, 1986)

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

Génie Logiciel et Gestion de Projets. Software Processes Focus on Extreme Programming

Whitepaper. Agile Methodology: An Airline Business Case YOUR SUCCESS IS OUR FOCUS. Published on: Jun-09 Author: Ramesh & Lakshmi Narasimhan

Rapid Software Development

6 Contracts and Scenarios in the Software Development Process

Basic Unified Process: A Process for Small and Agile Projects

Requirement Management with the Rational Unified Process RUP practices to support Business Analyst s activities and links with BABoK

Software Engineering. What is a system?

Software Project Management using an Iterative Lifecycle Model

A Comparison of SOA Methodologies Analysis & Design Phases

Atern The latest version of the DSDM approach which makes DSDM appropriate to all types of project.

Software Engineering Reference Framework

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

A Comprehensive Study of Commonly Practiced Heavy & Light Weight Software Methodologies

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

Information Systems Development Process (Software Development Life Cycle)

WHY THE WATERFALL MODEL DOESN T WORK

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

CHAPTER 02 SOFTWARE LIFE-CYCLE MODELS

Transcription:

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

Not this life cycle SE, Software Lifecycle, Hans van Vliet, 2008 2

Introduction software development projects are large and complex a phased approach to control it is necessary traditional models are document-driven: there is a new pile of paper after each phase is completed evolutionary models recognize that much of what is called maintenance is inevitable latest fashion: agile methods, extreme Programming, Model Driven Development life cycle models can be explicitly modeled, in a process modeling language SE, Software Lifecycle, Hans van Vliet, 2008 3

Simple life cycle model problem requirements engineering reqs specification design design implementation system testing working system maintenance SE, Software Lifecycle, Hans van Vliet, 2008 4

Point to ponder #1 Is this really how we go develop software? SE, Software Lifecycle, Hans van Vliet, 2008 5

Simple Life Cycle Model document driven, planning driven, heavyweight milestones are reached if the appropriate documentation is delivered (e.g., requirements specification, design specification, program, test document) much planning upfront, often heavy contracts are signed problems feedback is not taken into account maintenance does not imply evolution SE, Software Lifecycle, Hans van Vliet, 2008 6

Waterfall Model reqs engineering V & V design V & V implementation V & V testing V & V maintenance V & V SE, Software Lifecycle, Hans van Vliet, 2008 7

Another waterfall model testing feedback implementation design requirements engineering SE, Software Lifecycle, Hans van Vliet, 2008 8

V-Model reqs eng acceptance testing global design integration testing det. design unit testing coding SE, Software Lifecycle, Hans van Vliet, 2008 9

Waterfall Model (cntd) includes iteration and feedback validation (are we building the right system?) and verification (are we building the system right?) after each step user requirements are fixed as early as possible problems too rigid developers cannot move between various abstraction levels But developers typically do (coding vs. domain) SE, Software Lifecycle, Hans van Vliet, 2008 10

Activity versus phase (1988) Phase Activity Design Implementation Integration testing Acceptance testing Integration testing 4.7 43.4 26.1 25.8 Implementation (& unit testing) 6.9 70.3 15.9 6.9 Design 49.2 34.1 10.3 6.4 SE, Software Lifecycle, Hans van Vliet, 2008 11

Lightweight (agile) approaches prototyping incremental development RAD, DSDM XP SE, Software Lifecycle, Hans van Vliet, 2008 12

The Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan SE, Software Lifecycle, Hans van Vliet, 2008 13

Prototyping requirements elicitation is difficult software is developed because the present situation is unsatisfactory however, the desirable new situation is as yet unknown prototyping is used to obtain the requirements of some aspects of the system prototyping should be a relatively cheap process use rapid prototyping languages and tools not all functionality needs to be implemented production quality is not required SE, Software Lifecycle, Hans van Vliet, 2008 14

Prototyping as a tool for requirements engineering reqs engineering design design implementation implementation testing testing maintenance SE, Software Lifecycle, Hans van Vliet, 2008 15

Prototyping (cntd) throwaway prototyping: the n-th prototype is followed by a waterfall-like process (as depicted on previous slide) evolutionary prototyping: the nth prototype is delivered phases inside the iteration may collapse SE, Software Lifecycle, Hans van Vliet, 2008 16

Point to ponder #2 What are the pros and cons of the two approaches? SE, Software Lifecycle, Hans van Vliet, 2008 17

Prototyping, advantages The resulting system is easier to use User needs are better accommodated The resulting system has fewer features Problems are detected earlier The design is of higher quality (throwaway) The resulting system is easier to maintain (dito) The development incurs less effort SE, Software Lifecycle, Hans van Vliet, 2008 18

Prototyping, disadvantages The resulting system has more features The performance of the resulting system is worse The design is of less quality (evolutionary) The resulting system is harder to maintain (dito) The prototyping approach requires more experienced team members SE, Software Lifecycle, Hans van Vliet, 2008 19

Prototyping, recommendations the users and the designers must be well aware of the issues and the pitfalls use prototyping when the requirements are unclear prototyping needs to be planned and controlled as well (choosing right amount of work is hard) SE, Software Lifecycle, Hans van Vliet, 2008 20

Various kinds of prototype demonstration prototype clarify/validate user requirements demonstrate features decision prototype choosing between alternatives implementation decisions through partial implementation. educational prototype explore new technology. clarify questions about tools SE, Software Lifecycle, Hans van Vliet, 2008 21

Final details on prototyping Prototype is reference implementation (back-toback-testing) In 1984, Boehm proved Boehm s law: ``Prototyping (significantly) reduces requirement and design errors, especially for user interfaces. No deployment of prototypes; contrast with incremental development. SE, Software Lifecycle, Hans van Vliet, 2008 22

Incremental Development a software system is delivered in small increments, thereby avoiding the Big Bang effect the waterfall model is employed in each phase the user is closely involved in directing the next steps incremental development prevents overfunctionality SE, Software Lifecycle, Hans van Vliet, 2008 23

RAD: Rapid Application Development evolutionary development, with time boxes: fixed time frames within which activities are done; time frame is decided upon first, then one tries to realize as much as possible within that time frame; requirements prioritization through a triage; typically uses MoSCoW development in a SWAT team: Skilled Workers with Advanced Tools SE, Software Lifecycle, Hans van Vliet, 2008 24

DSDM Dynamic Systems Development Method, #1 RAD framework in UK Fundamental idea: fix time and resources (timebox), adjust functionality accordingly One needs to be a member of the (non-profit) DSDM consortium SE, Software Lifecycle, Hans van Vliet, 2008 25

DSDM phases Feasibility: delivers feasibility report and outline plan, optionally fast prototype (few weeks) Business study: analyze characteristics of business and technology (in workshops), delivers a.o. System Architecture Definition Functional model iteration: timeboxed iterative, incremental phase, yields requirements, prototypes, major components Design and build iteration Implementation (deployment): transfer to production environment SE, Software Lifecycle, Hans van Vliet, 2008 26

DSDM practices Active user involvement is imperative Teams empowered to make decisions Acceptance determined by fitness for business purpose Iterative, incremental development Frequent delivery of products All changes are reversible Requirements baselined at high level Testing integrated in life cycle Collaborative, cooperative approach shared by all stakeholders is essential SE, Software Lifecycle, Hans van Vliet, 2008 27

XP extreme Programming Everything is done in small iterations The system always compiles, always runs Client as the center of development team Developers have same responsibility w.r.t. software and methodology SE, Software Lifecycle, Hans van Vliet, 2008 28

Practices of XP Whole team: client part of the team Keep it simple: don t design for later Small deltas (e.g. 2 weeks) Customer tests Pair programming Social context: small team, all in one room Test-driven development: tests developed first Design improvement (refactoring) Collective code ownership Continuous integration: system always runs Sustainable pace: no overtime Coding standards SE, Software Lifecycle, Hans van Vliet, 2008 29

RUP Rational Unified Process Complement to UML (Unified Modeling Language) Iterative approach for object-oriented systems, strongly embraces use cases for modeling requirements Tool-supported (UML-tools, ClearCase) SE, Software Lifecycle, Hans van Vliet, 2008 30

RUP phases Inception: establish scope, boundaries, critical use cases, candidate architectures, schedule and cost estimates Elaboration: foundation of architecture, establish tool support, get all use cases Construction: manufacturing process, one or more releases Transition: release to user community, often several releases SE, Software Lifecycle, Hans van Vliet, 2008 31

Two-dimensional process structure of RUP SE, Software Lifecycle, Hans van Vliet, 2008 32

Differences for developers Agile: knowledgeable, collocated, collaborative, domain knowledge already present Heavyweight: plan-driven, adequate skills, access to external knowledge SE, Software Lifecycle, Hans van Vliet, 2008 33

Differences for customers Agile: dedicated, knowledgeable, collocated, collaborative, representative, empowered, no heavy contracts Heavyweight: access to knowledgeable, collaborative, representative, empowered customers, bureaucratic SE, Software Lifecycle, Hans van Vliet, 2008 34

Differences for requirements Agile: largely emergent, rapid change, hard to base contracts upon Heavyweight: knowable early, largely stable, easier to base contracts upon SE, Software Lifecycle, Hans van Vliet, 2008 35

Differences for architecture Agile: designed for current requirements Heavyweight: designed for current and foreseeable requirements SE, Software Lifecycle, Hans van Vliet, 2008 36

Differences for size Agile: smaller teams and products Heavyweight: larger teams and products SE, Software Lifecycle, Hans van Vliet, 2008 37

Differences for primary objective Agile: rapid value Heavyweight: high assurance (e.g., critical systems) SE, Software Lifecycle, Hans van Vliet, 2008 38

Before Model Driven Architecture (MDA) model implementation code maintenance SE, Software Lifecycle, Hans van Vliet, 2008 39

MDA Model Driven Architecture model maintenance Automatic transformation code SE, Software Lifecycle, Hans van Vliet, 2008 40

Essence of MDA Computation Independent Model (CIM) I.e., the requirement Platform Independent Model (PIM) Functionality without platform dependent details Model transformation and refinement Resulting in a Platform Specific Model (PSM) Includes details of platform, e.g.,.net CIM M-> PIM A-> PSM A-> code Domain specific languages SE, Software Lifecycle, Hans van Vliet, 2008 41

Software development paradigms Waterfall, incremental development are examples of software development paradigms/frameworks. Other examples: parallel development, component based software engineering (CBSE) Software development methods are typically combinations of ingredients of various paradigms. Different domains typically use different methods: web shop versus embedded code for televisions. SE, Software Lifecycle, Hans van Vliet, 2008 42

Examples of paradigms combined Boehm s spiral model: encompasses waterfall, iterative and prototyping, but with a strong focus on risk assessment between iterations. RUP is between agile and document driven Ad hoc: agile development of a web application for physicians with a structured approach to developing some key medical diagnostic technologies used by the application. These might be developed in parallel. SE, Software Lifecycle, Hans van Vliet, 2008 43

Maintenance or Evolution some observations systems are not built from scratch there is time pressure on maintenance some laws of software evolution law of continuing change law of increasing complexity law of self-regulation law of invariant work rate law of decline of quality (unless actively countered) SE, Software Lifecycle, Hans van Vliet, 2008 44

Illustration third law of Software Evolution system attributes time SE, Software Lifecycle, Hans van Vliet, 2008 45

Software Product Lines developers are not inclined to make a maintainable and reusable product, it has additional costs this viewpoint is changed somewhat if the product family is the focus of attention rather than producing a single version of a product two processes result: domain engineering, and application engineering SE, Software Lifecycle, Hans van Vliet, 2008 46

Domain Engineering analyze the domain develop reusable components use these to build the applications typically based on a reference architecture SE, Software Lifecycle, Hans van Vliet, 2008 47

Application engineering develop products from the architecture and the reusable components experiences during development may result in changes to the reusable assets SE, Software Lifecycle, Hans van Vliet, 2008 48

Process modeling we may describe a software-development process, or parts thereof, in the form of a program too. E.g.: function review(document, threshold): boolean; begin prepare-review; hold-review{inout document, out no-of-problems); make-report; return no-of-problems < threshold end review; SE, Software Lifecycle, Hans van Vliet, 2008 49

Petri-net view of the review process from coding code ready hold review code update revised code end next step from management scheduled minutes SE, Software Lifecycle, Hans van Vliet, 2008 50

Purposes of process modeling facilitates understanding and communication by providing a shared view of the process supports management and improvement; it can be used to assign tasks, track progress, and identify trouble spots serves as a basis for automated support (usually not fully automatic) SE, Software Lifecycle, Hans van Vliet, 2008 51

Caveats of process modeling not all aspects of software development can be caught in an algorithm a model is a simplification of reality progression of stages differs from what is actually done some processes (e.g. learning the domain) tend to be ignored no support for transfer across projects SE, Software Lifecycle, Hans van Vliet, 2008 52

Summary Traditional models focus on control of the process There is no one-size-fits-all model; each situation requires its own approach A pure project approach inhibits reuse and maintenance There has been quite some attention for process modeling, and tools based on such process models SE, Software Lifecycle, Hans van Vliet, 2008 53