Definisi Software Engineering
Software Engineering (Rekayasa Perangkat Lunak) adalah ilmu yang mempelajari tehnik pembuatan software yang baik dengan pendekatan tehnik (Engineering approach).Menurut Fritz Badar, software engineering adalah disiplin ilmu yang menerapkan prinsip-prinsip engineering agar mendapatkan software yang ekonomis yang dapat dipercaya dan bekerja lebih efisien pada mesin yang sebenarnya.
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).
- Waktu : Bagaimana suatu Perangkat Lunak dapat menghasilkan Kinerja Yang Tinggi Dalam Waktu yang Tepat
- Biaya : Bagaimana Menghasilkan Perangkat Lunak Yang Biaya Produksi Dan perawatannya yang rendah
- Kinerja : Bagaimana Perangkat Lunak Dapat Bekerja di Berbagai Platform Yang berbeda
1. Metode
Metode ini terdiri dari serangkaian tugas :
- Perencanaan & estimasi proyek
- Analisis kebutuhan sistem dan software
- Desain struktur data
- Arsitektur program dan prosedur algoritma
- Coding, Testing dan pemeliharaan
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
- CASE yaitu suatu software yang menggabungkan software, hardware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
- Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
- Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE
Prosedur terdiri dari :
- urut-urutan di mana metode tersebut diterapkan
- dokumen, laporan-laporan, formulir-formulir yang diperlukan
- mengontrol kualitas software
- mengkoordinasi perubahan yang terjadi pada software
Model Software Engineering
Sedangkan dalam penguasaan atas model software engineering atau software engineering paradigm, dikenal ada 4 metode yang luas dipergunakan, yaitu :A. Linear Model
Untuk menggunakan metode ini, user requirement yang ada haruslah sudah dimengerti dengan baik oleh kedua belah pihak, sehingga tidak akan terjadi pengulangan fase yang telah terlewati dalam perkembangan suatu sistem.Ada beberapa jenis yang dapat digunakan dalam metode ini, yaitu :
1. Model Waterfall – Classic Life Cycle Paradigm
a. System Engineering
Karena software merupakan bagian terbesar dari sistem, maka pekerjaan dimulai dengan cara menerapkan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan elemen lain, seperti Hardware, Software, dan Database
b. Analisis kebutuhan software
Suatu proses pengumpulan kebutuhan software untuk mengerti sifat-sifat program yang dibentuk software engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan interface terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan direview / dibahas / ditinjau bersama-sama customer.
c. Design
Proses desain menterjemahkan kebutuhan ke dalam representasi software yang dapat diukur kualitasnya sebelum mulai coding. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.
d. Coding
Bentuk rancangan diubah menjadi suatu bahasa pemrograman yang dapat dimengerti oleh mesin komputer.
e. Testing
Segera sesudah objek program dihasilkan, pengetesan program dimulai. Proses testing difokuskan pada logika internal software. Jaminan bahwa semua pernyataan atau statements sudah dites dan lingkungan external menjamin bahwa definisi input akan menghasilkan output yang diinginkan.
f. Maintenance
Software yang sudah dikirim ke customer data berubah karena
- Software mengalami error
- Software harus diadaptasi untuk menyesuaikan dengan lingkungan external, misalnya adanya sistem operasi baru atau peripheral baru.
- Software yang lebih disempurnakan karena adanya permintaan dari customer.
- Proyek yang sebenarnya jarang mengikuti aliran sequential yang ditawarkan model ini. Iterasi (Pengulangan) selalu terjadi dan menimbulkan masalah pada aplikasi yang dibentuk oleh model ini.
- Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara explisit (jelas).
- Customer harus sabar karena versi program yang jalan tidak akan tersedia sampai proyek software selesai dalam waktu yang lama.
B. Model Prototyping
Ada 2 bentuk dari model ini, yaitu :a. Paper Prototype
Menggambarkan interaksi manusia dan mesin dalam sebuah bentuk yang memungkinkan user mengerti bagaimana interaksi itu terjadi.
b. Working Prototype
Adalah prototype yang mengimplementasikan beberapa bagian dari fungsi software yang diinginkan seperti pada pendekatan pengembangan software. Model ini dimulai dengan :
- Pengumpulan kebutuhan developer dan customer
- Menentukan semua tujuan software
- Mengidentifikasi kebutuhan-kebutuhan yang diketahui
Pada model ini biaya analisis kebutuhan pelanggan meningkat, tetapi biaya-biaya lain seperti untuk perancangan, pengujian, penulisan dokumen terperinci dan perawatan perangkat lunak akan berkurang.
Kekurangan model prototype adalah :
- Sedikitnya analisis menyebabkan miskin akan dokumen dan sulit untuk mengelola dan mengendalikan tahapan-tahapan.
- Pengembang sering membuat kompromi implementasi untuk membuat prototip bekerja dengan cepat, tetapi ketika sistem digabung, ternyata tidak sesuai dengan keinginan, kualitas dan pemakaian jangka panjang.
- Anggapan disisi pemakai bahwa perubahan dapat dilakukan dengan mudah dan secepat prototip.
- Harapan pemakai kadang-kadang tidak realistik, mereka meminta lebih banyak setelah melihat prototip karena itu dibutuhkan perencanaan dan pengendalian yang baik untuk memperoleh waktu penyelesaian yang tepat.
C. Iterative Model
Metode yang merupakan pengembangan dari prototyping model dan digunakan ketika requirement dari software akan terus berkembang dalam tahapan-tahapan pengembangan aplikasi tersebut. Sedikit pengertian tentang requirement software dari developer yang diterapkan pada tahap pertama iterasi, akan mendapatkan tanggapan dari user. Ketika requirementmenjadi jelas, tahapan iterasi selanjutnya akan dilaksanakan.
Beberapa tipe dari Iterative Model di antaranya :
1. Model Spiral
Model spiral dikembangkan untuk mengabungkan kelebihan model Waterfall dan Prototyping dengan menambahkan elemen baru yaitu analisis resiko. Model ini berpotensi untuk pengembangan versi pertambahan software secara cepat. Dalam tiap iterasinya, proses software development mengikuti tahap-tahap fase linier, dan dalam akhir tiap fasenya, user mengevaluasi software tesrebut dan memberikan feed back. Proses iterasi berlangsung terus dalam pengembangan software tersebut.
Kekurangan model spiral adalah sulitnya untuk meyakinkan konsumen (khusunya dalam situasi kontrak) bahwa pendekatan evolusioner bisa dikontrol. Model spiral memerlukan keahlian penaksiran risiko yang msuk akal , dan sangat bertumpu pada keakhlian ini untuk mencapai keberhasilan. Jika resiko mayor tidak ditemukan dan diatur, pasti akan terjadi masalah. Akhirnya model itu sendiri masih baru dan belum dipergunakan secara luas seperti paradigma sekuensial dan prototipe.
2. Incremental Development
Pengembangan sistem berdasarkan model sistem yang dipecah sehingga model pengembangannya secara increment/bertahap. Kebutuhan pengguna diprioritaskan dan prioritas tertinggi dimasukkan dalam awal increment. Setelah pengembangan suatu increment dimulai, kebutuhan dibekukan dulu hingga increment berikutnya dimulai
Keuntungan
- Nilai penggunan dapat ditentukan pada setiap increament sehingga fungsionalitas sistem disediakan lebih awal,
- Increment awal berupa prototype untuk membantu memahami kebutuhan pada increment berikutnya,
- Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem,
- Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji.
Setelah kita membahas beberapa permodelan rekayasa perangkat lunak, diantaranya model waterfall, model spiral, model incremental dan iterative model, maka dalam pembahasan kali ini kita akan membahas perbandingan model rekayasa perangkat lunak tersebut.
Kita akan membahas 3 model perbandingan , yaitu waterfall, spiral dan incremental, kapan sebaiknya model-model tersebut digunakan dalam pengembangan software. Sebaiknya model tersebut digunakan jika :
No
|
Faktor
|
Waterfall
|
Spiral
|
Incremental
|
1
|
Proyek dengan ukuran resiko
|
Kecil
|
Sedang
|
Besar
|
2
|
Ukuran Software
|
Kecil
|
Besar
|
Besar
|
3
|
Jenis aplikasi
|
Biasa
|
Agak biasa
|
Tidak biasa
|
4
|
Fleksibel terhadap perubahan (waktu)
|
Rendah
|
Perubahan awal
|
Perubahan selama proyek berlangsung
|
5
|
Keterlibatan konsumen
|
Rendah
|
Sedang
|
Tinggi
|
6
|
Bahasa pemrograman
|
Prosedural
|
Prosedural, OOP
|
OOP
|
Perbandingan tentang kelebihan dan kekurangan setiap model pada Software Development Life Cycle (SDLC) ini dijelaskan berikut ini
1. Waterfall
Kelebihan :
- Merupakan model pengembangan paling handal dan paling lama digunakan.
- Cocok untuk system software berskala besar.
- Cocok untuk system software yang bersifat generic.
- Pengerjaan project system akan terjadwal dengan baik dan mudah dikontrol.
Kekurangan :
- Persyaratan system harus digambarkan dengan jelas.
- Rincian proses harus benar-benar jelas dan tidak boleh berubah-ubah.
- Sulit untuk mengadaptasi jika terjadi perubahan spesifikasi pada suatu tahapan pengembangan
2. Iterasi
Kelebihan :
- Dapat mengakomodasi jika terjadi perubahan pada tahapan pengembangan yang telah dilaksanakan.
- Dapat disesuaikan agar system bisa dipakai selama hidup software computer.
- Cocok untuk pengembangan sistem dan perangkat lunak skala besar.
- Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tahapan karena system terus bekerja selama proses.
Kekurangan :
- Hanya berlaku untuk Short-Lifetime system.
- Tahapan proses tidak terlihat sedang berada ditahapan mana suatu pekerjaan.
- Memerlukan alat ukur kemajuan secara regular.
- Perubahan yang sering terjadi dapat merubah struktur system.
- Memerlukan tenaga ahli dengan kemampuan tinggi.
3. Rapid Application Development / RAD
Kelebihan :
- RAD mengikuti tahapan pengembangan sistem sepeti umumnya, tetapi mempunyai kemampuan untuk menggunakan kembali komponen yang ada (reusable object).
- Setiap fungsi dapat dimodulkan dalam waktu tertentu dan dapat dibicarakan oleh tim RAD yang terpisah dan kemudian diintegrasikan sehingga waktunya lebih efesien.
Kekurangan :
- Tidak cocok untuk proyek skala besar.
- Proyek bisa gagal karena waktu yang disepakati tidak dipenuhi.
- Sistem yang tidak bisa dimodularisasi tidak cocok untuk model ini.
- Resiko teknis yang tinggi juga kurang cocok untuk model ini.
4. Model prototyping
Kelebihan :
- Prototype melibatkan user dalam analisa dan desain.
- Punya kemampuan menangkap requirement secara konkret daripada secara abstrak.
- Untuk digunakan secara standalone.
- Digunakan untuk memperluas SDLC.
- Mempersingkat waktu pengembangan Sistem Informasi
Kekurangan :
- Proses analisis dan perancangan terlalu singkat.
- Mengesampingkan alternatif pemecahan masalah.
- Bisanya kurang fleksible dalam mengahdapi perubahan.
- Protitype yang dihasilkan tidak selamanya mudah dirubah
- Protype terlalu cepat selesai
Makasih buat info tentang pengertian software engineeringnya
Nice info :)
Thanks
Buat refrensi sangat lengkap , terima kasih mas, sangat bermanfaat
Maju terus blog nya
Postnya cukup bermanfaat :D
Permisi ya numpang posting
Terima jasa pembuatan software komputer/sistem informasi (sistem informasi hotel, guest house, klinik, akademik sekolah, dll). Hubungi Fernandes 083834375641/ 75286D3B/ http://cvelecomp.com
very good
BONUS CUMA-CUMA senilai JUTAAN RUPIAH jika berlangganan!!! Dicari Agen Pakaian di Kalimantan, Sulawesi, Papua, Jawa, Sumatera, dan seluruh Indonesia. Kami memproduksi beraneka macam pakaian pria, wanita, busana muslim, jilbab, batik, baju koko / taqwa, aksesoris, dan lainnya. Model pakaian modern, Kualitas bagus dan Harga murah. Khusus pembelian grosir / partai. Segera hubungi 083834375641 [0.8.3.8.3.4.3.7.5.6.4.1] / Line : x0fernandes0x
Kalau berkenan menambahkan dan sedikit meluruskan, bahwa yang pertama kali mencetuskan istilah "software engineering" adalah Anthony A. Oettinger di majalah ACM Communication tahun 1965. Selengkapnya bisa dibaca pada artikel kami "Sejarah Otentik Software Engineering" http://kivli.com/?p=102
Kalau berkenan menambahkan dan sedikit meluruskan, bahwa yang pertama kali mencetuskan istilah "software engineering" adalah Anthony A. Oettinger di majalah ACM Communication tahun 1965. Selengkapnya bisa dibaca pada artikel kami "Sejarah Otentik Software Engineering" http://kivli.com/?p=102
Thanks gan
Thanks gan
Makasih gan
Terimakasih.. tulisannya sangat bermanfaat..
My blog
Terimakasih saya jadi semakin tahu tentang Software Engineering fungsinya dalam dunia komputer
Sangat bermanfaat :)
My blog
terima kasih, sangat bermanfaat
My blog
Terimakasih gan sangat membantu
blog
good
My blog