Kamis, 07 Maret 2013

Tentang Rekayasa Perangkat Lunak



Istilah software engineering, pertama kali digunakan pada akhir tahun 1950-an dan sekitar awal 1960-an. Pada tahun 1968, NATO menyelenggarakan konferensi tentang software engineering di Jerman dan kemudian dilanjutkan pada tahun 1969. Meski penggunaan kata software engineering masukan konferensi tersebut menimbulkan debat tajam tentang aspek engineering dari pengembangan perangkat lunak, banyak pihak yang menganggap konferensi tersebutlah yang menjadi awal tumbuhnya profesi rekayasa perangkat lunakRekayasa perangkat lunak (RPL, atau dalam bahasa InggrisSoftware 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.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 penggunaannya5. dapat memenuhi kebutuhan yang diinginkan(usability)Apa itu Rekayasa Perangkat Lunak? Jawab: Klasik= Penerapan prinsip engineering untuk memperoleh software yang ekonomis, reliable dan bekerja efisien pada komputer.
IEEE= (1) Penerapan secara sistematis, disiplin pendekatan terukur pada pengembangan pengoperasian dan pemeliharaan software (2) Studi terhadap (1).
Jadi, Rekayasa Perangkat Lunak adalah ilmu yang membahas semua aspek produksi Perangkat Lunak, dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikas dari kebutuhan pengguna, desain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan.

Tujuan dari pembelajarn Rekayasa Perangkat Lunak adalah dimana kita bisa menekan Biaya (baik pembuatan dan perawatan) seminim dan serendah mungkin dan memanfaatkan Waktu yang diberikan secara efektif dan efisien sehingga menghasilkan Kinerja yang tinggi, andal dan tepat waktu.  Lebih mudahnya dipahami lewat gambar dibawah ini tentang tujuan Rekayasa Perangkat Lunak.

Gambar Segitiga Hubungan Biaya, Waktu, dan Kinerja
Sejarah masuknya mata kuliah Rekayasa Perangkat Lunak ke perguruan tinggi dikarenakan telah terjadinya krisis Perangkat Lunak pada tahun 1960-an. Hal ini dipicu oleh banyaknya kegagalan produksi Perangkat Lunak sehingga anggaran dana pun semakin menipis dan faktor lainnya. Selain itu, pada masa itu jugaRekayasa Perangkat Lunak hanya menjadi konsumsi bagi kalangan bisnis dan cuma berkembang di kalangan bisnis (jalan di tempat). Untuk itulah diadakan pertemuan dan akhirnya dimasukkanlah Rekayasa Perangkat Lunak di perguruan tinggi sebagai mata kuliah dengan harapan akan berkembang di masa mendatang. 
Bill Gates dengan Microsoft-nya dianggap sebagai intelektual muda yang lahir dari perguruan tinggi. Rekayasa Perangkat Lunak hanyalah sebuah teori, tetapi patut diketahui RPL berkaitan erat dengan semua bidang yang akan digeluti oleh lulusan komputer seperti, bisnis dan manajemen. Dan Bill Gates pun mengamalkan apa yang diketahuinya tentang Rekayasa Perangkat Lunak pada Microsoft.
Rekayasa disini bukan berarti konotasi negatif terhadap Perangkat Lunak.Rekayasa diarahkan kepada positif Perangkat Lunaknya. Menghasilkan yang terbaik, bermanfaat dan kemaslahatan manusia. Perkembangan hardware (perangkat keras) yang cepat membuat software (Perangkat Lunak) harus ikut menyesuaikan. ·         Berbicara tentang rekayasa perangkat lunak, bukanlah berbicara tentang pemrograman untuk membangun sebuah perangkat lunak. Apa yang dibahas di dalam rekayasa perangkat lunak adalah kegiatan-kegiatan yang dilakukan untuk membangun perangkat lunak dan kegiatan yang menaunginya sehingga perangkat lunak yang dihasilkan sesuai dengan standar mutu yang ditentukan.  Mengajarkan dan mengikuti kuliah rekayasa perangkat lunak (RPL) sama-sama tidak mudahnya. Mengajarkan suatu konsep memerlukan kreatifitas sehingga konsep tersebut tidak hanya dapat dibayangkan dan masuk akal, tapi juga menarik. Memahami suatu konsep yang tidak terpikirkan saat melakukan pemrograman memerlukan imajinasi dan analogi yang membantu diterima secara logis. Pada umumnya mahasiswa Teknik Informatika dan Sistem Informasi lebih mengutamakan pemrograman, karena menurut mereka itu adalah kemampuan inti yang harus dikuasai. Pada kenyataannya, banyak kemampuan lain yang mungkin selama ini dianggap sebelah mata, justru menjadi penopang dan penentuk proses membangun perangkat lunak: kerja sama dalam tim, kemampuan berkomunikasi, kemampuan membuat dokumentasi, kemampuan wawancara, kemampuan belajar cepat bidang lain di luar pemrograman dan sebagainya. Dalam rekayasa perangkat lunak umumnya ada beberapa kegiatan yang senantiasa ada pada model proses apapun : identifikasi kebutuhan, desain, pengkodean, penerapan dan pemeliharaan. Dari kegiatan-kegiatan yang berurutan tersebut, pengkodean baru dapat dilakukan jika kebutuhan sudah dikumpulkan dan diketahui lalu didesain. Pengkodean yang sering menjadi fokus mahasiswa ini tidak berhenti ketika selesai, tapi ada pemeliharaan yang pasti terkait juga dengan kebutuhan. Kegiatan lain yang menaungi rekayasa perangkat lunak adalah jaminan mutu perangkat lunak [SQA- Software Quality Assurance]. Pada dasarnya, setiap kegiatan memilik standar bagaimana kegiatan tersebut seharusnya dilakukan untuk menghasilkan produk yang diinginkan. Rekayasa Perangkat Lunak·         Pengantar Rekayasa Perangkat Lunak adalah kegiatan yang sistematis dalam membangun sebuah perangkat lunak untuk menjawab kebutuhan-kebutuhan satu pihak.·         Skala perangkat lunak yang dibangun beragam berdasarkan luas dan detil kebutuhan klien yang memerlukannya. Perangkat lunak yang memiliki 300.000 baris perintah dikatagorikan perangkat lunak berukuran kecil. Ukuran ini tentu besar untuk kapasitas seorang mahasiswa bidang Teknologi Informasi/Informatika. Karena itu kegiatan ini umumnya dilakukan oleh suatu tim bukan perorangan.  Kegiatan dilakukan secara sistematis. Ini tidak hanya berarti berencana, tetapi juga mengacu pada suatu model tertentu yang sesuai dan menjalani prosedur wajib. Model tertentu ini adalah model proses dan prosedur wajib adalah pengelolaan proyek dan penjaminan mutu. Model Proses Model proses menjabarkan urutan kegiatan dalam merekayasa perangkat lunak. Dari berbagai macam model proses yang dibuat oleh banyak ahli dan praktisi, ada 4 kegiatan inti yang selalu ada yaitu:  1. pengumpulan kebutuhan 2. perancangan sistem 3. pengujian sistem 4. penerapan sistem Beberapa model proses yang sudah dikenal adalah Waterfall, Increment, Spiral, Rapid Application Development, Prototying, Component -Based Development, dan Extreme Programming. Beragam model proses ini berusaha untuk menjawab atau memandu pengembangan perangkat lunak dalam berbagai kasus. Dengan demikian tidak ada model proses paling cocok untuk semua kasus rekayasa perangkat lunak. Rekayasa perangkat lunak pada umumnya dilakukan secara tim. Tim pembangun dibentuk dan dikelola dalam suatu manajemen proyek perangkat lunak. Manajemen Proyek Perangkat Lunak Mengatur dan mengkoordinasi anggota-anggota tim, sesumber yang digunakan, waktu yang tersedia untuk tiap proyek, dan komunikasi antar tim atau anggota bukanlah suatu yang mudah untuk dilakukan.  Tim pembangun perangkat lunak penting memiliki kemampuan manajemen untuk mendukung ketrampilan teknis yang dimiliki. Dalam pengerjaan suatu proyek perangkat lunak, kemampuan berkomunikasi, penggalian informasi, analisis, presentasi dan pengaturan waktu sangat penting. Ini sering tidak disadari oleh mahasiswa-mahasiswa di jurusan Teknik Informatika, Sistem Informasi atau Ilmu komputer. Banyak dari mereka berpikiran bahwa kemampuan pengkodean atau programming menjadi kemampuan yang paling mendapat prioritas.  Mengelola suatu proyek perangkat lunak juga adalah proses memastikan kualitas dari suatu proyek yang dikerjakan. Kualitas suatu software menjadi prioritas tinggi dalam pembangunanya. Karena itu ada bagian khusus dalam tim pembangun yang disebut tim penjamin mutu yang menerapkan prinsip-prinsip dalam software quality assurance. Proses Pembangunan Software Langkah penting dalam pembangunan software adalah pengamatan dan pengumpulan kebutuhan software atau yang disebut software requirement. Setelah kebutuhan didapatkan dari klien secara lengkap, maka analisis dan desain sistemdilakukan oleh tim pembangun. Desain yang juga perlu mendapat perhatian adalah User Interface Desain yaitu bagian yang berinteraksi langsung dengan pengguna software.  Setelah desain, maka tahap pengkodean dilakukan. Hasil pada tahap ini dilakukan pengujian, dan setelah lolos pengujian perangkat lunak diterapkan di lokasi klien sambil terus dilakukan pengujian menggunakan kasus-kasus yang terjadi di kondisi sebenarnya.  Pelatihan kepada pengguna perangkat lunak wajib dilakukan untuk mensukseskan penerapan. Pelatihan ini juga diharapkan dapat membantu tim pembangun dalam tahap pemeliharaan perngkat lunak. Ada kalanya perangkat lunak yang dibangun adalah suatu website, untuk itu hal-hal yang berkenaan dengan pembangunan suatu website perlu diperhatikan seperti struktur web dan keamanan terhadap integritas data. Jenis-jenis Perangkat Lunak1. Berdasarkan sudut pandang
  • Perangkat lunak sistem 
  • Perangkat lunak yang kegunaannya lebih banyak ditujukan untuk operasional komputer. Diantaranya : sistem operasi , penerjemah bahasa pemrograman (compiler/interpreter)
  • Perangkat lunak aplikasi 
  • Perangkat lunak yang kegunaannya lebih banyak ditujukan untuk membantu 
  • menyelesaikan masalalah-masalah yang dihadapi oleh pemakai. Contohnya: program paket yang sudah jadi dan program aplikasi buatan sendiri
2. Berdasarkan Aplikasinya
  1. Perangkat Lunak Sistem (Sistem Software) 
  1. Sekumpulan program yang ditulis untuk kepentingan program lain, contoh editor,driver dan lain-lain
  1. Perangkat Lunak Waktu Nyata (Real Time Software) 
  1. Perangkat lunak yang digunakan untuk mengukur/menganalisis atau mengontrol proses pemasukan data dari lingkungan luar sampai menghasilkan laporan yang diinginkan
  1. Perangkat Lunak Bisnis (Business Software) 
  1. Perangkat lunak yang memberikan fasilitas operasi untuk bisnis atau fasilitas pengambilan keputusan manajemen, contoh sistem akuntansi,inventory, payroll dan lain-lain
  1. Perangkat Lunak Rekayasa dan Sains (Engineering and Scientific Software) 
  1. 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.
  1. Embedded Software 
  1. Perangkat lunak yang digunakan untuk mengontrol suatu produk dan sistem dimana perangkat lunak tersebut disimpan. Biasanya ditempatkan di ROM, contoh Tombol di Microwave Oven
  1. Perangkat Lunak Komputer Pribadi (Personal Computer Software) 
  1. Banyak digunakan pada aplikasi yang bersifat perorangan, contohnya :pengolah kata, spreadsheet, game, DBMS dan lain-lain.
  1. 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.
c. Proses Perangkat lunak Adalah serangkaian kegiatan yang menghasilkan perangkat lunak. Terdapat 4 kegiatan pada proses perangkat lunak,yaitu :
  1. Spesifikasi perangkat lunak : mendefinisikan fungsi dan kemampuan beroperasi
  1. Pengembangan perangkat lunak : mengembangkan perangkat lunak yang sesuai dengan spesifikasi
  1. Validasi perangkat lunak : menjamin perangkat lunak sesuai dengan yang 
  1. diinginkan pelanggan.
  1. Evolusi perangkat lunak :perangkat lunak harus terus terupdate sesuai dengan 
  1. keinginan pelanggan.
1.3 Definisi Rekayasa Perangkat Lunak Rekayasa perangkat lunak (software engineering) adalah suatu proses rancang bangun. Beberapa definisi tentang rekayasa perangkat lunak :
  • Pembentukan dan penggunaan prinsip rekayasa (engineering) untuk mendapatkan 
  • perangkat lunak secara ekonomis namun andal dan dapat bekerja secara efesien 
  • pada komputer (Fritz Bauer, 1968).
  • Penerapan pendekatan yang sistematis, disiplin, dan terukur untuk 
  • pengembangan, operasi, dan pemeliharaan perangkat lunak (IEEE, 1993).
  • Suatu disiplin yang mengintegrasikan proses/prosedur, metode, dan perangkat 
  • tools untuk pembangunan perangkat lunak komputer (Pressman, 97).
  • Merupakan aplikasi dari prinsip-prinsip sains untuk mengurutkan transformasi 
  • masalah menjadi solusi yang dapat bekerja dengan baik
menciptakan sesuatu yang sifatnya khayalan logic yang di wujudkan dalam urutan- 
urutan perintah (coding) beserta data-datanya sehingga menjadi suatu aplikasi yang 
dapat digunakan. 
a. Tujuan Rekayasa Perangkat Lunak 
Menghasilkan sebuah perangkat lunak yang berkualitas. Yang dimaksud dengan 
berkualitas dapat dilihat dari tiga sisi, sisi sponsor (individu atau organisasi yang telah 
mengeluarkan biaya dalam pembangunan perangkat lunak), sisi pemakai (siapapun 
yang menggunakan perangkat lunak tersebut), sisi maintainer / modifier (yang 
memelihara dan memodifikasi perangkat lunak tersebut) dengan biaya yang efisien 
dan tepat pada waktunya. 
Untuk lebih jelasnya lihat gambar 1.1.image Gambar 1.1 Paremeter Perangkat Lunak Yang Berkualitas Berdasarkan Sudut Pandang
\
\
\
Sisi Sponsor : 
Tujuan utama sponsor adalah menghasilkan dan atau menghemat uang. Sponsor 
ingin menggunakan perangkat lunak tersebut untuk meningkatkan produktivitas 
organisasi. Sponsor mengharapkan untuk dapat menghasilkan sebuah layanan 
dengan biaya yang rendah tetapi masuk akal. Karena itu sistem yang dibuat 
harus handal, fleksibel dan efisien. Selain itu biaya dari pemeliharaan, 
modifikasi dan peningkatan dari sistem tersebut harus serendah mungkin. 
Sisi Pemakai : 
Bagi pemakai perangkat lunak adalah alat untuk membantu menyelesaikan 
tugas-tugasnya. Karena itu perangkat lunak harus menyediakan fungsi-fungsi 
yang dibutuhkan oleh pemakai. Perangkat lunak juga harus handal dan efisien, 
perangkat lunak harus dapat menghasilkan output yang konsisten. Selain itu 
pemakai harus merasa perangkat lunak yang dibuat mudah untuk dipelajari, 
mudah digunakan dan mudah untuk diingat.
Sisi Maintainer/modifier : 
Perangkat lunak tersebut memiliki sangat sedikit error pada saat penginstallan 
pertama (catatan : sangat kecil kemungkinannya untuk menghasilkan perangkat 
lunak yang 100 % bebas dari bug). Selain itu perangkat lunak tersebut harus 
terdokumentasi dengan baik. Source code juga harus mudah dibaca, terstruktur 
dan dirancang dengan baik dan bersifat modular.

Jadi Rekayasa Perangkat Lunak adalah proses manipulasi, membuat atau