Tuesday, 18 September 2012

Software Engineering Practices



1.     Tahapan-tahapan pengembangan perangkat lunak

1.      Pengenalan masalah.
2.      Merencanakan penyeleseian masalah (Pemodelan dan Desain Perangkat Lunak)
3.      Melaksanakan apa yang sudah direncanakan
4.      Melakukan evaluasi pada sistem yang telah dikembangkan (Quality Assurance Test)

2.     Pengenalan Masalah

Sebagai pengembang dari sebuah sistem maka perlu untuk melakukan analisa terhadap masalah yang harus diseleseikan dengan software yang kita bangun. Analisis tersebut bertujuan agar software yang kita hasilkan tepat untuk dapat menyeleseikan masalah yang sedang dihadapi.
Pengembang perangkat lunak secara umum terbagi menjadi 2. Yakni pengembang perangkat lunak yang mendapatkan tugas dari klien untuk menyeleseikan masalah yang dihadapi dan pengembang perangkat lunak yang melakukan inovasi untuk menyeleseikan masalah yang ada dilapangan. Pada kedua tipe pengembang ini maka proses yang harus dilakukan juga identik. Pada tahap pertama, mereka harus mampu untuk memetakan permasalahan yang akan diseleseikan dengan perangkat lunak.
Pemetaan masalah dapat dilakukan dengan cara sebagai berikut,
1.       Siapa pihak yang bertanggung jawab terhadap masalah yang sedang dihadapi?
Dengan mengetahui pihak yang bertanggung jawab, maka kita dapat menentukan dengan tepat personal-personal yang diindikasikan mampu memberikan informasi dengan jelas dan tepat tentang masalah yang dihadapi dan harapan yang diinginkan.
Bukan tidak mungkin kita harus melakukan investigasi permasalah lintas bidang jika memang sistem yang akan kita kembangkan terkait dengan bidang lain. Kita dapat meminta klien untuk menunjukkan siapa personal yang dapat dimintai keterangan terkait kebutuhan mereka.
2.       Apa yang kita tidak ketahui tentang masalah mereka?
Sebagai analis kita harus memiliki daftar informasi  tentang masalah yang sedang dihadapi. Kita harus menyusun daftar pertanyaan untuk menanyakan informasi-informasi yang kita tidak ketahui. Sehingga setelah proses identifikasi masalah selesai, kita sudah memiliki informasi yang komprehensif tentang masalah tersebut.
Paradigma seorang analis yang pintar tidak perlu melakukan wawancara terlalu banyak merupakan paradigm yang salah. Walaupun mungkin kita sudah memiliki gambaran tentang masalah yang dihadapi, namun kita diwajibkan untuk melakukan cross check langsung dengan klien. Hal ini dilakukan untuk menghindari terjadinya misunderstanding dari pihak analis. Dokumentasi hasil wawancara ataupun penggalian informasi harus mendapatkan persetujuan dari pihak klien. Dokumentasi tersebut dapat kita jadikan sebagai pedoman awal dalam menyusun rencana penyeleseian masalah.
3.       Memetakan masalah menjadi lebih detail dengan membuat sub-problem.
Setelah seluruh informasi kita dapatkan. Kita akan mendapatkan gambaran masalah secara helicopter view (General). Kita harus memecahkan masalah yang general tersebut ke sub-sub masalah yang lebih kecil. Pembagian masalah menjadi sub-sub bagian yang lebih kecil sekaligus berfungsi untuk lebih mendetailkan masalah yang dihadapi. Seringkali kita akan menemukan detail informasi yang terlupakan, sehingga kita dapat mengantisipasi kemungkinan tersebut diawal pekerjaan.
Selain itu, dengan memecah masalah menjadi sub bagian yang lebih kecil akan menjadi langkah awal kita dalam melakukan analisis pemecahan masalah yang akan kita ajukan. Pemecahan masalah bisa ditunjukkan secara spesifik untuk tiap-tiap detail unit. Serta pembagian masalah akan mendorong kita untuk memberikan solusi dengan sifat Object Oriented.
4.       Usahakan untuk merepresentasikan hasil analisa dengan bantuan gambar.
“Picture is more than thousand word” mungkin sebuah kata yang bisa merepresentasikan hal ini. Dengan menggunakan gambar sebagai media untuk menyederhanakan pola pikir kita maka akan mempermudah kita untuk berkomunikasi dengan pihak-pihak lain.
Perlu diketahui bahwa dalam melakukan interaksi kita sebagai analis tidak melulu berhubungan dengan programmer yang sangat teknis-oriented, terkadang kita harus juga untuk mempresentasikan hasil analisis yang kita lakukan kepada end-user. Maka penjelasan dalam bentuk gambar menjadi senjata yang sangat baik.

3.     Plan a solution (Modelling dan Desain perangkat lunak)

1.       Apakah ada masalah serupa yang sudah ditangani?
Permasalahan di dunia IT memiliki kemiripan-kemiripan. Sehingga dalam dunia IT sudah jamak jika kita menyusun penyeleseian masalah dengan berdasarkan database problem solving yang telah kita miliki.
Kita akan dapat bekerja lebih cepat dan proven dengan memanfaatkan dokumentasi dari masalah serupa yang telah kita kenal sebelumnya. Sehingga kita bisa langsung in dengan masalah tersebut tanpa perlu mempelajari lebih lama.
Oleh karena itu, sebagi IT analis professional, dokumentasi masalah dan solusi akan menjadi reusable resources yang sangat berharga dalam menunjang kegiatan pekerjaan.
2.       Apakah masalah tersebut sudah terseleseikan?
Jika dokumentasi masalah sudah kita miliki, kita juga harus memperhatikan apakah masalah tersebut sudah dapat terseleseikan / tersedia resources untuk menyeleseikan masalah tersebut. Solusi yang proven ini bisa diperoleh baik dari dokumentasi pribadi kita maupun solusi yang telah ada di luar.
Pada era sekarang, pengembang sistem sudah mengenal teknologi OOP. Dengan konsep OOP maka fungsi-fungsi yang telah kita kembangkan sebelumnya akan dapat kita jadikan sumberdaya untuk menyeleseikan suatu masalah. Konsep reusable resources ini yang memudahkan pengembang untuk mendevelop sistem yang besar dalam waktu yang relative singkat.

Selain solusi yang telah kita miliki sendiri, jika diluar telah tersedia solusi yang proven maka kita juga tidak haram untuk menggunakan solusi tersebut pada sistem kita. Kita harus memiliki planning yang tepat apakah dengan fully development sistem memberikan nilai efektivitas yang tinggi atau malah menimbulkan time consuming yang besar.
3.       Dapatkah kita menenteukan sub-problem?
Sepeti pada tahap analisis awal yang telah dikemukakan. Konsep pemecahan masalah menjadi unit-unit kecil merupakan pendekatan yang baik bagi kita untuk menyeleseikan suatu masalah.
Pendekatan OOP juga akan terbantu jika kita mampu untuk merepresentasikan solusi dengan membagi masalah menjadi sub-sub bagian masalah yang lebih spesifik.
4.       Dapatkah kita menampilkan solusi yang dapat diimplementasikan secara efektif?
Solusi yang kita tawarkan harus mampu untuk diimplementasikan secara efektif baik secara sumberdaya maupun ketepatan dalam memecahkan masalah.

4.     Execute the plan

1.       Apakah solusi yang dikerjakan sesuai dengan rencana yang telah dirumuskan?
Pada tahap implementasi fungsi sistem analis adalah harus memastikan bahwa para programming (eksekutor dari rencana) telah benar-benar mengkodekan sesuai dengan rencana yang telah ditentukan sebelumnya. Logika-logika liar diluar dari rencana yang telah ditentukan seminimal mungkin harus dihindarkan pada tahapan ini. Semua eksekusi pekerjaan harus disesuaikan dengan rencana (solusi yang telah dianalisa).
Oleh karena itu, pada tahap perancanaan harus dilakukan analisa yang komprehensif dan dalam agar dapat menghasilkan rencana yang baik.
Perlu diingat salah satu statement khas dari dunia engineering “If we failed to plan, we plan to fail”. Jika kita gagal dalam menyusun perencanaan dengan baik maka kita merencanakan sebuah kegagalan.
2.       Apakah source code dapat ditelusuri dan sesuai dengan model yang telah dibuat?
Source code yang dibuat harus dapat ditraceback kedalam model yang telah dibuat sebelumnya. Sehingga pada saat proses supervisory terhadap tim pengembang (programmer) maka analis dapat dengan mudah untuk menemukan kesalahan ataupun ketidaksesuaian implementasi dengan rencana yang telah disusun.
Selain itu, pada saat proses pemodelan sistem kita juga harus mampu untuk membuat modeling sistem yang sesuai dengan rencana eksekusi pekerjaan. Contohnya jika pada tahap pengembangan berencana menggunakan sistem yang menerapkan OOP (Object Oriented Programming) maka kita juga harus memodelkan sistem yang akan kita buat dengan menggunakan pendekatan modeling berbasis object.

3.       Apakah tiap bagian dari solusi telah dapat berfungsi dengan benar?
Pada tahap pengembangan ini kita juga dapat melakukan evaluasi awal dengan melakukan debugging untuk tiap-tiap bagian dari solusi yang telah dikerjakan. Pada tahapan ini jika memang ditemukan masalah maka kita dapat langsung melakun re-planning untuk sub sistem tersebut.

5.      Examine the result

1.       Apakah mungkin untuk melakukan test pada tiap bagian dari solusi yang dibuat?
Setelah sistem telah selesai dikembangkan maka kita harus melakukan pengecheckan sistem baik secara fungsionalitas maupun pengetestan dari tiap-tiap fungsi yang ada.
Pengetesan dari fungsi-fungsi menjadi sangat penting karena biasanya bug terjadi bukan pada fungsionalitas utama namun pada bagian-bagian kecil sistem yang telah kita kerjakan.
“The Devils is at the detail”
2.       Apakah telah memiliki dan mengimplementasikan metode testing yang baik?
Kita juga harus merencanakan dan memiliki metode testing yang terstandar untuk menguji perangkat lunak yang kita miliki. Metoda-metode testing yang digunakan harus dapat merepresentasikan segala kemungkinan yang terjadi pada sistem.
Eg. Pada saat melakukan testing aplikasi Sistem Informasi Akademik. Kita tidak boleh melakukan test hanya dengan mengunakan satu single user yang mengakses fungsional sistem. Namun kita juga harus mensimulasikan kondisi puncak jumlah pengakses sistem kita, sehingga kita dapat mengetahui batasan-batasan dari sistem yang telah kita buat. Setelah diketahui batasan tersebut, kita bisa merencanakan solusi yang tepat, baik dari sisi repairing sistem atau mengatur kebijakan (policy).

 


Resume kuliah Software Engineering by Mr. Arry Akhmad A.

http://kupalima.wordpress.com
================================================= kurangin tidur banyakin ngopi

No comments:

Post a Comment