PENDAHULUAN
 
1.       Apakah Perangkat Lunak?
 
2.       Apakah Rekayasa Perangkat Lunak (RPL) ?
 
3.       Apa perbedaan antara RPL dengan ilmu komputer (computer  science) ?
 
4.       Apa perbedaan RPL dan rekayasa sistem ?
 
5.       Apa yang dimaksud dengan proses perangkat lunak ?
 
6.       Apakah model proses perangkat lunak ?
 
7.       Berapa biaya rekayasa perangkat lunak ?
 
8.       Apa saja metode-metode RPL ?
 
9.       Apa yang dimaksud dengan CASE (Computer-Aided Software  Engineering) ?
 
10.   Apakah atribut-atribut perangkat lunak yang baik ?
 
11.   Apa tantangan kunci yang dihadapi RPL ?
 
 
 
PERANGKAT LUNAK
 
Perangkat Lunak (Software) tidak sama dengan program  komputer. Perangkat lunak tidak hanya mencakup program, tetapi juga  semua dokumentasi dan konfigurasi data yang berhubungan, yang diperlukan  untuk membuat agar program beroperasi dengan benar.
 
Sistem Perangkat Lunak terdiri dari :
 
-  Sejumlah program yg terpisah
-  File-file konfigurasi
- Dokumentasi sistem
-  Dokumentasi User
 
Dua tipe produk perangkat lunak :
 
-  Produk Generik à Sistem stand-alone standar yg diproduksi  oleh organisasi pengembang dan dijual ke pasar terbuka ke siapapun yg  membelinya. Biasa disebut sebagai software shrink-wrapped. Contoh  : pengolah kata (word processor).
-  Produk pesanan (yang disesuaikan) à Sistem yg dipesan oleh  pelanggan tertentu. Dikembangkan khusus bagi pelanggan oleh kontraktor  perangkat lunak. Contoh : Sistem untuk mendukung proses bisnis tertentu  dan sistem kontrol lalu lintas udara.
 
Perbedaan PENTING  antara tipe2 perangkat lunak :
 
a.         Pada produk generik, organisasi yang mengembangkan  perangkat lunak mengontrol spesifikasi perangkat lunak.
 
b.         Pada produk pesanan, spesifikasi biasanya dikembangkan dan  dikontrol oleh organisasi yang membeli perangkat lunak tersebut.
 
REKAYASA PERANGKAT LUNAK
 
RPL atau Software Engineering (SE) à Disiplin ilmu  yang membahas semua aspek produksi perangkat lunak, mulai dari tahap  awal spesifikasi sistem sampai pemeliharaan sistem setelah digunakan.  Ada 2 istilah kunci disini :
 
a.    “disiplin rekayasa” à Perekayasa membuat suatu alat bekerja.   Menerapkan teori, metode, dan alat bantu yang sesuai, selain itu mereka  menggunakannya dengan selektif dan selalu mencoba mencari solusi  terhadap permasalahan.
 
b.    “semua aspek produksi perangkat lunak” à RPL tidak hanya  berhubungan dengan proses teknis dari pengembangan perangkat lunak  tetapi juga dengan kegiatan seperti Manajemen proyek PL dan pengembangan  alat bantu, metode, dan teori untuk mendukung produksi PL.
 
 
 
Perbedaan antara RPL dengan Computer Science ?
 
Intinya, computer science berhubungan dengan teori dan  metode yang mendasari sistem komputer dan perangkat lunak, sedangkan RPL  berhubungan dengan praktek dalam memproduksi perangkat lunak.
 
Perbedaan RPL dengan Rekayasa Sistem ?
 
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
 
Serangkaian kegiatan dan hasil-hasil relevannya yang menghasilkan  perangkat lunak à sebagian besar dilakukan oleh perekayasa perangkat  lunak. Ada 4 kegiatan/aktivitas pada proses PL :
 
1.       Spesifikikasi Perangkat Lunak à Fungsionalitas perangkat  lunak dan batasan kemampuan operasinya harus didefinisikan.
 
2.       Pengembangan Perangkat Lunak à Perangkat lunak yang memenuhi  spesifikasi harus di produksi
 
3.       Validasi Perangkat Lunak à Perangkat lunak harus divalidasi  untuk menjamin bahwa perangkat lunak melakukan apa yang diinginkan oleh  pelanggan.
 
4.       Evolusi Perangkat Lunak à Perangkat lunak harus berkembang  untuk memenuhi kebutuhan pelanggan.
 
Model Proses Perangkat Lunak
 
Merupakan deskripsi yang disederhanakan dari proses perangkat lunak  di presentasikan dengan sudut pandang tertentu.
 
Bisa mencakup kegiatan yang merupakan bagian dari proses perangkat  lunak, produk perangkat lunak, dan peran orang yang terlibat pada  rekayasa perangkat lunak (Perekayasa PL).
 
Contoh Jenis Model Proses PL
 
- Model      aliran kerja (workflow) à menunjukkan kegiatan       pada proses bersama dengan input, output, dan ketergantungannya.       Merepresentasikan pekerjaan manusia.
- 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.
- 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.
 
 
 
 
 
 
 
 
 
 
 
Biaya Rekayasa Perangkat Lunak
 
Umumnya sekitar 60% untuk biaya pengembangan (development)  dan 40% biaya pengujian (testing).
 
Distribusi biaya yang tepat selama proses perangkat lunak bergantung  pada proses yang digunakan dan jenis perangkat lunak yang dikembangkan.
 
 
 
Metode-metode RPL
 
Pendekatan-pendekatan terstruktur terhadap pengembangan perangkat  lunak mencakup model, notasi, aturan, saran pengembangan sistem  (rekomendasi), dan panduan proses.
 
- Deskripsi model sistem –> Deskripsi model yang harus dikembangkan  dan notasi yang digunakan untuk mendefinisikan model-model ini. Ex :  model aliran data.
-  Aturan –> Batasan yang berlaku bagi model sistem. Ex : Setiap  entitas pada model sistem harus memiliki nama yang unik.
- Rekomendasi  –> Saran dalam membentuk perancangan yang baik. Ex :  Tidak ada objek yang memiliki lebih dari tujuh sub-objek yang  berhubungan dengannya.
-  Panduan Proses  –> Aktifitas yang bisa diikuti untuk  mengembangkan model sistem. Ex : Atribut objek harus didokumentasi  sebelum mendefinisikan operasi yang berhubungan dengan objek.
 
 
 
 
 
CASE (Computer-Aided Software Engineering)
 
Mencakup berbagai macam program yang digunakan untuk mendukung  kegiatan PL seperti analisis persyaratan, pemodelan sistem, debugging,  dan pengujian.
 
Atribut-atribut PL yang baik
 
n  Perangkat Lunak seharusnya memberikan user kebutuhan  fungsionalitas dan kinerja yang :
 
1.       Dapat dipelihara (Maintanability) à PL harus dapat  memenuhi perubahan kebutuhan user.
 
2.       Dapat diandalkan (Dependability) à PL  harus dapat dipercaya dan tidak menyebabkan kerusakan fisik atau ekonomi  jika terjadi kegagalan sistem.
 
3.       Efisien à PL harus efisien dalam penggunaan sumber daya  sistem.
 
4.       Kemampupakaian (Usability) à PL harus  dapat dipakai sesuai dengan yang direncanakan. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tantangan Kunci yang dihadapi RPL ?
 
- Tantangan Warisan (Legacy) à      Tantangan memelihara dan  meng-update PL sedemikian sehingga biaya yg      berlebihan dapat  dihindari dan layanan bisnis yg penting tetap dilakukan.
- Tantangan      Heterogenitas à      Tantangan teknik pengembangan  untuk membangun perangkat lunak yang dapat      diandalkan dan cukup  flexibel untuk menghadapi heterogenitas yang ada.
- Tantangan Pengiriman      à      Tantangan mempersingkat waktu kirim  sistem besar dan kompleks, tanpa      mengurangi kualitas sistem.