Agile Methodologies and EXtreme Programming. Lecturer: Giuseppe Santucci. (Some slides taken from slideshare.net)

Similar documents
Introduction to extreme Programming (XP)

Génie Logiciel Avancé Cours 6 Extreme Programming

Agile processes. Extreme Programming, an agile software development process

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

Extreme Programming, an agile software development process

Agile Development Overview

Agile Testing and Extreme Programming

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

Introduction. Motivational Principles. An Introduction to extreme Programming. Jonathan I. Maletic, Ph.D.

Extreme Programming, an agile software development process

Java course - IAG0040. Unit testing & Agile Software Development

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

Agile processes. Extreme Programming, an agile software development process. Extreme Programming. Risk: The Basic Problem

Software Development Methodologies

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

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

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

EPL603 Topics in Software Engineering

An Introduction to Extreme Programming

An Overview of Quality Assurance Practices in Agile Methodologies

History of Agile Methods

Comparing Agile Software Processes Based on the Software Development Project Requirements

Agile and Secure: Can We Be Both?

Agile Software Development

Introduction to Agile Software Development Process. Software Development Life Cycles

RUP and XP, Part I: Finding Common Ground

Agile with XP and Scrum

Software Development Life Cycle (SDLC)

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

Agile Development with C#

Extreme Programming. Sergey Konovalov and Stefan Misslinger. May 23, 2006

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

Adopting Agile Testing

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

Iteration Planning. also called Iteration Kickoff

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

Agile Software Development and Service Science

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

A Capability Maturity Model (CMM)

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

Agile and Secure: OWASP AppSec Seattle Oct The OWASP Foundation

The Agile Manifesto is based on 12 principles:

Agile So)ware Development

LEAN AGILE POCKET GUIDE

Agile Software Development Methodologies and Its Quality Assurance

Introduction to Agile Software Development. EECS 690 Agile Software Development

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Agile Notetaker & Scrum Reference. Designed by Axosoft, the creators of OnTime the #1 selling scrum software.

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

Basic Trends of Modern Software Development

Extreme Programming: Strengths and Weaknesses

Software processes that are:

Waterfall to Agile. DFI Case Study By Nick Van, PMP

Quality Assurance Software Development Processes

Extreme Programming. As software organizations continue to move

Agile Scrum Workshop

Agile and the Seven Deadly Sins of Project Management

SOFTWARE PROCESS MODELS

Agile Software Development. Mohsen Afsharchi

An Example Checklist for ScrumMasters

Creating a High Maturity Agile Implementation

Testing in an Agile Environment

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

AGILE SOFTWARE DEVELOPMENT. BY Sysop Technology Aurangabad

Lean QA: The Agile Way. Chris Lawson, Quality Manager

Development Methodologies. Types of Methodologies. Example Methodologies. Dr. James A. Bednar. Dr. David Robertson

Development Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD

What Does Large Mean? Copyright 2003 by N. Josuttis and J. Eckstein 3. Why is Large an Issue?

EXIN Agile Scrum Foundation

Agile Development and Testing Practices highlighted by the case studies as being particularly valuable from a software quality perspective

Agile Beyond The Team 1

Software Development with Agile Methods

SCEA 2010 EST06. Estimating Issues Associated with Agile. Bob Hunt. Galorath Incorporated

Agile Software Development and Service Science

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

AGILE BUSINESS INTELLIGENCE

AGILE SOFTWARE DEVELOPMENT: INTRODUCTION, CURRENT STATUS & FUTURE Pekka Abrahamsson Jyväskylä

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

Agile Software Engineering Practice to Improve Project Success

Agile Software Development

Agile Projects 7. Agile Project Management 21

Agile Software Development

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

How to manage agile development? Rose Pruyne Jack Reed

Akhil Kumar 1, Bindu Goel 2

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

Extreme Programming and Agile Software Development Methodologies

EXIN Agile Scrum Foundation. Sample Exam

CSSE 372 Software Project Management: More Agile Project Management

Agile Methodologies XP and Scrum

SmartBear Software Pragmatic Agile Development (PAD) Conceptual Framework

Software Engineering I (02161)

Software Requirements and Specification

Introduction to Agile

Transcription:

Agile Methodologies and EXtreme Programming Lecturer: Giuseppe Santucci (Some slides taken from slideshare.net)

Outline Development Methodologies Agile Development (12 Key Practices) Extreme Programming (XP) How does it work? 2

What is a SE Methodology? A SE methodology is a rigorously defined process (or set of practices) for creating software A set of rules you have to follow A set of conventions the organization decides to follow A systematical, engineered approach for organizing software projects 3

Agile Development

Agile Manifesto Our highest priority is to satisfy the customer through early and continuous delivery of valuable software [Manifesto for Agile] 5

The agile spirit Incremental Working software over comprehensive documentation Cooperation Customer collaboration over contract negotiation Straightforward Individuals and interactions over processes and tools Adaptive Responding to change over following a plan 6

Agile Methodologies extreme Programming (XP) Scrum Crystal family of methodologies Feature-Driven Development (FDD) Adaptive Software Development (ASD) Dynamic System Development Model (DSDM) Agile Unified Process (AUP) 7

The XP inventor: Kent Beck extreme Programming The most prominent agile development methodology Kent Beck 8

The 12 Key Practices 1. Metaphor 2. The Planning Game 3. Test-Driven Development 4. Pair Programming 5. Refactoring 6. Simple Design 7. Collective Ownership 8. Continuous Integration 9. On-site Customer 10. Small Releases 11. 40-Hour Workweek 12. Coding Standards 9

1. Metaphor Guide all development and conversations with a simple shared story of how the whole system works Gives the team a whole picture describing the system, where new parts fit, etc. Words used to identify technical entities should be chosen from the metaphor At its best, the metaphor is a simple evocative description of how the program works, such as this program works like a hive of bees, going out for pollen and bringing it back to the hive as a description for an agent-based information retrieval system. Sometimes a sufficiently poetic metaphor does not arise. In any case, with or without vivid imagery, XP teams use a common system of names to be sure that everyone understands how the system works and where to look to find the functionality you re looking for, or to find the right place to put the functionality you re about to add. The default metaphor is the business domain, and it s usually just fine 10

How It Works Metaphors are a good idea People should know the business needs and how their work fits in the project 11

2. Release Planning Requirements are collected via User Stories Short cards with natural language description of what a customer wants Prioritized by customers Resource and risk estimated by developers Via The Planning Game Play the Planning Game after each increment 12

User Stories 13

How It Works Requirements specification works better than user stories User stories as starting point Written documentation works well for large projects Prototyping the user interface as source of documentation helps Sometimes its is hard to estimate the required resources Small releases have less risk 14

3. Testing Test-Driven Development (TDD) Write tests before coding!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Tests are automated Often use xunit or JUnit framework Must run at 100% before proceeding Acceptance Tests Written with the customer Acts as contract Measure of progress 15

Test-Driven Development Developers write unit tests before coding Motivates coding Improves design: cohesion and coupling Provides regression tests Provides specification by example Better comprehension of the specifications Better handling of input errors 16

How It Works TDD is good for most projects Use unit testing for complex logic only Testing simple logic is overhead 17

4. Pair Programming Two software engineers work on one task at one computer The driver has control of the keyboard and mouse and creates the implementation The navigator watches the driver s implementation Identifies defects and participates in on-demand brainstorming The roles of driver and observer are periodically rotated 18

Pair Programming Pairs produce higher quality code Pairs complete their tasks faster Pairs enjoy their work more Pairs feel more confident in their work 19

How It Works Pair programming is great for complex and critical logic When developers need good concentration Where quality is really important Especially during design Reduces time wasting Trivial tasks can be done alone Peer reviews instead pair programming can be an alternative (suboptimal) 20

5. Refactoring Improve the design of existing code without changing its functionality Relies on unit testing to ensure the code is not broken Bad smells in code: Long method / class Duplicate code Methods do several different things (bad cohesion) Too many dependencies (bad coupling) Complex / unreadable code 21

How It Works Delivering working software faster is important! You can write the code to run somehow With simple design With less effort Later you can refactor the code if necessary Refactoring is not a reason to intentionally write bad code! Good coding style is always important! 22

6. Simple Design No Big Design Up Front (BDUF) Reduces the overhead Ship working functionality faster and get feedback early Do The Simplest Thing That Could Possibly Work Later use refactoring to change it Not too much documentation 23

How It Works Simple design does not mean "no design" It is about establishing priorities It is a set of tradeoffs you make If something is important for this release and for the whole system, it should be designed well Do not lose time to design in detail something you will not use soon 24

7. Collective Code Ownership Code belongs to the project, not to an individual engineer! Any engineer can modify any code Better quality of the code Engineers are not required to work around deficiencies in code they do not own Faster progress No need to wait for someone else to fix something 25

How It Works Collective code ownership is absolutely indispensable You need to fight the people who do not agree with this! To write unreadable and unmaintainable code is unacceptable Do not allow somebody to own some module: if (s)he changes job to replace her/him can be a hard issue 26

8. Continuous Integration Pair writes up unit test cases and code for a task (part of a user story) Pair unit tests code to 100% Pair integrates Pair runs ALL unit test cases to 100% Pair moves on to next task with clean slate (cominciare da zero) and clear mind Should happen once or twice a day 27

How It Works Integrating often is really valuable Sometimes you cannot finish a task for one day and integrate it For small projects with small teams integration is a lighter issue For large and complex projects it is crucial Think of automated build environment 28

9. On-Site Customer Customer available on site Clarify user stories Make critical business decisions Developers do not make assumptions Developers do not have to wait for decisions Face to face communication minimizes the chances of misunderstanding 29

How It Works On-site customer is not obvious to work Customers are busy Meetings every day works better Customers are not technical experts E.g. Today:"Yes, this is what I want Tomorrow the opposite You need to think instead of them to some extent Prototyping helps 30

10. Small Releases Timeboxed As small as possible, but still delivering business value Get customer feedback early and often Do the planning game after each iteration Do they want something different? Have their priorities changed? 31

How It Works Small releases are really valuable Manage the risk of delivering something wrong Helps the customer to define better requirements Release every few weeks Large projects are not so flexible Try to release something, even you know that it will be changed 32

11. Forty-Hour Work Week Kent Beck says,... fresh and eager every morning, and tired and satisfied every night Burning the midnight oil kills performance Tired developers make more mistakes Slows you down more in the long run If you mess with people s personal lives (by taking it over), in the long run the project will pay the consequences 33

How It Works Overtime is not recommendable but sometimes can not be avoided Highly skilled senior engineers often suffer of overtime and high pressure That is how the business works, unfortunately Better planning can help 34

12. Coding Standards Use coding conventions Rules for naming, formatting, etc. Write readable and maintainable code Method commenting Self-documenting code Do not comment bad code, rewrite it! Refactor to improve the design Use code audit tools (FxCop, CheckStyle, TFS) 35

How It Works Coding standards are important Enforce good practices to whole the team tools, code reviews, etc. Use Design Patterns Standards should be simple Complex standards are not followed Standards should be more strict for larger teams Developers do not like utter rules like "comment any class member" 36

The 13 th Practice? The Stand Up Meeting Start the day with 15-minute meeting Everyone stands up (so the meeting stays short) in circle Going around the room everyone says specifically: What they did the day before What they plan to do today Any obstacles they are experiencing Can be the way pairs are formed 37

Communication effectiveness People Communicate Most Effectively Face-to-Face 2 people at whiteboard 2 people on phone Paper 2 people on email Videotape Richness of the communication channel 38

How XP Solve Some SE Problems Problem Slipped schedule Cancelled project Cost of changes Defect rates Misunderstand the business Business changes Staff turnover Solution Short development cycles Intensive customer presence Extensive, ongoing testing, system always running Unit tests, customer tests Customer part of the team Changes are welcome Intensive teamwork 39

So what does XP apply to? Domains with changing requirements High-risk projects (including those with high schedule risk) Small project team: 2 15 programmers Cannot be used with a large team unless the team is split into many smaller ones Extended development team Developers, managers and customer Co-located Automated testability 40