Selasa, 04 Februari 2014

Refleksi Akhir Perkuliahan



Dari awal perkuliahan saya sempat ragu dengan metode pembelajaran yang akan saya dapatkan. Keraguan saya sempat diperkuat oleh isu-isu yang beredar tentang bagaimana dosennya mengajar dan lain sebagainya. Seiring berjalannya waktu, semakin lama isu tersebut semakin benar adanya. Mengikuti perkuliahan pun menjadi hal yang wajib saja bukan hal yang saya perlukan. Setelah lewat pertengahan semester, saya mencoba melihat dari sisi lain. Terlebih lagi ada hal yang perlu saya ketahui secara detail. Maka dalam setiap perkuliahan saya mencoba untuk menyimak secara seksama. Disini saya melihat sisi positif dari metode pembelajaran yang diberikan sejak awal. Memang secara kasat mata metode tersebut hanya membuat kita mengerjakan hal yang sama berulang-ulang, membuang banyak waktu, banyak karton, dan juga membuat kepala jadi stress karena tidak ada berhentinya. Terlebih lagi ketika secara serentak beberapa mata kuliah lain memberikan tugas yang begitu banyaknya sehingga sempat terlintas dalam pikiran saya untuk merelakan mengulang mata kuliah ini di semester depan dengan harapan mendapatkan dosen yang lain.

Namun semua itu saya coba paksakan untuk mengerjakannya dengan sungguh-sungguh. Awalnya biasa saja yaitu dikerjakan karena sekedar kewajiban. Akan tetapi, lama kelamaan saya melihat dari sisi lain metode tersebut. Semakin saya berusaha sungguh-sungguh untuk menampilkan yang terbaik, maka saya semakin sungguh-sungguh mempelajari materinya. Pemahaman akan materinya pun menjadi semakin mudah dan cepat. Hal ini sangat membantu saya karena ada mata kuliah yang lain yang membahas hal yang sama. Saya menjadi lebih mudah untuk mengerti materi tersebut dibandingkan dengan belajar seperti biasanya. Di sini saya menyadari bahwa setiap usaha dan kerja keras ditambah dengan kesungguhan dalam melakukan sesuatu pasti akan membuahkan sebuah hasil yang memuaskan.

Dari Model Bisnis Sampai User Interface



Proses pengembangan perangkat lunak awalnya kita mulai dengan pembuatan model bisnis. Model bisnis ini kita buat berdasarkan dari kasus yang dikerjakan.  Pada kasus yang kita kerjakan, kita lihat proses bisnis apa saja yang terjadi. Lalu kita tentukan proses bisnis yang penting saja untuk diambil. Setelah mendapatkan seluruh proses bisnis yang penting, maka tentukan event, input, resource, goal, dan output dari setiap proses bisnis tersebut. Setelah model bisnis jadi, maka langkah selanjutnya adalah membuat model datanya (ERD). Dari model bisnis yang telah kita buat, kita lihat data-data apa saja yang ada yang dapat merangkum keseluruhan dari proses bisnis yang ada. Data-data tersebut yang kemudian akan menjadi entitas-entitas pada model data (ERD) kita. Setelah seluruh entitas telah didapatkan, kita tentukan keterkaitan antara entitas-entitas tersebut (kita tentukan relasi antara entitas yang ada). Setelah itu, tentukan kardinalitas beserta modalitas untuk setiap relasi yang ada. Selanjutnya kita tentukan atribut-atribut yang ada pada setiap entitas termasuk atribut utama dan juga atribut referensialnya. Setelah semua selesai, maka model data (ERD) kita sudah jadi.

Langkah selanjutnya adalah mengubah model data (ERD) kita menjadi sebuah model fungsi (DFD). Namun, sebelum itu kita lakukan proses IPO. Proses IPO ini sebenarnya belum dipublikasi, namun langkah ini diajarkan oleh dosen saya sebagai langkah sebelum mengubah dari ERD ke DFD. Cara ini cukup efektif dan juga cukup memudahkan dalam mengubah dari model data (ERD) ke model fungsi (DFD). Pada proses IPO ini kita pikirkan fungsi apa-apa saja yang muncul karena adanya entitas-entitas pada model data kita. Entitas-entitas pada model data kita bisa berupa input dari fungsi dan juga bisa berupa output dari fungsi tersebut. Selain entitas, kita tentukan juga entitas eksternal atau yang biasa dikenal sebagai terminator pada DFD. Sama seperti entitas, entitas eksternal ini dapat berupa input dari fungsi dan juga dapat berupa output dari fungsi. Fungsi-fungsi inilah yang akan menjadi proses dalam DFD yang akan kita buat. Ketika seluruh fungsi sudah ditentukan beserta input dan outputnya, maka yang kita lakukan selanjutnya adalah mengelompokkan fungsi-fungsi tersebut berdasarkan levelnya / tingkatannya.

Berdasarkan dari rujukan proses IPO tersebut maka kita akan lebih mudah membuat DFD nya. Entitas eksternal akan menjadi terminator, fungsi-fungsi akan menjadi proses, dan entitas-entitas akan menjadi data store. Ketika pengelompokkan sudah selesai maka akan jelas yang mana diagram lvl 0, diagram lvl 1, dan seterusnya. Ketika levelnya sudah jelas, maka yang kita lakukan adalah membuat diagram berjenjang untuk memperlihatkan secara lebih jelas mulai dari diagram level 0 sampai pada diagram level 1 misalnya (batasan level terakhir diagram tergantung pada setiap kasus). Setelah itu, kita buat secara detail untuk diagram level 0, lalu diagram level 1, dan yang terakhir semua subproses yang ada pada diagram level 1. Ketika semua sudah selesai, maka model fungsi (DFD) kita sudah jadi. 

Namun, model fungsi saja belum cukup karena dalam setiap fungsi-fungsi (proses) yang ada pada model fungsi (DFD) yang dibuat, kita tidak mengetahui apa-apa saja yang terjadi dalam setiap fungsi tersebut. Oleh karena itu kita perlu membuat model behaviornya yang dalam hal ini adalah flowchartnya. Dengan membuat flowchart untuk setiap fungsi yang ada, maka akan jelas terlihat apa-apa saja yang terjadi dalam fungsi tersebut. Dengan adanya flowchart tersebut, bisa kita jadikan sebuah rujuan untuk membuat user interfacenya. Seperti form input misalnya, kita lihat apa-apa saja data yang diinput pada flowchart tersebut kemudian kita implementasikan ke dalam form. Begitu pula untuk tampilan dalam bentuk layar maupun cetakan misalnya. Ketika user interfacenya sudah jelas, maka tinggal diserahkan ke programmer untuk melakukan coding.

Rabu, 04 Desember 2013

Waterfall Game Vs Rapid Prototyping Game Vs Incremental Game



Seperti yang terlihat pada postingan sebelumnya, diantara 3 game hanya ada 1 game yang bisa saya dapatkan nilai 100 yaitu Incremental Game. Masing-masing game tersebut memiliki tingkat kesulitan yang berbeda-beda. Namun, menurut saya yang paling susah adalah Waterfall game. Kenapa demikian? Hal ini saya katakan karena pada Waterfall game terdapat sistem gaji untuk setiap software engineernya. Sedangkan pada Incremental dan Rapid Prototype hanya batasan waktu saja. Selain itu, pada Waterfall game juga tahapan-tahapan yang dilakukan harus berurutan dan juga ketika customer melakukan perubahan, maka yang harus kita lakukan adalah mengecek kembali dari awal dan hal tersebut sangat melelahkan. Untuk Rapid Prototype awalnya saya lihat gampang karena mirip dengan Incremental yang hanya dibatasi oleh waktu saja. Namun, semua terbantahkan ketika melihat proses pemilihan bahasa untuk prototype dan juga implementasinya. Hal ini masih wajar-wajar saja sebab saya bisa lakukan tes berulang-ulang kali untuk memilih bahasa apa yang baik digunakan. Yang membuat kepala pusing tidak karuan adalah perbandingan antara persentase prototype dengan persentase evaluasi customer juga harus diperhitungkan. Belum waktu yang disediakan cukup sedikit sehingga harus betul-betul menggunakan waktu yang disediakan dengan sebaik mungkin dan hasilnya harus semaksimal mungkin. Oleh karena itu, saya menyimpulkan bahwa Rapid Prototype masih susah untuk dimainkan. Sedangkan dari semua itu, ada 1 yang cara mainnya sederhana saja yaitu Incremental game. Kenapa saya katakan cara mainnya sederhana? Karena software engineer pada Incremental game sudah dijelaskan secara terperinci ahli dibidang apa. Proyek yang dikerjakan juga tidak harus berurutan, yang penting semua tahapan dalam setiap modul mencapai nilai 100 dan semua modul selesai dikerjakan serta tidak melewati batas waktu maka skor yang didapatkan sudah pasti 100. Dari deskripsi itu semua, saya menyimpulkan bahwa Waterfall game yang memiliki tingkat kesulitan paling tinggi, kemudian Rapid Prototype game, dan yang paling mudah adalah Incremental game.

Strategi SimSE Incremental Game



Pada incremental game terdapat 4 modul yang harus diselesaikan dalam batas waktu 200 ticks time. Penyelesaian modulnya cukup mudah sebab modul yang diselesaikan tidak perlu berurutan dari modul 1. Dalam setiap modul, yang harus diselesaikan ada 5 yaitu:

  • Requirements

  • Design

  • Implement

  • Difficulty Analysis

  • Risk Analysis

Setelah 5 pekerjaan tersebut selesai, maka harus dilakukan Integrate. Pada game ini terdapat 4 orang software engineer yaitu : Amy, Bob, Karl, dan Lola.
Amy jago dalam “Implement dan expert dalam hal coding oleh karena itu Amy saya berikan pekerjaan “Implement
Bob jago dalam hal “Design sehingga persoalan “Design” saya serahkan kepada Bob
Karl memiliki skill yang cukup merata. Untuk Karl saya berikan pekerjaan Difficulty Analysis dan Risk Analysis
Yang terakhir Lola yang memiliki skill yang cukup terbatas, saya berikan tugas Requirements saja.

Proses pengerjaannya saya mulai dari modul 1 supaya tidak membingungkan. Masing-masing software engineer tidak boleh ada yang nganggur (tidak melakukan apa-apa). Karl sangat cepat menyelesaikan Difficulty Analysis, oleh karena itu lanjutkan saja pekerjaan Karl di modul 2 dan seterusnya. Hal ini berlaku untuk semua software engineer, setiap perkerjaannya selesai maka dilanjutkan saja ke modul berikutnya. Tidak perlu menunggu modul yang sedang dikerjakan selesai total. Dalam proses pengerjaannya suatu saat customer akan melakukan perubahan pada modul. Hal ini ditandai pada event yang mengatakan “The customer has made a change to a modul”. Pada saat hal ini terjadi, maka kita harus mengecek ke bagian artifacts dan melihat modul yang mana yang accuracynya mengalami penurunan. Apabila cuma 1 modul saja, maka hentikan pekerjaan yang sedang dilakukan Amy lalu berikan Amy pekerjaan yang baru yaitu Evolve Code. Ketika selesai, lanjutkan kembali pekerjaan Amy yang kita hentikan tadi. Ketika modul yang diubah ada 2 maka yang melakukan “Evolve Code adalah Amy dan Karl. Begitu pula selanjutnya, ketika modul yang diubah ada 3 maka yang melakukan “Evolve Code” adalah Amy, Karl, dan Bob. Orang terakhir yang melakukan “Evolve Code adalah Lola karena Lola lama dalam mengerjakannya. Hal ini terjadi apabila ada 4 Modul yang diubah. Utamakan Amy yang mengerjakan “Evolve Code untuk menghemat waktu. Sehingga apabila Amy selesai “Evolve Code pada modul 1 misalnya, sedangkan “Evolve Code di modul 2 belum selesai maka suruh Amy yang mengambil tugas tersebut. Mengambil tugas bukan join dalam tugas tersebut. Misalnya “Evolve Code pada modul 2 dikerjakan oleh Karl, maka hentikan pekerjaan Karl kemudian serahkan “Evolve Code kepada Amy. Apabila kondisinya harus Lola ikut serta dalam “Evolve Code, maka utamakan Lola yang digantikan pertama oleh Amy. Usahakan point Requirements, Design, Implement, Difficulty Analysis, dan Risk Analysis tetap 100. Apabila ada yang sudah selesai dengan pekerjaannya, misalnya Bob telah selesai Design seluruh modul, maka suruh software engineer tersebut melakukan integrate modul yang sudah siap (point Requirements, Design, Implement, Difficulty Analysis, dan Risk Analysis sudah 100). Selalu cek modul-modul di bagian artifacts untuk melihat point pekerjaan yang mana yang sedang mengalami penurunan. Ketika 4 modul sudah selesai diintegrate maka yang dilakukan tinggal menyerahkan kepada customer yaitu dengan cara “Submit final product to customer” terus pilih semua modul lalu ok. Point yang kalian dapatkan pasti 100 dengan syarat ticks time belum lewat dari 200 dan point setiap pekerjaan yang ada tetap 100.


Skor yang saya dapatkan adalah 100


Sumber : http://www.ics.uci.edu/~emilyo/SimSE/downloads.html

Strategi SimSE Rapid Prototyping Game



Pada Rapid Prototyping game, yang harus dilakukan adalah menyelesaikan sebuah proyek dalam batas waktu 825 ticks time. Disini terdapat 5 orang software engineer akan tetapi dalam pengerjaan proyek tidak perlu membagi tugas apa-apa sebab semuanya dikerjakan secara bersama-sama. Yang harus dilakukan pada awal main adalah memilih prototyping language dan implementation language. Setelah saya mencoba beberapa kali dengan menggunakan metode saya, prototyping language yang paling terbaik adalah Visual Basic karena dalam pengerjaannya jauh lebih cepat jika dibandingkan dengan Java ataupun C++ . Untuk implementation language, Visual Basic tidak bagus karena banyak terjadi eror ketika dilakukan implement. Oleh karena itu, saya memilih Java untuk implementation. Sebenarnya, baik Java maupun C++ sama saja karena ketika sama mencoba mengganti Java menjadi C++ dengan menggunakan metode yang sama, hasil yang saya dapatkan tetap sama. Setelah memilih, lakukan “Outline Requirements With Customer”. Seperti yang telah saya katakan di atas, semua pengerjaannya harus menyertakan seluruh software engineer. Setelah itu, lakukan “Develop Prototype”. Ketika sedang berjalan, tiba-tiba kegiatan terhenti karena customer mau melihat prototype. Abaikan saja sampai persentase prototype menjadi 100 (persentase ini dapat dilihat pada bagian artifacts item yang pertama). Barulah setelah itu hasil prototype diberikan kepada customer untuk dievaluasi. Pilih “Have customer evaluate prototype”. Setelah persentase evaluasi sudah mencapai 100, maka akan terjadi penurunan pada persentase prototype. Maka perlu dilakukan “Develop Prototype” kembali. Namun, apabila kita melakukan “Develop Prototype” sampai 100 kembali, maka akan membuang banyak waktu sedangkan waktu yang diberikan terbatas. Disinilah saya lakukan metode penghematan waktu dengan menggunakan fitur Advance Clock. Atur waktunya menjadi 30 pada kolom di bawah tulisan “Advance Clock”. Lakukan “Develop Prototype” kemudian klik “Advance Clock” bukan “Next Event”. Hentikan “Develop Prototype” kemudian berikan kembali kepada customer untuk dievaluasi. Persentase evaluasi wajib kembali menjadi 100 oleh karena itu klik “Next Event” saja untuk mempercepat. Lakukan “Develop Prototype” kembali dengan batas waktu 30 ticks time seperti yang dilakukan sebelumnya. Kemudian hentikan “Develop Prototype” lalu serahkan kembali ke customer untuk dievaluasi. Ingat, persentase evaluasi wajib 100. Setelah itu lakukan “Develop Prototype” sekali lagi untuk terakhir kalinya namun dalam batasan waktu 24 ticks time saja. Hentikan “Develop Prototype” kemudian serahkan kembali ke customer untuk dievaluasi terakhir. Setelah persentase evaluasi menjadi 100, lakukan “Create requirements specification”. Lakukan sampai persentase menjadi 100 (lihat pada item kedua di bagian artifacts). Kemudian lakukan “Design system”. Sama seperti sebelumnya, lakukan hingga persentase menjadi 100 (dapat dilihat pada item ketiga di bagian artifacts). Setelah selesai, lakukan “Implement system” dan tunggu sampai persentase menjadi 100 (lihat item keempat pada bagian artifacts). Setelah itu, hal terakhir yang dilakukan adalah menyerahkan kepada customer. Pilih “Deliver final product to customer”. Game sudah selesai dengan maksimal skor yang saya dapatkan adalah 98.


Sumber : http://www.ics.uci.edu/~emilyo/SimSE/downloads.html