Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.

Slides:



Advertisements
Similar presentations
Prescriptive Process models
Advertisements

Extreme Programming ( an introduction ).
Software Life Cycle Requirements analysis System design Program design Program implementation (coding) Unit testing Integration testing System testing.
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
Copyright © Texas Education Agency, Computer Programming Software Life Cycle.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
NAUG NAUG Knowledge Evening – th February 2007.
1 Software Testing and Quality Assurance Lecture 34 – SWE 205 Course Objective: Basics of Programming Languages & Software Construction Techniques.
XP – eXtreme Programming A gentle introduction. Cleviton Vinícius Jobson Ronan Thiago Rodrigues.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Extreme Programming Mark Steverson. What Is Extreme Programming? ● Extreme Programming (XP) is a lightweight, agile methodology developed by Kent Beck.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Extreme Programming Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
Chapter 3 – Agile Software Development Pepper modification of Sommerville presentation & Colm O’hEocha – AgileInnovation Ltd presentation 1Chapter 3 Agile.
Teaching material for a course in Software Project Management & Software Engineering – part II.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
CPSC 2150 August 21, Chapter 1 Object Oriented Software Development This is an introductory course In this chapter we will look at 3 topics Challenges.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Chapter 3 Agile Software Development (1/2) Yonsei University 2 nd Semester, 2015 Sanghyun Park.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Agile Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Project Management Software development models & methodologies
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
CS223: Software Engineering
Software Development.
Computer Programming Software Life Cycle.
Extreme Programming.
Extreme Programming.
Rapid software development
What do you need to know about XP?
Chapter 3 – Agile Software Development
SNS College of Engineering Coimbatore
Agile Development – a new way of software development?
Extreme Programming.
Presentation transcript:

Xtreme Programming

Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally retired.

5 Phases of software engineering Analysis Design Implementation Testing Deployment

Waterfall model When the process was first developed in the early 1970’s it was postulated that one phase would run to completion, its output would spill over to the next phase, and the next phase would begin. This model was called the Waterfall model

Problems with the Waterfall Figure out what Figure out how Then do it Verify was done right Hand product to customer Perfect requirement definition?

The Spiral Model Proposed by Barry Boehm in Breaks the development process down into multiple phases. Early phases focus on construction of prototypes

Problems with the Spiral By building in repeated trials and feedback, a development process that follows the spiral model has a greater chance of delivering a satisfactory system. BUT there is a danger that if engineers believe that they don’t have to do a good job because they can always do another iteration, then there will be many iterations and the process will take a long time to complete

More problems! Not enough time to test due to pressure to get new software or new versions out fast Breakdown in communication between programmers and management Blamed by managers if things go wrong Business problem changes half way through project

What is needed Continuous feedback Incremental planning Test driven development Collective ownership Simplicity Support for difficult decisions

New Philosophy

Set of Practices Realistic Planning – Customers are to make business decisions, programmers are to make technical decisions – Update the plan when it conflicts with reality How does this help?

Set of Practices Small Releases – Release a useful system quickly – Then release updates on a very short cycle. How does it help? – Reduces risk of schedule slip and project cancellation – a small release that actually works establishes credibility – Gets the customer involved

Set of Practices Metaphor – All programmers should have a simple shared story that explains the system under development – “This program works like a hive of bees, going out for pollen and bringing it back to the hive.”: description of an agent based information system How does this help? – Use of a common system of names ensures that everyone understands how the system works and where to find the functionality they are looking for

Set of Practices Simplicity – Design everything to be as simple as possible instead of preparing for future complexity How does this help? – Avoids “featuritis” and maintains focus on the real problems

Set of Practices Test Driven Development – The system is continuously tested in short cycles of adding a test and making it work – When the code is released to the repository, all the tests MUST run 100% of the time

Set of Practices How does this help? – Programmers get immediate feedback – Leads to almost 100% test coverage – If the defect rate of an implemented system is too high, the system might be discarded or replaced

Set of Practices Customer Tests – The customer defines one or more automated acceptance tests to show that the feature is working. – Once the test runs, the team keeps it running correctly thereafter. How does this help? – The system only improves, always notching forward

Set of Practices Refactoring – Programmers are to restructure the system continuously to improve the code and eliminate duplication – And increase the cohesion of the code while lowering the coupling (hallmarks of well designed code) How does this help? – Good, simple design helps maintain development speed

Set of Practices Pair programming – Two heads are better than one – Put programmers together in pairs, and require each pair write code on a single computer

Set of Practices How does it help? – Programmers do not feel isolated or unsupported – Provides better code and tests – Serves to communicate knowledge throughout the team – As pairs switch, everyone gets the benefit of everyone’s specialised knowledge – Programmers learn, their skills improve, they become more valuable to the team and to the company.

Set of Practices Collective Code Ownership – All programmers have permission to change all code as it becomes necessary How does this help? – All code gets the benefit of many people’s attention, which increases code quality and reduces defects – Avoids an individual putting a feature in the wrong place, code duplication and low or bad cohesion

Set of Practices Continuous integration – Whenever a task is completed, build the entire system and test it. – This could mean multiple builds per day! How does this help? – Ever made several changes to code in different places, then built the system and …it does not work? And not known why?

Set of Practices Continuous Integration How does this help? – The team gets practiced at integration by doing it frequently, rather than delegating it to people not familiar with the whole system – Detects bugs that are not detected by testing – Avoids time lost due to code freezes

Set of Practices 40 hour week – Don’t cover up unrealistic schedules with bursts of heroic effort. How does this help? – Enables work at a sustainable pace

Set of Practices On-site customer – An actual customer of the system is to be accessible to team members at all times. How does it help? – Reduces chance of the business being misunderstood – The specification can be continuously refined to meet expectations

Set of Practices Coding standards – Programmers are to follow standards that emphasize self-documenting code – All the code in the system looks as if it was written by a single – very competent – individual. – The specifics of the standard are not important How does it help? – Supports collective ownership

Synergy Beck claims that the value of the Extreme Programming approach lies in the synergy of these practices – the sum is bigger than the parts. Refactoring is strongly supported by comprehensive testing to be sure that as the design evolves, nothing is broken. Thus customer tests and programmer tests are a critical enabling factor. The XP practices support each other.

XP Practices