Mata kuliah Tahun : T0144 – Advanced Topics in Software Engineering : 2010 Pertemuan 5 Introduction to Agile Software Development Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menjelaskan prinsip dasar Agile Methodology serta perbedaannya dengan methodology tradisional 3 Outline Material • Agile Software Development – Agile Methods • Extreme Programming • SCRUM • Feature Driven Development – Agile Practices • Test Driven Development • Continuous Integration • Pair Programming 4 Agile Software Development • Agile Manifesto : 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. Agile Methods Some of the well-known agile software development methods: • Agile Modeling • Agile Unified Process (AUP) • Agile Data Method • DSDM • Essential Unified Process (EssUP) • Extreme programming (XP) • Feature Driven Development (FDD) • Getting Real • Open Unified Process (OpenUP) • Scrum • Lean software development Extreme Programming (XP) Extreme Programming (XP) cycles SCRUM Feature Driven Development Agile Practices • • • • • • Test Driven Development (TDD) Behavior Driven Development (BDD) Continuous Integration Pair Programming Planning poker RITE Method Test Driven Development Test Driven Development (2) Continuous Integration • When embarking on a change, a developer takes a copy of the current code base on which to work. As changed code is submitted to the repository by other developers, this copy gradually ceases to reflect the repository code. When the developer submits code to the repository they must first update their code to reflect the changes in the repository since they took their copy. The more changes there are to the repository, the more work the developer must do before submitting their own changes. • Eventually, the repository may become so different from the developer's baseline that they enter what is sometimes called "integration hell",[1] where the time it takes to integrate is greater than the time it took to make their original changes. In a worst case scenario, the changes the developer is making may have to be discarded and the work redone. CI Recommended Practices • • • • • • • • • • Maintain a code repository Automate the build Make the build self-testing Everyone commits every day Every commit (to mainline) should be built Keep the build fast Test in a clone of the production environment Make it easy to get the latest deliverables Everyone can see the results of the latest build Automate deployment Pair Programming • Pair programming is a method of programming in which two people work together at one keyboard. One person, "the driver", types at the keyboard. The other person, "the observer" (or "navigator") reviews each line of code as it is typed, checking for errors and thinking about the overall design Pair Programming (cont’d) • Expected Benefits: – better code (simpler design, fewer bugs, more maintainable) – higher morale (more fun!) – shared knowledge throughout your team (both specific knowledge of your codebase and general programming knowledge) – better time management – higher productivity. • Pair configuration – Novice+Expert – Novice+Novice – Expert+Expert Discussion References • • • • Agile Software Development -Alistair Cockburn Addison-Wesley - ISBN-10: 0201699699 Agile Manifesto http://en.wikipedia.org/wiki/Agile_Manifesto Agile Processes – Extreme Programming http://www.extremeprogramming.org/ – SCRUM http://www.scrumalliance.org/articles/151-scrum-in-a-nutshell – Feature Driven Development http://www.featuredrivendevelopment.com/ Agile Practices – Test Driven Development http://c2.com/cgi/wiki?TestDrivenDevelopment – Continuous Integration http://en.wikipedia.org/wiki/Continuous_Integration – Pair Programming http://c2.com/xp/PairProgramming.html 19