Development Techniques CSE301 University of Sunderland Harry R. Erwin, PhD.

Slides:



Advertisements
Similar presentations
eXtreme Programming (XP)
Advertisements

Agile Software Development کاری از : مهدی هوشان استاد راهنما : استاد آدابی.
E X treme Programming & Agile Modeling Copyright © 2003 Patrick McDermott UC Berkeley Extension
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall B.1.
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.
Agile
Software Engineering.
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 4 Slide 1 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Why Be Concurrent? CET306 Harry R. Erwin University of Sunderland.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
High Ceremony Programming (HCP) CSE301 University of Sunderland Harry R. Erwin, PhD.
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.
Software Life Cycle Models. Waterfall Model  The Waterfall Model is the earliest method of structured system development.  The original waterfall model.
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
Agile
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
CS3100 Software Project Management Agile Approaches.
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
University of Sunderland CSE301 Advanced Object-Oriented Software DevelopmentUnit 1 Test-Driven Development CSE301 University of Sunderland Dr. Giles Oatley.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
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.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix B Agile Methodologies B.1.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
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)
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.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
By Manish Shrotriya CSE MS 4 Point Agile Manifesto 1.Individuals and interactions over processes and tools 2.Working software over comprehensive.
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.
Project Management Software development models & methodologies
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
Software Development.
Appendix B Agile Methodologies
What do you need to know about XP?
Agile and XP Development
Agile and XP Development
Agile and XP Development
Coming up: What is Agile?
Appendix B Agile Methodologies
Extreme Programming.
Agile software development
Extreme Programming (and Pair Programming)
Presentation transcript:

Development Techniques CSE301 University of Sunderland Harry R. Erwin, PhD

Sources Boehm, 1981, Software Engineering Economics, Prentice- Hall. Stephens and Rosenberg, 2003, Extreme Programming Refactored: The Case Against XP, Apress. Fowler, 2000, Refactoring: Improving the Design of Existing Code, Addison-Wesley. Martin, 2003, Agile Software Development: Principles, Patterns, and Practices, Prentice-Hall. Extensive discussions on comp.object Ebert 2000,

Three Techniques Discussed Here Waterfall (Royce, 1970) Spiral Model (Boehm, 1988) Extreme Programming (XP, Beck, 1996+) XP is an example of an agile method that we will study in detail.

Waterfall Reqs Arch Design Code Intg Accept

Waterfall Elements Feasibility Analysis (not included in estimate) Requirements Definition (20% of costs) Architectural Design (20% of costs) Detailed Design (20% of costs) Code/Unit Test (20% of costs) Integration (20% of costs) Acceptance Test (20% of costs) Operations and Maintenance (100+% of costs) Note these costs sum to more than 100%! Feasibility analysis, requirements definition, and operations and maintenance are usually not included in the quoted cost!

Waterfall Tradeoffs Advantages: –Economical –Fast Disadvantages: –Requirements must be known up front. –No mechanism for risk buy-down. –Cost to repair requirements errors is high, especially missing requirements.

Waterfall Costs Rough Order of Magnitude (ROM)! For life-critical or good quality commercial software: about 320 software lines of code per man-month. For prototype or post-graduate student coding: about 1000 software lines of code per man- month. The ROM estimates are for tested and fully documented code. For better estimates, use Boehm (1981).

Waterfall Variants Incremental Development –Based on Brooks’ build-it-twice approach. “Software should be built in increments of functional capability.” –Has worked on very large programs. Advancemenship Anticipatory documentation Software scaffolding –Reduces overall costs and front-loads the software labor distribution –Often builds software that is never used, though.

Spiral Model

Spiral Model Approach Prior to a final waterfall, risks are explored by incremental changes to a prototype. The stakeholders always have the option of rejecting an increment and redirecting the program. Costs more than Waterfall and takes longer, but has reduced risks.

Extreme Programming (Beck, 1998, in Cunningham’s wiki) Is defined by the following: –Values –Practices –Activities –Roles Intended to flatten the cost of change curve.

XP Values Communication—verbal, with a collocated team. Simplicity—always do the simplest thing that can possibly work. Feedback—continuous from the customer. Courage—willingness to change.

XP Practices Test-driven development User stories The planning game Whole team Short cycles Metaphor Simple design Refactor mercilessly Collective ownership Pair programming Continuous integration Sustainable pace Coding standards Acceptance tests (Emergent design)

XP Activities Coding Testing Listening Designing

XP Roles Programmer Tester Tracker Coach Consultant Big boss

XP Life Cycle Evolutionary development –Coding is continuous –Iterations of 1-3 weeks Design -> Code -> Integrate -> Test –Repeated several times a day Based on ‘stories’

Problems Targeted by XP Lack of communication Requirements volatility Software development that isn’t used. Out of date documentation Obsolescence

Interaction Between Practices XP is believed to work only when all practices are followed. Then the weaknesses of one practice are covered by the strengths of others. For example: –Use of emergent design is well-known to be risky. Constant refactoring protects against that risk. –Constant refactoring is a time sink and a source of bugs—extensive unit testing protects against that. –Reliance on unit tests does not validate the design. Pair programming protects against design errors.

Test-Driven Development ‘The test-driven development is the method of software development where tests specify interfaces of implementation and all code must have passed the tests.’ (Wikipedia)

How Bob Martin Describes It (personal communication) Erwin: TDD as I understand it: 1. Write a test for a bit of functionality. 2. Show that it fails. 3. Write the code to make the test pass. Martin: A good summary, but there's more. 1. We do not write production code until there is a failing test. 2. We write the simplest possible production code to get the test to pass. 3. We do not write more tests when we have a failing test. 4. We do not add to a failing test.

Martin Comments Further If you watched someone doing TDD you would see them oscillating between test code and production code once every minute or so. During each oscillation the programmer would add a few lines to his test code, thus making it fail (or not compile) and then add just a few lines to his production code in order to make the test pass (or compile). Each oscillation is so simple that it's not worth taking. Each oscillation is so simple that the risk of error is close to zero. If you walk into a room of people working this way, and chose anyone at random, a minute ago all his code would have been working.

Pair Programming Pair Programming (ExtremeProgrammingPractice) requires two engineers to participate in one development effort at one workstation. Each member performs the action the other is not currently doing: While one types in unit tests the other thinks about the class that will satisfy the test, for example. Studies have shown that, after training for the "PeopleSkills" involved two programmers are more than twice as productive as one for a given task. (Wikipedia)

The Planning Game Planning is an emotional minefield. Of course Development would like to program faster. Of course the project manager would like to be able to say exactly how fast Development can go. Of course Business would like to be able to say exactly what they want. Of course Business would rather not change its mind. When any of the participants in planning begin acting these wishes (or rather in accordance with the fears that lie behind each wish), then planning doesn't work well. (Wikipedia)

How to Plan Maintain velocity. Merging and splitting stories: User stories should be ‘right-sized’. Prototyping sessions are called ‘spikes’. These allow the team’s velocity to be estimated.

Refactoring Deals with code ‘rot’. Refactoring is a technique to restructure code in a disciplined way. For a long time it was a piece of programmer lore, done with varying degrees of discipline by experienced developers, but not passed on in a coherent way. (Fowler)

Simple Design The simplest design that can meet the current set of user stories. “You aren’t going to need it.” Once and only once—no code duplication.

What do I recommend? If you already know what you need to do, use Waterfall. If you need to control risks and clarify requirements, use Spiral Model. If you don’t know where you’re going (or your customer doesn’t), use XP.

What Practices are Simply Good? These practices should be followed independently of development model: –Test-driven development –Short cycles (early warning) –Metaphor (leadership) –Simple design (KISS) –Refactor mercilessly (isn’t Eclipse wonderful?) –Pair programming* (more productive than alone) –Sustainable pace (ever been ‘fried’?) –Coding standards (for yourself if noone else) *except on homework projects…