19

Pertemuan 5 Introduction to Agile Software Development Mata kuliah: T0144 – Advanced Topics in Software Engineering Tahun: 2010

Embed Size (px)

Citation preview

Pertemuan 5Introduction to Agile Software Development

Mata kuliah : T0144 – Advanced Topics in Software EngineeringTahun : 2010

3

Learning Outcomes

Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menjelaskan prinsip dasar Agile Methodology serta perbedaannya dengan methodology tradisional

4

Outline Material• Agile Software Development

– Agile Methods• Extreme Programming• SCRUM• Feature Driven Development

– Agile Practices• Test Driven Development• Continuous Integration• Pair Programming

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 planThat is, while there is value in the items on the right, we value the items on

the left more.

Agile MethodsSome 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

19

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 Developmenthttp://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