Agile Development Methods

download Agile Development Methods

of 49

description

Agile Development Methods

Transcript of Agile Development Methods

Agile Development Methods

Agile Development Methods

sumber : http://id.wikipedia.org/wiki/Agile_Development_Methods

sumber : http://id.wikipedia.org/wiki/Agile_Development_Methods

1Agile 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 DevelopmentTim 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 DevelopmentAgar suatu tim berhasil dalam menerapkan agile development methods, maka tim tersebut harus mengikuti dua belas prinsip yang ditetapkan oleh Agile Alliance,[4] yaitu:

Prioritas utama proses agile adalah memuaskan klien dengan menghasilkan perangkat lunak yang bernilai dengan cepat dan rutin.

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 DevelopmentKembangkan 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 DevelopmentProses agile menggalakkan pengembangan berkelanjutan. Sponsor-sponsor, pengembang-pengembang, dan pengguna-pengguna dapat mempertahankan kecepatan tetap secara berkelanjutan.

Perhatian yang berkesinambungan terhadap keunggulan teknis dan rancangan yang baik meningkatkan Agility.

Kesederhanaan (memaksimalkan sumber daya yang tersedia) adalah hal yang amat penting.

Prinsip Agile Software DevelopmentArsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang yang dapat mengorganisir diri sendiri.Secara berkala, tim pengembang berefleksi tentang bagaimana untuk menjadi lebih efektif, kemudian menyesuaikan dan menyelaraskan kebiasaan bekerja mereka.

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 agileIterative, 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 agileHigh-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 agileCollaboration, 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 bekerjaAgile development methods (model scrum) digunakan dalam manajemen proyek.

Komposisi timSecara 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 bekerjaKomposisi timSistem 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 bekerjaStoryStory 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 bekerjaStory 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 kira-kira story yang dibicarakan.

Bagaimana agile bekerjaKepentingan 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).

SprintSprint (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 dikerjakanKelebihan dan KekuranganKelebihanBeberapa kelebihan dari agile diantaranya[8]:82% Menambah produktivitas tim.77% Menambah kualitas perangkat lunak.78% Menambah kepuasan klien.37% Menghemat biaya.KekuranganSedangkan 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 ModelingAdaptive Software Development (ASD)Dynamic Systems Development Method (DSDM)Agile ModelsscrumAgile 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 1999Menggunakan pendekatan berorientasi objekAktifitas 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 resiko1. XP(Extreme Programming)Aktifitas Desain Berprinsip sederhana yaitu memanfaatkan kartu CRC (Class-Responsibility-Collaborator) 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 assuranceAktifitas Pengujian: menggunakan unit test yang dipersiapkan sebelum pengkodean.

XP tepat digunakan saat kondisiKeperluan berubah dengan cepatResiko tinggi dan ada proyek dengan tantangan yang baruTim programmer sedikit, yaitu 2-10 orangMampu mengotomatiskan tesAda 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 adalahPertama, 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 ASDPada 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: orang-orang 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 agile development methods yang belum dijelaskan pada pertemuan kelas. (Kelompok 2 orang)