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



Similar documents
Unit I. Introduction

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

Classical Software Life Cycle Models

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

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

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

Software Development Life Cycle (SDLC)

Unit 1 Learning Objectives

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

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

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

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

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

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

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

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

Software Engineering. What is a system?

SOFTWARE PROCESS MODELS

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

Software Development Life Cycle

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

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

Software Process and Models

Agile Processes and Methodologies: A Conceptual Study

How To Model Software Development Life Cycle Models

How To Write An Slcm Project Plan

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

A Capability Maturity Model (CMM)

Elite: A New Component-Based Software Development Model

CS4507 Advanced Software Engineering

Software Process Models. Xin Feng

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

Software Project Models

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

COMP 354 Introduction to Software Engineering

How To Design An Information System

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

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

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

The Software Life Cycle. CSE 308: Software Engineering

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

Managing TM1 Projects

Plan-Driven Methodologies

CSE 435 Software Engineering. Sept 16, 2015

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

Higher National Unit specification. General information. Software Development: Analysis and Design (SCQF level 7) Unit code: HA4C 34.

(Refer Slide Time: 01:52)

Chapter 2 Software Processes

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

Lecture 3 Software Development Processes

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

IT3205: Fundamentals of Software Engineering (Compulsory)

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

International Journal of Advance Research in Computer Science and Management Studies

A Review of an MVC Framework based Software Development

Modelli di sviluppo software. Enrico Giunchiglia

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

Web Application Development Process

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

Software Development Life Cycle at SSPL. An Summary of Methodologies We Offer

Umbrella: A New Component-Based Software Development Model

What is Software? The Software Development Process. Definition of Software. Why Software?

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

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

IT4304 Rapid Software Development (Optional)

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

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

A Comparison between Five Models of Software Engineering

Development Methodologies

White Paper IT Methodology Overview & Context

Chapter 8 Approaches to System Development

Foundations for Systems Development

Knowledge, Certification, Networking

IV. Software Lifecycles

Software Engineering Reference Framework

Systems Analysis and Design

Chapter 3. Technology review Introduction

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

How To Understand And Understand The Software Development Process In Korea

3C05: Unified Software Development Process

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

Comparison between Agile and Traditional software development methodologies

Chapter 1 The Systems Development Environment

What is a life cycle model?

2.1 The RAD life cycle composes of four stages:

CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT

Agile Methodologies and Its Processes

Software development lifecycle

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

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

Requirements Engineering

ABHINAV NATIONAL MONTHLY REFEREED JOURNAL OF RESEARCH IN SCIENCE & TECHNOLOGY

ASSESSMENT OF SOFTWARE PROCESS MODELS

Software Development Process Models

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

Karunya University Dept. of Information Technology

Information Technology Policy

Surveying and evaluating tools for managing processes for software intensive systems

Transcription:

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

Overview What are methodologies? The methodologies Traditional Incremental Evolutionary Other Conclusions Way Forward

What are methodologies? Development methodologies add structure to the development process Ensure that no important step is missed Oops, we forgot to test Ensure that the customer s input is gathered and applied Coordinate the interaction between developers and between developers and the customer

Methodology Stages Requirements Determine the functional needs of the application Design Translate the requirements into a system specification Implementation Implement the design into a working application

Methodology Stages Testing Verify the correctness of the application Ensure that the application fulfills the requirements Maintenance Bug fixing and application updates Risk Analysis Is the application proceeding acceptable? Should the plug be pulled? Customer Verification Refinement of requirements, design, and implementation

Waterfall * Note that the textbook uses different labels

Waterfall Sequence workflow from project inception to project deployment The classic model of development The project starts with customer communication to gather requirements and ends with delivery of the application0

Waterfall Issues Real projects often break out of the linear progress of this model i.e. the design changes due to implementation problems If multiple developers are not tightly coupled, confusion can result Changes in previous phases can invalid considerable previous work

Waterfall Issues What happens when the customer does not specify the requirements completely? Can the customer know all the requirements a priori? The requirements may change as the customer needs change The requirements may change once the customer sees the end result

Waterfall Issues Customer patience and forethought is required The customer does not see a prototype until the application is done What happens when a small misunderstanding in requirements results in a major difference in the built application?

Towards Incremental Models What happens when the customer kills the project at delivery? How much work is lost? What can be done to mitigate the loss?

Towards Incremental Models By keeping the customer in the loop, a project is less likely to be killed or overhauled before delivery

The Incremental Model The incremental model is iteratively applying the waterfall model Each increment is a partial product, not a prototype It contains more functionality than the previous increment, but builds on the previous increment i.e. for a word processor, increment 1 is the core infrastructure, increment 2 is file management, increment 3 is basic editing, etc Increments progresses in parallel, with the product delivery of one increment feeding into the design phase of the next

Incremental Model

Incremental Model This model provides the customer with early feedback, allowing alterations of project to occur with limited impact Each increment is a functionally more complete version of the product Still requires extensive design and planning to order what features go first

Assembly or RAD Model If a system can be decomposed into modular parts, those parts can be independently developed By allowing simultaneous development, the product can be built faster Potentially, the built components can be reused in future projects

RAD Model

RAD Model Design must be more rigorous Coordinate the different sub-components If modularization is not possible, the application will fail More manpower More testing Performance tuning is more difficult

Towards Evolutionary Models Incremental models build up an application by a function at a time Evolutionary models build up an application through iterative complete cycles. Each cycle is a rough-cut of the end application. These rough-cuts are prototypes. Evolutionary systems are grown How many evolutions? What is done? Adding complexity

The Spiral Model The spiral model builds up successive prototypes Each iteration ends with a milestone prototype The prototype is used to determine what gaps remain The prototype is also used for risk analysis

The Spiral Model Each iteration has five stages Requirements Design Implementation Deployment Risk Analysis At the end of each milestone, a prototype is created At an arbitrary point, when the developers and customers agree, a prototype is blessed as the shipping version

The Spiral Model What happens when the developer and customer bless an unready prototype as the shipping version? Requirements may not be as complete The customer has opportunities to add detail later If no major changes are made, the process results in a longer development time than the classic model

The Spiral Model

Extreme Programming Adding process to the spiral model Start with the customer and gather requirements Developers take each discrete requirement and estimate its time to completion

Extreme Programming A spiral milestone lasts a fixed period A set of requirements are chosen by the customer that will not exceed the milestone period At the end of the milestone, the customer can add new requirements Requirements are triaged by the developers, estimating the amount of time each new requirement will take The next spiral starts

Extreme Programming The developers decide how long it will take The customer gets to explicitly prioritize the requirements XP is agile, it will react well to change The process requires buy-in from the customer If the customer is not engaged, the process will not work

Other Models of Development Component-Oriented Similar to RAD, assemble COTS products into an application, adding new components and glue code where needed Aspect-Oriented Alter existing components via Aspect Oriented Programming The Unified Process Another incremental process

Conclusions Traditional models Definite and defined Ability to estimate when the product will be finished, wellknown costing models Does not react well to change Incremental models Less definite, but react better to change between increments Evolutionary No certainty as to when the product will be finished Allow changes to occur between prototypes

Conclusions Always have a methodology Coordinate developer activities Ensure that each stage is addressed Ensure that the customer is engaged There is no right methodology There are always trade-offs

Way Forward Agile Try to allow more adaptation to changes Development techniques i.e. Component Oriented Software Development Try to transition other people s efforts into your product Development tools i.e. UML, bug trackers Work smarter, tools help you coordinate intent Reading Pages 45-71