Advanced Software Engineering. Software Development Processes



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

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

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

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

COMP 354 Introduction to Software Engineering

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

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

CS4507 Advanced Software Engineering

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

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

How To Understand The Software Process

Modelli di sviluppo software. Enrico Giunchiglia

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

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

Unit 1 Learning Objectives

Software Development Life Cycle (SDLC)

Alternative Development Methodologies

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

Agile Projects 7. Agile Project Management 21

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

Lecture 3 Software Development Processes

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

AGILE vs. WATERFALL METHODOLOGIES

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

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

UC Santa Barbara. CS189A - Capstone. Christopher Kruegel Department of Computer Science UC Santa Barbara

An Agile Project Management Model

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

LECTURE 1. SYSTEMS DEVELOPMENT

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

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

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

Unit I. Introduction

CSE 435 Software Engineering. Sept 16, 2015

SOFTWARE PROCESS MODELS

Software Engineering. What is a system?

Rapid Software Development

Development Methodologies

ASSESSMENT OF SOFTWARE PROCESS MODELS

Introduction to Agile Software Development

A Capability Maturity Model (CMM)

Software processes that are:

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

Chapter 2 Software Processes

Software Engineering

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

Basic Trends of Modern Software Development

Corso di Laurea Magistrale in Informatica, Università di Padova Tecnologie open-source, Anno accademico 2010/2011. Development Processes 1 / 51

Evolving a Ultra-Flow Software Development Life Cycle Model

Software Engineering. Objectives. Designing, building and maintaining large software systems

Large Scale Systems Design G52LSS

Software Development Methodology Development Process Aress

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

Software Life Cycle Processes

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

A Comparison between Five Models of Software Engineering

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

Software Development Process

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

Friday, 10 December How to run a BI project?

Custom Software Development Approach

Extreme Programming, an agile software development process

Lecture 21 March 7, 2013

Test Cases Design for Software Database Provisioning Development

A Comparison Between Five Models Of Software Engineering

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

An Assessment between Software Development Life Cycle Models of Software Engineering

Software Process Models. Xin Feng

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

Introduction to Agile and Scrum

Agile Requirements Generation Model: A Soft-structured Approach to Agile Requirements Engineering. Shvetha Soundararajan

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Agile Processes and Methodologies: A Conceptual Study

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

Agile So)ware Development

Software Requirements and Specification

Development. Lecture 3

CHAPTER 3 : AGILE METHODOLOGIES. 3.3 Various Agile Software development methodologies. 3.4 Advantage and Disadvantage of Agile Methodology

Software Production and Lifecycle Models

Elite: A New Component-Based Software Development Model

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

Extreme Programming, an agile software development process

A Survey of Software Development Process Models in Software Engineering

Software Project Management using an Iterative Lifecycle Model

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Nova Software Quality Assurance Process

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

Agile Software Development. Mohsen Afsharchi

Introduction to Agile Software Development Process. Software Development Life Cycles

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

How To Write A Thesis On How To Create And Maintain Documentation In An Agile Development Environment

Software Development Life Cycle Models- Comparison, Consequences

How To Understand The Limitations Of An Agile Software Development

Agile Methodologies and Its Processes

Agile Development Overview

Agile Approach and MDA in Software Development Process

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

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

Agile Software Development in the Large

Software Development Life Cycle & Process Models

Transcription:

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Advanced Software Engineering Software Development Processes Prof. Agostino Poggi

Software Development Process A process defines who is doing what, when to do it, and how to reach a certain goal A software development process is a structured set of activities required to develop a software system 2

Software Development Process Feasibility and Planning Requirements Design Implementation Operation and Maintenance 3

Waterfall Model Requirements Definition System Software Design Programming and Unit Testing Implementation Integration and System Testing Operation and Maintenance 4

Requirements Analysis and Definition System services, constraints and goals are established by consultation with system users Requirements are then defined in a manner that is understandable by both users and development staff This phase can be divided into: Feasibility study (often carried out separately) Requirements analysis Requirements definition Requirements specification 5

System and Software Design One or more models of the system are defined Models represent the system at different levels of detail This phase is divided in two activities: System design Identifies hardware and software components Establishes an overall system architecture Software design Represents the software system functions in a form that can be transformed into one or more executable programs 6

Programming and Unit Testing System components defined in the design phase are implemented and tested This phase is divided in two activities: Software components are realized as a set of programs or program units Written specifically Acquired from elsewhere, or modified Software components are separately tested against specifications 7

Integration and System Testing Program units are integrated and tested for realizing the complete system This phase is divided in four activities: Component integration Integration test System requirements test System deliver to the client 8

Operation and Maintenance The system is put to use and clients are supported This phase is divided in four activities: Operation: the system is put into practical use Maintenance: errors and problems are identified and fixed Evolution: the system evolves over time as requirements change, to add new functions or adapt the technical environment Phase out: the system is withdrawn from service 9

Feedback in the Waterfall Model Requirements Definition System and Software design Programming and Unit Testing Integration and System Testing Operation and Maintenance 10

Advantages / Disadvantages Advantages Documentation and clearly defined phases Maintenance easier (assuming up-to-date docs available) Disadvantages Complete and frozen specification document up-front often not feasible in practice Customer involvement in the first phase only Sequential and complete execution of phases often not desirable Process difficult to control The product becomes available very late in the process Significant risk of building the wrong system 11

Applicability The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway One phase has to be complete before moving onto the next phase Only appropriate when the requirements are wellunderstood and changes will be fairly limited during the design process Mostly used for large systems engineering projects where a system is developed at several sites 12

Project Failure Causes Inaccurate understanding of end-user needs Inability to deal with changing requirements Modules that do not fit together Software that is hard to maintain or extend Late discovery of serious project flaws Poor software quality Unacceptable software performance Untrustworthy build-and-release processes 13

Project Failure Causes Ad hoc requirements management Ambiguous and imprecise communication Brittle architectures Overwhelming complexity Undetected inconsistencies in requirements, designs and implementations Insufficient testing Subjective assessment of project status 14

Agile Software Development Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project Agile methods emphasize face-to-face communication over written documents Most agile teams are located in a single open office sometimes referred to as a bullpen At a minimum, a team includes programmers and their "customers" Agile methods also emphasize working software as the primary measure of progress producing very little written documentation relative to other methods 15

Agile Software Development Software developed is based on unit called iterations, which usually may last from one to four weeks Each iteration is an entire software project: including planning, requirements analysis, design, coding, testing, and documentation An iteration may not add enough functionality to warrant releasing the product to market Iteration goal is to have an available release (without bugs) at the end of each iteration At the end of each iteration, the team re-evaluates project priorities 16

Agile Methodologies Principles Customer involvement Incremental delivery A focus on people, not the process Embracing of change and maintaining simplicity Best suited for small or medium sized systems 17

Agile Manifesto Customer satisfaction by rapid, continuous delivery of useful software Working software is delivered frequently (weeks rather than months) Working software is the principal measure of progress Even late changes in requirements are welcomed Close, daily, cooperation between business people and developers 18

Agile Manifesto Face-to-face conversation is the best form of communication Projects are built around motivated individuals, who should be trusted Continuous attention to technical excellence and good design Simplicity Self-organizing teams Regular adaptation to changing circumstances 19

Agile Methodologies Best Practices Developing software iteratively Managing requirements Use of component-based architectures Visually modeling software Continuously verifying software quality Controlling changes to software 20

Iterative Refinement Iterative development is a rework scheduling strategy in which time is set aside to revise and improve parts of the system The goal of iterative refinement (evolutionary development) is to get something working as quickly as possible The initial implementation is refined until system is complete on the basis of client and user comment 21

Iterative Refinement Techniques Vaporware: user interface mock-up Throw-away software components Dummy modules Rapid prototyping: RAD tools Incremental refinement 22

Iterative Refinement Evaluation Requirements Implementation Design 23

Iterative Refinement Requirements Initial Version Outline Description Design Intermediate Versions Implementation Final Version 24

Applicability The main problems of iterative refinement are: Lack of process visibility Systems are often poorly structured Special skills (e.g. in languages for rapid prototyping) may be required Iterative refinement can be used with success for: Small or medium-size interactive systems Parts of large systems (e.g., the user interface) Short-lifetime systems 25

Extreme Programming Extreme Programming (XP) is probably the best known and most widely used agile method In XP all scenarios are represented by user stories implemented as a series of tasks Programmers work in pairs and develop tests for each task before writing code and all tests must be executed when new code is integrated into the system XP is based on four activities: listening, design, coding and testing 26

Extreme Programming Select user stories for the current iteration Breakdown stories into tasks Plan release Evaluate System Release software Develop, integrate and test software 27

Unified Process Unified Process (UP) is not simply a process, but rather an extensible framework which should be customized for specific organizations or projects UP is guided by use cases and is based on early risks identification and management UP is architecture-centric because the architecture sits at the heart of the project efforts to shape the system UP is an development process where each iteration results in an increment, which is a system release that: Contains added or improved functionality Includes work in most of the process disciplines 28

Unified Process 29

Model Driven Development Model driven development refers to the systematic use of models as primary engineering artifacts throughout the development lifecycle Model driven development is based on the transformation of a model to an executable program Sometimes models are constructed to a certain level of detail, and then code is written by hand in a separate step Sometimes complete models are built including executable actions Code can be generated from the models, ranging from system skeletons to complete, deployable products 30

Model Transformation Forward engineering Refactoring Model Space Code Space Model transformation Reverse engineering 31

Applicability The main drawback of the model driven development are: Need for specialized skills and training to apply the technique Difficult to formally specify some aspects of the system such as the user interface Suitable for critical systems especially those where a safety or security case must be made before the system is put into operation 32

Model Driven Architecture Model Driven Architecture (MDA) is an approach to software development that provides a set of guidelines for structuring specifications expressed as models for the realization of system for different technological platforms MDA provides a means for using models to direct the course of the phases of the development of a system In particular, MDA uses three types of model: Platform Independent Model (PIM) Computational Independent Model (CIM) Platform Specific Model (PSM) 33

Model Driven Architecture Requirements Mostly Text Documents Analysis CIM/PIM Low-level Design PSM Coding Code Testing Code Deployment 34