-->

Pengertian Software Engineering : 4 Model Pengembangan Perangkat Lunak yang Bisa Anda Gunakan

Definisi Software Engineering

Software Engineering (Rekayasa Perangkat Lunak) adalah ilmu yang mempelajari tehnik pembuatan software yang baik dengan pendekatan tehnik (Engineering ap­proach).

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 se­benarnya.

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).
Tujuan yang akan di capai dari software Engineering adalah meliputi 3 macam yaitu:
  1. Waktu : Bagaimana suatu Perangkat Lunak dapat menghasilkan Kinerja Yang Tinggi Dalam Waktu yang Tepat
  2. Biaya : Bagaimana Menghasilkan Perangkat Lunak Yang Biaya Produksi Dan perawatannya yang rendah
  3. Kinerja : Bagaimana Perangkat Lunak Dapat Bekerja di Berbagai Platform Yang berbeda
Software engineering terdiri dari 3 elemen kunci, yaitu :

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
2. Peralatan (Tools)
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
3. Prosedur
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.
Masalah yang dihadapi dari model siklus hidup klasik/waterfall adalah :
  • 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
Pendekatan prototype untuk software engineering merupakan langkah yang terbaik ketika customer sulit menentukan input yang lebih terinci, proses yang diinginkan dan output yang diharapkan.

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 requirement
menjadi 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

18 comments

  1. Makasih buat info tentang pengertian software engineeringnya

    Nice info :)
    Thanks

  2. Buat refrensi sangat lengkap , terima kasih mas, sangat bermanfaat
    Maju terus blog nya

  3. 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

  4. very good

  5. 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

  6. Terima kasih artikel nya gan. Menambah wawasan, ditunggu artikel-artikel selanjutnya.
    Thanks Birrul Walidain

  7. 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

  8. 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

  9. Thanks gan

  10. Thanks gan

  11. Makasih gan

  12. Terimakasih.. tulisannya sangat bermanfaat..
    My blog

  13. Terimakasih.. tulisannya sangat bermanfaat..
    My blog

  14. Terimakasih saya jadi semakin tahu tentang Software Engineering fungsinya dalam dunia komputer

    Sangat bermanfaat :)

    My blog

  15. terima kasih, sangat bermanfaat
    My blog

  16. Terimakasih gan sangat membantu
    blog

  17. good
    My blog

  18. good
    My blog