Learn the Rules, Break The Rules, and Create the New Ones...

Hi... My name is Rizky Prihanto. You can call me RQ, or Rizky either. I am currently living on Bandung, Indonesia. Had a lot of works and research about Enterprise Information Systems (majoring on education and e-governments). I have bunch of interests (some friends call it 'freakz') about MySQL Opensource Database and now I am one of the administrator of MySQL Indonesia User Group - the opensource community initialized by Sun Microsystems Indonesia.

My Company PT Cinox Media Insani, Bandung, Indonesia. I work here since 2008 and I take responsibility as Chief of Software Architect. My job is about planning, imaginating, fantasy-ing, concepting, and build the infrastructure of the new information systems (or app engines) which going to be implemented.

This blog This is my blog that represent my current opinion, research and experiences about anything in Software Engineering. Written since 2007 (actually) and has been vaccum for a lot of while. And now I wanna ressurrect this blog (optimistically) from the long-long-hibernation with something fresh and new ideas -- still about MySQL, software engineering, development, and may be something managerial here.

About the tagline I've learned the statement above from some paper written by Kent Beck about Extreme Programming (XP) methodology -- some sort of practical software development methods which have no boundaries. That's very inspiring me a lot. I have written some article on this blog that tell my interpretation about that statement here.

My Another Blogs I have classifying my blogs into some sort of genre. The blog that you read here right now is my primary blog that tell you (majoring) about IT stuff. But if you wanna look another side of me, you can visit here, here, here,or here. Hope it'll be interesting for some of you.

Credits I would thanks to Blogger for this great blog platform. Skinpress who designed this Wordpress template (which is bloggerized by Free Blogger Templates). My appreciate is also going to you who give your generously time for visiting my blog.

Mengadopsi Agile Development Secara Praktek

Barusan mbaca buku Pattern of Agile Practice Adoption karangan Amr Elssamadisy (bisa didonlot secara online di sini : http://www.infoq/minibooks/agile-patterns) -- di situ dijelasin tentang beberapa domain kegiatan yang harus diperhatikan dalam mengadopsi praktek agile development, dimana masing-masing domain tersebut memiliki pola-pola praktek tersendiri yang saling berkesinambungan. Beberapa metode agile memiliki karakteristik fasenya sendiri, namun umumnya memiliki 3 (tiga) domain kegiatan yaitu requirements, design, dan development, yang terdiri dari praktek-praktek berupa :
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 :



Berikut ini adalah penjelasan praktek-praktek agile development :


Domain Kegiatan :
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