From the Book: Preface How much would you pay for a software development team that would do what you want Wait, don't answer yetwhat if they could also tell you how much it would cost, so that you could decide what to do and what to defer, on your way to your deadline You also get quality software, a robust array of tests that support the project through its entire lifecycle, and an up-to-date, clear view of project status. Best of all, you get the ability to change your mind about what you want, at any time. There aren't any silver bullets in software development, and there probably never will be. However, Extreme Programming is a simple set of common-sense practices that, when used together, really can give you much of what you just read in the paragraph above. In this book, we tell you what the XP practices are, and how to install them in your project. We are software developers. We have been involved in many successful projects, and even in some that weren't so successful. The successful ones were a lot more fun, for us, and for our customers. The unsuccessful ones have taught us a great deal about software development. We have had the privilege of working on a great project, with a great teacher, Kent Beck. We helped shape the software process named Extreme Programming, XP for short. Since then, we have been helping everyone who will listen to learn from our experience. The first book in the Extreme Programming series, Extreme Programming Explained , covers the reasoning behind the XP process. Based on our experience on the original XP project (and others), this book describes what makes XP work, day to day and monthto month. Successful software development is a team effortnot just the development team but the larger team consisting of customers, management, and developers. Extreme Programming is a simple process that brings these people together and helps them to succeed together. XP is aimed primarily at object-oriented projects using teams of a dozen or fewer programmers in one location. We would use XP for both in-house development and development of shrink-wrapped software. The principles of XP apply to any moderately sized project that needs to deliver quality software rapidly and flexibly. XP is about balancing the needs of customers with the abilities of programmers, and about steering (managing the project to success). If you're a customer, a programmer, or a manager, here's what this book offers you: Customerswho have software that needs to be developed: you will learn simple, effective ways to communicate what you need, to be sure that you are getting what you need, and to steer the project to success. You will learn that you can change your mind and still get what you need on time. Programmerswho, on an XP project, define the architecture, design the system, and write the tests and the code that support them: you will learn how to deliver business value quickly, how to deal with changing requirements, and how to build customer confidence and support. You will learn to build for tomorrow by building only what you need today. Managerswho control the project resources: you will learn how to measure project progress, how to measure quality, and how to answer the all-important question, "When will you be done " You will learn an important truth of managementto use the programmers' actual performance to predict completion. Customers, programmers, and managers must all work together to build the system that's needed. Chapter 1, Extreme Programming, will describe the roles, rights, and responsibilities, and provide a road map for the book. Dig right in. We're sure that the XP practices can improve your projects, as they have ours.
Cited By
- Fucci D, Erdogmus H, Turhan B, Oivo M and Juristo N (2017). A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last?, IEEE Transactions on Software Engineering, 43:7, (597-614), Online publication date: 1-Jul-2017.
- Lucassen G, Dalpiaz F, Van Der Werf J and Brinkkemper S (2016). Improving agile requirements, Requirements Engineering, 21:3, (383-403), Online publication date: 1-Sep-2016.
- Krawatzeck R, Hofmann M, Jacobi F and Dinter B Constructing software-intensive methods Proceedings of the 8th international conference on Design Science at the Intersection of Physical and Virtual Design, (486-493)
- Grigera J, Rivero J, Robles Luna E, Giacosa F and Rossi G From requirements to web applications in an agile model-driven approach Proceedings of the 12th international conference on Web Engineering, (200-214)
- Payne J, Cavé V, Raman R, Ricken M, Cartwright R and Sarkar V DrHJ Proceedings of the 9th International Conference on Principles and Practice of Programming in Java, (147-150)
- Baskerville R, Pries-Heje J and Madsen S (2011). Post-agility, Information and Software Technology, 53:5, (543-555), Online publication date: 1-May-2011.
- Cao L, Ramesh B and Abdel-Hamid T (2010). Modeling dynamics in agile software development, ACM Transactions on Management Information Systems, 1:1, (1-26), Online publication date: 1-Dec-2010.
- Robles Luna E, Burella J, Grigera J and Rossi G A flexible tool suite for change-aware test-driven development of web applications Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2, (297-298)
- Madeyski L (2010). The impact of Test-First programming on branch coverage and mutation score indicator of unit tests, Information and Software Technology, 52:2, (169-184), Online publication date: 1-Feb-2010.
- Nguyen C, Gallagher E, Read A and De Vreede G Generating user stories in groups Proceedings of the 15th international conference on Groupware: design, implementation, and use, (357-364)
- Onions P and Patel C Enterprise SoBA Proceedings of the 10th IEEE international conference on Information Reuse & Integration, (105-109)
- Robles Luna E, Grigera J and Rossi G Bridging Test and Model-Driven Approaches in Web Engineering Proceedings of the 9th International Conference on Web Engineering, (136-150)
- Vainsencher D and Black A A pattern language for extensible program representation Transactions on Pattern Languages of Programming I, (1-47)
- Höfer A Exploratory comparison of expert and novice pair programmers Proceedings of the Third IFIP TC 2 Central and East European conference on Software engineering techniques, (218-231)
- Nyfjord J and Kajko-Mattsson M Degree of agility in pre-implementation process phases Proceedings of the Software process, 2008 international conference on Making globally distributed software development a success story, (234-245)
- Höfer A Video analysis of pair programming Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral, (37-41)
- Mishra D and Mishra A Achieving success in supply chain management software by agility Proceedings of the 8th international conference on Product-Focused Software Process Improvement, (237-246)
- Ludlow L The application of user stories for strategic planning Proceedings of the 8th international conference on Agile processes in software engineering and extreme programming, (198-202)
- Araújo B, Rocha A, Xavier A, Muniz A and Garcia F Web-based tool for automatic acceptance test execution and scripting for programmers and customers Proceedings of the 2007 Euro American conference on Telematics and information systems, (1-4)
- Chai M, Zhang X, Miyake S, Mibe R and Zhang L Survey on Japan-oriented offshore software development in China Proceedings of the 1st international conference on Software engineering approaches for offshore and outsourced development, (170-181)
- Vainsencher D and Black A A pattern language for extensible program representation Proceedings of the 2006 conference on Pattern languages of programs, (1-25)
- Bergin J Patterns for agile development practice part 3 (version 4) Proceedings of the 2006 conference on Pattern languages of programs, (1-14)
- Auvinen J, Back R, Heidenberg J, Hirkman P and Milovanov L Software process improvement with agile practices in a large telecom company Proceedings of the 7th international conference on Product-Focused Software Process Improvement, (79-93)
- Duarte A, Cirne W, Brasileiro F and Machado P GridUnit Proceedings of the 28th international conference on Software engineering, (779-782)
- LeJeune N (2006). Teaching software engineering practices with Extreme Programming, Journal of Computing Sciences in Colleges, 21:3, (107-117), Online publication date: 1-Feb-2006.
- Martins P and da Silva A PIT-P2M Proceedings of the 2005 OTM Confederated international conference on On the Move to Meaningful Internet Systems, (516-525)
- Kalibera T, Bulej L and Tuma P Quality assurance in performance Proceedings of the First international conference on Quality of Software Architectures and Software Quality, and Proceedings of the Second International conference on Software Quality, (271-288)
- Tillmann N and Schulte W Parameterized unit tests Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, (253-262)
- Tillmann N and Schulte W (2005). Parameterized unit tests, ACM SIGSOFT Software Engineering Notes, 30:5, (253-262), Online publication date: 1-Sep-2005.
- Ipate F and Holcombe M Using state diagrams to generate unit tests for object-oriented systems Proceedings of the 6th international conference on Extreme Programming and Agile Processes in Software Engineering, (214-217)
- Lübke D and Schneider K Agile hour Proceedings of the 6th international conference on Product Focused Software Process Improvement, (517-529)
- Woit D Requirements interaction management in an eXtreme programming environment Proceedings of the 27th international conference on Software engineering, (489-494)
- Wu H Pure object-based domain model for enterprise systems Proceedings of the 43rd annual ACM Southeast Conference - Volume 2, (353-354)
- McKinney D and Denton L Affective assessment of team skills in agile CS1 labs Proceedings of the 36th SIGCSE technical symposium on Computer science education, (465-469)
- McKinney D and Denton L (2005). Affective assessment of team skills in agile CS1 labs, ACM SIGCSE Bulletin, 37:1, (465-469), Online publication date: 23-Feb-2005.
- Memon A, Nagarajan A and Xie Q (2005). Automating regression testing for evolving GUI software, Journal of Software Maintenance and Evolution: Research and Practice, 17:1, (27-64), Online publication date: 1-Jan-2005.
- Drobka J, Noftz D and Raghu R (2004). Piloting XP on Four Mission-Critical Projects, IEEE Software, 21:6, (70-75), Online publication date: 1-Nov-2004.
- Reis C and Cartwright R Taming a professional IDE for the classroom Proceedings of the 35th SIGCSE technical symposium on Computer science education, (156-160)
- Reis C and Cartwright R (2004). Taming a professional IDE for the classroom, ACM SIGCSE Bulletin, 36:1, (156-160), Online publication date: 1-Mar-2004.
- Noble J, Marshall S, Marshall S and Biddle R Less Extreme Programming Proceedings of the Sixth Australasian Conference on Computing Education - Volume 30, (217-226)
- Reis C and Cartwright R A friendly face for Eclipse Proceedings of the 2003 OOPSLA workshop on eclipse technology eXchange, (25-29)
- Rinaldi A and Benedicenti L Building standard ERP software packages using self-developed agile methodologies Proceedings of the 4th international conference on Extreme programming and agile processes in software engineering, (366-368)
- Bozheva T Practical aspects of XP practices Proceedings of the 4th international conference on Extreme programming and agile processes in software engineering, (360-362)
- Ambu W and Gianneschi F Extreme programming at work Proceedings of the 4th international conference on Extreme programming and agile processes in software engineering, (347-350)
- Bossi P Using actual time Proceedings of the 4th international conference on Extreme programming and agile processes in software engineering, (244-253)
- Gelowitz C, Sloman I, Benedicenti L and Paranjape R Real-time extreme programming Proceedings of the 4th international conference on Extreme programming and agile processes in software engineering, (63-72)
- Schneider J and Johnston L eXtreme Programming at universities Proceedings of the 25th International Conference on Software Engineering, (594-599)
- Hedin G, Bendix L and Magnusson B Introducing software engineering by means of Extreme Programming Proceedings of the 25th International Conference on Software Engineering, (586-593)
- Abrahamsson P, Warsta J, Siponen M and Ronkainen J New directions on agile methods Proceedings of the 25th International Conference on Software Engineering, (244-254)
- Murru O, Deias R and Mugheddu G (2003). Assessing XP at a European Internet Company, IEEE Software, 20:3, (37-43), Online publication date: 1-May-2003.
- George B and Williams L An initial investigation of test driven development in industry Proceedings of the 2003 ACM symposium on Applied computing, (1135-1139)
- Allen E, Cartwright R and Reis C Production programming in the classroom Proceedings of the 34th SIGCSE technical symposium on Computer science education, (89-93)
- Allen E, Cartwright R and Reis C (2003). Production programming in the classroom, ACM SIGCSE Bulletin, 35:1, (89-93), Online publication date: 11-Jan-2003.
- Barriocanal E, Urbán M, Cuevas I and Pérez P (2002). An experience in integrating automated unit testing practices in an introductory programming course, ACM SIGCSE Bulletin, 34:4, (125-128), Online publication date: 1-Dec-2002.
- Patton J Hitting the target OOPSLA 2002 Practitioners Reports, (1-ff)
- Bellotti V, Ducheneaut N, Howard M, Smith I and Neuwirth C Innovation in extremis Proceedings of the 4th conference on Designing interactive systems: processes, practices, methods, and techniques, (181-192)
- Newkirk J Introduction to agile processes and extreme programming Proceedings of the 24th International Conference on Software Engineering, (695-696)
- Mecke C Automated testing of mySAP business processes Software quality and software testing in internet times, (261-279)
- McCauley R (2001). Agile development methods poised to upset status quo, ACM SIGCSE Bulletin, 33:4, (14-15), Online publication date: 1-Dec-2001.
- Poole C and Higgins A Extreme Maintenance Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
- Lippert M and Roock S Adapting XP to complex application domains Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering, (316-317)
- Lippert M and Roock S (2001). Adapting XP to complex application domains, ACM SIGSOFT Software Engineering Notes, 26:5, (316-317), Online publication date: 1-Sep-2001.
- Matthies C, Kowark T, Uflacker M and Plattner H Agile metrics for a university software engineering course 2016 IEEE Frontiers in Education Conference (FIE), (1-5)
Index Terms
- Extreme Programming Installed