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

Similar documents
Agile So)ware Development

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

EPL603 Topics in Software Engineering

3 Agile Software Development

Basic Trends of Modern Software Development

Rapid Software Development

Agile methods. Objectives

Software Development Methodologies

Agile Development Overview

Agile and Secure: Can We Be Both?

Software Development Life Cycle (SDLC)

Agile and Secure: OWASP AppSec Seattle Oct The OWASP Foundation

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

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

CSSE 372 Software Project Management: More Agile Project Management

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

A Capability Maturity Model (CMM)

Agile with XP and Scrum

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Agile Software Development

Development. Lecture 3

CSE 435 Software Engineering. Sept 16, 2015

CMMI - The AGILE Way By Hitesh Sanghavi

Introduction to Agile and Scrum

AGILE SOFTWARE DEVELOPMENT. BY Sysop Technology Aurangabad

When is Agile the Best Project Management Method? Lana Tylka

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Introduction to Agile Software Development

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

Agile project management: A magic bullet?

Agile and lean methods for managing application development process

Software Development with Agile Methods

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

An Agile Project Management Model

Agile Scrum Workshop

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

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

Bottlenecks in Agile Software Development Identified Using Theory of Constraints (TOC) Principles

History of Agile Methods

Agile Projects 7. Agile Project Management 21

Quality Assurance in an Agile Environment

Introduction to Agile Software Development Process. Software Development Life Cycles

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

Agile Methodologies and Its Processes

Agile Software Development Methodologies and Its Quality Assurance

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

Scale agile throughout the enterprise A PwC point of view

Lean Software Development and Kanban

AGILE & SCRUM. Revised 9/29/2015

Software Requirements and Specification

Quality Assurance Software Development Processes

Introduction to Agile Scrum

Introduction to extreme Programming (XP)

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

XP and Design. Paulo Caroli & Sudhindra Rao. ThoughtWorks

Agile Software Development

The Agile approach Extreme Programming (XP) Implementing XP into a software project Introducing HCI design into agile software development Summary

How to manage agile development? Rose Pruyne Jack Reed

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

Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries

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

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

Extreme Programming, an agile software development process

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

TSG Quick Reference Guide to Agile Development & Testing Enabling Successful Business Outcomes

Controlling Change on Agile Software Development Projects

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

Software processes that are:

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

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

Applying Agile Methods in Rapidly Changing Environments

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

Applying Lean on Agile Scrum Development Methodology

Models of Software Development

Mapping The Best Practices of XP and Project Management: Well defined approach for Project Manager

Agile Project Management By Mark C. Layton

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

Issues in Internet Design and Development

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

Agile Testing and Extreme Programming

Project Management in Software: Origin of Agile

Agile Software Project Management Methodologies

Comparing Agile Software Processes Based on the Software Development Project Requirements

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

Agile Software Development and Service Science

Applying Agile Project Management to a Customized Moodle Implementation

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

Agile Techniques for Object Databases

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

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

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

Software Development Going Incremental, Iterative and Agile:

Who Doesn t Want to be Agile? By: Steve Dine President, Datasource Consulting, LLC 7/10/2008

Software development processes Life-cycle Models

Software Engineering

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

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

Continuous Delivery. Ariel Alonso, IPC

Extreme Programming, an agile software development process

Agile In a Nutshell. Note - all images removed to fit 2MB limit Actual presentation has much more content. Jonathan Rasmusson

Transcription:

Topics covered Chapter 3 Agile Software Development Agile methods Plan-driven and agile Extreme programming Agile project management Scaling agile methods 1 2 Need for rapid software Rapid software Changing businesses environment New opportunities and technologies Changing markets, new competitors Companies will trade off quality for faster deployment Requirements are never stable and hard to predict Goal: produce useful software quickly Form of incremental : Specification, design and implementation are inter-leaved Customers evaluate versions Minimal process documentation Waterfall methods are inadequate here: Process is prolonged when there is too much change Product is out of date when it s delivered 1990 s: Agile processes were developed in response to these problems. Minimal user requirements No detailed design specifications Use of tools (IDE, UI tools) Very Small Increments 3 4

3.1 Agile methods Agile manifesto 1980s software design methods careful project planning formal methods. Large systems vs. smaller business applications 1990s agile processes developed The aim of agile methods is to Reduce overhead in the software process Avoid rework when responding to change We have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. www.agilealliance.org 5 6 Some agile methods Some principles of agile methods Extreme Programming (XP) Scrum Crystal methods Evo Adaptive Software Development Dynamic Solutions Delivery Model (DSDM) Feature Driven Development Agile modeling methods Agile instantiations of RUP 7 Customer Involvement should be closely involved in process prioritize requirements and evaluate iterations Incremental Delivery small increments, rapid delivery working software is primary measure of success People not process value+use particular skills of dev team members let them develop their own processes Embrace Change expect change, design the process to accommodate it Maintain Simplicity in software and process, eliminate complexity 8

Agile method applicability Problems with agile methods: The principles are difficult to realize Small to medium product Customer commitment Must be willing and able to spend time on project Custom system when Suitability of team members Committed customer Few rules and regulations Some team members may not like intense involvement Difficulty prioritizing changes for each increment. Difficult to scale to large systems Multiple stakeholders may be in conflict Maintaining simplicity requires extra work. Not necessarily for security- or safety-critical systems May require scheduling extra time for refactoring Large organizations and formal processes Trend has been towards formal processes, not away from them 9 10 Agile methods and software maintenance 3.2 Plan-driven and agile Are systems that are developed using an agile approach maintainable? issue: very little documentation issue: original team Plan-driven Separate, sequential stages. Iteration occurs within stages. Waterfall or planned increments. Can agile methods be used for evolving a system regardless of how developed? Agile methods designed for managing change. Customer involvement Agile Specification, design, implementation in each cycle Iteration occurs across stages. May have elements of formal processes. 11 12

Should your approach be plan-driven or agile? Technical, human, organizational issues 1. Is it important to have a very detailed specification and design before moving to implementation? 2. Is an incremental delivery strategy, where you deliver the software to customers and get rapid feedback from them, realistic? 3. How large is the system that is being developed (and consequently, the team)? 4. What type of system is being developed? Real time system with complex timing requirements? Safety-critical? 5. What is the expected system lifetime? Long-lifetime? 13 Should your approach be plan-driven or agile? Technical, human, organizational issues 6. What technologies are available to support system? Do you have good tools? 7. How is the team organized? Distributed or outsourced? 8. Are there cultural or organizational issues that may affect the system? Is the team old-school? 9. How good are the designers and programmers in the team? Are they highly skilled? 10.Is the system subject to external regulation? 14 3.3 Extreme programming (XP) XP: 12 core practices Best-known and most widely used agile method. Kent Beck, 2000 Pushing recognized good practice to the extreme: More customer involvement is good so bring customers onsite. Code reviews are good, so do constant code reviews via pair programming Testing is good, so write tests before writing the code. Short iterations and early feedback are good, so make iterations only 1 or 2 weeks. 15 Planning Game(s) Major Release: Define scope, customer writes story cards Iteration: customer picks cards, developers pick tasks Small, frequent releases 1-3 weeks System metaphors used to describe architecture in easily understood terms Simple Design No speculative design, keep it easy to understand Testing Automated, test-driven Frequent Refactoring Cleaning code without changing functionality 16

XP: 12 core practices XP reflects agile principles Pair Programming One computer, one typist, other reviews, then swap Rotate partners Team Code ownership Any programmer can improve any code, Entire team is responsible for all the code, Continuous Integration all checked in code is continually tested on a build machine Sustainable Pace: No overtime Whole Team Together Developer and customer in one room Coding Standards Adopt a common programming style 17 Customer involvement: Full-time, on-site customer. Incremental delivery: Small, frequent releases. People not process: Pair programming Collective ownership Sustainable pace Embrace Change Quick releases to customer for feedback Maintaining simplicity Maintaining simple code, simple designs 18 Requirements (The planning game) Requirements: example story cards Story Cards Customer writes brief feature request. Task List Implementation tasks Written by Developer(s) After discussing story card with Customer Customer chooses the story cards Cards can be changed or discarded From the MHC-PMS case study: Doctor wants to prescribe medicine for a patient at a clinic. Or that might take too long to implement Doctor wants to change current prescription for a patient at a clinic. Doctor wants to prescribe new medicine by drug name for a patient at a clinic. Requirements specification depends on oral communication. 19 Doctor wants to prescribe new medicine by formulary for a patient at a clinic. 20

Task List example XP and anticipating change From the story card: Doctor wants to prescribe new medicine by drug name for a patient at a clinic. Conventional wisdom: design for change by using very general designs. Claim: this reduces costs later in the life cycle. List of Implementation Tasks Implement drug list/database Implement search for a drug by name Add/modify GUI for doctor to access search Implement get+check dosage Implement save prescription for patient etc. XP maintains: this is not worthwhile Changes cannot be reliably anticipated. XP proposes: Constant code improvement (refactoring) make changes easier when they have to be implemented 21 22 Refactoring 3.3.1 Testing in XP Restructuring an existing body of code, altering its internal structure without changing its external behavior Advantages: Easier to understand, easier to add new functionality Examples: Breaking up a large class into two or more classes. Moving methods/functions to different classes. Renaming attributes and methods to make them easier to understand. Replacement of inline code with a call to a method/function. 23 No requirements document implies no external testing. Test-first Development Tests are written before the task is implemented. Forces developer to clarify the interface and the behavior of the implementation. Tests are based on user stories and tasks, one test per task. Customer involvement. Customer helps write tests, making them acceptance tests. Thus acceptance testing is incremental. Test automation is crucial (no external testing) No interaction required Results checked automatically and reported. Regression testing is automated. ensure no existing functionality got broken 24

Test driven example 3.3.2 Pair programming Task: implement a Money class in Java to support multiple currencies, adding money, etc. Developer writes a Money test class: Programmers work in pairs at one workstation. Pairs rotate on different tasks. public class MoneyTest extends TestCase { } public void testsimpleadd() { Money m1 = new Money(12, usd ); Money m2 = new Money (14, usd ); Money expected = new Money(26, usd ); Money result = m1.add(m2); assertequals (expected, result); } Advantages: Helps develop common ownership of code. Informal review process. Encourages refactoring. How productive is it? Results vary, hard to measure full effect. 25 26 3.4 Agile project management 3.5 Scrum What is Project Management? job of ensuring software is delivered on time within the budget. Standard approach is plan-driven, project manager decides: what should be delivered, when it should be delivered and who will work on the of the project deliverables This approach does not work for Agile projects. what should be delivered is not known up front Emphasizes a set of project management values and practices. Easy to combine with other methods XP has adopted many Scrum practices Hands-off approach: No project manager or team leader Team is empowered to make own decisions Three phases: Outline planning: stakeholders enter features in product backlog, choose the product owner. A series of sprint cycles, each develops one increment Project closure phase 27 28

The Sprint cycle Scrum in practice Sprints are fixed length Sprint planning Stakeholders select features for next sprint Scrum team and product owner meet to plan work Scrum daily meetings Stand-up meeting, 15-20 minutes Each member gives progress report, future plans, and problems Keeps sprint backlog up to date Scrum master Makes sure team is not interrupted Manages communication with customer and management Resolves team blocks asap. Sprint review: Product Demo 29 Used successfully for developing telecommunication software (see book). Can it be scaled to larger, even distributed teams? 30