REKAYASA PERANGKAT LUNAK A. Pengertian Rekayasa Perangkat Lunak Rekayasa perangkat lunak (RPL, atau dalam bahasa Inggris: Software Engineering atau SE) adalah satu bidang profesi yang mendalami cara-cara pengembangan perangkat lunak termasuk pembuatan, pemeliharaan, manajemen organisasi pengembanganan perangkat lunak dan manajemen kualitas. IEEE Computer Society mendefinisikan rekayasa perangkat lunak sebagai penerapan suatu pendekatan yang sistematis, disiplin dan terkuantifikasi atas pengembangan, penggunaan dan pemeliharaan perangkat lunak, serta studi atas pendekatan-pendekatan ini, yaitu penerapan pendekatan engineering atas perangkat lunak. Pengertian dari Perangkat Lunak adalah kumpulan beberapa perintah komputer yang dieksekusi oleh mesin komputer dalam menjalankan pekerjaannya yaitu memproses informasi. perangkat lunak ini merupakan catatan bagi mesin komputer untuk menyimpan perintah, maupun dokumen serta arsip lainnya. Perangkat lunak tidak dapat disentuh dan dilihat secara fisik, software memang tidak tampak secara fisik dan tidak berwujud benda tapi bisa di operasikan. Pengertian Rekayasa Perangkat Lunak (RPL) adalah aplikasi ilmu komputer untuk membangun sistem perangkat lunak praktis yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan
spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Rekayasa perangkat lunak adalah pengubahan perangkat lunak itu sendiri guna mengembangkan, memelihara, dan membangun kembali dengan menggunakan prinsip reakayasa untuk menghasilkan perangkat lunak yang dapat bekerja lebih efisien dan efektif untuk pengguna. kriteria yang dapat digunakan sebagai acuan dalam merekayasa perangkat lunak: 1. dapat terus dirawat dan dipelihara(maintainability) 2. dapat mengikuti perkembangan teknologi(dependability) 3. dapat mengikuti keinginan pengguna(robust) 4. efektif dan efisien dalam menggunakan energi dan penggunaannya 5. dapat memenuhi kebutuhan yang diinginkan(usability). Perbedaan perangkat lunak dengan ilmu komputer Ilmu komputer seringkali didiskripsikan sebagai suatu studi sistematis pada proses-proses algoritma yang menjelaskan dan mentransformasikan informasi seperti halnya di sini adalah teori, analisis, disain, efisiensi, penerapan dan aplikasinya. Sedangkan perangkat lunak merupakan data elektronik yang disimpan sedemikian rupa oleh komputer itu sendiri, data yang disimpan ini dapat berupa program atau instruksi yang akan dijalankan oleh perintah, maupun catatan-catatan yang diperlukan oleh komputer untuk menjalankan perintah yang dijalankannya. Jadi perangkat lunak itu dapat berupa program atau prosedur. Perbedaan antara RPL dengan ilmu komputer adalah Intinya, imu komputer berhubungan dengan teori dan metode yang mendasari sistem komputer dan perangkat lunak, sedangkan RPL berhubungan dengan praktek dalam memproduksi perangkat lunak. Perbedaan rekayasa perangkat lunak dengan rekayasa sistem Rekayasa system mempunyai pengertian suatu sistem yang mampu memilih alat bantu yang baik dalam perencanaan maupun dalam penerapan perangkat lunak dan memiliki teknik yang
baik untuk menilai kualitas dari perangkat lunak yang dihasilkan, serta mampu mengkoordinasikan, mengontrol, dan mengatur pelaksanaan pekerjaan pembuatan perangkat lunak. Sedangkan rekayasa pernagkat lunak itu adalah aplikasi dari ilmu computer yang membangun system perangkat lunak yang nantinya perangkat lunak itu akan dipilih kualitas dan tekniknya oleh rekayasa system. Rekayasa sistem berkaitan dengan semua aspek dalam pembangunan sistem berbasis komputer termasuk hardware, rekayasa PL dan proses. RPL adalah bagian dari rekayasa sistem yang meliputi pembangunan PL, infrasktruktur, kontrol, aplikasi dan database pada sistem. Perbedaan RPL dengan Rekayasa Sistem intinya Rekayasa sistem berkaitan dengan semua aspek dalam pembangunan sistem berbasis komputer termasuk hardware, rekayasa PL dan proses. RPL adalah bagian dari rekayasa sistem yang meliputi pembangunan PL, infrasktruktur, kontrol, aplikasi dan database pada sistem. Proses perangkat lunak sebagai berikut Serangkaian kegiatan dan hasil-hasil relevannya yang menghasilkan perangkat lunak sebagian besar dilakukan oleh perekayasa perangkat lunak. Ada 4 kegiatan/aktivitas pada proses PL : Spesifikikasi Perangkat Lunak : Fungsionalitas perangkat lunak dan batasan kemampuan operasinya harus didefinisikan. Pengembangan Perangkat Lunak : Perangkat lunak yang memenuhi spesifikasi harus di produksi Validasi Perangkat Lunak : Perangkat lunak harus divalidasi untuk menjamin bahwa perangkat lunak melakukan apa yang diinginkan oleh pelanggan. Evolusi Perangkat Lunak : Perangkat lunak harus berkembang untuk memenuhi kebutuhan pelanggan. 1. Definisi Rekayasa Perangkat Lunak menurut beberapa ahli Secara umum Rekayasa perangkat lunak memiliki pengertian sebagai sebuah disiplin ilmu yang menerapkan teori-teori dasar bidang tertentu, kedalam sebuah
perangkat lunak yang digunakan sebagai alat bantu pemecahan masalah atau proses pengambil keputusan. Ada beberapa pengertian Rekayasa perangkat lunak menurut beberapa ahli yaitu sebagai berikut: Rekayasa perangkat lunak Menurut Stephen R. Schach Rekayasa perangkat lunak adalah sebuah disiplin dimana dalam menghasilkan perangkat lunak bebas dari kesalahan dan dalam pengiriman anggaran tepat waktu serta memuaskan keinginan pemakai. Rekayasa perangkat lunak Menurut Fritz Bauer Rekayasa perangkat lunak adalah penetapan dan penggunaan prinsip rekayasa dalam rangka memperoleh perangkat lunak yang dapat dipercaya dan dapat bekerja secara efisien pada mesin nyata. Rekayasa perangkat lunak Menurut IEEE 610.12 Rekayasa perangkat lunak adalah sebuah studi pendekatan dan aplikasi secara sistematis, disiplin pengembangan operasi dan pemeliharaan perangkat lunak yang kesemuanya itu merupakan aplikasi rekayasa yang berkaitan dengan perangkat lunak. Dari ketiga pengertian tersebut, arti yang diberikan Fritz Bauer sangat sesuai dengan tujuan dan sasaran dari rekayasa perangkat lunak. Pernyataan Stephen R. Schach terbatas pada menanggulangi kekurangan yang terjadi jika tidak menerapkan rekayasa perangkat lunak. Pengertian yang diberikan IEEE 610.12 paling baik dalam menyampaikan wujud dari rekayasa perangkat lunak. 2. Model Proses Perangkat Lunak a. Model aliran kerja (workflow) : menunjukkan kegiatan pada proses bersama dengan input, output, dan ketergantungannya. Merepresentasikan pekerjaan manusia.
b. Model aliran data (data flow) : merepresentasikan proses sebagai suatu set kegiatan yang melakukan transformasi data. Menunjukkan bagaimana input ke proses, misalnya spesifikasi ditransformasi menjadi output, misalnya menjadi desain. c. Model peran/aksi : merepresentasikan peran orang yang terlibat pada PL dan kegiatan yg menjadi tanggung jawab mereka. Model atau paradigma umum pada proses PL Model air terjun (waterfall) : Mengambil kegiatan dasar seperti spesifikasi, pengembangan, validasi, dan evolusi dan merepresentasikannya sebagai fase-fase proses yang berbeda seperti spesifikasi persyaratan, perancangan perangkat lunak, implementasi, pengujian dan seterusnya. Pengembangan evolusioner : Pendekatan ini berhimpitan dengan kegiatan spesifikasi, pengembangan, dan validasi. Sistem awal dikembangkan dengan cepat dari spesifikasi abstrak. Sistem ini kemudian di perbaiki dengan masukan dari pelanggan untuk menghasilkan sistem yang memuaskan kebutuhan pelanggan. Pengembangan Sistem Formal : Pendekatan ini menghasilkan suatu sistem matematis yang formal dan mentransformasikan spesifikasi ini, dengan menggunakan metode matematik menjadi sebuah program. Pengembangan berdasarkan pemakaian ulang (Reusable) : Teknik ini menganggap bahwa bagian-bagian sistem sudah ada. Proses pengembangan sistem terfokus pada pengintegrasian bagian-bagian sistem dan bukan pengembangannya dari awal. 3. Metode Rekayasa Perangkat Lunak Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu proses pengembangan perangkat lunak. Model-model ini pada umumnya mengacu pada model proses pengembangan sistem yang disebut System Development Life Cycle (SDLC) Kebutuhan terhadap definisi masalah yang jelas. Input utama dari setiap model pengembangan perangkat lunak adalah pendefinisian masalah yang jelas. Semakin jelas akan semakin baik karena akan memudahkan dalam penyelesaian masalah. Tahapan-tahapan pengembangan yang teratur. Meskipun model-model
pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya modelmodel tersebut mengikuti pola umum analysis design coding testing maintenance Stakeholder berperan sangat penting dalam keseluruhan tahapan pengembangan. Stakeholder dalam rekayasa perangkat lunak dapat berupa pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat dalam rekayasa perangkat lunak tersebut. Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak. Masing-masing tahapan dalam model biasanya menghasilkan sejumlah tulisan, diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan. Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis. Nilai dari sebuah perangkat lunak sebenarnya agak susah di-rupiah-kan. Namun efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat berupa penurunan biaya operasi, efisiensi penggunaan sumberdaya, peningkatan keuntungan organisasi, peningkatan image organisasi dan lain-lain. 4. Jenis Jenis Rekayasa Perangkat Lunak 1. System Software Adalah sekumpulan program yang ditulis untuk melayani atau menunjang program lainnya. Beberapa sistem software seperti compiler, editor, komponenkomponen sistem operasi, driver dan prosesor telekomunikasi. 2. Real Time Software Software yang mengukur, menganalisis dan mengontrol kejadian yang sesungguhnya terjadi di dunia. Elemen-elemen real time software terdiri dari: a. Komponen pengumpul data : Yang mengumpulkan dan menyusun informasi dari lingkungan external.
b. Komponen analisis : Yang mentransformasikan informasi yang diperlukan oleh aplikasi. c. Komponen kontrol : Yang memberikan respon kepada lingkungan external d. Komponen monitor : Yang mengkoordinasi semua komponen-komponen lainnya, sehingga respons real time yang berkisar 1 milisecond sampai 1 menit dapat dipertahankan. Perlu dicatat bahwa istilah real time berbeda dari istilah interactive atau time sharing. Sistem real time harus memberikan respons pada waktu yang ditentukan, sedangkan pada sistem interactive atau time sharing respons time biasanya melebihi batas waktu yang ditentukan tanpa merusak hasil. 3. Business Software Software yang paling banyak digunakan dalam bidang aplikasi software. Software ini digunakan oleh manajemen untuk mengambil keputusan ( Decision Making ) dalam bidang bisnis. Contoh : DAC EASY ACCOUNTING FINANCE MANAGER 4. Engineering and Sciencetific Software Software yang dicirikan dengan algoritma numerik, aplikasinya berkisar dari astronomi sampai vulkanologi, dari analis ketegangan otomotif sampai dinamika orbit ruang angkasa. Software ini banyak digunakan dalam bidang engineering dan science. Contoh : CAD / CAM ( Computer Aided Design / Computer Aided Manufacture Simulasi sistem ). 5. Pentingnya Rekayasa Perangkat Lunak
Rekayasa perangkat lunak merupakan ilmu yang penting untuk diperdalam karena teknologi ini memberikan stabilitas, kontrol, dan organisasi aktifitas yang jika tidak terkontrol dengan baik dapat menjadi sangat kacau. Ada beberapa tujuan dilakukan rekayasa perangkat lunak antara lain yaitu : 1. Untuk membangun software yang benar dan benar sebuah software (Right Software and Software Right). 2. Untuk membangun software yang tepat (correct). 3. Dikelola dengan baik untuk pemeliharaan kebenarannya (correctness). Secara umum tujuan RPL tidak berbeda dengan bidang rekayasa yang lain. Bidang rekayasa akan selaluberusaha menghasilkan output yang kinerjanya tinggi, biaya rendah dan waktu penyelesaian yang tepat. Secara lebih khusus kita dapat menyatakan tujuan RPL adalah : a. Memperoleh biaya produksi perangkat lunak yang rendah. b. Menghasilkan perangkat lunak yang kinerjanya tinggi, andal dan tepat waktu. c. Menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis platform. d. Menghasilkan perangkat lunak yang biaya perawatannya rendah.
Sesuai definisi yang telah disampaikan sebelumnya, maka ruang lingkup RPL dapat digambarkan sebagai berikut. Software requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak. Software design mencakup proses penentuan arsitektur, komponen, antarmuka, dan karakteristik lain dari perangkat lunak. Software construction berhubungan dengan detil pengembangan perangkat lunak, termasuk algoritma, pengkodean, pengujian, dan pencarian kesalahan. Software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak. Software maintenance mencakup upaya-upaya perawatan ketika perangkat lunak telah dioperasikan. Software configuration management berhubungan dengan usaha perubahan konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu. Software engineering management berkaitan dengan pengelolaan dan pengukuran RPL, termasuk perencanaan proyek perangkat lunak. Software engineering tools and methods mencakup kajian teoritis tentang alat bantu dan metode RPL. Software engineering process berhubungan dengan definisi, implementasi, pengukuran, pengelolaan, perubahan dan perbaikan proses RPL. Software quality menitikberatkan pada kualitas dan daur hidup perangkat lunak.