DAFTAR ISI
DAFTAR ISI...i
1. Dasar Teori...1
1.1. Rapid Software Development...1
1.2. Metode Agile...2
1.3. Extreme programming...3
2. Soal Latihan...6
Gambar 1Extreme Programming Practices...7
Rapid Development
Agile Develpment
Metode Lincah (Agile Development Methods)
Judul Sub Pokok Bahasan : Metode Lincah (Agile Development Methods)
Tujuan Instruksional Khusus : Diharapkan setelah mengikuti mata kuliah ini mahasiswa dapat: 1. Mendefinisikan pengembangan proses bertingkat ( incremental development ) yang dapat
memberikan hasil yang cepat dalam pembuatan perangkat lunak 2. Meringkas dan menyimpulkan esensi dari metode agile development
3. Menjelaskan prinsip dan praktek dari extreme programming
4. menjelaskan peran prototype dalam proses software
1. Dasar Teori
1.1.Rapid Software Development
Karena lingkungan bisnis yang berubah dengan cepat, bisnis software harus merespon peluang baru dan persaingan.Hal ini memerlukan pengembangan & hasil perangkat lunak dengan cepat.Bisnis mungkin bersedia menerima perangkat lunak yang berkualitas lebih rendah jika mendapatkan hasil yang cepat fungsionalitas perangkat lunak yang penting.
Kebutuhan
Karena perubahan lingkungan bisnis, seringkali tidak mungkin untuk mendapatkan system requirement yang konsisten dan stabil.Karena itu model pengembangan waterfall tidak bisa mengakomodasi dengan baik. Dan pengembangan berdasarkan oterasi & hasil yang berulang adalah satu-satunya jalan untuk menghasilkan software dengan cepat.
Karakteristik Proses Rapid Development
Beberapa karakteristik didapatkan dengan menggunakan pengembangan rapid. Antara lain adalah sebagai berikut:
Proses spesifikasi, desain, dan implementasi dilakukan bersamaan. Tidak ada spesifikasi yang mendetail dan dokumentasi desain di minimisasi.
Sistem dikembangangkan dalam serangkaian tingkat, end users mengevaluasi tiap tingkat dan
membuat proposal untuk tingkat selanjutnya
Karena proses pada pengembangan rapid dilakukan dengan metode iterative. Kita dapat melihat proses dengan model iterative pada Error: Reference source not found.
Gambar 1. Model Pengembangan Iterative
Sumber : Ian Sommerville Software Engineering
1.2.Metode Agile
Karena lingkungan bisnis yang berubah dengan cepat, bisnis software harus merespon peluang baru dan persaingan.Hal ini memerlukan pengembangan & hasil perangkat lunak dengan cepat.Bisnis mungkin bersedia menerima perangkat lunak yang berkualitas lebih rendah jika mendapatkan hasil yang cepat fungsionalitas perangkat lunak yang penting.Prinisip dan karakteristik model pengembangan agile dapat dilihat pada Tabel 1.[ CITATION Wir16 \l 1033 ]
Tabel 1 Prinsip Pengembangan Agile
Prinsip Deskripsi
Keterlibatan customer Customer harus dilibatkan secara langsung selama proses pengembangan. Peran customer adalah membuat prioritas system requirement yang baru dan mengevaluasi iterasi dari pengembangan sistem
Pengembangan bertingkat
Software dikembangkan dengan model tingkatan dimana customer menspesifikasikan kebutuhan untuk dimasukkan pada tiap tingkatan pengembangan
Fokus pada orang, bukan proses
Skill dari team pengembang harus dieksploitasi. Team juga dibiarkan untuk mengembangkan dengan cara mereka sendiri.
Mengakomodasi perubahan
Mengharapkan kebutuhan agar sistem untuk berubah dan merancang sistem sehingga bisa mengakomodasi perubahan-perubahan yang terjadi. Mempertahankan
kesederhanaan
Masalah pada metode agile
Pada pengembangan metode agile, dapat timbul beberapa macam permasalahan yang mungkin muncul pada tahap pengembangan perangkat lunak.
Sulit untuk menentukan customer yang tertarik untuk terlibat dalam proses.
Anggota team mungkin tidak cocok dalam pengembangan yang intensif yang menjadi karakteristik pada metode agile.
Memprioritaskan perubahan bisa sulit dilakukan karena terdapat beberapa stakeholder. Mempertahankan kesederhanaan membutuhkan kerja extra.
Kontrak mungkin menjadi masalah seperti halnya pada pengembangan bertingkat.
Salah satu metode praktis dari pengembangan agile adalah dengan extreme programming.
1.3.Extreme programming
Metode agile yang paling dikenal dan paling banyak digunakan adalah extreme programming.XP adalah pendekatan extreme pada pengembangan bertingkat. Penjelasan lebih detail mengenai extreme programing dapat dilihat pada bab 2 (1.2.) Salah satu ciri dari pengembagan dengan XP adalah :
Versi baru dapat di bangun beberapa kali per hari. Peningkatan di kirimkan ke customer tiap 2 minggu.
Semua test harus dijalankan untuk setiap hasil, dan hasil hanya diterima ketika test dijalankan
dengan sukses
Model pengembangan meggunakan XP [ CITATION Fal16 \l 1033 ]dapat dilihat pada Error: Reference source not found.
Gambar 2. Model Pengembangan Extremme Programming
Sumber : Ian Sommerville Software Engineering
Proyek pengembangan perangkat lunak yang dianggap sebagai yang pertama kali menerapkan XP adalah
C3 (Chrysler Comprehensive Compensation) Project dari Chrysler. Proyek ini adalah proyek penggajian 10.000 karyawan Chrysler, terdiri dari kira-kira 2000 class dan 30.000 method. Proyek yang dimulai pertengahan dekade 90-an ini terancam gagal karena rumitnya sistem yang dibangun dan kegagalan pada saat testing. Chrysler kemudian menyewa Kent Beck, seorang pakar software engineering yang di kemudian hari dikenal sebagai pencetus awal dari XP, untuk menyelamatkan proyek tersebut. Beck bersama rekannya Ron Jeffries dengan kewenangan yang diberikan oleh Chrysler melakukan berbagai perubahan di C3 Project untuk membuatnya lebih efisien, adaptif, dan fleksibel. Hal yang paling penting bagi mereka adalah harus mampu memenuhi permintaan utama dari Chrysler, untuk melakukan
launching perangkat lunak tersebut dalam waktu tidak lebih dari dua tahun sejak saat Beck dikontrak. Beck dan Jeffries pada akhirnya berhasil menyelesaikan target Chrysler dengan menerapkan berbagai metode dalam proses pengembangan perangkat lunak tersebut. Kumpulan metode inilah yang kemudian dikenal sebagai model atau pendekatan XP dalam pengembangan perangkat lunak. Begitu sederhananya metode-metode tersebut sehingga bagi orang yang belum menerapkan, XP terlihat sebagai kumpulan ide lama yang terlalu sederhana dan tidak akan memberikan efek apapun pada sebuah proyek pengembangan perangkat lunak.
Kent Beck sendiri mengakui dan menegaskan bahwa XP tidak selalu cocok untuk setiap proyek
pengembangan perangkat lunak. Kelebihan XP adalah sesuai untuk digunakan pada proyek yang memiliki
dynamic requirements. Proyek semacam ini memerlukan adaptasi cepat dalam mengatasi perubahan-perubahan yang terjadi selama proses pengembangan perangkat lunak. XP juga cocok untuk proyek dengan jumlah anggota tim tidak terlalu banyak (sekitar 10-20 orang) dan berada pada lokasi yang sama. Latar Belakang XP
Requirement yang berubah dengan cepat menuntut lifecycles yang lebih pendek, dan tidak selaras dengan metoda pengembangan tradisional, yang pada umumnya memerlukan disain luas di awal dan mengakibatkan perubahan desain yang terjadi kemudian memerlukan biaya yang lebih tinggi atau kehilangan milestones.
Berdasarkan hal ini kemudian dilahirkan konsep XP yang digagas oleh Kent Beck dan Ward Cunningham pada Maret 19961.Metode XP merupakan yang terpopuler dari beberapa metodologi pengembangan
software yang dipakai untuk mengimplementasikan proyek pengembangan perangkat lunak. Kunci Utama XP
Menurut penggagas dari metode XP, Kent Beck mendefinisikan empat kunci utama (inti) dari XP yaitu:
1. Communication (Komunikasi)
Tugas utama developer dalam membangun suatu sistem perangkat lunak adalah mengkomunikasikan kebutuhan sistem kepada pengembang perangkat lunak.Komunikasi dalam XP dibangun dengan
melakukan pemrograman berpasangan (pair programming).Developer didampingi oleh pihak klien dalam
melakukan coding dan unit testing sehingga klien bisa terlibat langsung dalam pemrograman sambil berkomunikasi dengan developer.Tujuannya untuk memberikan pandangan pengembang sesuai dengan pandangan pengguna sistem.
2. Simplicity (Kesederhanaan)
XP mencoba untuk mencari solusi paling sederhana dan praktis. Perbedaan metode ini dengan metodologi pengembangan sistem konvensional lainnya terletak pada proses desain dan coding yang terfokus pada kebutuhan saat ini daripada kebutuhan besok, seminggu lagi atau sebulan lagi. Lebih baik melakukan hal yang sederhana dan mengembangkannya besok jika diperlukan.
3. Feedback (Masukan)
Hal ini diperlukan untuk mengetahui kemajuan dari proses dan kualitas dari aplikasi yang dibangun. Informasi ini harus dikumpulkan setiap interval waktu yang singkat secara konsisten. Ini dimaksudkan agar hal-hal yang menjadi masalah dalam proses pengembangan dapat diketahui sedini mungkin. Setiap feed back ditanggapi dengan melakukan tes, unit test atau system integration dan jangan menunda karena biaya akan membengkak (uang, tenaga, waktu).
4. Courage (Keberanian)
Berani mencoba ide baru.Berani mengerjakan kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki.Contoh dari courage adalah komitmen untuk selalu melakukan design dan coding untuk saat ini dan bukan untuk esok. Ketika ada kode yang terlalu rumit, sulit dibaca dan dipahami, tidak sesuai dengan kemauan pelanggan, dll maka seharusnya kode program seperti itu di refactor (kalau perlu dibangun ulang). Hal ini menjadikan pengembang merasa nyaman dengan refactoring program ketika diperlukan.
5. Respect (Menghormati)
Pentingnya respect terhadap anggota team lainnya karena dengan siklus pendek dan integrasi continue, programmer tidak boleh melakukan perubahan yang dapat merusak kompilasi dan menyebabkan keberadaan unit uji gagal atau memperlambat kerja team. Respects tiap individu akan selalu menghasilkan kualitas tinggi.2
Penerapan XP
Beberapa hal yang harus dipertimbangkan sebelum seseorang masuk dalam dunia XP adalah sebagai berikut:
1. User harus memahami konteks bisnis yang akan dikembangkan sistemnya, sehingga developer dapat menangkap sistem secara aplikatif dan dapat mengusulkan teknologi apa yang dapat dikembangkan dalam sistem barunya.
2. Akan lebih efektif apabila developer pernah menangani proyek pengembangan sistem yang sejenis sehingga dapat memberikan usulan model sistem baru, di samping alasan bahwa developer telah memiliki template aplikasi sistem tersebut untuk dijadikan prototype sistem baru. Hal ini akan
berimplikasi kepada kemudahan dalam konstruksi sistem karena dikembangkan berdasarkan template yang sudah ada.
3. Extreme programming menuntut komunikasi antar developer dan user secara intensif dan komunikasi internal antar developer secara komprehensif, sehingga akan lebih representatif apabila tahap
pengembangan sistem dilakukan di lokal yang mendukung proses komunikasi tersebut.
XP adalah suatu bentuk pembangunan perangkat lunak yang berbasis nilai kemudahan, komunikasi, umpan balik, dan keberanian.Bekerja dalam whole team bersama-sama dengan praktek yang mudah.Adapun inti penerapannya adalah:
Planning Game
Small, frequent releases System metaphors Simple design
Testing (unit testing & TDD)
Frequent refactoring
Pair programming
Collective code ownership
Continuous integration Sustainable pace Whole team together Coding standards
Gambar 1Extreme Programming Practices
Gambar 1 Extreme Programming Practices
1. The Planning Game
Pendekatan XP dalam perencanaan sangat mirip dengan metode yang diterapkan pada RAD (Rapid Application Development). Proses pendek dan cepat, mengutamakan aspek teknik, memisahkan unsur bisnis dengan unsur teknis dan pertemuan intensif antara klien dengan developer. Pada XP proses ini menggunakan terminologi “game” karena Beck menyarankan untuk menggunakan teknik score card dalam menentukan requirements. Semakin sulit aspek teknis yang dibutuhkan semakin tinggi pula skor pada kartu rencana tersebut.
2. Small Releases
Setiap release dilakukan dalam lingkup sekecil mungkin pada XP. Setiap developer menyelesaikan sebuah unit atau bagian dari perangkat lunak maka hasil tersebut harus segera dipresentasikan dan didiskusikan dengan klien.Jika memungkinkan untuk menerapkan unit tersebut pada perusahaan, hal itu juga dapat dilakukan sekaligus sebagai tes awal dari penerapan keseluruhan sistem.Kendati demikian hal ini tidak selalu perlu dilakukan karena harus dihitung terlebih dahulu sumberdaya yang dibutuhkan.Apakah lebih menguntungkan langsung melakukan tes terhadap unit tersebut atau melakukan tes setelah unit tersebut terintegrasi secara sempurna pada sistem.
3. Metaphor
4. Simple Design
Sebagai salah seorang penandatangan Agile Manifesto, Beck adalah seorang yang tidak menyukai desain yang rumit dalam sebuah pengembangan perangkat lunak. Tidak heran jika dia memasukkan Simple Design sebagai salah satu unsur XP. Pada XP desain dibuat dalam lingkup kecil dan sederhana. Tidak perlu melakukan antisipasi terhadap berbagai perubahan di kemudian hari. Dengan desain yang simpel apabila terjadi perubahan maka membuat desain baru untuk mengatasi perubahan tersebut dapat dengan mudah dilakukan dan resiko kegagalan desain dapat diperkecil.
5. Refactoring
Refactoring adalah salah satu aspek paling khas dari XP. Refactoring seperti didefinisikan oleh Martin Fowler adalah ”Melakukan perubahan pada kode program dari perangkat lunak dengan tujuan
meningkatkan kualitas dari struktur program tersebut tanpa mengubah cara program tersebut bekerja”. Refactoring sendiri sangat sesuai untuk menjadi bagian XP karena Refactoring mengusung konsep penyederhanaan dari proses desain maupun struktur baris kode program. Dengan Refactoring tim pengembang dapat melakukan berbagai usaha untuk meningkatkan kualitas program tanpa kembali mengulang-ulang proses desain. Fowler adalah salah satu kolega dekat dari Kent Beck karena itu tidak mengherankan bahwa cara berpikir mereka terhadap proses pengembangan perangkat lunak sangat mirip satu dengan lainnya.
6. Testing
XP menganut paradigma berbeda dalam hal tes dengan model pengembangan perangkat lunak lainnya. Jika pada pengembangan perangkat lunak lainnya tes baru dikembangkan setelah perangkat lunak selesai menjalani proses coding maka pada XP tim pengembang harus membuat terlebih dahulu tes yang hendak dijalani oleh perangkat lunak. Berbagai model tes yang mengantisipasi penerapan perangkat lunak pada sistem dikembangkan terlebih dahulu. Saat proses coding selesai dilakukan maka perangkat lunak diuji dengan model tes yang telah dibuat tersebut. Pengetesan akan jauh lebih baik apabila dilakukan pada setiap unit perangkat lunak dalam lingkup sekecil mungkin daripada menunggu sampai seluruh perangkat lunak selesai dibuat. Dengan memahami tahap ini kita dapat melihat bahwa siklus pada XP adalah requirement analysis test code design. Sekilas terlihat hal ini tidak mungkin dilakukan tetapi pada kenyataannya memang gambaran inilah yang paling dapat menjelaskan tentang XP.
7. Pair Programming
Pair programming adalah melakukan proses menulis program dengan berpasangan. Dua orang programer saling bekerjasama di komputer yang sama untuk menyelesaikan sebuah unit. Dengan melakukan ini maka keduanya selalu dapat berdiskusi dan saling melakukan koreksi apabila ada
kesalahan dalam penulisan program. Aspek ini mungkin akan sulit dijalankan oleh para programer yang memiliki ego tinggi dan sering tidak nyaman untuk berbagi komputer bersama rekannnya.
8. Collective Ownership
diperkecil. Pada level yang lebih tinggi bahkan dimungkinkan para programer dapat bertukar unit yang dibangunnya.
9. Coding Standards
Pair programming dan collective ownership hanya akan dapat berjalan dengan baik apabila para programer memiliki pemahaman yang sama terhadap penulisan kode program. Dengan adanya coding standards yang telah disepakati terlebih dahulu maka pemahaman terhadap program akan menjadi mudah untuk semua programer dalam tim. Hal ini dapat diterapkan sebagai contoh pada penamaan variabel dan penggunaan tipe data yang sama untuk tiap elemen semua record atau array pada program.
10. Continous Integration
Melakukan build setiap hari kerja menjadi sebuah model yang disukai oleh berbagai tim pengembang perangkat lunak. Hal ini terutama didorong oleh keberhasilan penerapan sistem ini oleh Microsoft dan telah sering dipublikasikan. Dengan melakukan build sesering mungkin berbagai kesalahan pada program dapat dideteksi dan diperbaiki secepat mungkin. Apabila banyak tim pengembang perangkat lunak meyakini bahwa build sekali sehari adalah minimum maka pada XP hal tersebut adalah maksimum. Pada XP tim disarankan untuk melakukan build sesering mungkin misalnya setiap 4 jam atau bahkan lebih cepat lagi.
11. 40-hours Week
Beck berpendapat bekerja 8 jam sehari dan 5 hari seminggu adalah maksimal untuk tiap programer. Lebih dari itu programer akan cenderung membuat berbagai error pada baris-baris kode programnya karena kelelahan.
12. On-Site Customer
Sebuah pendekatan klasik, di mana XP menganjurkan bahwa ada anggota dari klien yang terlibat pada proses pengembangan perangkat lunak. Yang lebih penting lagi ia harus ada di tempat pemrogaman dan turut serta dalam proses build dan test yang dilakukan. Apabila ada kesalahan dalam pengembangan diharapkan klien dapat segera memberikan masukan untuk koreksinya.
Demikianlah sedikit introduksi tentang XP, ke-12 aspek tersebut saat ini telah banyak mengalami modifikasi seiring meluasnya penerapan XP. Sehingga berbagai model turunan dari XP mungkin terlihat sedikit berbeda. Yang paling penting bagi Kent Beck dan para koleganya sendiri adalah semua model yang mengadaptasi XP tersebut tetap setia pada nilai-nilai dasar XP dan menghindari kerumitan berlebihan dalam proses pengembangan perangkat lunak.
Prinsip XP dan Agile
Gambar 2Prinsip
Gambar 2 Prinsip XP dan Agile Skenario Kebutuhan
Dalam XP user requirement diexpresikan sebagai skenario atau user stories. Stories ditulis pada kartu dan team pengembang membagi stories tersebut pada beberapa pelaksanaan tugas. Penugasan ini dijadikan dasar dari penjadwalan dan perkiraan biaya. Customer memilih stories untuk dimasukkan pada release berikutnya berdasarkan prioritas dan perkiraan jadwal. Salah satu contoh stories yang diberikan oleh user tampak pada Gambar 3.
Download dan mencetak artikel
Pertama, anda memilih artikel yang kita inginkan pada daftar yang ditampilkan . Kemudian kita memberikan sistem bagaimana kita membayar artikel tersebut. Pembayaran dapat dilakukan dengan melalui langganan, melalui akun perusahaan atau dengan kartu kredit. Setelah itu kita akan mendapatkan copyright form dari sistem untuk kita isi dan ketika kita mengirimkan form ini artikel tersebut akan terdownload pada komputer kita.
Kemudian kita memilih printer dan mengkopinya. Kemudian kita bisa memberitahu sistem apabila printing telah berhasil.
Apabila artikel tersebut hanya untuk artikel cetak, kita tidak akan bisa menyimpan versi PDF dari artikel tersebut, dan file akan otomatis terhapus dari komputer.
Gambar 3 Contoh User Stories
Metode Testing pada XP
Pada pengembangan XP dilakukan model testing test first development. Test dilakukan berdasarkan tingkatan pada skenario, masing-masing tingkatan skenario akan dilakukan test dan user akan dilibatkan langsung pada test tiap skenario dan validasi. Gambar 4 menunjukkan bagaimana user stories dipecah kedalam bentuk task. Setiap metode tes yang dilakukan pada task ditunjukkan pada
Gambar 4 Gambar Stories yang Dipecah ke dalam Task
Sumber: Ian Sommerville Software Engineering
Gambar 5 Metode Test pada Task Pembayaran
Sumber : Ian Sommeville Sofware Engineering
Test driving development
Gambar 6 Fase Test driving pada XP
Pair Programming
Pada XP, programmer bekerja berpasangan, duduk bersama untuk coding . Hal ini membantu
kepemilikan dari code, dan menyebarkannya pada team yang lain. Pair programming juga melakukan adanya informal review karena tiap line of code dilihat lebih dari 1 orang.
Rapid Application Development
Metode agile telah menerima banyak perhatian, tetapi pendekatan lain untuk pengembangan aplikasi yang cepat telah dikembangkan selama bertahun-tahun. RAD Dirancang untuk mengembangkan aplikasi bisnis yang bergantung pada pemrograman dan penyajian informasi database. RAD memiliki lingkung kerja antara lain sebagai berikut :
Database programming language Interface generator
Links to office applications Report generators
Gambar hubungan dalam lingkup RAD dapat dilihat pada Gambar 7. Tulis test
yang gagal
Tambahkan code untuk meloloskan test
Gambar 7 Lingkup RAD
Sumber : Ian Sommerville Software Engineering
Interface Generator
Banyak aplikasi yang berdasarkan seputar form yang kompleks, dan mengembangkan form tersebut secara manual sangat memakan waktu.Environment RAD menyediakan dukungan untuk men-generate interface seperti bentuk interaktif pembuatan form dengan menggunakan teknik drag and drop, hubungan antar form dimana urutan dari tampilan form dapat dispesifikasikan dan juga verifikasi form.
Visual programming
Bahasa pemrograman yang digunakan untuk mengembangkan prototipe dengan mengembangkan antarmuka, pada visual programming juga terdapat banyak library component yang digunakan untuk mendukung sistem. Gambar contoh visual programming dapat dilihat pada Gambar 7.
Gambar 8 Visual Programming
Dalam penerapannya visual programming memiliki beberapa permasalahan yang mungkin muncul, antara lain adalah sebagai berikut :
Sulit untuk berkoordinasi dengan team
Ketergantungan dengan software dapat menimbulkan kesulitan untuk melakukan maintenance. Prototipe sistem dapat dikembangkan untuk memberi end user kesan yang kongkrit mengenai
kemampuan sistem. Dengan demikiran prototipe dapat membantuk pemesan sistem yang menentukan dan memvalidasi persyaratan sistem
Dengan bertambahnya tekanan untuk penyerahan perangkat lunak yang cepat, pembuatan prototype kian marak digunakan sebagai teknik pengembangan standar untuk sistem berukuran kecil dan menengah terutama pada domain bisnis.Pengembangan cepat sangat penting untuk sistem prototipe.Untuk menyerahkan prototipe sistem dengan cepat, anda mungkin harus menghilangkan beberapa fungsionalitas sistem atau melonggarkan batasan non fungsional seperti kecepatan tanggap dan keandalan.
1. Contoh Soal
Sebagai bahan diskusi berikut adalah 2 contoh soal mengenai pembahasan metode lincah Mengapa kebutuhan banyak berubah? Jika diketahui kenyataan bahwa customer tidak mengerti kebutuhan mereka sendiri. Diskusikan dalam kelompok.
Jelaskan definisi dari extreme programming.
3. Latihan Soal
1. Jawablah pertanyaan berikut dengan tepat
Jelaskan perbedaan pengembangan perangkat lunak dengan menggunakan waterfall dan Rapid software development.
Apa yang anda pahami mengenai test-first development ?
Mengapa Agile development bergantung pada team competence dan individual competence ? Apa keunggulan dan kelemahan penggunaan Extreme Programming ?
Berikan contoh project yang cocok dikerjakan dengan metode pengembangan Rapid Application
DAFTAR PUSTAKA
Faldiansyah, A. (2016, Maret Kamis). Belajar Sholat Khusuk dalam 24Jam. Retrieved from http://www.detik.com: http://www.detik.com/belajar.php?berita=belajar_sholat Wiryanata, K. (2016). Belajar membuat citasi di MS Word 2016. Malang: UB Press.