methods agile development sie b.docx

Upload: johan

Post on 08-Jan-2016

4 views

Category:

Documents


0 download

TRANSCRIPT

Methods Agile Development | Metode Pengembangan Agile

Agile Development Methodsadalah 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 development methods merupakan salah satu dari Metodologi pengembangan perangkat lunakyang digunakan dalam pengembangan perangkat lunak. 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.Beberapa model dariagile development methodsyaitu:

Acceptance Test Driven Development (ATDD)

Agile ModelingAdaptive Software Development (ASD)Adaptive software development (ASD) diajukan oleh Jim Highsmith sebagai teknik untuk membangun software dan sistem yang kompleks. Filosofi yang mendasariadaptive software developmentadalah kolaborasi manusia dan tim yang mengatur diri sendiri. Sistem kerjaadaptive software development: collaboration dan learning. '1.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.2.Learning: tim developer sering merasa sudah tahu semua hal tentang proyek, padahal tidak selamanya begitu. Karena itu proses ini membuat mereka belajar lebih tentang proyek melalui tiga cara:3.Fokus grup, klien dan pengguna memberi masukan terhadap perangkat lunak.4.Formal Technique Reviews, tim ASD lengkap melakukan review.5.Postmortems, tim ASD melakukan instrospeksi pada kinerja dan proses.Agile Unified Process(AUP)Continuous integration(CI)Crystal ClearCrystal MethodsDynamic Systems Development Method (DSDM)Pada Dynamic System Development Method menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototip yang incremental dalam lingkungan yang terkondisikan. Metode ini bisa membuat pengerjaan software lebih cepat 80%.Hal -hal yang perlu diperhatikan jika menggunakandynamic system development method:1.Feasibility study, siapkan requirement, dan batasan, lalu uji apakah sesuai gunakan proses DSDM.2.Business Study, susun kebutuhan fungsional dan informasi, tentukan arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi.3.Functional model iteration, perlihatkan fungsi perangkat lunak ke klien untuk mendapatkanfeedback4.Design and Build Iteration, cek ulang prototip yang dibangun dan pastikan bahwa prototip dibangun dengan cara yang memungkinkan fungsi tersebut benar-benar bekerja.5.Implementation: buat perangkat lunak sesuai protoip yang ada dan terus tambah fungsionalitasnya.Extreme Programming(XP)Feature Driven Development(FDD)Feature driven development merupakan sebuah model pengembangan perangkat lunak yang berdasarkan pada fitur yang akan dibuat. Keuntungan dari metodefeature driven development:1.User dapat menggambarkan dengan mudah bentuk sistem yang akan dibuat.2.Dapat diorganisasikan atau diatur ke dalam kelompok bisnis sesuai hirarki yang ada.3.Desain dan kode lebih mudah diperiksa secara efektif.4.Perancangan proyek, biaya pembuatan dan jadwal rilis ditentukan oleh fiturnya.Graphical System Design(GSD)KanbanLean software developmentRational Unified Process (RUP)Rational unified process, adalah suatu kerangka pengembangan perangkat lunak iteratif yang dibuat olehRational Software, suatu divisi dari IBM sejak 2003.Rational unified processbukanlah suatu proses dengan aturan yang konkrit, melainkan suatu kerangka proses yang dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh tim pengembang perangkat lunak yang akan memilih elemen proses disesuaikan dengan kebutuhan mereka.Model ini membagi suatu sistem aplikasi menjadi beberapa komponen sistem dan memungkinkan para developer aplikasi untuk menerapkan metoda iterative (analisis, disain, implementasi dan pengujian) pada tiap komponen. Dengan menggunakan model ini,Rational unified processmembagi tahapan pengembangan perangkat lunaknya ke dalam 4 fase sebagai berikut.1.Inception, merupakan tahap untuk mengidentifikasi sistem yang akan dikembangkan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup analisis sistem, perumusan target dari sistem yang dibuat, identifikasi kebutuhan, perumusan kebutuhan pengujian, pemodelan diagram UML, dan pembuatan dokumentasi.2.Elaboration, merupakan tahap untuk melakukan disain secara lengkap berdasarkan hasil analisis di tahapinception. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pembuatan disain arsitektur subsistem, disain komponen sistem, disain format data disain database, disain antarmuka/tampilan, disain peta tampilan, penentuandesign patternyang digunakan, pemodelan diagram UML, dan pembuatan dokumentasi.3.Construction, merupakan tahap untuk mengimplementasikan hasil disain dan melakukan pengujian hasil implementasi. Pada tahap awalconstruction, ada baiknya dilakukan pemeriksaan ulang hasil analisis dan disain, terutama disain pada diagramsequence,class, component, dan deployment. Apabila disain yang dibuat telah sesuai dengan analisis sistem, maka implementasi dengan bahasa pemrograman tertentu dapat dilakukan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pengujian hasil analisis dan disain (misal menggunakanclass responsibility collaboratoruntuk kasus pemrograman berorientasi obyek), pendataan kebutuhan implementasi lengkap (berpedoman pada identifikasi kebutuhan di tahap analisis), penentuan coding pattern yang digunakan, pembuatan program, pengujian, optimasi program, pendataan berbagai kemungkinan pengembangan / perbaikan lebih lanjut, dan pembuatan dokumentasi.4.Transition, merupakan tahap untuk menyerahkan sistem aplikasi ke konsumen (roll-out), yang umumnya mencakup pelaksanaan pelatihan kepada pengguna dan testing beta aplikasi terhadap ekspetasi pengguna.ScrumScrum-banStory-driven modelingTest-driven development(TDD)Velocity trackingSoftware Development Rhythms

Memahami Konsep Agile pada Rekayasa Perangkat Lunak (Software Engineering)Kali ini saya akan membahas salah satu konsep proses pengembangan perangkat lunak. Konsep tersebut adalah proses pengembangan perangkat lunak menggunakan pendekatanAgileProcess.

Dalam era ekonomi modern seperti sekarang ini, seringkali kita mengalami kesulitan pada saat memprediksi, bagaimana sih sebaiknya bentuk sistem informasi yang diperlukan sesuai kebutuhan saat ini dan juga kebutuhan di masa mendatang. Hal itu terjadi karena kondisi pasar yang sangat cepat berubah, termasuk labilnya perubahan kebutuhan pengguna, dan juga serangan dari kompetitor baru yang datang tanpa peringatan. Pada saat tertentu, kita tidak mudah mendefinisikan keseluruhanrequirementssebelum proyek mulai berjalan, sehingga menyebabkan terjadinyarequirementsyang tidak menggambarkan kebutuhan pengguna sistem informasi yang sesungguhnya, bahkan sering terjadiscope creep(cakupanrequirementsyang terlalu melebar). Untuk mengatasi hal tersebut, diperlukan suatu cara pendekatan pembangunan perangkat lunak yang mampu segera me-responsgejolak ketidakstabilanrequirementsbisnis. Salah satu pendekatan yang dimaksud adalahAgile Process.

IstilahAgilesendiri terdiri dari dua pengertian,yaitu: pertama pengertian dari segi filosofi, dan kedua pengertian dari segi pedoman pengembangan perangkat lunak. Dari segi filosofi,agilemempunyai arti antara lain: mendorong demi terciptanya kepuasan pelanggan; mempercepatdeliveryperangkat lunak secara bertahap (incremental); tim proyek yang ramping dan mempunyai motifasi yang sangat tinggi; minimasi pekerjaan; serta menyederhanakan (birokrasi) keseluruhan proses pembangunan perangkat lunak. Sedangkan dari segi pedoman pengambangan perangkat lunak,agilemempunyai pengertian, bahwa secara aktif dan berkesinambungan, antara pengembang dengan pelanggan harus senantiasa menjalin kerjasama dan komunikasi dengan baik.

Menyinggung masalahAgile, terdapat suatu istilah yang disebut denganAgility. Apa sih yang dimaksudAgilityitu ? Menurut Ivar Jacobson,agilitymengandung pengertian bahwa perubahan (change) merupakan "hati" dan "jiwa" dari perangkat lunak. Maksudnya adalah, bahwa perubahan terhadaprequirementspelanggan, silih bergantinya anggota tim, dan perubahan kebutuhan teknologi yang berimplikasi terhadap produk yang dihasilkan merupakan suatu hal yang sangat wajar terjadi. Hampir semua proyek pengambangan perangkat lunak pasti mengalami hal tersebut. Sedangkan menurut Goldmanet al,agilitymerupakan sesuatu yang dinamis, mempunyai kontent yang spesifik, menaggapi perubahan secara agresif, dan beroriantasi pada pertumbuhan.

Dari definisi menurut Ivar Jacobson dan Goldmanet al,di atas dapat ditarik kesimpulan bahwaAgilitymerupakan suatu kemampuan atau "jiwa" yang harus dimiliki oleh tim pengambangan perangkat lunak. Kemampuan tersebut antara lain berupa: kemampuan segera menindaklanjuti terjadinya perubahan secara efektif; kemampuan berkomunikasi antarstakeholderssecara efektif; menganggap bahwa pelanggan merupakan pihak yang berada di dalam tim yang sama; kemampuan mengorganisasikan tim (memberikan motivasi) agar mampu meningkatkan performa kinerja tim; secara tepat waktu dan berkesinambungan dapat men-deliverperangkat lunak yang telah dijadwalkan.

Setelah membahas mengenaiAgiledanAgility, kemudian apa sih yang dimaksud dengan istilahAgile Processitu?Agile Processmerupakan sekelompok aktifitas pembangunan perangkat lunak secara iteratif yang menekankan pada aktifitas konstruksi (desain dan koding).Agile Processmengeliminasi sebagian besar waktu untuk melakukan perencanaan sistem dan berusaha sebisa mungkin mematuhi jadwaldeliversistem yang telah dijanjikan.Requirementsyang dibutuhkan secara langsung di-driveoleh pelanggan itu sendiri, dan apabila terjadi perubahan terhadaprequirementstersebut, pengembang dituntut mampu beradaptasi dengan perubahan yang terjadi.

Terus, sifat anggota tim yang bagaimana sih agar pendekatanAgileini berhasil diterapkan ?. Tim yangagileharus memiliki sifat-sifat sebagai berikut:Pertama, dari segi kompetensi, anggota tim harus mempunyai bakat dan keterampilan yang berhubungan dengan pengembangan perangkat lunak di bidangnya masing-masing, terutama yang berkaitan dengan konstruksi perangkat lunak (desain dan pemrograman).Kedua, dari segi fokus perhatian, anggota tim harus berkonsentrasi pada ketepatandeliverproduk yang telah dijanjikan dan dilakukan secara bertahap.Ketiga, dari segi kolaborasi, anggota tim harus mampu saling bekerjasama, baik itu dengan pelanggan maupun dengan manajer bisnis-nya.Keempat, dari segi kemampuan dalam berdiskusi, anggota tim senantiasa mendiskusikan isu-isu yang terjadi (apabila terjadi masalah, sesegera mungkin didiskusikan).Kelima, dari segi kemampuan menyelesaikan masalah, anggota tim harus terbiasa dengan ambiguitas dan mencari solusi yang tepat.Keenam, harus terjalin rasa saling percaya.Ketujuh, dari segi kesadaran keorganisasian, seorang anggota tim harus mampu bekerja dengan giat demi selesainya tugas sesuai dengan jadwal yang dialokasikan.

Selanjutnya, saya akan membahas mengenai langkah-langkah dalam pengembangan perangkat lunak menggunakan pendekatanAgile. Secara mendasar, aktifitas-aktifitas umum dalam kerangka kerjaagileantara lain: komunikasi dengan pelanggan, perencanaan, pemodelan, konstruksi, pengiriman (delivery), dan melakukan evaluasi. Kemudian aktifitas akan berulang, terutama untuk perencanaandeliverberikutnya. Semua aktifitas tersebut di buat seminimal mungkin, lebih memfokuskan dan konsentrasi pada konstruksi sertadelivery.

Kemudian, seperti apa saja sih bentuk dari pendekatan Agile ini ? Terdapat banyak model pendekatan yang tergolong dalamAgile Process, namun tidak semua model saya bahas pada tulisan ini, saya hanya menjelaskan dua model yaitu:Extreme Programming(XP), danAdaptive Software Development(ASD).

1.Extreme Programming(XP)XP merupakan suatu model yang tergolong dalam pendekatanagileyang diusulkan oleh Kent Back. Menurut penjelasan dia, definisi XP adalah sebagai berikut: "Extreme Programming (XP) is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop software". Model ini cenderung menggunakan pendekatanObject-Oriented. Tahapan-tahapan yang harus dilalui antara lain:Planning, Design, Coding,danTesting.

XP Process(Pressman, 2005)

Pada saat perencanaan, dimulai dengan membuat semacam "user strories" yang ditempatkanindex card.User Story(cerita) merupakan deskripsi fitur-fitur fungsional yang akan disediakan perangkat lunak yang akan dibuat. Dari cerita-cerita yang telah dibuat, pelanggan memberikan semacam nilai (misalnya: prioritas). Kemudian tim XP mengkaji semua cerita tadi dan menentukan rincian biaya serta memperkirakan waktu yang dibutuhkan untuk membangun sistem. Apabila waktu yang dibutuhkan untuk mengimplementasikan cerita tersebut lebih dari tiga minggu, maka tim XP meminta pelanggan memecah cerita tersebut menjadi cakupan yang lebih kecil. Cerita-cerita yang telah dibuat dikelompokkan, sehingga dapat diperkirakan untuk melakukandeliverable increments. Meskipun telah dikelompokkan dan proses pembangunan perangkat lunak telah dimulai, pelanggan masih bisa menambah, merubah, memecah dan menghapus cerita-cerita tersebut, namun tentunya harus sesuai dengan persetujuan bersama.

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).

Sedangkan kekurangan dari model XP antara lain adalah:Pertama, cerita-cerita yang menunjukkan requirements tersebut kemungkinan besar tidak lengkap.Kedua,user strorieslebih fokus kepada kebutuhan fungsional dari pada fokus kepada kebutuhan non fungsional.Ketiga, hubungan antara arsitektur sistem denganuser stroriestidak jelas, sehingga perancangan arsitektur juga lebih sulit.

2.Adaptive Software Development(ASD)ASD merupakan suatu model yang tergolong dalam pendekatanagileyang diusulkan oleh Jim Highsmith. ASD menekankan pada pengorganisasian tim secara mandiri, kolaborasi antar-perseorangan, dan terus belajar, baik secara individu maupun secara tim. ASD menggunakantoolsyang disebut "time-boxing" - yaitu berupa aktifitas yang menentukan jangka waktu tertentu yang dialokasikan untuk menyelesaikan berbagai macam tugas. Apabila waktu yang ditentukan tersebut selesai, maka pembangunan sistem akan pindah ke tugas berikutnya, dengan harapan bahwa sebagian besar daricritical worktelah berhasil diselesaikan sebelum waktu keseluruhan tugas berakhir. Terdapat tiga tahapan pada model ASD, yaitu:Speculation,Collaboration, danLearning.

Adaptive Software Development(Pressman, 2005)

Pada tahapSpeculation, proyek dimulai danadaptive cycle planningdiselenggarakan. Pada tahapan ini, didefinisikan visi dan misi pengguna terhadap sistem yang akan dibuat, selanjutnya mendefinisikanproject constraints,misalnya: waktudeliver. dan selanjutnya mendefinisikan satu set dari requirements yang akan dikerjakan dalam suatucycle. Pada tahapCollaboration, pada tahap ini diorganisasikan tim kerja untuk membangun sistem. Direkomendasikan menggunakan modelJoint Application Development(JAD). Pada tahapLearning, terdapat tiga aktifitas yaitu: pelanggan atau end-user menyediakan feedback terhadap hasil incrementaldelivery, tim ASD melakukan review terhadap komponen perangkat lunak untuk memperbaiki dan meningkatkan kualitas perangkat lunak yang sedang dibuat.DIPOSKAN OLEHMUHAMMAD FAUZI MURTADLODI16.58LABEL:SOFTWARE ENGENERING