Agile and Evolutionary Software Development



Similar documents
7 Impact analysis (IA)

1 History of software engineering

Software Development Life Cycle (SDLC)

Understanding the Differences between Proprietary & Free and Open Source Software

Project Management in Software: Origin of Agile

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

Agile Scrum Workshop

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

Nova Software Quality Assurance Process

Agile Development with Jazz and Rational Team Concert

A Capability Maturity Model (CMM)

Software Engineering

Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1

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 PROCESS MODELS

Testing and Scrum. Agenda. Fall 2007 Scrum Gathering

Software Development Going Incremental, Iterative and Agile:

Agile and Secure: Can We Be Both?

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

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

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

Unit 1 Learning Objectives

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Models of Software Development

Agile Software Engineering Practice to Improve Project Success

Basic Trends of Modern Software Development

Introduction to Agile and Scrum

Agile and Secure Can We Be Both? Chicago OWASP. June 20 th, 2007

Agile and Secure: OWASP AppSec Seattle Oct The OWASP Foundation

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Introducing Agility into a Phase Gate Process

Netstar Strategic Solutions Practice Development Methodology

How Agile methods resolve chaos and unpredictability in software projects

CSE 435 Software Engineering. Sept 16, 2015

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

Agile project management: A magic bullet?

The Structure of a Software Development Team

How To Be Successful At An Agile Software Engineering

Increasing Development Knowledge with EPFC

Agile Enterprise Data Warehousing Radical idea or practical concept?

Software engineers have traditionally considered

Comparing Plan-Driven and Agile Project Approaches

Scale agile throughout the enterprise A PwC point of view

Agile Testing. What Students Learn

Agile So)ware Development

Lecture 3 Software Development Processes

When is Agile the Best Project Management Method? Lana Tylka

Learning and Coaching Agile Methods. Görel Hedin Computer Science Lund University, Sweden

Use service virtualization to remove testing bottlenecks

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

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

Managing Software Debt: Continued Delivery of High Values as Systems Age

An Agile Project Management Model

What is BPM? Software tools enabling BPM

Software Development with Agile Methods

Accelerating software testing effectiveness using Agile methodologies..

AGILE vs. WATERFALL METHODOLOGIES

Chapter 9 Software Evolution

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

COMP 354 Introduction to Software Engineering

Laboratório de Desenvolvimento de Software

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

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

A Sponsor Perspective on Validating Regulated Systems

Surveying and evaluating tools for managing processes for software intensive systems

Alternative Development Methodologies

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

Driving Quality Improvement and Reducing Technical Debt with the Definition of Done

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

Software Engineering. So(ware Evolu1on

Mariusz Chrapko. Before: Software Quality Engineer/ Agile Coach, Motorola, Poland. My Public Profile:

Mobility Strategy Maturity Model

Agile Software Development

EMC PERSPECTIVE. Adopting an Agile Approach to OSS/BSS Development

Risk-based Vendor Audits of Agile Developed Software

The Blending of Traditional and Agile Project Management

Scrum includes a social agreement to be empirical as a Team. What do you think an empirical agreement is?

Software Development Methodologies

XP and TDD. Extreme Programming and Test Driven Development. Bertrand Meyer, Manuel Oriol Andreas Leitner. Chair of Software Engineering ETH Zurich

Practical Agile Requirements Engineering

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

Software Engineering. What is a system?

Effektiver Tool-Einsatz

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

Agile Software Project Management Methodologies

Web Application Development Process

CS4507 Advanced Software Engineering

Software Development In the Cloud Cloud management and ALM

Netspective Software Development Process

Software Development Methodology Development Process Aress

Application Lifecycle Management Using Visual Studio 2013 (SCRUM)

Agile development. Pedro Cabalar. Departamento de Computación Facultad de Informá;ca University of Corunna, SPAIN

HP Application Lifecycle Management

4/4/2013. Copyright 2013, Robert Ward

Leveraging RUP, OpenUP, and the PMBOK. Arthur English, GreenLine Systems

Software Development Process

Agile Data Warehousing

HP Agile Manager What we do

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

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

Transcription:

Agile and Evolutionary Software Development Václav Rajlich Wayne State University Department of Computer Science rajlich@wayne.edu 2015 Václav Rajlich Agile and Evolutionary Software Development 1

Contents Staged model of software lifespan Agile and evolutionary development Software change Software maintenance. 2015 Václav Rajlich Agile and Evolutionary Software Development 2

Staged model of nitial development software lifespan first version evolutionary changes Evolution Development - - - - - - - - evolution stops - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - servicing patches Maintenance (Servicing) servicing discontinued Phase-out switch-off Close-down 2015 Václav Rajlich Agile and Evolutionary Software Development 3

nitial development nitial development first version evolutionary changes Evolution Development - - - - - - - - evolution stops - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Fundamental project decisions Technologies, architecture, GU design, First (incomplete) version Phases: requirements, design, implementation 2015 Václav Rajlich Agile and Evolutionary Software Development 4

nitial development Evolution first version evolutionary changes Evolution Development - - - - - - - - evolution stops - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Repeated software changes Each change adds/modifies functionality or property of existing (and running) software 2015 Václav Rajlich Agile and Evolutionary Software Development 5

Evolutionary Software Development (ESD) Bulk of development is done in evolution Offers stakeholders regular feedback about the progress of the project Allows the developers to react to the volatility Volatility of requirements, technology, or knowledge 2015 Václav Rajlich Agile and Evolutionary Software Development 6

Waterfall Bulk is done in initial development Little or no evolution Suitable for projects without volatility Stable technology and domain Stable knowledge small projects 2015 Václav Rajlich Agile and Evolutionary Software Development 7

Contents Staged model of software lifespan Agile and evolutionary development (ESD) Software change Software maintenance 2015 Václav Rajlich Agile and Evolutionary Software Development 8

ESD Current mainstream There are numerous ESD processes with track record of success Example: Agile There are other effective ESD processes 2015 Václav Rajlich Agile and Evolutionary Software Development 9

terative development terations are milestones with specific goals Volatility is frozen during iteration Allows planning of iteration Stakeholders assess the past iteration and plan the next one teration meeting of all stakeholders Volatilities are taken into account during iteration meeting 2015 Václav Rajlich Agile and Evolutionary Software Development 10

Agile development Autonomous decision makings by developers during the iterations Requires intensive communication within the team Very short iterations Suitable for small teams SCRUM, extreme 2015 Václav Rajlich Agile and Evolutionary Software Development 11

Safeguarded development Presence of guardians of the code base They accept or disallow code changes Software with high quality expectations Avionics 2015 Václav Rajlich Agile and Evolutionary Software Development 12

Open source development Open source development Safeguarded Code ownership Wide community of developers, variable skills nner source development Leverages the experience of open source Practiced within a corporation 2015 Václav Rajlich Agile and Evolutionary Software Development 13

Directed development Default process Managers assign tasks to the developers Allows different specialized roles Developers, testers, architects, technology experts, managers, Suitable for large or delocalized projects 2015 Václav Rajlich Agile and Evolutionary Software Development 14

Exploratory development Features are establish by trial-and-error Common in research projects 2015 Václav Rajlich Agile and Evolutionary Software Development 15

Solo development Single developer More and more common Mobile apps 2015 Václav Rajlich Agile and Evolutionary Software Development 16

Success of small projects* Budget of less than $1 M 76 % of small projects are successful Only 4% of small projects are cancelled Historically high success rate *Chaos Manifesto 2013 2015 Václav Rajlich Agile and Evolutionary Software Development 17

Future directions of ESD Associate individual practices with specific project circumstances Tailor new processes that exactly fit specific project needs 2015 Václav Rajlich Agile and Evolutionary Software Development 18

Project circumstances Example Exploratory programming is necessary Gap between programmer capability and expected quality Frequent turnover of developers High volatility of requirements, technologies, or knowledge Low volatility... (we need a very large table)... Practice suitable for the circumstances Developers are domain experts Code guardians, permission to commit Concept location practices Short initial development, short iterations Long initial development 2015 Václav Rajlich Agile and Evolutionary Software Development 19

Problem with large projects* Budget larger than $10 M Low (10%) probability of success 38% of them were cancelled Large financial losses Embarrassment to our community Something needs to be done *Chaos Manifesto 2013 2015 Václav Rajlich Agile and Evolutionary Software Development 20

Confused debate about processes False dichotomy: waterfall vs. agile Note waterfall is suitable for stable small projects Agile is suitable for small teams Contributing to the low success rate of large projects 2015 Václav Rajlich Agile and Evolutionary Software Development 21

Better debate What is the appropriate size of the initial development? Volatility requires small initial development Stability allows large initial development After initial development, which ESD process is the most appropriate? Which combination of ESD practices is the most appropriate? 2015 Václav Rajlich Agile and Evolutionary Software Development 22

Contents Staged model of software lifespan Agile and evolutionary development Software change Software maintenance. 2015 Václav Rajlich Agile and Evolutionary Software Development 23

Phased Model of Software Change (PMSC) nitiation Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N Process model for changes with limited impact Enactment of PMSC contains a subset of phases 2015 Václav Rajlich Agile and Evolutionary Software Development 24

Phased Model of Software Change (PMSC) nitiation.. Requirements Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N 2015 Václav Rajlich Agile and Evolutionary Software Development 25

Phased Model of Software Change (PMSC) nitiation Concept Location.. Requirements.. Finds what needs to change mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N 2015 Václav Rajlich Agile and Evolutionary Software Development 26

Phased Model of Software Change (PMSC) nitiation Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N.. Requirements.. Finds what needs to change.. How big is the change? 2015 Václav Rajlich Agile and Evolutionary Software Development 27

Phased Model of Software Change (PMSC) nitiation Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N.. Requirements.. Finds what needs to change.. How big is the change?.. Prepare for the change 2015 Václav Rajlich Agile and Evolutionary Software Development 28

Phased Model of Software Change (PMSC) nitiation Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N.. Requirements.. Finds what needs to change.. How big is the change?.. Prepare for the change.. Do the change 2015 Václav Rajlich Agile and Evolutionary Software Development 29

Phased Model of Software Change (PMSC) nitiation Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N.. Requirements.. Finds what needs to change.. How big is the change?.. Prepare for the change.. Do the change.. Clean up 2015 Václav Rajlich Agile and Evolutionary Software Development 30

Phased Model of Software Change (PMSC) nitiation Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N.. Requirements.. Finds what needs to change.. How big is the change?.. Prepare for the change.. Do the change.. Clean up.. Commit 2015 Václav Rajlich Agile and Evolutionary Software Development 31

mpact analysis (A) nitiation Concept Location mpact Analysis Prefactoring Actualization Postfactoring Conclusion V E R F C A T O N A predicts prefactoring and actualization Currently unable to predict postfactoring Postfactoring often resolves technical debt after it accumulates beyond acceptable limit 2015 Václav Rajlich Agile and Evolutionary Software Development 32

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 33

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 34

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 35

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 36

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 37

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 38

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 39

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 40

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 41

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 42

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 43

ncremental A H B E F C A D J G L K Color codes Unknown Changed To be inspected nspected and unchanged 2015 Václav Rajlich Agile and Evolutionary Software Development Propagating 44

http://jripples.sourceforge.net Eclipse plug-in Java 15,000 LOC 150 Classes Keeps track of marks Changed, Propagating, Unchanged, Next 2015 Václav Rajlich Agile and Evolutionary Software Development 45

Research in A Navigates program dependencies Some dependencies propagate the change while others do not Heuristics and tools that identify likely to propagate dependencies - need further attention Heuristics for determining when the incremental impact analysis is completed Hidden dependencies 2015 Václav Rajlich Agile and Evolutionary Software Development 46

Seamless DE for PMSC PMSC currently needs multiple uncoordinated tools JRipples for concept location, impact analysis Mylyn for the workflow Tasktop for timing data JUnit for unit tests Abbot for functional tests Refactoring tools... Future DE will provide seamless support 2015 Václav Rajlich Agile and Evolutionary Software Development 47

Measuring impact of PMSC ntroducing well-defined process often improves productivity and quality Preliminary data PMSC may improve developer productivity up to 50%! Needs additional measurements Seamless DE may offer additional gains 2015 Václav Rajlich Agile and Evolutionary Software Development 48

Contents Staged model of software lifespan Agile and evolutionary development Software change Software maintenance. 2015 Václav Rajlich Agile and Evolutionary Software Development 49

Software maintenance Maintenance evolution!! Maintenance also consists of repeated changes to software Objectives are drastically reduced The only goal is to keep software usable in a cost-effective way No new functionality Software enters maintenance (servicing) stage when it is transferred to users 2015 Václav Rajlich Agile and Evolutionary Software Development 50

Parallel evolution and maintenance Several branches One is evolved into new version Other branches (released versions) are just maintained 2015 Václav Rajlich Agile and Evolutionary Software Development 51

How does evolution stop: Managerial decision Expensive evolution stops if it is no longer needed Stabilization No longer any volatility Technical debt gets out of hand Code is no longer evolvable Can happen by accident 2015 Václav Rajlich Agile and Evolutionary Software Development 52

Future of maintenance Accidental code decay is a serious issue Research: Keep software evolvable, clean technical debt Complementary approach: Extend software evolution (PMSC) to the code that is currently considered non-evolvable 2015 Václav Rajlich Agile and Evolutionary Software Development 53

Conclusions Software evolution was historically an unexpected and peripheral phenomenon Moved into the center of software development t gained enormous importance to both developers and researchers 2015 Václav Rajlich Agile and Evolutionary Software Development 54

Conclusion We covered Staged model of software lifespan ncludes evolution Evolutionary software development Many processes, some suitable for large projects Phased model of software change For changes that have limited impact Software maintenance Keeping software usable, no new functionality 2015 Václav Rajlich Agile and Evolutionary Software Development 55

Book on this topic 56 6/2/2015