Rabu, 04 Desember 2013

Strategi SimSE Waterfall Game



Pada Waterfall game, terdapat sebuah proyek yang memiliki batas waktu dan juga uang. Disini terdapat 7 orang software engineer dengan pengalaman yang berbeda-beda. Untuk menghemat pengeluaran, Roger langsung saya pecat karena tidak berguna karena pengalamannya masih sedikit. Untuk software engineer yang lain, ada beberapa yang saya naikkan gajinya untuk menaikkan mood dan energy, antara lain:
Andre menjadi 40
Anita menjadi 40
Emily menjadi 35
Pedro menjadi 30
Setelah itu, beli semua tools yang ada untuk mempercepat pengerjaan.
Terdapat 4 tahapan dalam pengerjaan proyek ini yaitu : Requirements, Design, Code, dan System Test Plan. Masing-masing tahapan tersebut harus memiliki poin 100 untuk mendapatkan skor tertinggi. Tahapan tersebut juga harus dikerjakan berurutan mulai dari Requirements lalu Design lalu Code dan terakhir System Test Plan. Masing-masing software engineer memiliki kemampuan dan pengalaman masing-masing serta ketidaksukaan pada suatu pekerjaan. Oleh karena itu, setelah melihat kemampuan dan pengalaman masing-masing software engineer saya membagi tugas pengerjaannya sebagai berikut.

Requirements dikerjakan oleh Andre, Anita, Calvin, Emily, dan Pedro.
Design dikerjakan oleh Andre, Anita, dan Emily.
Code dikerjakan oleh Andre, Calvin, Emily, dan Pedro.
System Test Plan dikerjakan oleh Andre, Emily, Mimi, dan Pedro.

Kita mulai saja dari awal yaitu Requirements. Lakukan “Create Requirements Document” dan tunggu persentase selesainya hingga 100. Apabila di tengah jalan muncul event “The customer just gave us some new requirements!” abaikan saja dahulu dan lanjutkan sampai persentase menjadi 100. Setelah itu barulah kita lakukan “Review requirements document”. Setelah itu lakukan “Correct the requirements document”. Setelah eror pada requirement sudah tidak ada, maka kita lanjutkan ke tahapan Design. Lakukan “Create the design document” dan tunggu sampai persentase menjadi 100. Sama seperti sebelumnya apabila muncul event “The customer just gave us some new requirements!” maka selesaikan terlebih dahulu hingga persentase menjadi 100. Setiap muncul event “The customer just gave us some new requirements!” dan pekerjaan yang sedang dilakukan telah selesai, maka kita harus mengecek kembali dari awal yaitu dari Requirements lakukan tahapan yang sama yaitu “Review requirements document” lalu “Correct the requirements document”. Apabila persentasenya menurun maka lakukan terlebih dahulu “Create Requirements Document” lalu “Review requirements document” dan terakhir “Correct the requirements document”. Hal ini juga berlaku pada design. Setelah itu lakukan “Review the design document” lalu lakukan “Correct the design document” hingga eror pada design sudah tidak ada. Setelah itu kita lanjutkan ke Code, lakukan “Create code” dan tunggu hingga persentase menjadi 100 setelah itu lakukan “Integrate code” lakukan juga hingga persentase menjadi 100. Apabila terdapat eror maka lakukan “Correct code”. Setelah itu lakukan “Create the system test plan” lalu tunggu hingga persentase menjadi 100. Lalu lakukan “Review the system test plan”. Setelah itu lakukan “Correct the system test plan” hingga eror menjadi 0. Setelah 4 tahapan sudah mencapai point 100 maka lakukan “Do system test”. Setelah itu, cek pada bagian code apakah terdapat eror atau tidak, kalau terdapat eror maka lakukan kembali “Correct code”. Setelah itu lakukan kembali “Do system test” dan cek kembali apakah masih ada eror atau tidak. Lakukan hal ini sampai eror pada bagian code tidak ada (0). Setelah itu yang dilakukan terakhir kali adalah menyerahkan kepada customer yaitu dengan cara “Deliver product to customer”.

Berikut perincian lebih jelas tahapan-tahapan yang dilakukan apabila terjadi event “The customer just gave us some new requirements!”
Selesaikan dahulu pekerjaan yang sedang berlansung lalu lakukan pengecekan dari tahapan awal:
Untuk Requirements:
“Create Requirements Document” -> “Review requirements document” -> “Correct the requirements document”.
Untuk Design:
“Create the design document” -> “Review the design document” -> “Correct the design document”
Untuk Code:
“Create code” -> “Integrate code” -> “Correct code”
Untuk System Test Plan:
“Create the system test plan” -> “Review the system test plan” -> “Correct the system test plan”
Pastikan nilai setiap tahapan tetap 100 dan tidak terdapat eror maka akan didapatkan skor tertinggi.

Skor yang saya dapatkan adalah 99



Rabu, 13 November 2013

Refleksi: Metode Pembelajaran RPL



Dari awal perkuliahan, yang saya rasakan sama seperti mata kuliah lainnya. Selalu ada rasa jenuh dalam proses pembelajaran. Terlebih lagi apabila proses perkuliahan yang selalu sama dan monoton. Yang ada dipikiran bukan materi perkuliahan akan tetapi pertanyaan-pertanyaan seperti “Kapan dosennya selesai?”, “Kapan dosennya keluar?”, dan masih banyak yang lain. Hal ini membuat kebanyakan mahasiswa menjadi malas, yang pada akhirnya membuat mahasiswa tersebut gagal pada mata kuliah itu. Namun, setelah mengikuti perkuliahan ini saya melihat ada sesuatu yang cukup berbeda. Perbedaan ini terdapat pada proses pembelajaran kelompok.

"Kenapa bisa?" "Bukannya pembelajaran kelompok sama saja dengan pembelajaran kelompok pada mata kuliah lain?" Materi diberikan kepada kelompok, lalu dibahas dalam kelompok, dipresentasikan, kemudian didiskusikan bersama-sama. Nah, ini juga yang awalnya terlintas dalam pemikiran saya. Namun, kenyataan yang terjadi berbeda. Kalau dikatakan seperti demikian, pasti yang paling pertama ditanyakan adalah “Dimana Perbedaannya?” Pemahaman ini juga baru saya dapatkan. Oleh karena itu saya akan jelaskan secara detail dari awal.

Nyaris hampir semua dosen menggunakan tipe seperti ini. Saya tidak bermaksud menentang pemikiran dari kebanyakan dosen ataupun mau menilai buruk dari pemikiran tersebut. Namun, kebanyakan dosen apabila ada pembelajaran kelompok, sikap kepedulian terhadap mahasiswanya seakan tidak ada. Maksudnya adalah ketika suatu kelompok disuruh mempertanggung jawabkan materi yang telah diberikan, dosen tersebut menilai secara pribadi. Sehingga apabila ada anggota kelompok yang tidak mengerti atau tidak mengetahui sama sekali tentang materi yang diberikan, maka nilai mahasiswa tersebut secara pribadi akan rendah. Terkadang kelompok tersebut hanya diminta perwakilan satu orang untuk mempertanggung jawabkan materi. Hal ini membuat sebuah pemikian atau mind set bahwa apabila ada satu anggota kelompok yang pintar atau yang mampu memahami materi, maka kelompok tersebut akan memiliki nilai yang bagus.

Pemikiran seperti ini sudah mendarah daging dikalangan mahasiswa. Namun setelah melihat pembelajaran kelompok pada mata kuliah ini, pemikiran itu sudah lenyap total. "Kenapa demikian?" Pemikiran tersebut lenyap sebab pada saat penilaian, Nilai dari suatu kelompok adalah satu. Selain itu, orang yang akan mempertanggung jawabkan materi dipilih secara acak. Hal ini menyebabkan kelompok tersebut secara keseluruhan harus memahami materi yang ada. Setiap anggota kelompok harus saling bekerja sama selama pembelajaran. Yang pintar berusaha mengajarkan kepada yang kurang mampu dan yang kurang mampu berusaha agar bisa cepat memahami materi yang diberikan. Proses inilah yang bisa dikatakan sebagai proses belajar. Kelompok belajar berarti mahasiswa berada dalam satu kesatuan yang saling membantu sebab “Kekuatan dari Suatu Kelompok Terletak pada Orang yang Paling Lemah Pada Kelompok Tersebut

Perbedaan RAD dengan Linear Sequential Model



Seperti yang kita ketahui, Linear Sequential Model dan RAD sama-sama menggunakan prinsip pengerjaan secara terstruktur dan bertahap. Namun, kenyataan menunjukkan bahwa dalam pengerjaannya baik Linear Sequential Model maupun RAD saling bertolak belakang. Berikut penjelasan lebih lanjut mengenai perbedaan kedua model proses tersebut.

Tujuan pengerjaan suatu proyek
Pada Linear Sequential Model bertujuan untuk menghasilkan suatu sistem yang sesuai dengan keinginan dan kebutuhan dari pelanggan. Sedangkan RAD bertujuan untuk menhasilkan suatu sistem yang cepat yang dapat memenuhi semua kebutuhan dari pelanggan. Disini terlihat bahwa pada RAD, terdapat sebuah penekanan yaitu waktu pengerjaan sistem yang cepat. Hal ini menyebabkan terjadinya perbedaan besar dengan Linear Sequential Model. Mengapa demikian? Sebab ketika suatu sistem dikerjakan dengan patokan pengerjaan yang cepat maka yang terjadi adalah sistem yang akan dihasilkan tidak maksimal dan hanya memenuhi kebutuhan pelanggan secara garis besar saja. Selain itu, biaya yang akan dikeluarkan tidak dapat dikontrol. Sedangkan pada Linear Sequential Model, sistem yang akan dihasilkan dapat maksimal baik dalam memenuhi kebutuhan pelanggan secara keseluruhan maupun dari segi biaya yang akan dikeluarkan.


Waktu penyelesaian suatu proyek
Seperti yang telah dijelaskan di atas, pada Linear Sequential Model sistem yang akan dihasilkan maksimal. Hal ini berdampak pada waktu penyelesaiannya. Karena sistem yang ingin dihasilkan maksimal, maka sudah jelas akan membutuhkan waktu yang cukup lama dalam pengerjaannya. Sedangkan pada RAD, sudah ditekankan dari awal bahwa sistem akan dihasilkan dengan cepat. Hal ini menyebabkan proyek-proyek yang dikerjakan dengan menggunakan RAD akan selesai dalam kurung waktu yang relatif lebih cepat jika dibandingkan dengan Linear Sequential Model.

Cara Kerja
Pada Linear Sequential Model, pengerjaan suatu proyek selalu dimulai dari awal atau bisa kita katakan pengerjaannya selalu mulai dari nol. Sedangkan pada RAD, ketika kebutuhan pelanggan sudah diketahui secara jelas, tim-tim yang bekerja tidak memulai dari awal. Tetapi mengambil bahan-bahan yang sudah ada yang konsep dasarnya sama dengan permintaan dari pelanggan. Sehingga yang dikerjakan oleh tim-tim tersebut menjadi sedikit ringan karena tidak perlu memulai lagi dari awal. Cukup mengembangkan yang sudah ada.

RAD? Apakah RAD itu?


RAD? Apa sih RAD itu? Berbicara tentang RAD atau Rapid Application Development berarti kita sedang membicarakan salah satu dari beberapa model proses yang ada. Rapid Application Development atau yang biasa kita sebut dengan RAD merupakan salah satu model proses hasil perkembangan dari model proses sebelumnya yaitu Model air terjun (Waterfall Model) atau yang terkenal dengan sebutan Linear Sequential Model. Maksudnya adalah RAD menerapkan model dari Linear Sequential Model namun menekankan kepada siklus yang relatif pendek serta pembangunan yang cepat. "Kenapa bisa dikatakan pembangunan yang cepat?" Hal ini terjadi karena dalam pengerjaannya, model RAD menerapkan sistem pembagian kerja secara tim. Pembagian kerja tersebut berdasarkan pada pembagian fungsi dari proyek yang akan dikerjakan. Selain itu, tim-tim tersebut mulai bekerja dalam kurung waktu yang relatif sama atau biasanya tim-tim tersebut lansung bekerja secara serentak. Untuk lebih jelasnya, mari kita lihat salah satu contoh gambar di bawah ini.



Seperti yang terlihat pada gambar di atas, terdapat 3 tim yang bekerja dalam sebuah proyek. Seperti yang telah dijelaskan di atas, 3 tim tersebut melakukan tahapan-tahapan yang sama namun setiap tim mengerjakan fungsi dari suatu proyek yang berbeda-beda. Berikut adalah penjelasan tahapan-tahapan di atas :

  • Bussiness Modeling
Pada tahap ini, kebutuhan-kebutuhan dari pelanggan dijelaskan secara detail dalam bentuk fungsi-fungsi yang akan dikerjakan. Kata Bussiness Modeling bukan berarti mewakili kebutuhan-kebutuhan dari pelanggan yang bersifat bisnis saja. Nama tersebut hanya mewakili sebagian kecil dari kebutuhan-kebutuhan yang ada.

  • Data Modeling
Pada tahapan ini, data-data yang ada pada fungsi-fungsi tersebut (fungsi yang telah dijelaskan pada tahap Bussiness Modeling) akan dijelaskan. Kemudian akan diproses lebih lanjut pada tahapan selanjutnya yaitu Process Modeling.

  • Process Modeling
Seluruh data-data dan juga bahan-bahan yang lainnya akan diproses dan diolah pada tahapan ini. Hasil proses tersebut berupa informasi-informasi yang dapat berguna bagi pelanggan dan juga dapat berguna untuk tahapan selanjutnya.

  • Application Modeling
Pada tahapan ini, program mulai dibuat. Informasi-informasi yang telah didapatkan dari tahapan-tahapan sebelumnya digunakan oleh programmer selama pembuatan program. Seluruh konsep yang sudah didapatkan juga dijadikan sebagai acuan  oleh programmer dalama pembuatan program.

  • Testing & Turnover 
Pada tahapan ini, program yang telah jadi akan diuji coba satu per satu dari masing-masing tim. Apabila ada salah satu tim tidak lulus dalam pengujian, maka tim tersebut harus menyelesaikannya dengan cepat. Setelah program dari seluruh tim lulus dalam pengujian,  maka program-program tersebut akan disatukan menjadi satu program utuh yang sesuai dengan permintaan pelanggan.



Setelah kita melihat tahapan-tahapan dari RAD yang tersusun rapi, serta pengerjaan yang cepat. Tentu kita berpikir bahwa model RAD ini sudah cukup ideal untuk dipakai. Namun, pada kenyataannya tidak demikian. "Kenapa bisa?"  Kita tidak bisa melawan kenyataan bahwa setiap model proses pasti memiliki kelebihan tersendiri dan juga memiliki kendala atau kekurangan masing-masing. Oleh karena itu, RAD juga memiliki kelebihan dan juga kekurangan. Berikut ini adalah penjelasan Kelebihan dan Kekurangan dari RAD.

Kelebihan RAD: 


  • Adanya pembagian tugas secara tim, membuat model RAD menjadi sangat ideal dalam mengerjakan proyek yang membutuhkan waktu singkat sebab waktu yang dibutuhkan dalam menyelesaikan sebuah proyek relatif singkat. Hanya sekitar 60 – 90 hari waktu yang dibutuhkan sedangkan secara umum, penyelesaian sebuah proyek memakan waktu sekitar 180 hari. Nominal angka tersebut hanyalah sebagian contoh yang menunjukkan bahwa dengan menggunakan model RAD maka sebuah proyek akan jauh lebih cepat selesai, bahkan bisa mengurangi setengah dari waktu normal.

  • Proses pengembangan ulang tidak memakan waktu yang lama, sebab fungsi-fungsi sudah terbagi secara merata untuk setiap tim sehingga pengembangan dari fungsi-fungsi tersebut tidak membutuhkan waktu yang banyak. Apabila fungsi pada tim 1 yang akan dikembangkan misalnya, maka hanya pada tim 1 saja yang akan melakukan proses pengembangan ulang. Sedangkan tim 2, tim 3, ... tidak perlu melakukan pengembangan ulang.



Kekurangan RAD:

  • Memerlukan banyak sumber daya dalam mengerjakan sebuah proyek. Karena adanya pembagian secara tim berarti membutuhkan orang yang cukup banyak. Misalnya dalam 1 tim berisi 5 orang, apabila sebuah proyek terbagi atas 4 tim maka dibutuhkan paling sedikit 20 orang untuk mengerjakan proyek tersebut. Selain itu, juga diperlukan banyak sumber daya yang lain yang akan diperlukan untuk setiap tim. 

  • Tidak cocok untuk proyek berskala besar. Pengerjaan proyek berskala besar tentunya akan cepat selesai. Namun, semakin besar proyek maka tim yang akan terbagi semakin banyak. Dengan kata lain, sumber daya yang diperlukan akan semakin banyak baik dari segi sumber daya manusianya (jumlah orang yang diperlukan) maupun sumber daya lainnya. Hal ini dapat menyebabkan biaya pengerjaan proyek menjadi membengkak. 

  • Adanya keterbatasan dalam mengambil sebuah proyek. Selain proyek-proyek berskala besar yang sebaiknya tidak diambil, proyek-proyek yang tidak dapat dipecah ( dimodularisasi ) secara fungsi tidak dapat dikerjakan pada model ini. 

  • Penggabungan hasil dari setiap tim sangat memerlukan kerja keras. Sebab setiap tim mungkin memiliki konsep yang berbeda selama pengerjaan. Sehingga apabila hasilnya mau digabungkan, maka seluruh tim harus berkumpul dan saling bekerja sama dalam menggabungkan hasil agar menjadi satu program yang utuh.