Jumat, 28 September 2012

Software


-       Permainan ringan pertama kelas RPL:
Sebelum masuk ke materi pertama, "Software", diadakan permainan menebak benda / material yang dimiliki oleh pasangan permainan, lalu menebak apa yang ingin dibuat oleh pasangan permainan dari benda-benda tersebut.
Manfaat dari permainan ini adalah melatih diri kita untuk mengetahui apa yang diinginkan seseorang melalui cerita deskriptif orang itu dan apa yang sebenarnya dibutuhkan. Karena jika suatu saat ada client yang menginginkan kita untuk membuat suatu sistem, kita harus mampu untuk mengetahui apa yang diinginkan dan dibutuhkannya, karena kalau kita salah mendefinisikan apa yang sebenarnya dimaksudkan oleh si client maka akan menyebabkan client tersebut kurang percaya terhadap kita dan juga membuang waktu dan uang.


A)  Software:
Menurut Pressman, R.S., 2001, "Software Engineering, A Practitioner Approach 5th ed.":
Software is a set of items or objects that form a “configuration” that includes:
·         Programs
·         Data
·         Documents

Software adalah sekumpulan objek-objek atau benda-benda yang membentuk suatu “konfigurasi” yang terdiri dari:
·         Program-program
·         Data
·         Dokumen-dokumen

Dikatakan terdiri dari program-program, data dan dokumen-dokumen karena dengan data-data yang dikumpulkan kita dapat memprosesnya menjadi informasi, semakin banyak dan akuratnya data yang ada maka semakin baik pula informasi yang dihasilkan. Lalu, program disini merupakan sekumpulan instruksi yang dapat menjalankan suatu fungsi dimana data-data yang diketahui juga termasuk di dalam program, sedangkan dokumen-dokumen menjelaskan bagaimana cara menggunakan program atau jika ada masalah pada program tersebut, disediakan solusi masalahnya.
Masih menurut Pressman, R.S.,2001,"Software Engineering, A Practitioner Approach 5th ed.":
Software is..
·         Software is engineered
·         Software doesn’t wear out
·         Software is complex
·         Software is a “differentiator”
·         Software is like an “aging factory”

Software itu..
·         Terukur
·         Tidak akan lapuk
·         Kompleks
·         Sebagai “pemisah”
·         “Pabrik yang menua”

Software itu dikatakan terukur karena dilakukan pengambilan informasi, dianalisa dan dirancang dahulu. Dikatakan tidak akan lapuk dikarenakan software diperkirakan juga bagaimana akan selaras dengan kebutuhan orang-orang di masa depan. Dikatakan kompleks karena banyak aspek yang saling terkait. Sebagai “pemisah” karena software mampu membagi-bagi kerja operasi yang besar menjadi beberapa bagian-bagian kecil. “Pabrik yang menua” disini maksudnya suatu software semakin lama semakin tidak relevan dan akan berkurang keakuratannya setelah beberapa kurun waktu, maka dari itu upgrade dibutuhkan untuk meminimalisir kemungkinan ini.
Berikut adalah ilustrasi dari kelapukan software:


Ket: sumbu X (time/waktu) dan sumbu Y (failure rate / kemungkinan kegagalan)
Pada ilustrasi diatas, dapat dilihat pada pertama kali software dibuat, kemungkinan kegagalannya sangat tinggi, namun seiring dengan waktu, maka akan stabil dan menurun kemungkinan kegagalannya dikarenakan dilakukan perbaikan-perbaikan pada bagian-bagian yang bermasalah dari suatu software. Namun, PERLU DIINGAT jika suatu software mengalami kegagalan dan tidak dapat diperbaiki, maka tingkat kegagalannya akan kembali tinggi karena dipastikan software itu dibuat ulang / baru. TETAPI sebaik apapun software dibuat, tetap lambat laun akan kembali meningkat kemungkinan kegagalannya (garis biru dan pada poin ke lima dari “Software itu..” dipembahasan diatas)

Adapun jenis-jenis aplikasi software, yakni:
· System software:
software yang melayani software lain contohnya seperti Operating System

· Real-time software:
software yang selalu memberikan informasi terkini dikarenakan terupdate setiap detik

· Business software:
software yang mengelola informasi bisnis, misalnya inventory

· Engineering/scientific software:
software yang didesain khusus untuk mengolah data/informasi ilmiah, contohnya seperti program simulasi

· Embedded software:
software yang tertanam pada suatu peralatan, misalnya AC (Air Conditioner)

· PC (Personal Computer) software:
software untuk penggunaan personal, contohnya MS Word

· AI (Artificial Intelligence) software:
software dengan kecerdasan buatan untuk membantu proses pengambilan keputusan / pemecahan masalah, contohnya game

· Web application:
software yang digunakan pada web yang mendukung mobilitas pelayanan



B)  Software Process
Proses sebuah software dibuat dapat diilustrasikan dengan gambar dibawah ini:


 
Penjelasan:
Pada gambar pertama, adalah cara client / customer menjelaskan sistem yang diinginkan seperti apa, yang biasanya dijelaskan secara “wah”.

Gambar kedua, adalah pemahaman sang ketua proyek terhadap penjelasan si client, ditunjukkan dengan gambar ayunan ditengah sebuah pohon karena pemahaman yang salah terhadap penjelasan client.

Gambar ketiga menunjukkan bagaimana sang analis mendesainnya berdasarkan dari apa yang diketahui oleh ketua proyek, digambarkan seperti itu dikarenakan kurangnya pemahaman programming si analis dimana desainnya itu tidak mungkin terwujud tetapi tetap didesain dan diserahkan ke programmer, yang akhirnya membuat programmernya bingung dan tidak bisa mewujudkan desain dari si analis (gambar keempat).

Pada gambar kelima adalah deskripsi sang konsultan bisnis yang terlalu melebih-lebihkan dengan bahasa promosi.

Di gambar keenam menunjukkan tidak adanya dokumentasi pada proyek yang diinginkan, yang akhirnya berakibat seperti pada gambar ketujuh, tidak ada yang bisa digunakan. Dan berpengaruh terhadap biaya yang dikeluarkan oleh client karena adanya kesalahpahaman yang mengakibatkan pembayaran berlebih. Setelah program jadi, technical support yang disediakan pun sangat sedikit. Padahal yang diinginkan oleh si client hanya yang sederhana saja.

Adapun tantangan-tantangan dari pembuatan software, yakni:
·         Bagaimana menjamin kualitas software yang dihasilkan
·         Bagaimana menanggulangi peningkatan kebutuhan dan menjaga anggaran tetap terkendali
·         Bagaimana agar memungkinkan melakukan upgrade software
·         Bagaimana mencegah kelambatan-kelambatan  yang dapat berakibat fatal
·         Bagaimana agar dapat melembagakan teknologi-teknologi software baru

Lapisan-lapisan teknologi terdiri dari:
1)    Fokus pada kualitas yang dihasilkan
2)    Pemodelan proses-proses
3)    Menentukan metode-metode
4)    Menentukan alat yang digunakan

Tahapan-tahapan pengembangan software:
1)    Mencari tahu apa kebutuhan seorang client (Requirement)
2)    Membuat desain dari informasi kebutuhan yang didapatkan (Design)
3)    Jika client sudah menyetujui, mulailah pembuatan softwarenya (Build)
4)    Setelah software selesai dibuat, perlihatkan kepada client untuk diuji-coba (Test)
5)    Jika client menyukainya, beritahukan pada client jika ada masalah hubungilah anda (Technical Support)

Proses pembuatan software:


Penjelasan:
Dikatakan Waterfall Model karena jika tahap pertama tidak selesai, maka jangan melangkah ke tahap kedua dan seterusnya, karena jika pada tahap pertama sudah ada kesalahan, maka tahap-tahap selanjutnya akan ikut salah juga.
Jadi, pada tahap System Engineering kita mengumpulkan informasi kebutuhan sistem, strategi bisnis dan menspesifikasikan arsitektur sistem.
Selanjutnya di tahap Requirements Analysis kita menentukan fungsi, interface, kinerja, perilaku dari sistem & software dan spesifikasi acceptance test
Kemudian di tahap Design dilakukan penerjemahan requirements menjadi representasi software, mencakup struktur data, arsitektur software, representasi interface dan algoritma.
Lalu di tahap Construction dilakukanlah pembuatan program / coding.
Setelah construction selesai, kemudian dilakukan testing  di segala bagian dari software tersebut untuk mengetahui apakah ada yang kurang / terlewatkan.
Jika tidak ada masalah pada testing, selanjutnya ke tahap Installation yaitu implementasi, instalasi sistem dan penggunaan.
Terakhir tahap Maintenance, dimana yang dilakukan pada tahap ini adalah pemeliharaan dan support.


Hal yang ingin saya pelajari lebih lanjut adalah:
"Dalam merancang, bagaimana kita mengetahui apakah desain kita dapat diterapkan atau tidak, jika misalnya pemahaman saya dan teman-teman saya mengenai programming tidak banyak? Bagaimana meminimalisir waktu yang terbuang untuk mencari tahu apa bisa diterapkan desain kita?"

Sekian tulisanku mengenai Software, semoga dapat memberi manfaat bagi pembaca sekalian.. :)


Sumber:
01 - Software Process | Materi 1 Kuliah Rekayasa Perangkat Lunak
http://wiki.answers.com/Q/What_does_software_is_a_differentiator_mean