Penjelasan Rekayasa Perangkat Lunak
Rekayasa perangkat lunak telah berkembang sejak pertama kali diciptakan pada tahun 1940-an hingga kini. Focus utama pengembangannya adalah untuk mengembangkan praktek dan teknologi untuk meningkatkan produktivitas para praktisi pengembang perangkat lunak dan kualitas aplikasi yang dapat digunakan oleh pemakai.
Pengertian Rekayasa Perangkat Lunak (RPL)
Rekayasa Perangkat Lunak atau RPL adalah suatu perubahan perangkat lunak yang berfungsi untuk melakuka pengembangan, pemeliharaan dan pembangunan kembali dengan memakai prinsip rekayasa untuk memperoleh perangkat lunak yang bisa bekerja lebih efisien dan efektif pada user.
Definisi lain dari rekayasa perangkat lunak yaitu suatu disiplin ilmu yang mempraktekkan teori-teori dasar bidang tertentu, pada suatu perangkat lunak yang bisa dipakai atau digunakan sebagai suatu peralatan pembantu dalam memecahkan masalah dan proses mengambil keputusan.
Kemudian definisi dari perangkat lunak sendiri atau yang biasa disebut software adalah program yang ada di komputer yang memiliki fungsi sebagai sebuah sarana dalam berinteraksi antar pengguna dan hardware “perangkat keras”.
Lebih daripada itu juga biasa disebut sebagai “penerjemah” perintah-perintah yang diberikan user atau pengguna komputer untuk kemudian diteruskan ke atau diproses oleh hardware.
Dalam Wikipedia Rekayasa Perangkat Lunak merupakan bidang profesi yang mendalami cara-cara pengembangan perangkat lunak termasuk pembuatan, pemeliharaan, manajemen organisasi pengembangan perangkat lunak dan manajemen kualitas.
Tujuan Rekayasa Perangkat Lunak (RPL)
Tujuan utama rekayasa perangkat lunak sebagai berikut :
1. Mengembangkan perangkat lunak
Tujuan utama dari seseorang mempelajari rekayasa perangkat lunak adalah untuk mengembangkan perangkat lunak yang dapat berfungsi dan berguna bagi penggunanya. Sebuah perangkat lunak tentu harus memiliki fungsi dan kegunaan yang spesifik agar dapat digunakan oleh penggunanya.
2. Memperbarui Fungsi
Terkadang perangkat lunak yang sudah ada membutuhkan pembaruan, karena mungkin fungsinya telah berkurang. Dengan seseorang mendalami perangkat lunak akan mampu mengembangkan perangkat lunak yang sudah ada itu menjadi sistem perangkat lunak yang lebih baik dan lebih berguna lagi bagi penggunanya.
3. Menciptakan perangkat lunak yang user friendly
Setiap pengguna atau user pasti menginginkan perangkat lunak yang user friendly, setidaknya perangkat lunak yang user friendly memiliki tampilan yang yang menarik.fungsional dan mudah digunakan oleh penggunanya.
Seseorang yang mempelajari dan mendalami perangkat lunak tentu paham akan hal ini, sehingga ia mampu mengembangkan dan menciptakan perangkat yang user friendly.
4. Mengintegrasikan pada peralatan mekanikal yang ada
Pada beberapa peralatan mekanikal memerlukan integrasi dengan perangkat lunak agar sistem dapat bekerja dengan optimal. Seseorang yang mendalami hal ini pasti telah paham dengan masalah tersebut.
Dengan kemampuannya mempelajari RPL, maka sebuah sistem perangkat lunak mampu diintegrasikan pada sebuah peralatan mekanikal, sehingga mendukung kegiatan operasional pada peralatan tersebut.
5. Melakukan perawatan dan maintenance
Tujuan dari seseorang mempelajari perangkat lunak adalah agar bukan hanya terpaku pada pembuatan dan pengembangan sistem perangkat lunak yang ada, tapi berada pada sistem maintenance atau perawatan pada sebuah perangkat lunak yang ada.
Pada semua perangkat lunak pastinya memerlukan maintenance, terutama saat perangkat lunak itu mengalami gangguan atau kendala. Karena perawatan diperlukan, agar ada sistem perawatan dan maintenance dari perangkat lunak tersebut.
Sedangkan secara khususnya memiliki tujuan sebagai berikut :
- Mendapatkan biaya produksi dan biaya perawatan perangkat lunak yang lebih rendah.
- Menghasilkan perangkat lunak yang mampu bekerja dengan baik pada semua macam platform.
- Menghasilkan perangkat lunak yang memiliki sistem kinerja yang handal dan tepat waktu.
Rekayasa software dapat diterapkan dalam kehidupan sehari-hari maupun dalam perusahaan. Pembuatan aplikasi yang mencatat data kecelakaan, aplikasi pembuatan kamera untuk driver adalah beberapa contoh rekayasa perangkat lunak.
Perkembangan Rekayasa Perangkat Lunak (RPL)
Meskipun baru dicetuskan pada tahun 1968, namun RPL telah memiliki sejarah yang cukup yang panjang. Dari sisi disiplin ilmu, RPL masih reklatif muda dan akan terus berkembang.
Arah perkembangan yang saat ini sedang dikembangkan antara lain meliputi :
Tahun |
Kejadian |
1940an | Komputer pertama yang membolehkan pengguna menulis kode program langsung |
1950an | Generasi awal interpreter dan bahasa macro Generasi pertama compiler |
1960an | Generasi kedua compiler Komputer mainframe mulai dikomersialkan Pengembangan perangkat lunak pesananKonsep Software Engineering mulai digunakan |
1970an | Perangkat pengembang perangkat lunak Perangkat minicomputer komersial |
1980an | Perangkat Komputer Personal (PC) komersial Peningkatan permintaan perangkat lunak |
1990an | Pemrograman berorientasi obyek (OOP) Agile Process dan Extreme Programming Peningkatan drastis kapasitas memoriPeningkatan penggunaan internet |
2000an | Platform interpreter modern (Java, .Net, PHP, dll) Outsourcing |
Kriteria Dalam Rekayasa Perangkat (RPL)
Terdapat beberapa kriteria dalam perangkat lunak yang antara lain yakni sebagai berikut :
- Bisa terus menerus dirawat dan juga dipelihara atau maintainability
- Bisa mengikuti perkembangan dunia teknologi atau dependability
- Bisa mengikuti kehendak pengguna atau user (rebust)
- Efektif dan juga efisien dalam pemakaian energi dan penggunaannya
- Bisa memenuhi atau mencukupi keperluan yang dikehendaki (usability)
Ruang Lingkup Rekayasa Perangkat Lunak (RPL)
Sedangkan ruang lingkup perangkat lunak antara lain adalah sebagai berikut :
- Software Requirement yaitu berkaitan dengan spesifikasi keperluan dan juga persyaratan perangkat lunak
- Software desain adalah meliputi proses penampilan arsitektur, komponen, antar mka dan juga karakteristik lain dari perangkat lunak
- Software Construction adalah berkaitan dengan rincian pengembangan perangkat lunak, termasuk seperti algoritma, pengkodean, pengujian hingga sampai pencarian kesalahan
- Software testing adalah mencakup pengujian terhadap semua perilaku dari perangkat lunak
- Software maintanance adalah meliputi segala jenis usaha merawat pada saat perangkat lunka sudah dioperasikan atau dipakai
- Software configuration management adalah berkaitan dengan segala jenis usaha merubah konfigurasi perangkat lunak yakni untuk pemenuhan keperluan tertentu
- Software engineering management adalah berhubungan dengan pengelolalan dan juga pengukuran RPL termasuk perencanaan proyek perangkat lunak
- Software engineering tools and methods adalah yang meliputi kajian-kajian teoritis mengenai alat bantu dan metode RPL.
Karakteristik dan Atribut Perangkat Lunak
- Software merupakan elemen sistem logik dan bukan elemen sistem fisik seperti hardware.
- Elemen itu tidak aus, tetapi bisa rusak.
- Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardware
- Software itu tidak bisa dirakit.
Atribut perangkat lunak :
- Dapat dipelihara : Perangkat lunak dapat ditulis sedemikian rupa sehingga perangkat lunak dapat berubah seiring dengan perubahan kebutuhan pelanggan.
- Dapat diandalkan : Perangkat lunak mempunyai serangkaian karakteristik, termasuk keandalan, keamanan dan keselamatan.
- Efisien : Perangkat lunak tidak boleh menggunakan sumber daya sistem seperti siklus memori dan prosesor.
- Kemampupakaian : Perangkat lunak harus dapat dipakai, memiliki interface user yang bagus dan dokumentasi yang mencukupi.
Jenis-jenis Perangkat Lunak
Dilihat dari sudut pandang fungsinya, perangkat lunak dapat dikelompokkan menjadi :
1. Perangkat lunak sistem
Perangkat lunak yang kegunaannya lebih banyak ditujukan untuk operasional komputer.
- Sistem operasi
- Penerjemah bahasa pemrograman (compiler/interpreter)
2. Perangkat lunak aplikasi
Perangkat lunak yang kegunaannya lebih banyak ditujukan untuk membantu menyelesaikan masalalah-masalah yang dihadapi oleh pemakai.
- Program paket yang sudah jadi
- Program aplikasi buatan sendiri
Sedangkan dilihat dari aplikasinya, perangkat lunak dibedakan menjadi :
- Perangkat Lunak Sistem (Sistem Software)
Sekumpulan program yang ditulis untuk kepentingan program lain, contoh editor, driver dan lain-lain
- Perangkat Lunak Waktu Nyata (Real Time Software)
Perangkat lunak yang digunakan untuk mengukur/menganalisis atau mengontrol proses pemasukan data dari lingkungan luar sampai menghasilkan laporan yang diinginkan
- Perangkat Lunak Bisnis (Business Software)
Perangkat lunak yang memberikan fasilitas operasi untuk bisnis atau fasilitas pengambilan keputusan manajemen, contoh sistem akuntansi, inventory, payroll dan lain-lain
- Perangat Lunak Rekayasa dan Sains (Engineering and Scientific Software)
Perangkat lunak yang digunakan di dalam bidang aplikasi teknik dan kerekayasaan perangkat lunak jenis ini biasanya berhubungan dengan komputasi data numerik, CAD (Computer Aided Design), simulasi sistem, dan lain-lain.
- Embedded Software
Perangkat lunak yang digunakan untuk mengontrol suatu produk dan sistem dimana perangkat lunak tersebut disimpan. Biasanya ditempatkan di ROM, contoh Tombol di Microwave Oven
- Perangkat Lunak Komputer Pribadi (Personal Computer Software)
Banyak digunakan pada aplikasi yang bersifat perorangan, contohnya: pengolah kata, spreadsheet, game, DBMS dan lain-lain.
- Perangkat Lunak Intelegensia Buatan (Artificial Intelligent Software)
Dibuat dengan menggunakan teknik algoritma non-numerik untuk memecahkan masalah yang kompleks, digunakan dalam bidang aplikasi kecerdasan buatan, contohnya: game, expert sistem, neural network, Turbo Prolog, dan lain-lain.
Model Proses Perangkat Lunak Evolusioner
1. Model pertambahan
Model incremental menggabungkan elemen-elemen model sekuensial linier (diaplikasikan secara berulang) dengan filosofi prototype iterative. Model ini memakai urutan-urutan linier di dalam model yang membingungkan, seiring dengan laju waktu kalender. Setiap urutan linier menghasilkan pertambahan, perangkat lunak “yang bisa disampaikan.” Contoh, perangkat lunak pengolah kata yang dikembangkan dengan menggunakan paradigm pertambahan akan menyampaikan manajemen file, editing, serta fungsi penghasilan dokumen pada pertambahan pertama, dan selanjutnya. Pertambahan pertama dapat disebut sebagai produk inti (core product).
Model ini berfokus pada penyampaian produk operasional dalam Setiap pertambahanya. Pertambahan awal ada di versi stripped down dari produk akhir, tetapi memberikan kemampuan untuk melayani pemakai dan juga menyediakan platform untuk evaluasi oleh pemakai.
Perkembangan pertambahan, khususnya berguna pada staffing, tidak bisa dilakukan menggunakan implementasi lengkap oleh batas waktu bisnis yang sudah disepakati untuk proyek tersebut. jika produk inti diterima dengan baik, maka staf tambahan bisa ditambahkan untuk mengimplementasi pertambahan selanjutnya.
2. Model spiral
Awalnya diusulkan oleh Boehm (BOE88), adalah model proses perangkat lunak yang evolusioner, merangkai sifat iterative dari prototype dengan cara control dan aspek sistematis dari model sekuensial linier. Model yang berpotensi untuk pengembangan versi pertambahan perangkat lunak secara cepat. Model spiral dibagi menjadi sejumlah aktifitas kerangka kerja atau wilayah tugas, antara lain :
- Komunikasi pelanggan, tugas-tugas yang dibutuhkan untuk membangun komunikasi yang efektif diantara pengembang dan pelanggan.
- Perencanaan, tugas-tugas yang dibutuhkan untuk mendefinisikan sumber-sumber daya, ketepatan waktu, dan proyek informasi lain yang berhubungan.
- Analisis resiko, tugas-tugas yang dibutuhkan untuk menaksir resiko-resiko, baik manajemen maupun teknis.
- Perekayasaan, tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut.
- Konstruksi dan peluncuran, tugas-tugas yang dibutuhkan untuk mengkonstruksi, menguji, memasang (instal), dan memberikan pelayanan kepada pemakai (contohnya pelatihan dan dokumentasi).
- Evaluasi pelanggan, tugas-tugas untuk memperoleh umpan balik dari pelanggan dengan didasarkan pada evaluasi representasi perangkat lunak, yang dibuat selama masa perekayasaan, dan dimplementasikan selama masa pemasangan.
Model spiral menjadi pendekatan yang realistis bagi perkembangan system dan perangkat lunak skala besar. Karena perangkat lunak terus bekerja selama proses bergerak, pengembang dan pemakai memahami, dan bereaksi lebih baik terhadap resiko dari Setiap tingkat evolusi. Model spiral menggunakan prototype sebagai mekanisme pengurangan resiko.
Model spiral membutuhkan keahlian penafsiran resiko yang masuk akal, dan sangat bertumpu pada keahlian ini untuk mencapai keberhasilan. Jika sebuah resiko tidak dapat ditemukan dan diatur, pasti akan terjadi masalah. Model ini membutuhkan waktu bertahun-tahun sampai kehandalannya bisa dipertimbangkan dengan kepastian absolute.
3. Model rakitan komponen
Model ini menggabungkan beberapa karakteristik model spiral. Bersifat evolusioner, sehingga membutuhkan pendekatan iterative untuk menciptakan perangkat lunak. Tetapi model ini merangkai aplikasi dari komponen perangkat lunak sebelum dipaketkan (kadang disebut kelas).
Aktivitas perangkat lunak dimulai dengan identifikasi calon kelas. Dipenuhi dengan mengamati data yang akan dimanipulasi oleh aplikasi dan algoritma-algoritma yang akan diaplikasikan. Data dan algoritma yang berhubungan dikemas ke dalam kelas. Kelas-kelas tersebut disimpan dalam class library (tempat penyimpanan).
Model ini membawa pada penggunaan kembali perangkat lunak, dan kegunaan kembali itu memberi sejumlah keuntungan yang bisa diukur pada rekayasa perangkat lunak.
4. Model perkembangan konkruen
Representasi aktivitas dalam model ini, meliputi aktivitas analisis, bisa berada dalam salah satu dari keadaan-keadaan yang dicatat pada saat tertentu. Dengan cara yang sama, aktivitas yang lain (desain atau komunikasi pelanggan) dapat direpresentasikan dalam sebuah sikap yang analog. Semua aktifitas ada secara konkruen tetapi dia tinggal didalam keadaan yang berbeda. Model ini sering digunakan sebagai paradigm bagi pengembangan aplikasi klien/server.
Kenyataanya model proses konkruen bisa diaplikasikan ke dalam semua tipe perkembangan perangkat lunak, dan memberikan gambaran akurat mengenai keadaan tertentu dari sebuah proyek. Selain membatasi ajtivitas perekayasa ke dalam sederetan kejadian, model proses juga mendefinisikan jaringan aktivitas.
Manajemen Proyek Perangkat Lunak
Ada 3 fokus manajemen proyek perangkat lunak (PL) :
-
People (manusia)
Mempertinggi kesiapan organisasi PL untuk mengerjakan aplikasi yang semakin kompleks.
-
Problem (masalah)
Objektifitas dan ruang lingkupnya harus ditetapkan, pemecahan alternatifnya harus dipertimbangkan, teknik dan batasanpun harus didefinisikan
-
Process (proses)
Memberikan suatu kerangka kerja dimana rencana komprehensif bagi pengembangan perangkat lunak.
Manajemen Proyek Perangkat Lunak Adalah aktifitas dalam memanajemen rekayasa perangkat lunak, dimulai sebelum aktifitas teknis di inisialisasi dan berlanjut pada keseluruhan batasan, perkembangan dan pemeliharaan perangkat lunak komputer.
Proses-Proses Dalam Manajemen Proyek
Manajemen proyek merupakan lapisan pertama dalam proses rekayasa perangkat lunak skala besar. Untuk menuju pada proyek yang berhasil, perlu dimengerti tentang :
- Lingkup pekerjaan
- Resiko yang dapat ditimbulkan
- Sumber-sumber yang diperlukan
- Tugas yang harus dilaksanakan
- Patokan yang harus diikuti
- Usaha atau biaya yang dikeluarkan
- Penjadwalan
1. Awal Proyek Perangkat Lunak
Untuk mengestimasi biaya, pembagian tugas, dan penjadwalan, sebelum sebuah proyek direncanakan perlu :
- Memastikan tujuan dan ruang lingkup
- Memperhatikan alternatif-alternatif solusi
- Identifikasi batasan teknik dan manajerial
2. Pengukuran dan Satuan Ukuran
Pengukuran dan satuan ukuran akan membantu untuk mengerti proses-proses dalam pengembangan produk dan produk itu sendiri. Proses dan produk diukur dalam usaha untuk meningkatkan kualitasnya.
3. Estimasi
Dalam aktifitas utama proyek yaitu perencanaan, dilakukan estimasi :
- Sunber daya manusia (ukuran orang/bulan)
- Jangka waktu kronologis (Ukuran waktu kalender)
- Biaya (Ukuran uang Rp)
4. Analisis Resiko
Analisis resiko sangat penting dalam manajemen proyek perangkat lunak. Beberapa hal yang harus diperhatikan berkaitan dengan resiko adalah ;
- Masa yang akan dating : resiko apa yang mempengaruhi trend (kecenderungan) proyek perangkat lunak
- Perubahan : Bagaimana perkembangan dunia mempengaruhi keawetan dan kesuksesan perangkat lunak
- Pilihan : metode apa yang dipakai, berapa orang diperlukan, seberapa tinggi kualitas perangkat lunak dan sebagainya
Analisis resiko merupakan serangkaian langkah untuk menyiasati resiko, yaitu:
- Resiko proyek : masalah pembiayaan, penjadwalan, personil, sumber daya, pelanggan dan kebutuhan dikaitkan dengan akibatnya terhadap pelanggan.
- Resiko teknis : masalah desain, implementasi, antarmuka, verifikasi dan pemeliharaan.
- Resiko bisnis : termasuk di dalamnya adalah resiko pasar, resiko manajemen, dan resiko pembiayaan.
5. Perkiraan resiko
Memperhitungkan lebih lanjut estimasi resiko dalam bentuk : [ri, li, xi] dengan
- ri : resiko
- li : kemungkinan terjadinya
- xi : akibat dari resiko dengan memprioritaskan resiko dan memulai memikirkan cara mengendalikan dan atau mengurangi resiko yang mungkin terjadi
Disebut juga estimasi resiko, adalah usaha untuk mengukur setiap resiko dengan 2 cara :
- Kemungkinan adanaya resiko
- Konsekuensi (masalah yang bisa timbul karena resiko)
Ada 4 aktivitas estimasi resiko :
- Memastikan skala yang merefleksikan kemungkinan resiko
- Memperkirakan konsekuensi resiko
- Estimasi efek dari resiko pada proyek dan produk
- Menentukan akurasi keseluruhan dari proyeksi resiko
6. Penjadwalan
Langkah-langkah yang dilakukan dalam penjadwalan :
- Identifikasi sekumpulan tugas
- Pastikan keterkaitan antar tugas
- Estimasi usaha untuk tiap-tiap tugas
- Tentukan pekerja dan sumber-sumber lainnya
- Buat jaringan tugas
- Buat jadwal kerja berdasarkan waktu
7. Penelusuran Dan Pengendalian
Penelusuran dan pengendalian dilakukan setelah ada penjadwalan yang pasti, yaitu memeriksa apakah tugas telah dilaksanakan sesuai dengan jadwal.
8. Satuan Ukuran Produktivitas Dan Kualitas Perangkat Lunak
Pengukuran perangkat lunak dilakukan untuk :
- Indikasi kualitas produk
- Perkiraan produktivitas orang-orang yang menghasilkan produk
- Perkiraan manfaat dari penerapan metode dan tools
- Membentuk dasar dari estimasi
- Menegaskan (Justify) permintaan tools baru dan pelatihan
Satuan ukuran perangkat lunak dikategorikan ke dalam :
- Satuan ukuran produktivitas : Output dari proses rekayasa
- Satuan ukuran kualitas : indikasi tingkat pemenuhan kebutuhan konsumen
- Satuan ukuran teknik : Karakteristik perangkat lunak
Kategori lain untuk pengukuran :
- Pengukuran berorientasi besarnya (Ukuran) : Besarnya perangkat lunak = jumlah baris program Pengukuran berorientasi ukuran merupakan pengukuran langsung. Pengukuran berorientasi ukuran menggunakan tabel berisi data berorientasi ukuran yang merupakan daftar proyek pengembangan perangkat lunak yang telah diselesaikan dikaitkan dengan data berorientasi ukuran untuk proyek yang bersangkutan
- Pengukuran berorientasi fungsi : fungsi = ruang lingkup informasi dan tingkat kesulitannya Merupakan pengukuran tidak langsung, yang menitikberatkan pada fungsionalitas atau utilitas program. Disebut juga metode Function Point sesuai dengan informasi yang didefinisikan sebagai :
- Jumlah masukan dari pemakai
- Jumlah keluaran dari pemakai
- Jumlah penyelidikan dari pemakai
- Jumlah file
- Jumlah antarmuka eksternal
9. Satuan Ukuran Kualitas Parangkat Lunak
Kualitas perangkat lunak dihitung pada saat proses rekayasa perangkat lunak ataupun setelah diserahkan kepada pemakai. Satuan ukuran kualitas perangkat lunak pada saat proses rekayasa :
- Kompleksitas program
- Modularitas yang efektif
- Besarnya program
Definisi pengukuran kualitas menurut Gilb :
- Kebenaran (Correctness) : Program harus bekerja dengan benar. Kebenaran merupakan tingkat perangkat lunak bekerja sesuai dengan fungsi yang dibutuhkan pengukuran yang umum adalah cacat (defect) /KLOC
- Perawatan (Maintainability) : Kemudahan perbaikan jika ada kesalahan, penyesuaian terhadap perubahan lingkungan atau peningkatan sesuai permintaan pemakai.
- Integritas (Integrity) : Pengukuran tingkat ketahanan perangkat lunak terhadap serangan (disengaja/tidak) pada program, data dan dokumen
- Kegunaan (Usability) : Berkaitan dengan kemudahan pemakaian yang diukur berdasarkan keahlian yang diperlukan untuk mempelajari sistem, waktu yang dibutuhkan untuk dapat menggunakan sistem, peningkatan produktivitas dengan penggunaan sistem dan perkiraan yang sifatnya subjektif pada kelakuan pemakai
Menurut Basili dan Zelkowitz ada 5 faktor yang mempengaruhi produktivitas perangkat lunak :
- Faktor manusia : jumlah dan tingkat keahlian tim
- Faktor masalah : tingkat kerumitan masalah yang harus dipecahkan
- Faktor proses : teknik analisis dan desain, bahasa dan tools
- Faktor produk : keandalan dan performansi sistem berbasis computer
- Faktor sumber daya : ketersediaan tools, sumber-sumber perangkat keras dan perangkat lunak
Semoga informasi ini bermanfaat.