Sabtu, 16 Januari 2010

PENGENALAN DASAR SOFTWARE ENGINEERING

Software Engineering biasa disebut juga dengan Rekayasa Perangkat Lunak. Sejarah munculnya Rekayasa Perangkat Lunak sebenarnya dilatarbelakangi oleh adanya krisis perangkat lunak (software crisis) di era tahun 1960-an. Krisis perangkat lunak merupakan akibat langsung dari lahirnya komputer generasi ke 3 yang canggih, ditandai dengan penggunaan Integrated Circuit (IC) untuk komputer. Performansi hardware yang meningkat, membuat adanya kebutuhan untuk memproduksi perangkat lunak yang lebih baik. Akibatnya perangkat lunak yang dihasilkan menjadi menjadi beberapa kali lebih besar dan kompleks. Pendekatan informal yang digunakan pada waktu itu dalam pengembangan perangkat lunak, menjadi tidak cukup efektif (secara cost, waktu dan kualitas). Biaya hardware mulai jatuh dan biaya perangkat lunak menjadi naik cepat. Karena itulah muncul pemikiran untuk menggunakan pendekatan engineering yang lebih pasti, efektif, standard dan terukur dalam pengembangan perangkat lunak.


Beberapa pengertian dari perangkat lunak sendiri adalah (1) suatu instruksi / program komputer yang bila dieksekusi memiliki fungsi tertentu, (2) Sekumpulan data yang terstruktur yang dapat membuat computer untuk memanipulasi data / informasi . Jenis-jenis dari perangkat lunak adalah Perangkat Lunak Sistem, Perangkat Lunak Waktu Nyata, Perangkat Lunak Bisnis , Perangkat Lunak Rekayasa dan Ilmu Pengetahuan, Perangkat Lunak Pribadi, Embedded System ,Perangkat Lunak Intelegensi Buatan. Definisi dari Rekayasa Perangkat Lunak adalah (1) Roger S. Pressman : “Penggunaan dan pembentukan prinsip rekayasa untuk mendapatkan Perangkat Lunak yang lebih ekonomis namun tetap handal dan dapat bekerja secara efisien pada computer” (2) Suatu Disiplin,kaidah yang mengintegrasikan proses, metode, dan alat bantu untuk pembangunan perangkat lunak computer. (3) IEEE computer society : “Aplikasi atau penerapan yang sistematik, disiplin, dapat terukur, dan memiliki standard untuk mengembangkan, pengoperasian, dan pemeliharaan dari perangkat lunak.”

Sehingga kita dapat menyimpulkan RPL adalah Suatu disiplin ilmu yang membahas semua aspek tentang produksi perangkat lunak mulai dari tahap awal requirement capturing (analisa kebutuhan), specification (menentukan spesifikasi perangkat lunak pengguna), desain , implementasi, testing sampai dengan maintenance (pemeliharaan) system yang sudah digunakan sehingga dapat menghasilkan perangkat lunak yang berkualitas.

Perangkat Lunak yang berkualitas dan dapat terukur adalah (1) Perangkat Lunak yang dihasilkan sesuai dengan kebutuhan yang diinginkan , (2) Perangkat lunak yang dapat beroperasi secara benar dan sesuai denga lingkungan sebenarnya , (3) Biaya yang dikeluarkan rendah (efisien) , efektif dan sesuai dengan biaya yang dianggarkan, dan tepat waktu, (5) Setiap tahap pekerjaannya terjamin kualitasnya, terdokumentasi dan dapat dipertanggungjawabkan kebenarannya (terdapat proses validasi dan verifikasi).

Kita kembali lagi ke pengertian dari rekayasa perangkat lunak terdapat kata ‘seluruh aspek produksi perangkat lunak’ yang mengisyratkan bahwa rekayasa perangkat lunak bukan hanya pengimplementasian saja atau masalah teknis saja tetapi juga mempelajari masalah strategis seperti manajemen proyek perangkat lunak, penentuan metode dan prose pengembangan, serta aspek teoritis sehingga dapt menghasilkan sebuah perangkat lunak yang berkualitas. Sehingga dapat kita ketahui bahwa rekayasa perangkat lunak tidak hanya untuk program computer tetapi juga termasuk dokumentasi dan konfigurasi data. Dengan definisi tersebut, maka keluaran dari rekayasa perangkat lunak bukan hanya program tetapi beserta dengan dokumentasi lengkap yang berhubungan dengan program tersebut.

Rekayasa Perangkat Lunak bukan merupakan cabang ilmu Computer Science yang mempelajari tentang technical coding. Ini yang sering salah kaprah oleh mahasiswa , pelajar SMK, dan atau dosen yang baru mulai mengajkar akan dikagetkan oleh buku yaung tebal berisi textbook dengan penjelasan yang luas mulai dari capturing requirement customer, specification, design, coding, testing, dan maintenance sampai people management. Dan ini adalah suatu kesepakatan yang sudah diterima umum tentang Rekayasa Perangkat Lunak, sejak jaman Roger S Pressman menulis buku “Software Engineering: A Practitioner’s Approach”, sampai Ian Sommerville yang kemudian datang dengan buku “Software Engineering” yang sudah sampai edisi ke 7, maupun pendatang baru semacam Hans Van Vliet, Shari Lawrence Pfleeger maupun James F Peters.

Fase atau tahapan dalam Rekayasa Perangkat Lunak adalah Requirement engineering , Specification, Desain, Implementasi, Testing , dan Deployment (Pengembangan).

  • Fase awal adalah Requirement Engineering, yaitu ( yang berhubungan dengan: tujuan 1) IEEE 93 : “Proses mempelajari kebutuhan pemakai untuk mendapatkan definisi kebutuhan sistem atau perangkat lunak” , (2) PRE 01 : “Proses untuk menetapkan fungsi dan unjuk kerja perangkat lunak, menyatakan antarmuka perangkat lunak dengan elemen-elemen sistem lain, dan menentukan kendala yang harus dihadapi oleh perangkat lunak ” , (3) ZAVE 97 : “Requirements engineering adalah cabang dari software engineering yang mengurusi masalah(dunia nyata), fungsi, dan batasan-batasan pada sistem software. Termasuk hubungan faktor-faktor tersebut dalam menetapkan spesifikasi yang tepat dari suatu software, proses evolusinya baik berhubungan dengan masalah waktu maupun dengan software lain (dalam satu famili).”

Bagian ini merupakan bagian yang banyak mengalami kegagalan dalam pendefinisian kebutuhan dan spesifikasinya dikarenakan permintaan dari user bukan seperti yang sebenarnya dibutuhkan oleh user sehingga pada saat proses berjalan terkadang requirement dari user ditambahkan dan diulangi karena tidak sesuai dengan kebutuhan.

  • Fase selanjutnya adalah Requirement Specification,Hasil dari fase requirements engineering terdokumentasi dalam requirements specification. Requirements specification berisi kesepakatan bersama tentang permasalahan yang ingin dipecahkan antara pengembang dan customer, dan merupakan titik start menuju proses berikutnya yaitu software design. Sistemisasi proses negosiasi pengembang dan customer dalam requirements engineering dibagi dalam 3 proses besar yaitu: elicitation, specification, validation and verification. Formula ini kemudian juga dikenal dengan nama The Three Dimensions of Requirements Engineering. Proses requirements engineering ini dilakukan secara iterasi dengan mengakomodasi adanya feedback dari customer (user).

  • Fase ketiga adalah Software Design , yaitu (1) IEEE 1998 : “Proses mendefinisikan arsitektur perangkat lunak, komponen, modul, antarmuka, pendekatan pengujian, serta data untuk memenuhi kebutuhan yang sudah ditentukan sebelumnya” , (2) PRESSMAN 2001 : “Proses bertahap dimana semua kebutuhan yang ada diterjemahkan menjadi suatu cetak biru yang akan digunakan untuk mengkonstruksi perangkat lunak.”

  • Fase keempat adalah Implementasi merupakan tahap penerjemahan dari proses desain ke dalam bentuk mesin yang bisa dibaca.

  • Fase kelima adalah Software Testing merupakan proses eksekusi perangkat lunak dengan menggunakan prosedur dan data tertentu, kemudian mengevaluasi hasilnya dengan maksud untuk menemukan kesalahan yang mungkin masih dikandung oleh perangkat lunak tersebut.

  • Fase terakhir adalah Software maintenance merupakan proses pemeliharaan perangkat lunak dan keseluruhan sistem bila terjadi kesalahan pada program, atau terjadi perubahan lingkungan perangkat lunak dan juga bila terjadi perubahan requirements dan maintenance yang bersifat preventif untuk mengantisipasi keadaan yang tidak diinginkan.

1 komentar: