Note 10: Software Process

Similar documents
Chapter 3 Prescriptive Process Models

03. Perspective Process Models

The Top Thrill Dragster

Introduction to Software Engineering

Software Modeling & Analysis. - Fundamentals of Software Engineering - Software Process Model. Lecturer: JUNBEOM YOO

Lecture 1. In practice, most large systems are developed using a. A software process model is an abstract representation

Software Engineering

Software Processes. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 4 Slide 1

Darshan Institute of Engineering & Technology for Diploma Studies Rajkot Unit-1

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

2009 Spring. Software Modeling & Analysis. - Software Process Model. Lecturer: JUNBEOM YOO

Software Processes. Objectives. Topics covered. The software process. Waterfall model. Generic software process models

Objectives. The software process. Topics covered. Waterfall model. Generic software process models. Software Processes

Topics covered. Software process models Process iteration Process activities The Rational Unified Process Computer-aided software engineering

II. Software Life Cycle. Laurea Triennale in Informatica Corso di Ingegneria del Software I A.A. 2006/2007 Andrea Polini

CMPT 275 Software Engineering

The software process

Pertemuan 2. Software Engineering: The Process

Lectures 2 & 3. Software Processes. Software Engineering, COMP201 Slide 1

Volume 8, No. 1, Jan-Feb 2017 International Journal of Advanced Research in Computer Science RESEARCH PAPER Available Online at

Based on Software Engineering, by Ian Sommerville Coherent sets of activities for specifying, designing, implementing and testing software systems

Software Processes 1

ABHELSINKI UNIVERSITY OF TECHNOLOGY


Selecting Software Development Life Cycles. Adapted from Chapter 4, Futrell

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING Software Engineering Third Year CSE( Sem:I) 2 marks Questions and Answers

CSE 435 Software Engineering. Sept 14, 2015

Software Development Methodologies. CSC 440: Software Engineering Slide #1

Software Processes. CSE-C3610, Software Engineering, 5 cr. Prof. Casper Lassenius

copyright 1996, 2001, 2005 R.S. Pressman & Associates, Inc.

The good news. 34% of software projects succeed. Standish Group, CHAOS Report, 2003

A New Divide & Conquer Software Process Model

Software Development Software Development Activities

Introduction of RUP - The Rational Unified Process

Chapter 3 Software Process Model

Chapter 1. What is Software Engineering. Shari L. Pfleeger Joanne M. Atlee. 4 th Edition

Software Engineering COMP 201

Software development processes: from the waterfall to the Unified Process

Modern Systems Analysis and Design Seventh Edition

Process, Models, Methods, Diagrams Software Development Life Cyles. Part - II

Chapter. Redesigning The Organization With Information Systems

5) A work breakdown structure is a list of tasks broken down to small manageable activities. Answer: TRUE Diff: 2 Page Ref: 42

Chapter 1. Contents. What is Software Engineering 9/9/13. Shari L. Pfleeger Joanne M. Atlee. 4 th Edition

Software Process. Overview

AUTOMATED DEFECT PREVENTION: BEST PRACTICES IN SOFTWARE MANAGEMENT

This tutorial also elaborates on other related methodologies like Agile, RAD and Prototyping.

SDLC AND MODEL SELECTION: A STUDY

SHRI ANGALAMMAN COLLEGE OF ENGINEERING & TECHNOLOGY (An ISO 9001:2008 Certified Institution) SIRUGANOOR,TRICHY

CMSC 435: Software Engineering Section Back to Software. Important: Team Work. More Resources

SDLC Models- A Survey

SWE 211 Software Processes

SE310 Analysis and Design of Software

Information Systems Development

Chapter 1 Systems Development in an Organization Context

Software Engineering

Building Information Systems

Introduction to Software Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 06 09/08/2016

Chapter 3. Information Systems Development. McGraw-Hill/Irwin. Copyright 2007 by The McGraw-Hill Companies, Inc. All rights reserved.

Software Engineering in the Agile World. Table of contents

The Systems Development Lifecycle

7. Model based software architecture

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 11: Managing the Software Process

Software Development Methodologies

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING UNIT-1

SYLLABUS. What is Agility, What is an Agile Process, Agile Process Models.

Rational Unified Process (RUP) in e-business Development

Chapter 13. Building Information Systems

KINGS COLLEGE OF ENGINEERING DEPARTMENT OF INFORMATION TECHNOLOGY QUESTION BANK

Solutions Manual. Object-Oriented Software Engineering. An Agile Unified Methodology. David Kung

Development Process Bennett, McRobb and Farmer 1

Processes. Object Orientated Analysis and Design. Benjamin Kenwright

Introduction to Systems Analysis and Design

Course Organization. Lecture 1/Part 1

Redesigning the Organization with Information Systems

Building Information Systems

A Comparison Between Two Software Engineering Processes, RUP And Waterfall Models

This document describes the overall software development process of microcontroller software during all phases of the Company Name product life cycle.

SE curriculum in CC2001 made by IEEE and ACM: What is Software Engineering?

Objectives. Rapid software development. Topics covered. Rapid software development. Requirements. Characteristics of RAD processes

CSE870, Advanced Software Engineering, Cheng

3. Comparison of Above Described SDLC Models

Object-Oriented & Classical Soft Engineering

Software Life Cycle. Main Topics. Introduction

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

Software development processes: from the waterfall to the Unified Process

Waterfall model is the earliest SDLC approach that was used for software development.

CS350 Lecture 2 Software Dev. Life Cycle. Doo-Hwan Bae

Software Development Methodologies

A Comparative Study on Software Development Life Cycle Models

Major attributes of the Lifecycle. The Systems Development Lifecycle. Project phases. Planning. Design. Analysis

Chapter 1. Contents. 1.1 What is Software Engineering! Solving Problems. Objectives. What is Software Engineering

Softwaretechnik. Lecture 02: Processes. Peter Thiemann SS University of Freiburg, Germany

Software Engineering QUESTION BANK

A Comparative Study of Universally Accepted SDLC Models for Software Development

The Software Life Cycle

9/24/2011 Sof o tw t a w re e P roc o e c s e s s s Mo M d o e d l e s l 1 Wh W a h t t i s i s a Pr P oc o ess s 2 1

Software Engineering

Credit where Credit is Due. Lecture 2: Software Engineering (a review) Goals for this Lecture. What is Software Engineering

Software Engineering Development and Analysis of Life Cycle Models

Transcription:

Computer Science and Software Engineering University of Wisconsin - Platteville Note 10: Software Process Yan Shi Lecture Notes for SE 3330 UW-Platteville Based on Pressman Chapter 2 & 3

Software Process Definition: a framework for the tasks that are required to build high-quality software. Software Process Process Framework Umbrella Activities Framework Activity # 1 Software engineering action # 1.1 Task sets Work tasks Work products Quality assurance points Project milestones

Generic Process Framework Communication communication/collaboration with customers & other stakeholders goal is to figure out requirements Planning Describing tasks, risks, resources, work products and a work schedule Modeling creation of models to clarify requirements and outline the design Construction Coding and testing Deployment delivering the product including customer evaluation

Umbrella Activities Activities applicable across all framework activities: project tracking and control risk management quality assurance formal technical reviews measurement: process, project, product software configuration management reusability management construction methods Although sharing same elements, process models do differ fundamentally!

Process Assessment CMMI (Capability Maturity Model Integration) 5 maturity levels: performed >> managed >> defined >> quantitatively managed >> optimized CMMI appraisal published results

Prescriptive Process Models Prescriptive process models define a distinct set of activities, actions, tasks, milestones and work products that are required to engineer high quality software. They are not perfect. Need to be customized based on different projects.

The Waterfall Model Communication Planning classic life cycle Sequential approach Modeling Construction Deployment

Waterfall Model Advantages Simple and easy to follow. Documentations are produced at each phase. Similar to other engineering process models. Often used when developing software which is part of a larger system engineering project.

Waterfall Model Problems The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. Why? In the waterfall model, one phase has to be complete before moving on to the next phase. Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.

Incremental Model apply waterfall model in iterative fashion

Incremental Model General pattern: identify features; analyze, design, implement those features; repeat with new set of features Typically start with core functionality Often do analysis, design, implementation in parallel (second team can start based on results of first, etc.) Each iteration must provide useful features to customer

Incremental Model Advantages Give customer chances to provide feedback on product before final delivery Help convince customer progress is being made Great when full team might not be available early Handle scheduling problems such as certain types of hardware not being available until very late in the project

divided and assigned to (different) teams The RAD process model communication: establish business problem, requirements planning: must allow for multiple teams working in parallel! modeling: business modeling, data modeling, process modeling construction: make heavy reuse of existing components if there are lots of reuse, testing assumes existing components having been tested already data/process modeling, construction should be doable in the 60-90 day period Deployment (cutover)

The RAD Model The Rapid Application Development model: Is an incremental model Emphasizes a short development cycle High-speed adaption of waterfall model Often uses pre-existing components and automatic code generation Use RAD model when: Well-understood requirements, project scope constrained Goal: fully functional system within 60 to 90 days

RAD Advantages Quick response to new business needs High level of satisfaction for developers: they get things to work quickly Can be applied to larger projects by breaking the project into smaller pieces each of which is done using the RAD model by different teams it must be possible to identify sub modules there must be sufficient human resources

RAD Problems Human resources have to be in place at start of project Both developers and customers must be committed to rapid-fire activities need quick turnaround on decisions Not appropriate when technical risks are high not when new technology plays a major role not when must interface extensively with existing software that is, problem must have tight scope If tuning needs to be done between modules to obtain appropriate performance, not clear when this would be done

Evolutionary(Iterative) Models For products that evolve all the time Iterative models Two major Evolutionary models: Prototyping Spiral

Throwaway Prototyping Often, it is necessary to experiment with a system to determine what exactly is needed or what is the best way to implement it. Prototypes are quick solutions that are intended to be thrown away when done. It is important not to let a prototype be released into production. They were not designed or implemented with the same care that we would exercise for production code.

The Prototyping Model Communication Deployment: Delivery and Feedback Quick Plan Construction of Prototype Modeling: Quick Design Even after iterations, the final prototype is still the first system to be thrown away!

When to Use Prototyping Prototyping is useful when: Customers don t know exactly what they want We want to analyze the usability of an HCI We are not sure if a particular approach to solving a problem will work We have multiple approaches to solving a problem and we want to experiment to see which is better.

Possible Problems with Prototyping Manager and/or customer thinks development is almost done and expects developer to produce full system by making just a few tweaks Must have a "contract" with management acknowledging that system must be rewritten Developer reuses stuff that shouldn't be developer makes expedient choices on tools, algorithms; developer becomes comfortable with those choices, does not re-examine them must record such decisions so know to re-examine them! Turning prototype into product erodes quality and must be resisted

Spiral Model

Variations

Spiral Model It is a risk-driven process model. Each spiral is divided into task regions. Key element of each spiral: evaluate what to do for the next spiral establish scope for work done in next spiral, or decide to revisit previous work, or cancel project Canceling early is better than canceling late!

Spiral Model Advantages Can be applied throughout the life of the software: first circuit: concept development project later circuits: product enhancement project Realistic model for large-scale problems use prototyping as a risk reduction mechanism Build-in plan for revisiting work, etc. reduce risks

Spiral Model Problems Doesn't work well for fixed-budget problems! each spiral is supposed to work off the one before it; can't know the cost of new spiral until old completed Requires risk assessment expertise to identify what to work on first Must convince customers evolutionary approach is manageable less of a track record note this is an issue for all evolutionary models!

Unified Process History: Object Oriented programming methods (OO) Unified Modeling Language (UML) Unified Process (UP) Unifies Process is a framework for objectoriented software engineering using UML. The process is use-case driven. The process is incremental and iterative.

Four Phases of Unified Process Inception Communication Planning Elaboration Modeling Construction Construction Transition Deployment

Disciplines Involved in Each Phase

Inception Identify preliminary use cases Develop preliminary architecture Outline development Primary goal: establish goals for project and each iteration (with inputs from all stakeholders) Key issue: address business and requirements risks

Disciplines Involved in Each Phase

Elaboration Use cases: 80% level of final detail Non-functional requirements completed Design and architecture: high-level sequence, class, state diagrams Establish baseline architecture: package diagram Executable architecture/prototypes Components: identify existing components to incorporate into design Planning Risks reviewed, updated Testing - develop test cases Evaluate - continue or abort?

Disciplines Involved in Each Phase

Construction Make use cases operational for end users i.e., implementation work Clarify remaining requirements/refine use cases Key: optimize costs, schedule, and quality System features are implemented in a series of short, time boxed iterations: Each iteration results in an executable release. Each iteration is either an increment or an improvement. Documentation: user's manual, training classes, sales literature, etc. Alpha level testing

Disciplines Involved in Each Phase

Transition Beta/acceptance testing by end users, deployment, user training End result: available for customers/end users May make minor adjustments based on user feedback All major defects found before entering this phase!

Relative Sizes of the Four Phases

Specialized Process Models Tend to be applied when a narrowly defined software engineering approach is chosen. Component-Based Development (covered in SE 2730) Aspect-Oriented Development Formal Methods

Aspect-Oriented Software Development Aspect-Oriented Software Development (AOSD) is a new approach to software design that addresses modularity problems that are not handled well by other approaches. Typical enterprise and internet applications today have to address "concerns" like security, transactional behavior, logging, etc.. Concern: a particular set of information that has an effect on the code. Modularity is achieved by addressing separate concerns by separate modules

Crosscutting Concerns Crosscutting concerns not the primary job of the worker classes independent of the worker s primary job cross-cut the system: affect other concerns. Example: application for handling medical records. core concern: bookkeeping and indexing of records cross-cutting concerns: logging change history, security Problem: often cannot be cleanly decomposed. violation of DIY (Don t Repeat Yourself) principle. can result in either scattering, tangling, or both. Scattering: code duplication Tangling: significant dependencies between systems

Crosscutting Concern Example http://en.wikipedia.org/wiki/aspect-oriented_software_development

Aspect-Oriented Development Aspect: a module that encapsulates a concern. aspect orientation = quantification + obliviousness Quantification: the ability of aspects to affect multiple points in the program. Obliviousness: a program has no knowledge of which aspects modify it where and when. Aspect-Oriented Programming: break down program logic into distinct aspects Still a relatively new topic!

Example: Using Aspect-Oriented Design Join Point http://en.wikipedia.org/wiki/aspect-oriented_software_development

Aspect-Oriented Programming Example programming languages that have implemented AOP, within the language or as an external library:.net Framework (C#, VB.NET) C/C++ COBOL Delphi Java (AspectJ) PHP Perl etc.

Formal Method Mathematically-based techniques for the specification, development and verification of software systems. Specification: BNF (Backus Normal Form) Petri nets Z-notation Development: Assertions (based on pre and post conditions of the specification) Verification: Model Checking Cleanroom Software Engineering Process: Original developed by IBM. Focus: defect prevention, rather than defect removal. Z-notation: a specification language (pronounced zed ) to decompose a system into schemas

Summary Five generic process framework activities: Communication, Planning, Modeling, Construction, Deployment Prescriptive Process Models Waterfall model (classic) Incremental Model: incremental and RAD Evolutionary (Iterative) Model: Prototyping and Spiral Unified Process Special Models: Component-Based Aspect-Oriented Formal Methods