Pengertian Software Engineering


Definisi  Software Engineering
Ilmu yang mempelajari tehnik pembuatan software yang baik dengan pendekatan tehnik (Engineering ap­proach)
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 : Bagamana  Perangkat Lunaka Dapat Bekerja di Berbagai Platform Yang berbeda
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.
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
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
Dalam penguasaan atas model software engineering atau software engineering paradigm, dikenal ada 3 metode yang luas dipergunakan, yaitu :
1. 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.
2. Model Prototyping
Ada 2 bentuk dari model ini, yaitu :
1.    Paper Prototype
Menggambarkan interaksi manusia dan mesin dalam sebuah bentuk yang memungkinkan user mengerti bagaimana interaksi itu terjadi.
1.    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.
2.     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.
3.  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 lain-lain, 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.  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


Next
« Prev Post
Previous
Next Post »

11 komentar

Tambah komentar

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

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

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

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 For Your Comment Here