Anda di halaman 1dari 25

Agile Development

Manifesto Pengembangan Agile


• Empat nilai manifesto metode pengembangan agile:
– Interaksi dan personel lebih penting dari pada proses dan
alat.
– Perangkat lunak yang berfungsi lebih penting daripada
dokumentasi yang lengkap.
– Kolaborasi dengan klien lebih penting dari pada negosiasi
kontrak.
– Respon terhadap perubahan lebih penting daripada
mengikuti rencana.
• That is, while there is value in the items on the right,
we value the items on the left more.”
• Kent Beck et al
Metode Agile
• Ketidakpuasan dengan kelebihan biaya yang ada
pada metode design memicu adanya metode agile.
Metode ini:
– Fokus pada kode dari pada perancangan
– Berdasarkan pendekatan bertingkat pada pengembangan
software
– Dimaksudkan untuk menyediakan perangkat lunak dengan
cepat untuk memenuhi persyaratan yang terus berubah
Apa itu “Agility”?
• Efektif (cepat dan adaptasi) merespon perubahan
• Komunikasi secara efektif dengan semua stakeholder
• Melibatkan konsumen ke dalam tim
• Organisasi tim sehingga performa kerja tetap terkendali
• Hasil
• Cepat, incremental delivery dari software
Agility dan Perubahan Biaya
Proses Suatu Agile
• Dipandu oleh konsumen, apa yang mereka butuhkan
• Mengakui bahwa rencana hanya bertahan sebentar
• Membangun software secara berulang dengan
aktivitas konstruksi yang berat
• Menghasilkan banyak ‘software increments’
• Beradaptasi pada perubahan yang terjadi
12 Prinsip “Agility” - I
1. Prioritas utama proses agile adalah memuaskan klien dengan
menghasilkan perangkat lunak yang bernilai dengan cepat dan rutin.
2. Menyambut perubahan kebutuhan, walaupun terlambat dalam
pengembangan perangkat lunak. Proses Agile memanfaatkan perubahan
untuk keuntungan kompetitif klien.
3. Menghasilkan perangkat lunak yang bekerja secara rutin, dari jangka
waktu beberapa minggu sampai beberapa bulan, dengan preferensi
kepada jangka waktu yang lebih pendek.
4. Rekan bisnis dan pengembang perangkat lunak harus bekerja sama tiap
hari sepanjang proyek.
5. Kembangkan proyek di sekitar individual yang termotivasi. Berikan
mereka lingkungan dan dukungan yang mereka butuhkan, dan percayai
mereka untuk menyelesaikan pekerjaan dengan baik.
12 Prinsip “Agility” - II
6. Metode yang paling efisien dan efektif untuk menyampaikan informasi
dari dan dalam tim pengembang perangkat lunak adalah dengan
komunikasi secara langsung.
7. Perangkat lunak yang bekerja adalah ukuran utama kemajuan.
8. Proses agile menggalakkan pengembangan berkelanjutan. Sponsor-
sponsor, pengembang-pengembang, dan pengguna-pengguna dapat
mempertahankan kecepatan tetap secara berkelanjutan.
9. Perhatian yang berkesinambungan terhadap keunggulan teknis dan
rancangan yang baik meningkatkan Agility.
10. Kesederhanaan (memaksimalkan sumber daya yang tersedia) adalah hal
yang amat penting.
11. Arsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul
dari tim yang yang dapat mengorganisir diri sendiri.
12. Secara berkala, tim pengembang berefleksi tentang bagaimana untuk
menjadi lebih efektif, kemudian menyesuaikan dan menyelaraskan
kebiasaan bekerja mereka.
Faktor Manusia
• Membentuk model pada kebutuhan tim, bukan salah
satu atau lainnya
• Karakter kunci yang harus ada orang-orang yang
terlibat pada tim dan tim itu sendiri
– Kompetensi
– Fokus
– Kolaborasi
– Kemampuan membuat keputusan
– Kemampuan menyelesaikan masalah yang tidak jelas
– Saling mempercayai dan menghargai
– Mengatur diri sendiri
Masalah Pada Metode Agile
• Sulit untuk menentukan konsumen yang tertarik untuk
terlibat dalam proses.
• Anggota tim mungkin tidak cocok dalam pengembangan yang
intensif yang menjadi karakteristik pada metode agile.
• Agile tidak akan berjalan dengan baik jika komitmen tim
kurang.
• Memprioritaskan perubahan bisa sulit dilakukan karena
terdapat beberapa stakeholder.
• Mempertahankan kesederhanaan membutuhkan kerja ekstra.
• Perkiraan waktu release dan harga perangkat lunak sulit
ditentukan.
Extreme Programming (XP)
• Diperkenalkan oleh Kent Beck
• Mengizinkan tim pengembang untuk berkomunikasi langsung
dengan pelanggan atau pengguna
• Ciri khas, komunikasi yang dilakukan setiap hari atau setiap
ditemukan hal-hal yang kurang jelas. Sangat mengandalkan
adanya umpan balik
• XP Planning
– Begins with the creation of “user stories”
– Agile team assesses each story and assigns a cost
– Stories are grouped to for a deliverable increment
– A commitment is made on delivery date
– After the first increment “project velocity” is used to help define
subsequent delivery dates for other increments
Extreme Programming (XP)
• XP Design
– Follows the KIS principle
– Encourage the use of CRC cards (see Chapter 8)
– For difficult design problems, suggests the creation of “spike solutions”—a
design prototype
– Encourages “refactoring”—an iterative refinement of the internal program
design
• XP Coding
– Recommends the construction of a unit test for a store before coding
commences
– Encourages “pair programming”
• XP Testing
– All unit tests are executed daily
– “Acceptance tests” are defined by the customer and excuted to assess
customer visible functionality
Extreme Programming (XP)
spike solut ions
simple design
prot ot ypes
CRC cards
user st ories
values
accept ance t est crit eria
it erat ion plan

refact oring

pair
programming

Release
sof t ware increment
unit t est
project velocit y comput ed cont inuous int egrat ion

accept ance t est ing


Extreme Programming (XP)
Keunggulan Extreme Programming
• Menjalin komunikasi yang baik dengan klien
• Menurunkan biaya pengembangan
• Meningkatkan komunikasi dan sifat saling menghargai antar
developer
• XP merupakan metodologi yang semi formal
• Pengembang harus selalu siap dengan perubahan karena
perubahan akan selalu diterima, atau dengan kata lain
fleksibel
Kelemahan Extreme Programming
• Tidak bisa membuat kode yang detail di awal (prinsip
kesederhanaan dan juga anjuran untuk melakukan apa yang
diperlukan hari / saat itu juga)
• XP juga memiliki keunggulan yang sekaligus menjadi
kelemahannya, yaitu XP tidak memiliki dokumentasi formal
yang dibuat selama pengembangan. Satu-satunya
dokumentasi adalah dokumentasi awal yang dilakukan oleh
user
Adaptive Software Development (ASD)
• Diperkenalkan oleh Jim Highsmith
• ASD
– Mission-driven planning
– Component-based focus
– Uses “time-boxing”
– Explicit consideration of risks
– Emphasizes collaboration for requirements gathering
– Emphasizes “learning” throughout the process
Adaptive Software Development
adapt ive cycle planning Requirement s gat hering
uses mission st at ement JAD
project const raint s mini-specs
basic requirement s
t ime-boxed release plan

Release
sof t ware increment
adjust ment s f or subsequent cycles
component s implement ed/ t est ed
focus groups for feedback
formal t echnical reviews
post mort ems
Dynamic Systems Development
Method (DSDM)
• Dipromosikan oleh DSDM Consortium (www.dsdm.org)
• 9 (sembilan) prinsip:
– Active user involvement is imperative.
– DSDM teams must be empowered to make decisions.
– The focus is on frequent delivery of products.
– Fitness for business purpose is the essential criterion for acceptance of
deliverables.
– Iterative and incremental development is necessary to converge on an
accurate business solution.
– All changes during development are reversible.
– Requirements are baselined at a high level
– Testing is integrated throughout the life-cycle.
– Collaborative and co-operative approach among all stakeholders
essential
Dynamic Systems Development
Method

DSDM Life Cycle (with permission of the DSDM consortium)


Scrum
• Diusulkan oleh Schwaber dan Beedle
• Semua tim terlibat secara overlapping (tumpang tindih) sesuai
dengan kebutuhan sumber daya agar dapat meningkatkan
kecepatan pengembangan dan fleksibilitas
• Scrum
– Development work is partitioned into “packets”
– Testing and documentation are on-going as the product is constructed
– Work occurs in “sprints” and is derived from a “backlog” of existing
requirements
– Meetings are very short and sometimes conducted without chairs
– “demos” are delivered to the customer with the time-box allocated
Scrum
Crystal
• Diusulkan oleh Cockburn dan Highsmith
• Crystal
– Actually a family of process models that allow
“maneuverability” based on problem characteristics
– Face-to-face communication is emphasized
– Suggests the use of “reflection workshops” to review the
work habits of the team
Feature Driven Development (FDD)
• Diusulkan oleh Peter Coad dkk
• FDD
– Emphasis is on defining “features”
• a feature “is a client-valued function that can be implemented in
two weeks or less.”
– Uses a feature template
• <action> the <result> <by | for | of | to> a(n) <object>
– A features list is created and “plan by feature” is
conducted
– Design and construction merge in FDD
Feature Driven Development

Reprinted with permission of Peter Coad

Anda mungkin juga menyukai