Agile Software Development: Practices through Values C Sc 335 Rick Mercer.

Slides:



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

A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
A little Software Engineering: Agile Software Development, Practices through Values C Sc 335 Rick Mercer.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Agile Development.
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
Agile development By Sam Chamberlain. First a bit of history..
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
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.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Extreme Programming C Sc 335 November, Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
An Agile View of Process
An Overview of Agile L e a d i n g C h a n g e T h r o u g h C o l l a b o r a t i o n.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Development Landscape
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
Chapter 4 Agile Development
Chapter 5 Software Process Models. Problems with “Traditional” Processes 1.Focused on and oriented towards “large projects” and lengthy development time.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Extreme Programming: Introduced Matthew Heusser Excelon Development – xndev.com - Presented to CS 611 at GVSU, 4/6/2005.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
A little Software Engineering: Agile Software Development, Practices through Values C Sc 335 Rick Mercer.
A little Software Engineering: Agile Software Development, Practices through Values C Sc 335 Rick Mercer.
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.
Chapter 3 – Agile Software Development Pepper modification of Sommerville presentation & Colm O’hEocha – AgileInnovation Ltd presentation 1Chapter 3 Agile.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
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.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
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.
CS3100 Software Project Management Agile Approaches.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
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.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
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.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
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.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme Programming מתודולוגיה לפיתוח פרויקטי תוכנה.
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.
Embedded Systems Software Engineering
Chapter 5 Agile Development Moonzoo Kim KAIST
Software Development.
Software & Software Engineering Pertemuan-4 Dosen :Kundang K Juman
Extreme Programming.
Extreme Programming.
Agile and XP Development
A little Software Engineering: Agile Software Development, Practices through Values C Sc 335 Rick Mercer.
A little Software Engineering: Agile Software Development, Practices through Values C Sc 335 Rick Mercer.
Extreme Programming Iterative programming Agile programming
Agile and XP Development
Agile Development – a new way of software development?
Extreme Programming.
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

Agile Software Development: Practices through Values C Sc 335 Rick Mercer

2 Goal and Outline Main Goal: –Suggest practices, values, and some process for completing a final project on time that is better than any one could do it in in four times the time. Outline –Distinguish Waterfall (plan driven) from Agile –11 Practices of quality software development –Four values of Extreme Programming (XP)

3 Waterfall Model Waterfall was described by 1970 Understood as –finish each phase –don’t proceed till done W. W. Royce criticized this –proposed an iterative approach

4 Became Popular Management liked phases to easily set deadlines Customers provide all requirements Analysts translate requirements into specification Coders implement the specification Reviews ensure the specification is met Testing is performed by others (QA) Maintenance means modifying as little as possible –old code is good code Change is hard (and costly)

5 Sprial Dr Barry Boehm proposed a spiral approach

6 Waterfall It became popular –This process is still is used a lot Craig Larman's book [1] provides proof that waterfall is a terrible way to develop software[1] –In his study, 87% of all projects failed –The waterfall process was the "single largest contributing factor for failure, being cited in 81% of the projects as the number one problem." [1][1] Agile and Iterative Development: a Manager's Guide, Addison-Wesley Professional, 2003

7 Extreme Programming (XP) As of 2009, about 14 years of growth –About 25% of new project are Agile Set of SE practices that produce high-quality software with limited effort Many books, first by Kent Beck: Extreme Programming–Embrace Change, Addison-Wesley, 2000, ISBN

8 Extreme Programming XP is –a disciplined approach to software development –code centric: no reckless coding, test-first –successful because it emphasizes customer involvement and promotes team work –not a solution looking for a problem –One of several "agile" (can adapt to change) software development processes

9 Essence of XP Four variables in software development: –Cost, Time, Quality, Scope (# features) Four Values –Communication, Simplicity, Feedback, Courage Five Principles –Provide feedback, assume simplicity, make incremental changes, embrace change, quality work Practices (or fewer, or more, or subject to change) –Planning game, small releases, simple designs, automated testing, continuous integration, refactoring, pair programming, collective ownership, Continuous Integration, on-site customer, coding standard

10 Cost of change Cost of change time Waterfall XP

11 Cost of the Project Paraphrasing two companies from Agile When we bid projects, we charge $X for doing it Waterfall and $X/2 for doing it Agile

12 Goal and Outline Main Goal: –Suggest practices, values, and some process for completing a final project on time that is better than any one could do it in in four times the time. Outline –Distinguish Waterfall (plan driven) from Agile –11 Practices of quality software development to use on your final project –Four values of Extreme Programming (XP)

13 Practices: Planning Game The planning game involves story cards, which are short descriptions of a feature –Provide value to customer –Independent of each other –Testable Customer write stories cards and prioritize them Developers estimate how long a story takes

14 Practices: The planning game Business decisions (customer) –Scope: which “stories” should be developed –Priority of stories (features) –Release dates Technical decisions (developers) –Time estimates for features/stories –Elaborate consequences of business decisions –Team organization and process –Scheduling

15 Practices: Estimation Based on similar stories from the past Team effort We get good at estimation simply by just doing it Ideal Engineering Time (IET) –could be points Velocity = IET/Calendar Time –we can do 20 points each week –"Customer, which 20 points do you want next week?"

16 Practices: Small Releases Releases should be as small as possible Should make sense as a whole Put system into production ASAP –Fast feedback Deliver valuable features first Short cycle time –Planning 1-2 months rather than 6-12 months –Or in our case, 2.5 weeks rather than 5 weeks

17 Practices: Simple design The “right” design –Runs all tests –No code duplication, No code duplication –Fewest possible classes –Short methods –Fulfills all current business requirements Design for today not the future –But design so the system can change

18 Practices: Testing Software should be tested, but it is often spotty or overlooked Automatic testing (JUnit, for example) help us know that a feature works and it will work after refactoring, additional code, and other changes Provides confidence in the program

19 Testing Write tests at the same time as production code –Unit tests  developer –Feature/acceptance tests  customer Don't need a test for every method Testing can be used to drive development and design of code Allows for regression testing –Do changes break previously working code

20 SIM/SQS Regression Testing –re-testing of a previously tested program following modification to ensure that faults have not been introduced or uncovered as a result of changes. –Regression tests are designed for repeatability, and are often used when testing a second or later version of the system under test. –Regression testing can be carried out on all applications, including e-Commerce and web-based systems.

21 Testing Strong emphasis on regression testing –Unit tests need to execute all the time Unit tests pass 100% Acceptance tests (we haven't seen these) show progress on which user stories are working Other testing frameworks include –JMeter, HttpUnit, JProbe, OptimizeIt, CPPUnit

22 Can't unit test always Won’t have unit tests for –GUIS: There are testing frameworks to simulate and test user interaction, but not this course –Network, use visual inspection while running –Randomness: Some strategies might have some randomness, which can be hard to work with

23 Practices: Refactoring Restructure code without changing the functionality Goal: Keep design simple –Change bad design when you find it –Remove dead code Examples at Martin Fowler's Web site: see online cataloghttp://

24 Practices: Pair programming Write production code with 2 people on one machine –Person 1: Implements the method –Person 2: Thinks strategically about potential improvements, test cases, issues Pairs change all the time. Has advantages such as –No single expert on any part of the system –Continuous code reviews, fewer defects –Cheaper in the long run, and more fun – Can you form a team of 4 and have everyone see all code? Problems: –Not all people like it –Pairs need to be able to work together

25 Practices: Collective ownership All code can be changed by anybody on the team Everybody is required to improve any portion of bad code s/he sees Everyone has responsibility for the system Individual code ownership tends to create experts

26 Practices: Continuous integration Integration happens after a few hours of development Checkout build with your changes, Make sure all tests pass (green bar) In case of errors: –Do not put changes into the build –Fix problems Checkin the system to the common repository Repeat We will use CVS to store your code

27 Continuous Integration Find problems early Can see if a change breaks the system more quickly -- while you remember the details Small increments

28 Practices: Coding standards Coding Standard –Naming conventions and style –Least amount of work possible: Code should exist once and only once Team has to adopt a coding standard –Makes it easier to understand other people’s code –Avoids code changes because of syntactic preferences

29 Practices: On-site customer Many software projects fail because they do not deliver software that meets business needs Real customer has to be part of the team –Defines business needs –Answers questions and resolves issues –Prioritizes features

30 Outline Main Goal: –Suggest practices, values, and some process for completing a final project on time that is better than any one could do it in in four times the time. Outline –Distinguish Waterfall (plan driven) from Agile –11 Practices of quality software development to use on your final project –Four values of Extreme Programming (XP) –Process considerations adapted from Scrum

31 Values: Communication Communication –Customer centric (write "Stories") –Pair programming –Task estimation –Iteration planning What to do in the next time period May be weekly goals –Design sessions

32 Values: Simplicity Simplicity –Choose the simplest thing that will work –Choose the simplest design, technology, algorithm, technique

33 Values: Feedback Feedback very important –Small Iterations –Frequent deliveries –Pair programming –Constant code review –Continuous integration (add often to the build) –automated unit tests (JUnit, for example)

34 Values: Feedback Compiler feedback: seconds Pair programming feedback: half minutes Unit test feedback: few minutes Acceptance testing: half hours –Customers write these, no can do in 335 Customer feedback: daily (or several times/week in our case) Iteration feedback: weekly FeedBack?

35 Agile Manifesto Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.

36 Outline Main Goal: –Suggest practices, values, and some process for completing a final project on time that is better than any one could do it in in four times the time. Outline –Distinguish Waterfall (plan driven) from Agile –11 Practices of quality software development to use on your final project –Four values of Extreme Programming (XP)

Final Project SLs and Rick are the customers –Projects still TBD –Hope to have specs by Tuesday 27-Oct –Will choose teams/projects next Thursday 29-Oct As customers, we reserve the right to change requirements :-)