Kamis, 14 November 2013

Refleksi Pembelajaran Rekayasa Perangkat Lunak




Pada postingan kali ini saya ingin membagikan pengalaman saya dalam mempelajari dan memahami tentang mata kuliah rekayasa perangkat lunak selama di kampus saya STMIK Kharisma Makassar.

                Awalnya saya masih meraba-raba bagaimana sebenarnya dan seperti apa mata kuliah RPL ini saat saya memilihnya saat pengisian Kartu Rencana Studi. Dalam benak saya mata kuliah RPL ini sedikit ada hubungannya dengan pembuatan software dan lebih banyak bergulat di bagian koding dan bahasa pemrograman. Namun ternyata persepsi saya salah sejak mengikuti proses perkuliahan perdana    :D

                Di mata kuliah ini kita diajarkan bagaimana sebenarnya cara dan metode yang digunakan dalam merancang suatu perangkat lunak yang tepat guna yang nantinya dapat mempermudah dan dapat menyelesaikan masalah-masalah yang telah dianalisis secara mendalam dan mendetail sepenuhnya sampai akhirnya sampai di tangan pengguna. Dan ternyata tidak sama dengan bayangan saya sebelumnya.

                Jadi percuma saja kita jago dalam hal programming dan desain program jika kita tidak punya landasan wawasan yang kuat di mata kuliah RPL ini. Seperti layaknya membuat sebuah rumah dengan arsitektur dan fondasi yang payah dan pada akhirnya rumah tersebut mungkin berhasil dibangun namun sangat rentan rusak dan tidak tahan lama maka begitu pula dalam pembuatan perangkat lunak tanpa didasari pemahaman konsep RPL ini.

                Selama saya mengikuti mata kuliah ini banyak hal baru yang saya dapatkan seperti bagaimana kita dapat bekerja secara berkelompok karena pada nantinya saat kita bekerja nanti kita akan bekerja bersama orang lain semisal dalam merancang sistem dari suatu perangkat lunak yang digunakan secara massal dan ini tentu saja dibutuhkan kemampuan memimpin dan bekerja dalam tim seperti kami lakukan saat diadakan kerja kelompok yang membahas tentang model proses dalam pembuatan perangkat lunak. Kita dihadapkan pada situasi untuk bisa membantu anggota lain mengerti tentang materi yang ditentukan dan mempersiapkannya dalam bentuk presentasi di kelas dimana anggota kelompok lain datang mengunjungi kelompok lain untuk mempelajari model proses yang berbeda masing-masing kelompok
               

                Itu adalah salah satu pengalaman yang berbeda dalam proses belajar mengajar di dalam konteks perkuliahan yang saya dapatkan karena saya dihadapkan pada situasi untuk memahami dengan mendalam tentang materi yang diberikan karena kita nantinya akan membagikan ke anggota kelompok lain yang berkunjung sehingga kita diajarkan untuk menjadi lebih bertanggung jawab dan tidak memberikan informasi yang salah.

                Yah sekian sharing dari saya buat teman-teman sekalian dan semoga ini bisa menjadi pemacu semangat untuk mempelajari suatu mata kuliah secara mendalam terutama tentang Rekayasa Perangkat Lunak karena sebenarnya tidak ada yang sulit jika kita MAU belajar.

Membandingkan Incremental Model dan Waterfall Model




                Setelah mengupas tuntas tentang model pengembangan Incremental pada postingan sebelumnya, maka pada edisi kali ini saya akan mengadu model pengembangan Incremental dengan model pengembangan perangkat lunak lainnya dan pilihan saya jatuh pada model pengembangan Waterfall.

                Seperti kita tahu tiap-tiap model pasti memiliki kelebihan dan kekurangannya masing-masing namun bagi yang ingin membuat program dengan mempertimbangkan model pengembangan rekayasa perangkat lunak maka kita harus mencari tahu plus minusnya agar nantinya kita bisa memilih mana model yang paling cocok untuk diimplementasikan pada program yang telah kita buat. So let’s go!

                Sebagai permulaan maka kita harus mengetahui seluk beluk tentang kedua model pengembangan tersebut. Maka saya akan mendeskripsikan secara singkat disini.

                Pada Incremental Model dimana perancangan sistem pada program dilakukan secara bertahap dan sedikit demi sedikit yang mana dimulai dari hasil perancangan dari Increment pertama kita peroleh hasil akhir berupa Core Product atau program inti yang sudah bisa menjalankan dan memproses kebutuhan user yang paling utama yang selanjutnya akan ditambah sedikit demi sedikit hingga program tersebut sempurna

                Sedangkan pada Waterfall Model dimana perancangan sistemnya diibaratkan sebagai air terjun yang dilakukan secara linear atau satu arah dengan tahap demi tahap dikerjakan secara detil sehingga tahap selanjutnya tidak bisa berjalan apabila tahap atau proses sebelumnya belum selesai dibuat dengan kata lain tidak dapat dikembalikan atau mengulang tahap sebelumnya karena jika ada kegagalan maka harus dimulai dari awal lagi.

                Meski terlihat sama namun ada perbedaan mendasar antara kedua model tersebut dimana Waterfall model sangat kaku terhadap perubahan sistem mendasar jika program sudah rilis karena sifat Waterfall model yang linier dan ketergantungan proses yang sangat tegas dengan tahapan proses sebelum dan sesudahnya. Sehingga jika terjadi kesalahan ataukah ada perubahan mendasar pada sistem maka proses pengerjaan harus diulang dari awal karena sistem sudah berubah sehingga sangat beresiko jika tim developer dan konsumen tidak mengkonsultasikan secara rinci requirement dan modellingnya. Maka dari itu Waterfall model tidak bisa mentolerir perubahan requirement dari pengguna meski kecil.

                Beda halnya dengan Incremental yang bersifat increment dan iteratif yang berulang dan berkesinambungan dan fleksibel terhadap perubahan karena sistem dapat diubah atau dianalisis ulang dan dikerjakan pada increment berikutnya dan juga resiko kegagalan program seluruhnya sangat kecil karena suatu proses inkremen tidak bergantung pada proses inkremen selanjutnya. Maka model Incremental sangat cocok pada proyek berskala kecil saja sedangkan Waterfall sangat cocok untuk proyek skala besar karena proses perancangan dilakukan secara hati-hati dan mendalam sehingga proses pengerjaan sangat lambat dan memakan waktu namun memiliki kestabilan sistem yang sangat tinggi. Dan proses perancangan model Incremental sangat cocok untuk proyek skala kecil yang fleksibel terhadap adanya perubahan dan penambahan fitur.


                Mungkin itu saja yang dapat saya tuliskan pada ulasan kali ini. Jika ada yang ingin menambahkan dan terdapat kesalahan pada ulasan saya mohon dikoreksi dan bisa diskusikan mengingat saya masih dalam proses belajar. So terima kasih telah berkunjung di blog saya kali ini dan Stay Tune!

MENGENAL MODEL PENGEMBANGAN INCREMENTAL MODEL



Pada kesempatan kali ini saya akan mengulas tentang  Rekayasa Perangkat Lunak terkhusus pada model pengembangan perangkat lunak. Seperti kita ketahui model pengembangan perangkat lunak terdapat banyak jenis seperti  Waterfall model, RAD, Prototype, Incremental, dan Spiral. Namun kali ini saya akan membahas tentang salah satu dari model pengembangan rekayasa perangkat lunak tersebut yaitu model Incremental.

Pada model ini pengembangan perangkat lunak yang akan dikerjakan dilakukan secara bertahap-tahap dan penambahan fitur maupun fungsi pada perangkat lunak dilakukan sedikit demi sedikit (increment) secara berulang seiring waktu (calender time) hingga software tersebut menjadi sempurna.

Untuk lebih jelasnya agan bisa melihat pada ilustrasi di bawah ini.

 




Pada gambar diatas kita dapat melihat proses pengembangan dimulai dari Analysis yaitu mengkaji dan mencari tahu apa keinginan konsumen terhadap perangkat lunak / program yang dia inginkan atau program seperti apa yang mereka inginkan.

Dari proses analysis kita dapat menyimpulkan requirement program dan berlanjut pada proses kedua yaitu Design. Pada tahap design kita dapat menyusun interface atau tampilan awal dari program. Dalam hal ini selain aspek estetika kita juga harus mengedepankan faktor user friendly agar pengguna mudah mempelajari dan  mengoperasikan program dengan mudah dan tepat guna.

Selesai berimajinasi tentang masalah interface, sekarang kita sampai ke tahap selanjutnya yang banyak ditakuti yaitu proses Coding. Pada tahap ini kita tidak perlu membuat koding secara sempurna, kita cukup membuat coding sederhana yang mencakup semua kebutuhan dasar program yang diinginkan konsumen. Asalkan program bisa dijalankan dan telah mencakup kebutuhan dasar program yang telah dianalisis sebelumnya, maka itu sudah lebih dari cukup pada tahap increment pertama ini.

Selesai berpusing ria mengkoding, kini kita tiba ditahap akhir inkremen yaitu tahap Testing. Pada tahap ini program inti (Core Product) telah selesai dibuat dan selanjutnya akan diberikan pada konsumen untuk diuji apakah sudah sesuai dengan keinginan dan kebutuhan dasar konsumen.

Jadi setelah program inti telah berhasil dibuat maka pada saat itu program sudah dapat digunakan secara fungsional. Nah pada saat ini kita akan melanjutkan ke tahap inkremen kedua yang mana akan diberi fitur tambahan sebagai pelengkap program inti dan proses ini dilakukan berulang-ulang dan dilengkapi secara bertahap. Sehingga program awal yang berupa Core Product dapat berkembang dan makin sempurna seiring waktu (Calender Time).

Jadi jika kita mengambil contoh program yang diinginkan oleh konsumen adalah program pengolah kata (word processing) seperti Ms. Word. Maka di proses inkremen pertama difokuskan pada pembuatan program dasar yang sudah bisa digunakan untuk fungsi paling krusial dan mendasar dari sebuah program word processing yaitu sudah bisa digunakan untuk mengetik kata dan format paragraf. Lalu pada inkremen selanjutnya mungkin bisa saja ditambahkan fungsi penambahan grafik dan tabel dan pada inkremen selanjutnya ditambahkan fungsi pengaturan format tanggal dan waktu. Dan proses inkremen ini berlanjut sampai program tersebut sudah sempurna fiturnya.

Setelah tangan saya kram menerangkan panjang lebar mengenai bagaimana proses kerja dari model pengembangan Increment, maka sekarang kita membahas kelebihan dan kekurangan  dari model Incremental.

Kelebihan model Incremental:
-          Tidak memerlukan terlalu banyak anggota dalam pengerjaan programnya karena dikerjakan sedikit demi sedikit. Dan jika program sudah mulai berkembang penambahan anggota tim dalam pengerjaan dapat ditambahkan sesuai kebutuhan sehingga lebih fleksibel, hemat, dan optimal.
-          Software sudah dapat segera dapat digunakan sejak penyelesaian proses increment pertama karena program awal sudah memenuhi persyaratan paling inti atau kritis dari kebutuhan pengguna.
-          Tingkat kegagalan keseluruhan pada program yang menggunakan model incremental sangat kecil karena dilakukan secara bertahap dan sedikit demi sedikit secara mendetail meskipun pada beberapa inkremen dapat ditemukan kesalahan namun tidak efeknya tidak besar terhadap program secara keseluruhan.

Kekurangan model Incremental:
-          Hanya cocok untuk pembuatan program yang berskala kecil saja personel yang bekerja tidak terlalu banyak dan dilakukan secara sedikit demi sedikit dan bertahap
-          Pengembangan bisa berlangsung lama dan panjang atau mungkin saja tidak terbatas karena proses penambahan bisa kembali dilakukan jika di lain waktu setelah dianalisis dan ditemukan fitur tambahan yang baru untuk menunjang kebutuhan konsumen yang semakin bertambah seiring waktu

Sekian penjelasan dari saya sendiri, semoga bisa membantu teman-teman sekalian untuk lebih mengenal bagaimana proses pengembangan perangkat lunak dan dapat diterapkan sesuai kebutuhan. Jika ada yang ingin mengkoreksi dan ingin menambahkan maka dimohon bantuannya

                                            Thank You dan jangan lupa cendolnya donk gan