Tugas Review 1 Rekayasa Perangkat Lunak oleh Rizki Cahyana

Tugas Review 1 Rekayasa Perangkat Lunak
oleh Rizki Cahyana (1307698)
(Diajukan untuk memenuhi tugas individu Mata Kuliah Rekayasa Perangkat Lunak pada Sabtu, 14 Februari 2015 Kelas A 2013 Program Studi Pendidikan Ilmu Komputer Fakultas Pendidikan Matematika dan Ilmu Pengetahuan Alam Universitas Pendidikan Indonesia yang diampu oleh Eddy Prasetyo Nugroho, M.T.)

Definisi

Rekayasa Perangkat Lunak tersusun oleh kata rekayasa dan gabungan kata perangkat lunak. Rekayasa dalam bahasa Inggris adalah engineering yang bermakna (1) penerapan, pengaplikasian, pemakaian, atau pengimplementasian science untuk menyelesaikan masalah praktis; (2) pembuatan sesuatu yang sebelumnya belum ada atau dengan kata lain penemuan teknologi. Berdasarkan perkuliahan Konsep Teknologi yang diampu oleh Budi Laksono Putro, M.T. pada Kelas A 2013 Program Studi Pendidikan Ilmu Komputer FPMIPA UPI, rekayasa dapat dilakukan karena adanya konsep yang mendasarinya; konsep dapat muncul karena adanya tujuan yang melatarbelakanginya; dan tujuan hanya muncul karena adanya masalah yang dihadapi.

Kemudian, Pressman (2005) mengungkapkan bahwa Perangkat Lunak adalah (1) instruksi (program komputer) yang bila dieksekusi dapat menjalankan fungsi tertentu; (2) struktur data yang dapat membuat program memanipulasi informasi; dan (3) dokumen yang menjelaskan operasi dan penggunaan program. Berdasarkan IEEE (1993), Perangkat Lunak adalah program komputer, prosedur, aturan, dan dokumentasi yang berkaitan, serta data yang bertalian dengan operasi suatu sistem komputer.

Rekayasa Perangkat Lunak didefinisikan sebagai: (1) Fritz Bauer (dalam Pressman, 2005: 20), “pembuatan dan penggunaan prinsip-prinsip keahlian teknik untuk mendapatkan perangkat lunak yang ekonomis, andal, dan bekerja secara efisien pada mesin yang sesungguhnya”; (2) penerapan pendekatan yang sistematis, disiplin, dan terukur untuk pengembangan, operasi, dan pemeliharaan perangkat lunak (IEEE, 1993); (3) sebuah prinsip tentang perekayasaan yang berhubungan dengan semua aspek berkenaan dengan pembuatan perangkat lunak dari tahap awal spesifikasi sistem hingga perawatan sistem setelah memasuki tahap penggunaan (Sommerville, 2001: 6); (4) aplikasi dari prinsip-prinsip sains untuk: (a) mengurutkan transformasi masalah menjadi solusi yang dapat bekerja dengan baik; dan (b) urutan pemeliharaan perangkat lunak tersebut sampai tidak dapat digunakan lagi (Alan M. Davis); (5) tahapan-tahapan terkait secara sistematis dalam produk perangkat lunak (Perkuliahan Rekayasa Perangkat Lunak Kelas A 2013).
Sederhananya, Rekayasa Perangkat Lunak adalah suatu proses rancang bangun perangkat lunak pada komputer secara ekonomis, andal, dan efisien dengan pendekatan sistematis, disiplin, dan terukur yang diharapkan mampu menghasilkan solusi atas masalah tertentu yang dapat bekerja dengan baik pada mesin yang sesungguhnya.

Menurut Pressman (2005:20-21), secara umum Rekayasa Perangkat Lunak dapat dibagi menjadi tiga layer, meliputi:

  1. Process Model; sebagai fondasi, tumpuan, atau penyangga dari RPL yang mendefinisikan sebuah framework untuk sekumpulan key process area yang harus dibangun demi keefektifan penyampaian teknologi pengembangan RPL;
  2. Methods; sebagai komponen yang menyediakan, memandu, atau mengarahkan secara teknis bagaimana untuk membangun suatu perangkat lunak;
  3. Tools; sebagai komponen yang menyediakan dukungan otomatis dan semi otomatis untuk process model dan methods;
  4. Quality Focus; sebagai batu landasan yang menopang tools, methods, dan process dalam RPL.

layer

Gambar Layer Rekayasa Perangkat Lunak

Model Proses Rekayasa Perangkat Lunak

Representasi yang disederhanakan dari proses perangkat lunak yang dipresentasikan melalui sudut pandang tertentu dikenal sebagai Model Proses Perangkat Lunak. Secara garis besar, model proses rekayasa perangkat lunak terbagi ke dalam dua kategori, yaitu: (1) konvensional, dan (2) iteratif atau evolusioner.

Konvensional
Model proses yang termasuk ke dalam model konvensional adalah sebagai berikut:

  1. Work Flow Model (Aliran Kerja); menunjukkan kegiatan-kegiatan pada proses bersama dengan input, output, dan kebergantungannya serta merepresentasikan pekerjaan manusia;
  2. Data Flow Model (Aliran Data); merepresentasikan proses sebagai suatu set atau paket kegiatan yang melakukan transformasi data serta menunjukkan bagaimana input ditransformasikan ke proses;
  3. Model Peran atau Aksi; merepresentasikan peran orang yang terlibat pada perangkat lunak dan kegiatan yang menjadi tanggung jawab mereka;
  4. Water Fall Model (Air Terjun); merupakan model yang mengimplementasikan model Software Development Life Cycle (SDLC) dan pertama kali digunakan dalam pengembangan perangkat lunak (Royce, 1970). Berikut ini adalah gambar model air terjun menurut dua orang ahli.

pressman

Water Fall menurut Pressman

sommerville

Water Fall menurut Sommervile

       Adapun langkah-langkah yang penting di dalam model ini adalah sebagai berikut:

  • Penentuan dan Analisis Spesifikasi
    Di tahap ini, proses pengumpulan kebutuhan diintensifkan dan difokuskan, khususnya pada perangkat lunak dengan maksud untuk memahami sifat program yang akan dibangun. Perancang perangkat lunak harus memahami kebutuhan informasi, fungsi-fungsi, ujuk kerja, dan interface yang diperlukan.
  • Perancangan Sistem dan Perangkat Lunak
    Pada tahap ini, proses Desain Sistem akan membagi kebutuhan‐kebutuhan menjadi sistem perangkat lunak atau perangkat keras yang pada akhirnya menghasilkan sebuah arsitektur sistem secara keseluruhan; Sedangkan Desain Perangkat Lunak sebagai multi langkah yang berfokus pada empat atribut sebuah program yang berbeda, yakni meliputi: struktur data, arsitektur perangkat lunak, representasi interface, dan algoritma prosedural;
  • Implementasi dan Uji Coba Unit  
    Selanjutnya, pada tahap ini desain perangkat lunak diimplementasikan ke dalam bentuk yang dapat dimengerti, dibaca, atau diterjemahkan oleh komputer (dalam konteks ini, lazimnya adalah dalam bentuk bahasa pemrograman tertentu). Selanjutnya, Uji Unit memastikan bahwa setiap unit telah sesuai dengan spesifikasi;
  • Integrasi dan Uji Coba Sistem  
    Pada tahap ini, unit program diintegrasikan dan diujicobakan menjadi sistem yang lengkap untuk memastikan bahwa segala persyaratan perangkat lunak telah terpenuhi. Setelah diuji coba, sistem disampaikan ke pelanggan untuk digunakan seluas-luasnya;
  • Operasi dan Pemeliharaan  
    Tahap ini mengonsumsi waktu yang relatif lebih panjang. Perangkat lunak dipasang dan digunakan secara besar-besaran kepada khalayak. Perangkat lunak berpotensi mengalami perubahan setelah disampaikan kepada pelanggan, diakibatkan oleh kesalahan-kesalahan yang ditentukan (dalam konteks ini perangkat lunak harus disesuaikan untuk mengakomodasi perubahan-perubahan tertentu di dalam lingkungan eksternalnya, dan seterusnya). Pemeliharaan perangkat lunak akan mengaplikasikan lagi setiap fase sebelumnya, kemudian memperbaiki program sebelumnya tanpa membuat perangkat lunak baru.

Kelebihan:

  • Mudah diaplikasikan;
  • Memberikan template standar tentang metode analisis, desain, pengkodean, pengujian, dan pemeliharaan;
  • Cocok digunakan untuk produk perangkat lunak yang segala kebutuhannya sudah jelas atau terperinci di awal, sehingga minim kesalahannya.

Kekurangan:

  • Bersifat kaku sehingga cenderung sulit untuk melakukan perubahan pada sistem perangkat lunak;
  • Terjadi pembagian proyek menjadi tahap-tahap yang tidak fleksibel dikarenakan komitmen harus dilakukan pada tahap awal proses ini;
  • Pelanggan harus bersabar untuk menanti produk selesai dikarenakan perangkat lunak dikerjakan secara per tahap;
  • Perubahan di tengah-tengah pengerjaan perangkat lunak berpotensi membuat bingung team work yang sedang bekerja;

 

Prototyping Model

Berfungsi sebagai mekanisme pendefinisian kebutuhan. Pertama, developer menggali semua kebutuhan user secara cepat, kemudian membangun prototipe yang sesuai dengan yang diinginkan dengan cepat pula dan ditunjukkan ke user, baru dibuat perangkat lunak yang sesungguhnya berdasarkan komentar user terhadap prototipe.

prototyping

Gambar Prototyping Model

Kelebihan:

  • Menghemat waktu pengembangan;
  • Adanya komunikasi yang baik antara pengembang dan pelanggan;
  • Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan;
  • Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya.

Kekurangan:

  • Pada prototype tentu saja banyak kebutuhan yang tidak di tampilkan seluruhnya karena data yang dikumpulkan hanya sebagian;
  • Prototype yang di setujui oleh client harus dikembangkan oleh developer tanpa ada data tambahan dari client dan software dari prototype harus memiliki fungsi yang lengkap;
  • Banyak ketidak sesuaian pada bentuk prototype;
  • Proses analisis dan perancangan terlalu singkat.

Rapid Application Development (RAD)

Model proses pengembangan perangkat lunak sekuensial linier yang menekankan siklus perkembangan yang sangat pendek. Menekankan pada perkembangan komponen program yang bisa dipakai lagi sehingga mendasari konsep Object-Oriented.

rapid-app-dev

Gambar Rapid Application Development

 

Iteratif atau Evolusioner

Model ini berdasarkan pada ide pengembangan implementasi awal yang akan menghasilkan komentar pemakai sehingga dapat dilakukan perbaikan melalui banyak versi sampai sistem yang mencukupi dapat dikembangan. Selain memiliki aktivitas‐aktivitas yang terpisah, model ini memberikan feedback dengan cepat dan serentak. Adapun yang tergolong ke dalam model iteratif adalah sebagai berikut:

Incremental Model

Pada model ini, proses pengerjaan perangkat lunak akan dilakukan secara modular (dalam hak ini adalah per bagian) sehingga bagian selanjutnya akan dikerjakan setelah bagian awal telah selesai, dan selanjutnya sampai menghasilkan perangkat lunak yang lengkap dengan semua fungsi yang diperlukan dan pengerjaan perangkat lunak berakhir. Sebelum pengerjaan perangkat lunak akan dilakukan perancangan arsitektur perangkat lunak sebagai kerangka dalam pengerjaan per bagian.

incremental

Gambar Incremental Model

 Kelebihan:

  • Cocok digunakan bila anggota tim proyek pengembang perangkat lunak tidak banyak atau kekurangan anggota;
  • Mampu mengakomodasi perubahan kebutuhan customer;
  • Kemudahan pemakaian sistem yang paling diutamakan karena pemrioritasan fungsi-fungsi pada sistem perangkat lunak;
  • Mengurangi trauma karena perubahan sistem sebab klien dibiasakan perlahan-lahan menggunakan produknya bagian per bagian.

Kekurangan:

  • Hanya cocok untuk proyek dengan skala kecil;
  • Hanya akan berhasil jika tidak ada staffing untuk penerapan secara menyeluruh;
  • Penambahan staf dilakukan jika hasil incremental akan dikembangkan lebih lanjut;
  • Kemungkinan tiap bagian tidak dapat diintegrasikan.

 

Spiral Model

Model ini dikenal sebagai model proses yang pendekatannya bersifat realistis pada software besar karena proses dari awal sampai proses pengiriman dan perbaikan dapat dipahami dengan baik oleh client dan developer. Model ini mempunyai rangkaian kerja yang iteratif, yakni dengan iterasi (peningkatan pada model) awal yang berbentuk prototype dan kemudian iterasi selanjutnya akan menjadi perkembangan dari model sebelumnya. Model ini dapat terus digunakan meskipun perangkat lunak sudah dikirimkan karena proses (siklus) dapat berputar lagi jika ada perubahan pada perangkat lunak sampai tidak ada permintaan perubahan pada perangkat lunak oleh client.

spiral

Gambar Spiral Model

Kelebihan:

  • Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak komputer;
  • Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses;
  • Menggunakan prototipe sebagai mekanisme pengurangan resiko dan pada setiap keadaan di dalam evolusi produk;
  • Tetap mengikuti langkah-langkah dalam siklus kehidupan klasik dan memasukkannya ke dalam kerangka kerja iteratif.

Kekurangan:

  • Banyak klien tidak percaya bahwa pendekatan secara evolusioner dapat dikontrol oleh kedua pihak. Model spiral mempunyai resiko yang harus dipertimbangkan ulang oleh klien dan developer;
  • Memerlukan tenaga ahli untuk memperkirakan resiko, dan harus mengandalkannya supaya sukses;
    Belum terbukti apakah metode ini cukup efisien karena usianya yang relatif baru;
  • Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur;

 

Referensi:

  1. Pressman, Roger S.. 2005. Software Engineering A Practitioner’s Approach. New York: Mc. GrawHill.
  2. Perkuliahan Rekayasa Perangkat Lunak yang diampu oleh Eddy Prasetyo Nugroho, M.T. pada 2 Februari 2015.
  3. Perkuliahan Konsep Teknologi yang diampu oleh Budi Laksono Putro, M.T. pada 2014.
  4. Wahyudin. Tidak diketahui. Rekayasa Perangkat Lunak [Online]. Tersedia: http://file.upi.edu/Direktori/FPMIPA/PRODI._ILMU_KOMPUTER/WAHYUDIN/MANAJEMEN_PROYEK_PERANGKAT_LUNAK.pdf. [14 Februari 2015].
  5. Wahyudin. Tidak diketahui. Metode Pengembangan Perangkat Lunak [Online]. Tersedia: http://file.upi.edu/Direktori/FPMIPA/PRODI._ILMU_KOMPUTER/WAHYUDIN/Metode_Pengembangan_PL.pdf. [14 Februari 2015].
  6. Basuki, Achmad. 2006. Model Proses Perangkat Lunak [Online]. Tersedia: http://hero.lecturer.pens.ac.id/datahero/kuliah/RPL/02%20Model%20Proses%20RPL.pdf. [12 Februari 2015].

 

*) referensi di atas sudah termasuk dengan referensi sumber yang dirujuk, baik berupa kutipan yang tidak diubah, redaksi yang diolah oleh penyusun, maupun gambar-gambar yang digunakan pada artikel ini.