Sekilas Mengenai Spftware Engineering, Silahkan Menyimak..^_^
User harus menyatakan kebutuhannya secara explisit pada saat awal proyek, dan hal ini hampir tidak mungkin dilakukan mengingat keterbatasan manusia dalam mengakomodir kemungkinan-kemungkinan yang akan terjadi dimasa yang akan datang.
User harus memiliki kesabaran, karena versi yang dapat bekerja dari program tidak akan tersedia sebelum proyek diselesaikan.
A. Pengertian Software Engineering
Software engineering menurut Fritz Bada adalah disiplin ilmu yang menerapkan prinsip-prinsip engineering agar mendapatkan software yang ekonomis yang dapat dipercaya dan bekerja lebih efisien pada mesin yang sebenarnya.
Software engineering menurut Mynatt secara sederhana menyatakan sebagai pendekatan sistematis untuk menciptakan dan pemilikan perangkat lunak.
Software engineering menurut Roger S Pressman adalah:
- Pendekatan yang sistematis, berisi Perangkat Lunak dan dapat dikuantifikasi untuk dikuantifikasi untuk pengembangan, pengoperasian, dan pemeliharaan perangkat lunak, yaitu penerapan rekayasa terhadap perangkat lunak.
- Studi terhadap pendekatan 1.
Definisi Software Engineering menurut IEEE (Institute of Electrical and Electronics Engineers) pada proyek SWEBOK (Software Engineering Body of Knowledge) adalah aplikasi sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan dari software; atau dapat disimpulkan sebagai teknik aplikasi untuk perangkat lunak. Intinya Software engineering berkaitan dengan pembangunan produk program.
Berdasarkan pengertian di atas , software engineering adalah suatu sistem untuk menciptakan, mengembangkan, mengoperasikan , dan memelihara perangkat lunak
B. Model Pengembangan Perangkat Lunak
Empat model dasar yang sering digunakan dalam pengembangan perangkat lunak, yaitu:
1. Linear Sequential Model
2. Prototyping Model
3. Rapid Application Development (RAD) Model
4. Evolutionary Software Process Model
Dan 5 (lima) paradigma yang sering digunakan dalam pengembangan perangkat lunak, yaitu:
-
- 1. Paradigma Konvensional
- 2. Paradigma Berorientasi Objek
- 3. Paradigma Metode Formal
- 4. Paradigma Cleanroom
- 5. Paradigma Berbasis Komponen
Sebelum lebih jauh dalam menjelaskan model dan paradigma diatas, penulis akan menjelaskan aktivitas dasar dalam pengembangan perangkat lunak, yaitu:
No | Aktifitas | Artifaks Keluaran |
1 | Analisis kebutuhan | Studi Kelayakan Kerangka Kebutuhan |
2 | Pendefinisian Kebutuhan | Dokumen kebutuhan |
3 | Spesifikasi Sistem | Spesifikasi Fungsi Rencana Pengujian Penerimaan Draft Buku Petunjuk Pemakaian |
4 | Perancangan Arsitektur | Spesifikasi Arsitektur Rencana Pengujian Sistem |
5 | Perancangan Antarmuka | Spesifikasi Antarmuka Rencana Pengujian Integrasi |
6 | Perancangan Rinci | Spesifikasi Rancangan Rencana Pengujian Unit |
7 | Pengkodean | Kode Program |
8 | Pengujian Unit | Laporan Pengujian Unit |
9 | Pengujian Modul | Laporan Pengujian Modul |
10 | Pengujian Integrasi | Laporan Pengujian Integrasi Buku Petunjuk Pemakaian oleh Pemakai |
11 | Pengujian Sistem | Laporan Pengujian Sistem |
12 | Pengujian Penerimaan | Sistem akhir beserta dokumentasi |
Table: Daftar Aktivitas Dasar Teknis Pengembangan Perangkat Lunak (diadopsi dari: Bambang Hariyanto, 2004)
Sedangkan jika kita mengacu kepada standar IEEE Computer Society (2004), aktifitas dasar dalam pengembangan perangkat lunak secara umum adalah sebagai berikut:
Berdasarkan kedua referensi mengenai aktifitas dasar dalam pengembangan perangkat lunak diatas, berikut ini akan penulis jelaskan kempat model pengembang perangkat, yaitu:
Linear Sequential Model,
Nama lain dari linear sequential model adalah waterfall yang merupakan model rekayasa perangkat lunak tertua. Dalam model ini terdapat seluruh aktivitas dasar dalam pengembangan perangkat lunak yang sudah penulis jelaskan diatas. Tahapan proses dari setiap aktivitas adalah secara berurutan, sebagai ilustrasi perhatikan gambar berikut:
Kelemahan dari model ini adalah:
Kebanyakan proyek yang terjadi dilapangan tidak mengikuti alur sequen yang sudah ditetapkan, meskipun pengembang bisa melakukan iterasi terhadap proses, namun model melakukannya secara tidak langsung yang menyebabkan perubahan-perubahan yang terjadi sering membuat para tim pengembang mengalami kebingungan.User harus menyatakan kebutuhannya secara explisit pada saat awal proyek, dan hal ini hampir tidak mungkin dilakukan mengingat keterbatasan manusia dalam mengakomodir kemungkinan-kemungkinan yang akan terjadi dimasa yang akan datang.
User harus memiliki kesabaran, karena versi yang dapat bekerja dari program tidak akan tersedia sebelum proyek diselesaikan.
Walaupun demikian, model ini mengakomodir semua aktifitas dasar yang terdapat dalam pengembangan perangkat lunak, sehingga bisa dijadikan acuan dasar dalam pengembangan perangkat lunak. Model-model yang lain adalah merupakan pengembangan dari model linear sequential.
Prototyping Model
Model ini diawali dengan penentuan kebutuhan oleh user. Pengembang akan mengumpulkan informasi-informasi mengenai kebutuhan usertersebut dan kemudian membuat sebuah prototype dari perangkat lunak yang akan dikembangkan. Model ini sangat cocok bagi user awam, sehingga dengan adanya prototype pemahaman mereka akan terbantu dan mereka mempunyai landasan dan acuan dalam tahapan selanjutnya, misalnya pada tahapan pengujian perangkat lunak.
McLeod dan Schell (2007) mendifiniskan 2 (dua) tipe dari prototype yaitu:
1. Evolutionary Prototype
2. Requirements Prototype
Evolutionary prototype yaitu, prototype yang secara terus menerus dikembangkan hingga prototype tersebut memenuhi fungsi dan prosedur yang dibutuhkan oleh sistem. Berikut gambar dari tahapan evolutionaryprototype:
Analisis kebutuhan user, pengembang dan pengguna atau pemilik sistem melakukan diskusi dimana pengguna atau pemilik sistem menjelaskan kepada pengembang tentang kebutuhan sistem yang mereka inginkan.
- Membuat prototype, pengembang membuat prototype dari sistem yang telah dijelaskan oleh pengguna atau pemilik sistem.
- Menyesuaikan prototype dengan keinginan user, pengembang menanyakan kepada pengguna atau pemilik sistem tentangprototype yang sudah dibuat, apakah sesuai atau tidak dengan kebutuhan sistem.
- Menggunakan prototype, sistem mulai dikembangkan denganprototype yang sudah dibuat.
Requirement prototype merupakan prototype yang dibuat oleh pengembang dengan mendifiniskan fungsi dan prosedur sistem dimana pengguna atau pemilik sistem tidak bisa mendefinisikan sistem tersebut. Berikut ini langkah-langkah dari requirement prototype :
Analisis kebutuhan user, pengembang dan pengguna atau pemilik sistem melakukan diskusi dimana pengguna atau pemilik sistem menjelaskan kepada pengembang tentang kebutuhan sistem yang mereka inginkan.
- Membuat prototype, pengembang membuat prototype dari sistem yang telah dijelaskan oleh pengguna atau pemilik sistem.
- Menyesuaikan prototype dengan keinginan user, pengembang menanyakan kepada pengguna atau pemilik sistem tentangprototype yang sudah dibuat, apakah sesuai atau tidak dengan kebutuhan sistem.
- Membuat sistem baru, pengembang menggunakan prototypeyang sudah dibuat untuk membuat sistem baru.
- Melakukan testing sistem, pengguna atau pemilik sistem melakukan uji coba terhadap sistem yang dikembangkan
- Menyesuaikan dengan keinginan user, sistem disesuaikan dengan keinginan user dan kebutuhan sistem, jika sudah sesuai sistem siap digunakan.
- Menggunakan sistem.
Kelebihan dari teknik pengembangan prototyping yaitu :
- Menghemat waktu pengembangan.
- Menghemat biaya pengembangan.
- Pengguna atau pemilik sistem ikut terlibat dalam pengembangan, sehingga kemungkinan-kemungkinan terjadinya kesalahpahaman dalam sistem bisa diminimalisir.
- Implementasi akan menjadi mudah, karena pengguna atau pemilik sistem sudah mempunyai gambaran tentang sistem.
- Kualitas sistem yang dihasilkan baik.
- Memungkinan tim pengembang sistem memprediksi dan memperkirakan pengembangan-pengembangan sistem selanjutnya.
Sedangkan kelemahannya adalah :
Pengguna atau pemilik sistem bisa terus menerus menambah kompleksitas sitem hingga sistem menjadi sangat kompleks, hal ini bisa menyebabkan pengembang meninggalkan pekerjaanya sehingga sistem yang dikerjaan tidak akan pernah terselesaikan.
Rapid Application Development (RAD) Model
Sistem yang semakin komplek dan waktu pengembangan yang dibutuhkan semakin cepat, membuat para pengembang sistem berfikir keras dan berusaha untuk mencari solusi teknik pengembangan yang cepat tanpa mengurangi kualitas sistem yang dihasilkan. Dengan kondisi ini, dikembangkanlah Rapid Aplication Development (RAD).
McLeod dan Schell (2007) berpendapat bahwa RAD merupakan metode yang memfokuskan pada kecepatan dalam pengembangan sistem untuk memenuhi kebutuhan pengguna atau pemilik sistem seperti prototypingnamun mempunyai cangkupan yang lebih luas.
Nama RAD dikenalkan oleh James Martin pada tahun 1991, yang mengacu pada life cycle pengembangan sistem. RAD mengadopsi teknik waterfalldan prototyping yang menggunakan manajemen, metode dan tools yang cukup kompleks, selain itu pengembang yang menggunakan teknik ini harus merupakan pengembang yang professional, sehingga Martin memberikan istilah SWAT (skilled with advanced tools) Team untuk pengembang yang menggunakan sistem ini. Berikut ini ilustrasi RAD
Yang membedakan antara antara waterfall dengan RAD adalah dimana pada teknik waterfall pengguna atau pemilik sistem akan ikut berpartisipasi dalam tahap cutover sedangkan pada RAD pada tahap construction. Hal ini menyebabkan tahap cutover akan lebih cepat dibandingkan pada waterfall,sedangkan urutan tahapan pada RAD sama dengan waterfall.
McLeod dan Schell (2007) mengatakan ada 4 (empat) komponen padaRAD yaitu
- Manajemen, yaitu orang-orang (dari sisi user) yang berada padalevel manajemen yang mempunyai yang bisa beradaptasi dengan cepat untuk menggunakan metode baru.
- Pengembang, yaitu tim pengembang sistem yang professional dalam menggunakan metode-metode pengembangan sistem dantools yang dibutuhkan. Tim ini di sebut oleh Martin sebagai SWAT (skilled with advanced tools) Team.
- Metode, yaitu metode RAD yang dikenal dengan RAD Life Cycle.
- Tools, yaitu Computer-Aided Software Engineering (CASE) dan 4thGeneration Language yang bisa memfasilitasi untuk pembuatanprototype dan pembuatan kode program. Sedangkan CASE toolslebih kepada dokumentasi dan perancangan database.
Evolutionary Software Process Model
Model ini memungkinkan perulangan (iterasi) dari setiap tahapan pengembangan perangkat lunak. Dengan model ini kompleksitas perangkat lunak yang dihasilkan akan semakin bertambah untuk setiap iterasi. Model ini terdiri dari:
- Incremental model, yaitu: model yang mengkombinasikan linear sequential model dengan filosofi iteratif pada prototyping.
- Spiral model, yaitu: model yang menggabungkan sifat alami iterasi pada prototyping dengan aspek sistematik dan terkendali darilinear sequential model.
- WINWIN Spiral model, yaitu: model yang memungkinkan user dan pengembang melakukan komunikasi dalam tahap pengembangan, dimana bisa memberikan win-win solution, seperti user bisa mengemukakan sebagian besar dan/atau keseluruhan kebutuhannya sedangkan pengembang bisa mengembangkan perangkat lunak sesuai dengan kebutuhan usertersebut dalam cakupan waktu dan biaya yang sudah dispesifikasikan.
- Concurrent development model, yaitu: model yang biasa digunakan untuk mengembangkan perangkat lunak client server.
Setelah melakukan kajian beberapa model dan paradigma rekayasa perangkat lunak, berikut ini penulis akan memberikan matriks perbedaan dari kelebihan dan kekurangan masing-masing model.
Linear Sequential | Prototyping | RAD | Evolutionary Software Process |
Waktu yang digunakan sangat lama karena tiap pase proses bergantung pada pase sebelumnya | Waktu yang digunakan sedikit lebih cepat dibandingkan dengan linear sequential, namun bila prototype yang dihasilkan tidak menggambarkan kebutuhan user, maka model ini akan memakan lebih banyak waktu proyek | Waktu yang digunakan sangat cepat karena pekerjaan bisa dilakukan secara simultan, namun model ini memerlukan teknik dan skill yang sangat tinggi | Waktu yang digunakan sedikit lebih lama dibandingkan dengan RAD, karena dalam model ini dimungkinkan iterasi (pengulangan). |
Kualitas software yang dihasilkan kurang bagus, karena kesalahan dan kekurangan spesifikasi kebutuhan user hanya akan bisa di perbaiki pada proyek selanjutnya. | Kualitas software yang dihasilkan sesuai dengan keinginan user, karena sebelumnya sudah dibuatkan prototype sehingga user bisa melakukan koreksi diawal proyek. | Kualitas software yang dihasilkan cenderung lebih baik dibandingkan prototype dan linear, karena model ini menggabungkan kedua model tersebut. | Kualitas software yang dihasilkan cenderung lebih baik dengan kompleksitas yang sangat tinggi, hal ini dikarenakan keberulangan pase yang memungkinkan perbaikan disetiap pase nya. |
Kebutuhan resource sangat sedikit, karena setiap orang akan bekerja setelah pase sebelumnya diselesaikan. | Memerlukan resource yang cukup handal, seperti tools untuk membuat prototype dan skill analisis yang tinggi. | Memerlukan skill yang tinggi dari setiap orang yang terlibat ditambah dengan tools-tools yang canggih dan modern. | Membutuhkan resource yang hamrpir sama dengan model RAD. |
Sesuai untuk proyek dengan kompleksitas rendah dan menengah | Sesuai untuk proyek diamana user yang akan menggunakan adalah orang awam dan belum begitu mengerti mengenai sistem | Sesuai untuk proyek dengan kompleksitas yang menengah dan tinggi. | Sesuai untuk proyek dengan sifat software yang dikembangkan secara terus menerus, sebagai contoh: sistem operasi |
Tabel: Matrik kelebihan dan kelemahan tiap masing-masing model Rekayasa Perangkat Lunak.
Daftar Referensi yang Digunakan:
- Somerville, Ian.2004.Software Enginnering 7th Edition. New Jersey: Prentice-Hall. Inc.
- Bambang Haryanto Ir, MT.2004. Rekayasa Perangkat Lunak Berorientasi Objek. Informatika Bandung
- Sri Mulyani, NS Ak, Metode Analisis dan Perancangan Sistem.2007. Abdi Sistematika. Bandung
- McLeod, R. & Schell, G. 2007. Management Information Systems. 10th Edition. New Jersey: Prentice-Hall. Inc.
- IEEE Computer Society, SWEBOK 2004
- Soni Fajar Surya G, ST.MCAS. Software Engineering Introduction. Modul Perkuliahan STMIK Extensi LPKIA Bandung
- http://zulvani.wordpress.com/2010/03/24/rekayasa-perangkat-lunak-bagian-3/
- http://zulvani.wordpress.com/2010/03/24/rekayasa-perangkat-lunak-bagian-4/
- http://cahdangkal.blog.unsoed.ac.id/files/2009/06/software-engineering.pdf
- http://rekayasasoft.blogspot.com/2009/10/maateri-rpl-terapan.html
Tidak ada komentar:
Posting Komentar