Anda di halaman 1dari 49

AGILE

DEVELOPMENT
METHODS

Agile development methods


merupakan salah satu dari metodologi
pengembangan perangkat lunak yang
digunakan dalam pengembangan
perangkat lunak.

Definisi

Agile Development Methods adalah


sekelompok metodologi pengembangan
perangkat lunak yang didasarkan pada
prinsip-prinsip yang sama atau
pengembangan sistem jangka pendek
yang memerlukan adaptasi cepat dari
pengembang terhadap perubahan dalam
bentuk apapun.
Agile memiliki pengertian bersifat cepat,
ringan, bebas bergerak, dan waspada. [

Sehingga saat membuat perangkat lunak


dengan menggunakan agile development
methods diperlukan inovasi dan
responsibiliti yang baik antara tim
pengembang dan klien agar kualitas dari
perangkat lunak yang dihasilkan bagus
dan kelincahan dari tim seimbang.

Agile development methods terdefinisi


dalam empat nilai, biasa di sebut Agile
Alliances Manifesto,[4] diantaranya:

Interaksi dan personel lebih penting dari pada


proses dan alat. Di dalam agile interaksi antar
anggota tim sangatlah penting, karena tanpa
adanya interaksi yang baik maka proses pembuatan
perangkat lunak tidak akan berjalan sesuai rencana.

Perangkat lunak yang berfungsi lebih penting


daripada dokumentasi yang lengkap. saat
melakukan proses demonstrasi kepada klien,
perangkat lunak yang berfungsi dengan baik akan
lebih berguna daripada dokumentasi yang lengkap.

Agile development methods terdefinisi


dalam empat nilai, biasa di sebut Agile
Alliances Manifesto,[4] diantaranya :

Kolaborasi dengan klien lebih penting dari pada


negosiasi kontrak. salah satu ciri dari agile adalah klien
menjadi bagian dari tim pengembangan perangkat lunak.
Kolaborasi yang baik dengan klien saat proses pembuatan
perangkat lunak sangatlah penting ketika menggunakan
agile. Karena fungsi-fungsi dari perangkat lunak yang
dikembangkan harus terus menerus dibicarakan dan
diimprovisasi disesuaikan dengan keinginan klien.

Respon terhadap perubahan lebih penting daripada


mengikuti rencana, agile development methods berfokus
terhadap kecepatan respon tim ketika klien menginginkan
perubahan saat proses pembuatan perangkat lunak.

Ciri Agile Software Development

Tim yang tanggap terhadap perubahan.


Mengapa? Karena perubahan adalah hal yang
utama dalam pembangunan software.
Perubahan kebutuhan software, perubahan
anggota tim, perubahan teknologi dll.
Agile Software Development juga melihat
pentingnya komunikasi antara anggota tim,
antara orang-orang teknis dan businessmen,
antara developer dan managernya.
Ciri lain adalah klien menjadi bagian dari tim
pembangun software.

Prinsip Agile Software


Development

Agar suatu tim berhasil dalam menerapkan agile development


methods, maka tim tersebut harus mengikuti dua belas prinsip
yang ditetapkan oleh Agile Alliance,[4] yaitu :
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.

Prinsip Agile Software


Development
5.

6.

7.

Kembangkan proyek di sekitar individual yang


termotivasi. Berikan mereka lingkungan dan
dukungan yang mereka butuhkan, dan
percayai mereka untuk menyelesaikan
pekerjaan dengan baik.
Metode yang paling efisien dan efektif untuk
menyampaikan informasi dari dan dalam tim
pengembang perangkat lunak adalah dengan
komunikasi secara langsung.
Perangkat lunak yang bekerja adalah ukuran
utama kemajuan.

Prinsip Agile Software


Development
8.

Proses agile menggalakkan pengembangan


berkelanjutan. Sponsor-sponsor, pengembangpengembang, 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.

Prinsip Agile Software


Development
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.
11.

Dengan prinsip-prinsip tersebut agile


berusaha untuk menyiasati tiga
masalah yang biasanya dihadapi
saat proses pembuatan perangkat
lunak, yaitu:

Kebutuhan perangkat lunak sulit diprediksi dari


awal dan selalu akan berubah. Selain itu,
prioritas klien juga sering berubah seiring
berjalannya proyek.
Desain dan pembangunan sering tumpang
tindih. Sulit diperkirakan seberapa jauh desain
yang diperlukan sebelum pembangunan.
Analisis, desain, pembangunan dan testing tidak
dapat diperkirakan seperti yang diinginkan.

Tujuan agile
Secara garis besar tujuan dirumuskannya
agile development methods,[7] yaitu :

High-value & working App system,


diharapkan dengan memakai agile
development methods dapat dihasilkan
perangkat lunak yang mempunyai nilai jual
yang tinggi, biaya pembuatan bisa di tekan
dan perangkat lunak bisa berjalan dengan
baik.

Tujuan agile

Iterative, incremental, evolutionary, agile adalah metode


pengembangan perangkat lunak yang iteratif, selalu
mengalami perubahan, dan evolusioner. Tim harus bekerja
dalam waktu yang singkat(biasanya 1-3 minggu) dan juga
selalu menambah fungsionalitas dari perangkat lunak
sesuai dengan kebutuhan klien.
Agile dapat dianalogikan ketika seseorang ingin pergi ke
suatu kota dan dia tidak tahu jalannya. Lalu bagaimana dia
bisa sampai tujuan? Dengan sering bertanya kepada orang
yang dia temui dijalan hingga dia sampai di tempat tujuan.

Tujuan agile

Cost control & value-driven


development, salah satu tujuan dari
agile yaitu pengembangan perangkat
lunak disesuaikan dengan kebutuhan
pengguna, tim bisa dengan cepat
merespon kebutuhan yang diinginkan
pengguna sehingga waktu dan biaya
pembuatan perangkat lunak bisa
dikontrol.

Tujuan agile

High-quality production, walaupun


biaya pembuatan perangkat lunak bisa
ditekan dan proses pembuatan bisa
dipercepat , tetapi kualitas dari
perangkat lunak yang dibuat harus tetap
dijaga. Dengan melakukan tes setiap
fungsionalitas perangkat lunak setelah
selesei dibuat berarti agile juga
mengakomodir kebutuhan ini.

Tujuan agile

Flexible & risk management, jika menggunakan metode


pembuatan yang biasanya dipakai, untuk mengubah
fungsionalitas dari wireframe yang telah dibuat di butuhkan proses
yang rumit.
Mulai dari pertemuan dengan sistem analis untuk mengubah sistem
perangkat lunak, perubahan rencana rilis produk hingga perubahan
biaya produksi. Pertemuan dengan klien untuk melakukan tes
perangkat lunak juga sering dilakukan sehingga fungsionalitas
perangkat lunak mudah diubah dan akhirnya kegagalan perangkat
lunakpun bisa diminimalisir.

Tujuan agile

Collaboration, dengan
menggunakan agile, tim pengembang
diharuskan sering bertemu untuk
membahas perkembangan proyek
dan feedback dari klien yang nantinya
akan ditambahkan dalam perangkat
lunak, sehingga tim bisa
berkolaborasi dengan maksimal.

Tujuan agile

Self-organizing, self-managing teams,


rekrut orang terbaik, beri dan dukung
kebutuhan mereka lalu biarkan mereka
bekerja.
Itulah perbedaan agile dan SDM lainnya.
Dengan agile, developer dapat memanajemen
dirinya sendiri, sedangkan manajer tim hanya
bertugas mengkolaborasikan developer
perangkat lunak dengan klien. Sehingga
terciptalah tim yang solid.

Bagaimana agile
bekerja
Agile development methods (model scrum) digunakan dalam
manajemen proyek.
Komposisi tim
Secara umum komposisi dari sebuah tim pengembang
perangkat lunak[8] yaitu :
Owner / Klien, bersama dengan developer sebagai bagian
terpenting dalam proyek, tugas dari klien menentukan
fungsi dari perangkat lunak yang akan di buat, melakukan
testing dan memberikan feedback.
Manajer / Scrum Master, bertugas mengkolaborasikan
developer dengan klien, membuat dan mengevaluasi target
pengerjaan perangkat lunak.

Bagaimana agile
bekerja
Komposisi tim
Sistem Analis, membuat arsitektur
sistem dari perangkat lunak yang akan
dibuat.
Developer, merupakan titik vital dalam
tim, tanpa developer perangkat lunak
tidak akan bisa dibuat.

Bagaimana agile
bekerja
Story
Story adalah daftar kebutuhan atau fitur
yang nanti akan dibuat.
Story berisi apa yang klien kehendaki, dan
ditulis dalam bahasa yang dimengerti
klien. Dengan kata lain dapat disimpulan
Story adalah bagian terpenting dari
Scrum.

Bagaimana agile
bekerja
Story terdiri dari kolom-kolom berikut ini[9]:
ID Identifikasi unik, biasanya berupa
nomor urut. Hal ini untuk menghindari
kehilangan jejak story kalau kita
mengganti namanya.
Nama Nama story bersifat deskriptif,
padat, singkat, dan jelas (2-10 kata),
sehingga tim dan klien memahami kirakira story yang dibicarakan.

Bagaimana agile bekerja

Kepentingan Derajat kepentingan yang diberikan oleh


klien terhadap story. Pemberian derajat kepentingan
biasanya menggunakan deret fibonacci (1,1,2,3,5,dst).
Semakin tinggi nilainya maka semakin tinggi pula
prioritas pengerjaannya.
Perkiraan awal Perkiraan awal tim tentang berapa
banyak kerja yang diperlukan untuk
mengimplementasikan sebuah story.
Demo deskripsi umum bagaimana cara story ini
didemokan pada waktu sprint demo (lakukan ini, klik itu,
lalu ini akan muncul,dll).

Sprint
Sprint (Rapat perencanaan pembuatan perangkat
lunak dilakukan 2-8 minggu sekali), yang perlu
diperhatikan saat melaksanakan sprint antara lain[9] :
Tujuan sprint.
Daftar anggota tim harus lengkap.
Sprint backlog (daftar story yang akan diikutkan
dalam sprint).
Tanggal demo yang pasti.
Tempat dan waktu yang jelas untuk pelaksanaan
sprint berikutnya.
Tim akan melakukan sprint secara simultan sampai
perangkat lunak selesei dikerjakan

Kelebihan dan Kekurangan


Kelebihan
Beberapa kelebihan dari agile diantaranya[8] :
82% Menambah produktivitas tim.
77% Menambah kualitas perangkat lunak.
78% Menambah kepuasan klien.
37% Menghemat biaya.
Kekurangan
Sedangkan kekurangan dari agile antara lain :
Agile tidak akan berjalan dengan baik jika komitmen tim
kurang.
Tidak cocok dalam skala tim yang besar (>20 orang).
Perkiraan waktu release dan harga perangkat lunak sulit
ditentukan.

Model proses agile

XP(Extreme Programming Agile Modeling


Adaptive Software Development (ASD)
Dynamic Systems Development Method (DSDM)
Agile Models
scrum
Agile Unified Proses (UAP)
Crystal
Graphical System Design (GSD)
feature driven development (FDD)
Rational Unified Process (RUP)
Acceptance Test Driven Development (ATDD)

Berikut ini adalah model-model


proses yang termasuk agile process
model :
1. XP(Extreme Programming)
Dipublikasikan oleh Kent Beck tahun 1999
Menggunakan pendekatan berorientasi objek
Aktifitas Perencanaan : pengumpulan user
stories dari klien yang klien tetapkan
prioritasnya.
Setiap story ditetapkan harga dan lama
pembangunan, jika terlalu besar, story
dapat dipecah menjadi beberapa story yang
lebih kecil. Periksa dan pertimbangkan resiko

1. XP(Extreme Programming)

Aktifitas Desain
Berprinsip sederhana yaitu memanfaatkan
kartu CRC (Class-ResponsibilityCollaborator) untuk identifikasi dan
mengatur class-class di konsep OO. Jika
mendapatkan kesulitan, prototype
dibangun (ini namanya spike solution).
Lakukan refactoring, yaitu
mengembangkan desain dari program
setelah ditulis

XP(Extreme
Programming)

Aktifitas Pengkodean: siapkan unit test


sebelum pengkodean dipakai sebagai
fokus pemrogram untuk membuat
program. Pair programming dilakukan
untuk real time program solving dan real
time quality assurance
Aktifitas Pengujian: menggunakan unit
test yang dipersiapkan sebelum
pengkodean.

XP tepat digunakan saat


kondisi

Keperluan berubah dengan cepat


Resiko tinggi dan ada proyek dengan
tantangan yang baru
Tim programmer sedikit, yaitu 2-10
orang
Mampu mengotomatiskan tes
Ada peran serta pelanggan secara
langsung

Kelemahan XP:

Cerita-cerita yang menunjukkan requirements kemungkinan


besar tidak lengkap sehingga Developer harus selalu siap
dengan perubahan karena perubahan akan selalu diterima.

Tidak bisa membuat kode yang detail di awal (prinsip


simplicity dan juga anjuran untuk melakukan apa yang
diperlukan hari itu juga). Disiini user strories lebih fokus
kepada kebutuhan fungsional dari pada fokus kepada
kebutuhan non fungsional.

XP tidak memiliki dokumentasi formal yang dibuat selama


pengembangan. Satu-satunya dokumentasi adalah
dokumentasi awal yang dilakukan oleh user. Karena
hubungan antara arsitektur sistem dengan user strories tidak
jelas, sehingga perancangan arsitektur juga lebih sulit.

Keuntungan dari model XP


antara lain adalah

Pertama, dapat merepresentasikan


situasi nyata yang sering terjadi, sehingga
sistem yang akan dibuat mendukung
sebagian besar operasional pengguna.
Kedua, memudahkan pengguna
memahami dan memberikan masukan
terhadap cerita tersebut. Ketiga, dapat
merepresentasikan fitur-fitur fungsional
secara bertahap (incremental).

2. Adaptive Software
Development (ASD)
Adaptive software development (ASD)
diajukan oleh Jim Highsmith sebagai teknik
untuk membangun software dan sistem yang
kompleks.
Filosofi yang mendasari adaptive software
development adalah kolaborasi manusia dan
tim yang mengatur diri sendiri. Terdapat tiga
tahapan pada model ASD : Speculation,
collaboration dan learning.

Tahapan pada model


ASD

Pada tahap Speculation, proyek dimulai dan


adaptive cycle planning diselenggarakan.
Pada tahapan ini, didefinisikan visi dan misi
pengguna terhadap sistem yang akan dibuat,
selanjutnya mendefinisikan project
constraints, misalnya: waktu deliver. dan
selanjutnya mendefinisikan satu set dari
requirements yang akan dikerjakan dalam
suatu cycle.

Pada tahap Collaboration : orangorang yang bermotivasi tinggi bekerja


sama, saling melengkapi, rela
membantu, kerja keras, terampil di
bidangnya, dan komunikasikan
masalah untuk menyelesikan masalah
secara efektif. Disarankan
menggunakan model Joint Application
Development (JAD).

Dengan proses ini membuat tim belajar


lebih tentang proyek melalui tiga cara:
Fokus grup, klien dan pengguna
memberi masukan terhadap perangkat
lunak.
Formal Technique Reviews, tim ASD
lengkap melakukan review.
Postmortems, tim ASD melakukan
instrospeksi pada kinerja dan proses.

Pada tahap Learning: terdapat tiga aktifitas


yaitu: pelanggan atau end-user menyediakan
feedback terhadap hasil incremental delivery,
tim ASD melakukan review terhadap
komponen perangkat lunak untuk
memperbaiki dan meningkatkan kualitas
perangkat lunak yang sedang dibuat.
Tim developer sering merasa sudah tahu
semua hal tentang proyek, padahal tidak
selamanya begitu.

3. Dynamic Systems Development Method


(DSDM)

Pada Dynamic System Development


Method menyajikan kerangka kerja
(framework) untuk membangun dan
memelihara sistem dalam waktu yang
terbatas melalui penggunaan prototipe
yang incremental dalam lingkungan yang
terkondisikan.

Metode ini akanmembangun software


dengan cepat: 80% dari proyek
diserahkan dalam 20% dari waktu
totaluntuk menyerahkan proyek secara
utuh.

Hal -hal yang perlu diperhatikan jika


menggunakan dynamic system
development method:

Feasibility study, siapkan requirement, dan


batasan, lalu uji apakah sesuai gunakan
proses DSDM.
Business Study, susun kebutuhan
fungsional dan informasi, tentukan
arsitektur aplikasi dan identifikasi
kebutuhan pemeliharaan untuk aplikasi.
Functional model iteration, perlihatkan
fungsi perangkat lunak ke klien untuk
mendapatkan feedback

Hal -hal yang perlu diperhatikan


jika menggunakan dynamic system
development method:

Design and Build Iteration, cek ulang


prototipe yang dibangun dan pastikan
bahwa prototip dibangun dengan cara
yang memungkinkan fungsi tersebut
benar-benar bekerja.
Implementation: buat perangkat lunak
sesuai protoip yang ada dan terus
tambah fungsionalitasnya.

Dynamic
system development method

Keuntungan dari metode feature


driven development:

User dapat menggambarkan dengan


mudah bentuk sistem yang akan dibuat.
Dapat diorganisasikan atau diatur ke
dalam kelompok bisnis sesuai hirarki
yang ada.
Desain dan kode lebih mudah diperiksa
secara efektif.
Perancangan proyek, biaya pembuatan
dan jadwal rilis ditentukan oleh fiturnya.

Tugas
Cari
beberapa
model
dari
development methods
yang
dijelaskan
pada
pertemuan
(Kelompok 2 orang)

agile
belum
kelas.

Anda mungkin juga menyukai