CSC 480 Software Engineering Extreme Programming.

Slides:



Advertisements
Similar presentations
Extreme Programming Copyright, 1999 © Jerzy R. Nawrocki Personal Software Process Lecture.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
Agile Development.
NAUG NAUG Knowledge Evening – th February 2007.
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.
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.
COMP4710 Senior Design Software Development Process.
Transitioning to XP or The Fanciful Opinions of Don Wells.
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.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Describing Methodologies PART II Rapid Application Development* Systems Analysis and Design II.
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.
Testing in Extreme Programming
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
Extreme Programming Sylvain Giroux October 3 rd, 2000.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Agile Methods (Extreme Programming) A Framework For Pulling It All Together.
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.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
XP – Extreme Programming
What is S.E? Describe S.E in terms of its mistakes Standish Group ( US - $250 Billion on IT projects. 31% projects are cancelled 52.7%
SEA Side – Extreme Programming 1 SEA Side Software Engineering Annotations Annotation 1: Extreme Programming Professor Sara Stoecklin Director of Software.
AP-1 5. Project Management. AP-2 Software Failure Software fails at a significant rate What is failure? Not delivering it on time is an estimation failure.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
CS 240, Prof. Sarwar Slide 1 CS 240: Software Project Fall 2003 Sections 1 & 2 Dr. Badrul M. Sarwar San Jose State University Lecture #21.
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.
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.
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
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
Software Engineering 2004 Jyrki Nummenmaa 1 Why new software methodologies The classic waterfall-model based techniques are strongly based on the.
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.
Toward Maturity Model for eXtreme Programming Copyright, 2001 © J. Nawrocki, B. Walter, A.. Wojciechowski
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Software Development.
Planning User stories are written.
Alexander Kanavin Lappeenranta University of Technology
Extreme Programming.
What do you need to know about XP?
Basic Engineering Methods
CMPUT eXtreme programming
Coming up: What is Agile?
Refactoring.
Extreme Programming.
Agile software development
Presentation transcript:

CSC 480 Software Engineering Extreme Programming

What is XP Extreme Programming (XP) is actually a deliberate and disciplined approach to software development. XP stresses customer satisfaction  respond to changing customer requirements XP emphasizes team work XP improves a project in four essential ways: communication, simplicity, feedback, and courage

The XP Way of Thinking Extreme Programming (XP) is based on the idea that software which is engineered to be simple and elegant is more valuable than software that is complex and hard to maintain.  Cost: typical projects spend about twenty times as much on people than on hardware  Bugs: emphasizes not testing, but testing well  Changing requirements: embrace changes

When to Use XP XP was created in response to problem domains whose requirements change. XP was set up to address project risk. XP was set up for small groups of programmers, and managers and customers. Testability: must be able to create automated unit and functional tests. The last thing on the list is productivity.

Rules & Practices – Planning User stories are written. User stories Release planning creates the schedule. Release planning Make frequent small releases.small releases The Project Velocity is measured.Project Velocity The project is divided into iterations.iterations Iteration planning starts each iteration. Iteration planning Move people around. Move people around A stand-up meeting starts each day.stand-up meeting Fix XP when it breaks. Fix XP

User Story User Stories are written by the customers as things that the system needs to do for them.by the customers  create time estimates (by developers) for the release planning meeting.  drive the creation of the acceptance tests.acceptance tests. Differences between user stories & traditional requirements specifications  in the level of detail. (the biggest one)  focus on user needs.

Release & Iteration Planning The release plan specifies exactly which user stories are going to be implemented for each system release and dates for those releases.user stories Tasks for an iteration ( of 1 to 3 weeks in length)  Selected user stories: important/of high priority  Failed unit tests  Refactoring

Project Velocity vs. Load Factor The load factor (2 to 5) equals actual calendar days to complete a task divided by the developer's estimated ideal days to do it. The project velocity is a measure of how fast work is getting done on your project.  # of user stories completed in an iteration  Use load factor to create an initial estimate  Sign up the same # of tasks equal to the project velocity measured in the previous iteration.

Moving People Around Move people around to avoid serious knowledge loss and coding bottle necks.  Cross training is often an important consideration.  A team is much more flexible if everyone knows enough about every part of the system to work on it.  Pair programming makes it possible without losing productivity and ensures continuity of thought. Pair programming

Rules & Practices – Designing Simplicity. Simplicity Choose a system metaphor.system metaphor Use CRC cards for design sessions.CRC cards Create spike solutions (or throw-away prototypes) to reduce risk.spike solution No functionality is added early.added early Refactor whenever and wherever possible. Refactor

Design Logic Do the simplest thing that could possibly work. Never try to implement anything that it is not scheduled for this iteration. Choose a system metaphor to keep the team on the same page  naming classes/methods consistently. Design is accomplished in three ways  CRC cards CRC cards  Refactoring Refactoring  Pair programming. Pair programming

Using CRC Card The biggest value of CRC cards is to allow people to break away from the procedural mode of thought and more fully appreciate object technology. A CRC session proceeds with someone simulating the system by talking about which objects send messages to other objects.

Refactor Mercilessly Refactor mercilessly to keep design simple  remove redundancy  eliminate unused functionality  rejuvenate obsolete designs Let go of that perfect design you have envisioned and accept the design that was serendipitously discovered for you by refactoring.  It was a good guide post, but is now obsolete.

Rules & Practices – Coding The customer is always available.always available Code must be written to agreed standards.standards Code the unit test first.unit test first All production code is pair programmed.pair programmed Only one pair integrates code at a time.integrates code at a time Integrate often. Integrate often Use collective code ownership.collective code ownership Leave optimization till last.optimization No overtime.overtime

Unit Tests First Creating a unit test helps a developer to really consider what needs to be done. Benefit for system design: your design will be influenced by a desire to test everything of value to your customer. The code you will create is simple and concise, implementing only the features you wanted.

Pair Programming Two people working together at a sigle computer.  The ideal way One person types and thinks tactically about the method being created The other thinks strategically about how that method fits into the class.  Cross training With increased quality comes big savings later in the project.

Frequent Sequential Integration Only one development pair integrates, tests and releases changes to the source code repository at any given moment. Integrate your own changes with the latest version at your own workstation any time you want. Continuous integration often avoids diverging or fragmented development efforts.

Collective Code Ownership Encourages everyone to contribute new ideas to all segments of the project.  Any developer can change any line of code to add functionality, fix bugs, or refactor.fix bugsrefactor  The entire team are responsible for the system's architecture. Architecture is actually distributed among the team Collective code ownership is actually more reliable than putting a single person in charge of watching specific classes.

Rules & Practices – Testing All code must have unit tests.unit tests All code must pass all unit tests before it can be released.unit tests When a bug is found tests are created.a bug is found Acceptance tests are run often and the score is published. Acceptance tests

Unit Testing XP Style Unit tests XP style is a little different.  create automated unit tests suites.  test all classes in the system.  create your tests first, before the code.tests first  Unit tests are released into the code repository along with the code they test. Unit tests enable collective code ownership and refactoring. Don’t try to omit or delay writing unit tests.

When a Bug is Found When a bug is found tests are created to guard against it coming back. A bug in production requires an acceptance test be written to guard against it. Given a failed acceptance test  developers can create unit tests towards the defectunit tests  run the failing acceptance test when the unit tests run at 100%

Acceptance Tests Acceptance tests are created from user stories.user stories. Acceptance tests are black box system tests. A user story is not considered complete until it has passed its acceptance tests. Acceptance tests should be automated so they can be run often.

Useful Links ethodology.html#N401