Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.

Slides:



Advertisements
Similar presentations
Acceptance Testing.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
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.
 User assignments (product owner)  ‘circle’  1 st sprint: ◦ Scrum Boards (informative workspace)  Product -, release -, sprint -, defect backlog 
Agile
1 Software Testing and Quality Assurance Lecture 34 – SWE 205 Course Objective: Basics of Programming Languages & Software Construction Techniques.
1 March Extreme programming. Presentations Tuesday Campus Tour Sami Says Hawks Thursday Read2Me UNCSET Oral Lab NetVis If helpful, invite your client.
Review: Agile Software Testing in Large-Scale Project Talha Majeed COMP 587 Spring 2011.
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.
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.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Figures – Chapter 3. Figure 3.1 The principles of agile methods PrincipleDescription Customer involvementCustomers should be closely involved throughout.
Current Trends in Systems Develpment
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Extreme programming overview Agenda  Extreme programming goals  Extreme programming values  Extreme programming practices  The Extreme programming.
Agile Methodologies: Comparative Study and Future Direction 林佳蓁 資工 4B.
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.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP – Extreme Programming
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
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.
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.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
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.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
CS223: Software Engineering Lecture 16: The Agile Methodology.
Agile Development Chapter 10 - part 2. Agile Philosophy  A guiding philosophy and set of guidelines for : developing information systems in an unknown,
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
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.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Project Management Software development models & methodologies
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Software engineering (cs3529) target classes: cs14: A,B
CS223: Software Engineering
Agile Methods SENG 301.
Agile Project Management and the yin & yang of
Software Development.
Planning User stories are written.
What do you need to know about XP?
Chapter 3 – Agile Software Development
Coming up: What is Agile?
Extreme Programming.
Presentation transcript:

Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer

Extreme Software Engineering A Hands-On Approach No artificial barrier between the customer and the development team. The client is part of the team responsibility and authority to make development decisions The rest of the team consists of: developers, testers, managers, archivers, administrative assistants, etc. these roles are filled at various times by different members of the team.

Extreme Software Engineering A Hands-On Approach The development team should use the language of a common analogy to discuss the system. The common terminology supports: Design discussions among developers Communication between developers and client Conceptual integrity of the system. The greatest example is the ‘desktop metaphor’.

Extreme Software Engineering A Hands-On Approach The planning process in XP provides an incrementally describing what can and will be accomplished by the next, short-term deadline. The client expresses software goals through user stories Development team estimates costs of these stories Client prioritizes the stories, driving the project. After a mini-delivery, the team evaluates their estimates, and incorporates that data into the next round of estimation.

Extreme Software Engineering A Hands-On Approach System design is always as simple as the current level of functionality allows. No extraneous complexity needed or allowed. Incremental design extends only far enough to include the next iteration’s new features. When the code becomes unwieldy, it must be refactored.

Extreme Software Engineering A Hands-On Approach XP teams release tested, working code Functionality is specified by the client These frequent deliveries are necessarily small Every development cycle (iteration – typically two weeks), the client gets new software The client then evaluates it and uses the current status to dictate the content of the next delivery

Extreme Software Engineering A Hands-On Approach The customer develops acceptance tests to determine deliveries satisfy the user stories These tests can be semi-automated and used to determine when the development team has completed a user story. These tests are written in a form familiar to the client, but mechanically useable by the development team.

Extreme Software Engineering A Hands-On Approach Programmers working in pairs write every line of code delivered to the client. Two programmers and one computer represent the indivisible unit of XP code development. One person types, the other supports in whatever role is appropriate at a given time. Track and correct typos Make implementation suggestions Supply needed information May take over keyboard at any time

Extreme Software Engineering A Hands-On Approach Developers established their next mini-goal They write an automated unit test to verify that the mini-goal is satisfied - before writing code The test becomes part of an ever-increasing test suite They write code to pass the test as simply as possible The test suite is running constantly, providing feedback on the developing system.

Extreme Software Engineering A Hands-On Approach Deficiencies in the software design are refactored, incrementally improving the system Refactoring leaves the code functionally equivalent, yet better designed By starting with a simple design, and always making small improvements, by induction, XP produces code with good design characteristics.

Extreme Software Engineering A Hands-On Approach The team, as a whole, owns the system software. The original author of a section of code is unimportant Anyone can modify any code at anytime without asking anyone for permission. A revision control system is necessary to make such an open system work

Extreme Software Engineering A Hands-On Approach At all times, regardless of the level of functionality, the system compiles, runs and passes all the tests. Any new code must, compile, run and pass all the tests before being added back into the system. Continuous integration means making new system builds multiple times per day.

Extreme Software Engineering A Hands-On Approach The team should put about the same amount of work and effort into every iteration. Overtime leads to burnout, mistakes and more overtime. By maintaining a steady development effort, the team can create better software in shorter amounts of time in the long run. There is no such thing as “a big final push” to meet a deadline

Extreme Software Engineering A Hands-On Approach Developed code should look like it was written by a single, consistent person The team must adopt and follow some coding standard to be used throughout the development. The details of a particular standard are not nearly as important as consistently adhering to that standard.