Document 15075214

advertisement
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
Download