1. Simple Design
2. Refactoring
3. Automated Developer Tests
4. Test-First Development
5. Test-Last Development
6. Collective Code Ownership
7. Continuous Integration
8. Functional Tests
9. Customer Part of Team
Berdasarkan pengalaman mendevelop software, dan mengkawinkannya dengan beberapa ide dari beberapa literatur mengenai agile development methodology yg laen, saya nambahin beberapa praktek agile lainnya, seperti :
10. Coding Standards
11. Pair Programming
12. Small Release.
Dan setelah menelusuri maknanya, saya modifikasi dikit tabel clustering dari aspek praktis agile development nya om Amr Elssamadisy tersebut menjadi seperti ini :
1. Test-Driven Requirements
Test-driven requirements dilakukan dengan memotong jarak antara klien dengan tim developer dan melakukan komunikasi serta feedback antar keduanya secara intensif. Klien merupakan bagian integral dari tim. Dan klien secara progresif melakukan tes fungsional yang akan diperlakukan sebagai requirement oleh para developer.
2. Evolutionary Design
Desain sistem yang dibuat harus simpel namun memiliki nilai skalabilitas yaitu mampu menerima perubahan dan perluasan cakupan sistem di kemudian hari. Dalam domain kegiatan ini, yang benar-benar harus diperhatikan adalah kemampuan arsitektur software yang akan dikembangkan untuk beradaptasi dengan perubahan. Jika perubahan yang akan terjadi belum mampu diprediksikan di awal, minimal desain sistem yang akan dibuat harus dirancang supaya mudah untuk direfactoring. Konsep Object Oriented Analysis & Design (OOAD) sangat berperan dominan dalam hal ini.
3. Test-Driven Development
Domain kegiatan test-driven development ini mencakup nyaris sebagian besar pola-pola praktek agile development. Beberapa pola praktek bahkan saling beririsan dengan domain kegiatan yang lain. Ruang lingkup praktek dalam domain ini mencakup nyaris semua fase yang dilakukan dalam pengembangan software yaitu fase desain, coding, testing, release. Keberhasilan proses agile juga ditentukan dari keberhasilan domain kegiatan ini. Tidak berlebihan jika dikatakan bahwa agile development adalah test-driven development.
Aspek Praktis :
1. Coding Standards, yaitu penyeragaman pola dan teknik pemrograman untuk yang menjadi acuan bagi pengembangan aplikasi yang dilakukan dalam tim dan menyediakan pola baku untuk melakukan integrasi, pengujian, hingga analisis masalah-masalah yang berkaitan dengan bug.
2. Simple Design, yaitu elemen yang merujuk pada perancangan arsitektur sistem yang disiapkan untuk mampu menerima perubahan maupun penambahan fitur-fitur di kemudian hari, dengan acuan perancangan sistem berbasis komponen yang sederhana namun bersifat dinamis.
3. Refactoring, yaitu suatu kegiatan memodifikasi kode yang telah dimiliki untuk dipergunakan ulang dalam pembuatan kode pembentuk aplikasi. Refactoring dapat pula diartikan sebagai kegiatan memodifikasi kode yang didefinisikan sebagai sebuah modul fungsional yang mengalami penyesuaian setelah melewati beberapa fase pengujian.
4. Pair Programming, yaitu suatu disiplin dan budaya kerja yang diperkenalkan dalam agile development dimana sebuah isu pekerjaan ditangani oleh sepasang developer yang berperan sebagai eksekutor dan analisa. Dengan konsep ini, dapat menekan resiko terjadinya cacat produksi akibat kesalahan interpretasi dokumen requirement dengan kode program yang dihasilkan.
5. Collective Code Ownership, yaitu berwujud sebuah repository untuk menyimpan progress kode program yang terkatalog secara historis disertai dengan catatan mengenai perubahan yang dibuat oleh masing-masing programmer. Dengan adanya konsep kepemilikan kode secara kolektif ini, setiap programmer dalam tim dapat mereview hasil kode miliknya sendiri maupun milik rekan satu tim dan memodifikasinya, dengan tetap memperhatikan pencatatan riwayat dan otoritas perubahan dari kode tersebut.
6. Small Release, yaitu pengiriman progress untuk setiap bagian fungsional dari requirement yang telah selesai dikonstruksi (dan bebas bug) berupa modul atau komponen aplikasi.
7. Continuous Integration, yaitu proses menyatukan seluruh modul/komponen pembentuk aplikasi yang dilakukan setiap terjadi small-release yang telah selesai dilakukan pengujian baik secara otomatis maupun secara fungsional oleh pihak developer dan klien.
8. Test-First Development, yaitu inisialisasi unit testing yang akan dipergunakan dalam pembuatan perangkat pengujian pada awal fase konstruksi sebelum proses development aplikasi untuk semua requirement dilakukan.
9. Test-Last Development, yaitu proses evaluasi dan pengujian yang dilakukan secara manual oleh klien dan developer secara kolaboratif, atau dilakukan secara otomatis mempergunakan unit testing yang telah didefinisikan pada test-first development.
10. Automated Developer Tests, yaitu mekanisme otomatis untuk menjalankan unit testing yang telah didefinisikan pada test-first development untuk menguji seluruh modul/komponen pada aplikasi dan memastikan aplikasi bebas dari cacat, baik berupa cacat teknis maupun vulnerabilitas aplikasi terhadap kemungkinan error yang diakibatkan kesalahan input hingga hacking.
11. Functional Tests, yaitu merupakan pengujian rilis aplikasi yang dilakukan oleh developer bersama dengan klien secara kolaboratif untuk mengetahui feedback dan kesesuaian dari fungsi aplikasi dengan keperluan bisnis nyata. Bila diperlukan, pengujian fungsional akan memicu refactoring untuk menyesuaikan terhadap perubahan-perubahan fitur yang dianggap kurang tepat dengan kebutuhan klien di lapangan.
0 comments:
Posting Komentar