Extreme Programming (XP) Web Applications and Services.

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University.
Software Life Cycles ECE 417/617: Elements of Software Engineering
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
XP – eXtreme Programming A gentle introduction. Cleviton Vinícius Jobson Ronan Thiago Rodrigues.
1 March Extreme programming. Presentations Tuesday Campus Tour Sami Says Hawks Thursday Read2Me UNCSET Oral Lab NetVis If helpful, invite your client.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
Extreme Programming: Practices and Strategies Extreme Programming Practices and Strategies Mohammad Alshayeb Information and Computer.
Extreme Programming Collaboration in Software Development Process.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
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.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Agile Software Development
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Software Engineering Modern Approaches
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.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
XP-eXtreme Programming Focus on “the simplest thing that could possibly work.” An approach to programming particularly appropriate for: –Small team (2-10.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
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.
Planning Game in Artifacts Tracker (AT) Project Michal Pilawski.
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.
XP – Extreme Programming
Page 1 Copyright © 1999, RoleModel Software, Inc. An Introduction to Extreme Programming Ken Auer
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
THE AGILE MENTALITY CHAPTER Topics  Why Use Agile and Scrum?  Agile Development –Manifesto for Agile Software Development  Scrum Methodology.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
CS3100 Software Project Management Agile Approaches.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
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.
Goals for Presentation Explain the basics of software development methodologies Explain basic XP elements Show the structure of an XP project Give a few.
Extreme Programming Based on and
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.
IS3320 Developing and Using Management Information Systems Lecture 20: Project Management Rob Gleasure
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Copyright 2002 by RoleModel Software, Inc. Extreme Programming: So What? Roy W. Miller RoleModel Software, Inc.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
CSC 480 Software Engineering Extreme Programming.
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Testing under the Agile Method CSCI 521 Software Project Management based on the book Testing Extreme Programming by Lisa Crispin and Tip House.
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
Software Development.
Planning User stories are written.
Extreme Programming.
What do you need to know about XP?
eXtreme Programming (XP) and eXtreme Modeling (XM)
Coming up: What is Agile?
Refactoring.
Extreme Programming.
Presentation transcript:

Extreme Programming (XP) Web Applications and Services

Agenda l Software Processes l What is XP? l XP Practices l Management Strategy l Facilities Strategy l Planning Strategy l Design Strategy l Development Strategy l Testing Strategy l When to use XP?

Software Processes l What is a software process? l Major models: The Waterfall model. The Iterative (Incremental) model. l An example of a new iterative software process: Extreme Programming (XP).

Waterfall Model Structure Analysis Design Code Test

Iterative Model Structure Analysis Design Code Test System Complete? Operation and Maintenance No Deliver IncrementYes Deliver System

What is XP? l “XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop software”. -Kent Beck

XP is Different l Early, concrete, and continuous feedback from short-cycles. l Incremental planning approach. l Flexibility of scheduling the implementation based on changing business needs. l Reliance on tests written by the programmers. l Reliance on the collaboration of programmers.

Software Processes Analysis Design Code Test WaterfallIterativeXP Kent Beck 1999

XP Practices l Planning game. l Small releases. l Simple design. l Testing. l Refactoring. l Coding standards. l Pair programming. l Collective ownership. l On-site customer. l 40-hour week. l Open workspace. l Continuous integration.

Management Strategy l Be available as a development partner. l See long term refactoring goals. l Help programmers with individual technical skills like testing and refactoring. l Explain the process to upper level managers. l Keep track with software metrics.

Management Strategy- Meeting l Daily Stand-up Meeting Entire team Problems. Solutions. Stand in a circle Avoid long discussions. No side conversations.

Summary of Management Strategy l Coach: help, plan and manage. l Track software metrics. l Daily stand-up meeting.

Facilities Strategy l Open space. l Tables in the middle of the space. l Cubbies around the outside of the space. l A room with a nice view -if possible. Extreme Programming Explained 2000 The DaimlerChrysler C3 work area

Planning Strategy- Guidelines l Only plan -in details- for the next release. l Accepted responsibility. l The person responsible for implementation gets to estimate. l Planning for priorities vs. planning for development.

Planning: User Stories l User stories are written by the customers – features the system needs to do- l Much simpler format than traditional requirements specifications: 3 sentences written by customers. Non-technical terminology. l KEY: Stories that are most valuable to the customer are developed first.

Planning -Story Card Extreme Programming Explained 2000

Planning: Iterations l Developers give each user story an estimate of 1, 2, or 3 weeks. l Stories are then organized in order of importance to the customer. l The development schedule is divided into iterations of 1 to 3 weeks in length based on the user stories.

Planning: Releases l Releases are iterative versions of the system released by the development team to the customers. Released at the end of iteration. An integrated working system. Includes the latest successfully implemented, integrated, and tested story from that iteration.

Customer System Priority Organization of user stories Release 1Release 2Release 3 Story 1Story 2Story 3 Division of system into user stories Iteration 1 Iteration 2 Iteration 3 Story 2Story 3Story 1 Iterations assigned for the development of each story Working, tested system with story 2 integrated

Iteration Breakdown l Each iteration is broken down into programming tasks for developing the user story of that iteration. l Each task is 1-3 days in duration. l Each programming pair choose a task (or more). l The programming pair then design test cases and implement them.

Iteration Breakdown Test Case 1Test Case 2Test Case 3 Task 1Task 2Task 3 One iteration Development of one user story Integrate into the system Passed

Summary of XP Planning User Stories Priorities IterationsReleases Tasks Test Cases

Design Strategy -Rules l Always do the simplest thing that could possibly work. l Use CRC cards for design One card per object.

Design Strategy -Rules l Never add functionality early. “Only 10% of that extra stuff will ever get used, so you are wasting 90% of your time” “Concentrate on what is scheduled for today only” ExtremeProgramming.org l Refactor: replace anything complex with something simpler. Remove redundancy. Eliminate unused functionality. Enhance efficiency.

Summary of Design Rules The goal is simple code on time so: Keep things simple and clean. Refactor. Stick to the planned schedule.

Development Strategy - Guidelines l Collective code ownership Encourages all programmers to contribute to all segments of the project. l Coding standards Consistency saves time and money. Makes it easier for the entire team to code and refactor.

Development Strategy - Guidelines l Write the test case before the code. l Continuous integration. l 40 hour week Projects requiring overtime will be late anyway. Avoid overtime. l Pair programming.

Pair Programming l Two brains are better than one. l Pairs consider more possible solutions to a problem. l Design alternatives increase.

Pair Programming Score Enjoy Time Confidence Functionality Readability Teams (mean)Individuals (mean) John Nosek, “The Case for Collaborative Programming,” Communications of the ACM, March 1998, Vol. 41, No. 3 pp

Summary of Development Strategy l Write the test case before the code. l Collective code ownership. l Coding standards. l Continuous integration. l Pair programming. l 40 hour week.

Testing Strategy –Unit Testing l Unit testing (test cases) Programmers write their own unit tests Create tests BEFORE the code. Programmers implement one unit test at a time. After 100% of unit tests are passed, that unit can be integrated. During integration, all previous tests are run to verify the overall system still runs.

Testing Strategy -Integration l Code integration One pair at a time. Prevents problems introduced when integrating modules. Maintain a latest version. Allows for parallel coding. Integrate often.

Testing Strategy -Acceptance Test l Acceptance tests User stories are the basis for acceptance testing. Black box testing.

Summary of Testing Pair Programming Continuous Integration 100% Unit Tests Passed Acceptance Tests Passed Create Unit Test Failed Passed End of Task Run all unit tests ExtremeProgramming.org

Customers l Customer availability On site customer. l Duties Write stories. Define the priorities of the stories. Define the scope or timing of releases.

XP Favorable Conditions l Dynamically changing requirements and functionality. l Small groups of programmers l Input by customers and managers. l Testability.

XP is against “BigDesignUpFront” l The Code is the Design l “When the original phases of software development were laid down, they were just plain wrong. Requirements, Design, Implementation, and Test are not what we think they are. Design is not something that you do only before you code. Implementation is not the act of coding. We can see this if we look realistically at what they are in other engineering disciplines.” l "The final goal of any engineering activity is to create some kind of documentation.” l “After reviewing the software development lifecycle today, it appears that the only software documentation that actually seems to satisfy the criteria of an engineering design are the source code listings. “ l XP is often accused of not believing in comments. That’s not exactly true. They do believe heavily in “Self-documenting code” But they also believe “The position of the article was not that source code makes all other documentation obsolete, it is simply that the act of programming is designing.”

Ward Cunningham On Comments l We comment methods only after doing everything possible to make the method not need a comment. l We prefer to clarify the code directly over putting in an explanation of what the code could say it if were better done. We have written "literate programs", cf DonKnuth, and no one has used them. Too bad, really, they were cool.

Can this really work? l There are several Fortune 500 companies that are now using XP, including Ford, Daimler-Chrysler, and First Union. l But it only works ALL TOGETHER. “AlmostXP is like being AlmostAlive or AlmostSolvent.” The emphasis on readable code (even without comments) works because Pair Programming ensures readable code The integrating constantly is made possible by the Unit Tests The lack of up-front design effort works because the User is on-site, the user stories drive the effort, and there’s a high degree of communication among the team members

XP Path

XP Development

XP Collective Code Ownership

Lessons Learned

Companies That Use XP l Knowledge management software. l Chrysler. l Thought works. l Andrena objects. l EuropeLoan bank. l Evant solutions. l Acxiom. l Workshare technology.

References l Extreme Programming Explained: Embrace Change by Kent Beck l Planning Extreme Programming by Kent Beck, Martin Fowler l Extreme Programming Installed by Ron Jeffries, Ann Anderson, Chet Hendrickson, Kent Beck, Ronald E. Jeffries l Extreme Programming in Practice, by James W. Newkirk, Robert C. Martin l Extreme Programming Examined by Giancarlo Succi, Michele Marchesi

Websites l l l l

Questions?