Tinjauan Rekayasa Perangkat Lunak

Mari kita pertama-tama memahami apa kepanjangan dari rekayasa perangkat lunak. Istilah ini terdiri dari dua kata, perangkat lunak dan rekayasa.

Software lebih dari sekedar kode program. Program adalah kode yang dapat dieksekusi, yang melayani beberapa tujuan komputasi. Perangkat lunak dianggap kumpulan kode pemrograman yang dapat dieksekusi, pustaka dan dokumentasi terkait. Perangkat lunak, bila dibuat untuk kebutuhan tertentu disebutsoftware product.

Engineering di sisi lain, adalah tentang mengembangkan produk, menggunakan prinsip dan metode ilmiah yang terdefinisi dengan baik.

Software engineeringadalah cabang teknik yang terkait dengan pengembangan produk perangkat lunak menggunakan prinsip, metode, dan prosedur ilmiah yang terdefinisi dengan baik. Hasil rekayasa perangkat lunak adalah produk perangkat lunak yang efisien dan andal.

Definisi

IEEE mendefinisikan rekayasa perangkat lunak sebagai:

(1) Penerapan pendekatan yang sistematis, disiplin, dan dapat diukur untuk pengembangan, pengoperasian dan pemeliharaan perangkat lunak; yaitu penerapan rekayasa ke perangkat lunak.

(2) Studi tentang pendekatan seperti pada pernyataan di atas.

Fritz Bauer, seorang ilmuwan komputer Jerman, mendefinisikan rekayasa perangkat lunak sebagai:

Rekayasa perangkat lunak adalah pembentukan dan penggunaan prinsip-prinsip rekayasa suara untuk mendapatkan perangkat lunak yang dapat diandalkan dan bekerja secara efisien pada mesin nyata secara ekonomis.

Evolusi Perangkat Lunak

Proses pengembangan produk perangkat lunak yang menggunakan prinsip dan metode rekayasa perangkat lunak disebut sebagai software evolution. Ini termasuk pengembangan awal perangkat lunak serta pemeliharaan dan pembaruannya, hingga produk perangkat lunak yang diinginkan dikembangkan, yang memenuhi persyaratan yang diharapkan.

Evolusi dimulai dari proses pengumpulan kebutuhan. Setelah itu pengembang membuat prototipe perangkat lunak yang dimaksud dan menunjukkannya kepada pengguna untuk mendapatkan tanggapan mereka pada tahap awal pengembangan produk perangkat lunak. Para pengguna menyarankan perubahan, di mana beberapa pembaruan dan pemeliharaan berturut-turut terus berubah juga. Proses ini berubah ke perangkat lunak asli, hingga perangkat lunak yang diinginkan selesai.

Bahkan setelah pengguna menginginkan perangkat lunak di tangan, kemajuan teknologi dan persyaratan yang berubah memaksa produk perangkat lunak untuk berubah. Membuat ulang perangkat lunak dari awal dan menggunakan satu-satu dengan persyaratan tidak memungkinkan. Satu-satunya solusi yang layak dan ekonomis adalah memperbarui perangkat lunak yang ada agar sesuai dengan persyaratan terbaru.

Hukum Evolusi Perangkat Lunak

Lehman telah memberikan hukum untuk evolusi perangkat lunak. Dia membagi perangkat lunak menjadi tiga kategori berbeda:

  • S-type (static-type) - Ini adalah perangkat lunak, yang bekerja secara ketat sesuai dengan spesifikasi dan solusi yang ditentukan . Solusi dan metode untuk mencapainya, keduanya segera dipahami sebelum pengkodean. Perangkat lunak tipe-s paling tidak mengalami perubahan, karenanya ini adalah yang paling sederhana dari semuanya. Misalnya, program kalkulator untuk komputasi matematis.
  • P-type (practical-type) - Ini adalah perangkat lunak dengan kumpulan prosedur. Ini ditentukan oleh prosedur apa yang dapat dilakukan. Dalam perangkat lunak ini, spesifikasinya dapat dijelaskan tetapi solusinya tidak langsung jelas. Misalnya, perangkat lunak game.
  • E-type (embedded-type) - Perangkat lunak ini bekerja dengan erat sebagai persyaratan lingkungan dunia nyata . Perangkat lunak ini memiliki tingkat evolusi yang tinggi karena terdapat berbagai perubahan dalam hukum, pajak, dll. Dalam situasi dunia nyata. Misalnya, software perdagangan online.

Evolusi perangkat lunak E-Type

Lehman telah memberikan delapan hukum untuk evolusi perangkat lunak E-Type -

  • Continuing change - Sistem perangkat lunak tipe-E harus terus beradaptasi dengan perubahan dunia nyata, jika tidak maka akan semakin tidak berguna.
  • Increasing complexity - Ketika sistem perangkat lunak tipe-E berkembang, kompleksitasnya cenderung meningkat kecuali ada pekerjaan yang dilakukan untuk mempertahankan atau menguranginya.
  • Conservation of familiarity - Keakraban dengan perangkat lunak atau pengetahuan tentang bagaimana itu dikembangkan, mengapa itu dikembangkan dengan cara tertentu dll harus dipertahankan dengan biaya berapa pun, untuk mengimplementasikan perubahan dalam sistem.
  • Continuing growth- Agar sistem tipe-E dimaksudkan untuk menyelesaikan beberapa masalah bisnis, besarnya penerapan perubahan tumbuh sesuai dengan perubahan gaya hidup bisnis.
  • Reducing quality - Sistem perangkat lunak tipe-E mengalami penurunan kualitas kecuali dijaga dan disesuaikan dengan lingkungan operasional yang berubah.
  • Feedback systems- Sistem perangkat lunak tipe-E merupakan sistem umpan balik multi-loop dan multi-level dan harus diperlakukan sedemikian rupa agar berhasil dimodifikasi atau ditingkatkan.
  • Self-regulation - Proses evolusi sistem tipe-E mengatur dirinya sendiri dengan distribusi produk dan pengukuran proses mendekati normal.
  • Organizational stability - Tingkat aktivitas global efektif rata-rata dalam sistem tipe-E yang berkembang tidak berubah selama masa pakai produk.

Paradigma Perangkat Lunak

Paradigma perangkat lunak mengacu pada metode dan langkah-langkah yang diambil saat merancang perangkat lunak. Ada banyak metode yang diusulkan dan sedang dikerjakan saat ini, tetapi kita perlu melihat di mana dalam rekayasa perangkat lunak ini paradigma ini berdiri. Ini dapat digabungkan ke dalam berbagai kategori, meskipun masing-masing dari kategori tersebut terkandung satu sama lain:

Paradigma pemrograman adalah bagian dari paradigma desain perangkat lunak yang selanjutnya merupakan bagian dari paradigma pengembangan perangkat lunak.

Paradigma Pengembangan Perangkat Lunak

Paradigma ini dikenal sebagai paradigma rekayasa perangkat lunak dimana semua konsep keteknikan yang berkaitan dengan pengembangan perangkat lunak diterapkan. Ini mencakup berbagai penelitian dan pengumpulan kebutuhan yang membantu produk perangkat lunak untuk membangun. Terdiri dari -

  • Pengumpulan kebutuhan
  • Desain perangkat lunak
  • Programming

Paradigma Desain Perangkat Lunak

Paradigma ini adalah bagian dari Pengembangan Perangkat Lunak dan mencakup -

  • Design
  • Maintenance
  • Programming

Paradigma Pemrograman

Paradigma ini terkait erat dengan aspek pemrograman pengembangan perangkat lunak. Ini termasuk -

  • Coding
  • Testing
  • Integration

Kebutuhan Rekayasa Perangkat Lunak

Kebutuhan rekayasa perangkat lunak muncul karena tingkat perubahan yang lebih tinggi dalam persyaratan pengguna dan lingkungan tempat perangkat lunak bekerja.

  • Large software - Lebih mudah membangun tembok daripada membangun rumah atau bangunan, demikian pula, karena ukuran perangkat lunak menjadi besar, teknik harus melangkah untuk memberinya proses ilmiah.
  • Scalability- Jika proses perangkat lunak tidak didasarkan pada konsep ilmiah dan teknik, akan lebih mudah untuk membuat ulang perangkat lunak baru daripada menskalakan yang sudah ada.
  • Cost- Karena industri perangkat keras telah menunjukkan keahliannya dan manufaktur besar telah menurunkan harga komputer dan perangkat keras elektronik. Tetapi biaya perangkat lunak tetap tinggi jika proses yang tepat tidak disesuaikan.
  • Dynamic Nature- Sifat perangkat lunak yang selalu tumbuh dan beradaptasi sangat bergantung pada lingkungan tempat pengguna bekerja. Jika sifat perangkat lunak selalu berubah, peningkatan baru perlu dilakukan pada perangkat yang sudah ada. Di sinilah rekayasa perangkat lunak memainkan peran yang baik.
  • Quality Management- Proses pengembangan perangkat lunak yang lebih baik menghasilkan produk perangkat lunak yang lebih baik dan berkualitas.

Karakteristik perangkat lunak yang baik

Produk perangkat lunak dapat dinilai dari apa yang ditawarkannya dan seberapa baik dapat digunakan. Perangkat lunak ini harus memenuhi dengan alasan berikut:

  • Operational
  • Transitional
  • Maintenance

Perangkat lunak yang direkayasa dan dibuat dengan baik diharapkan memiliki karakteristik sebagai berikut:

Operasional

Ini memberi tahu kita seberapa baik perangkat lunak bekerja dalam operasi. Itu dapat diukur pada:

  • Budget
  • Usability
  • Efficiency
  • Correctness
  • Functionality
  • Dependability
  • Security
  • Safety

Transisi

Aspek ini penting ketika perangkat lunak dipindahkan dari satu platform ke platform lainnya:

  • Portability
  • Interoperability
  • Reusability
  • Adaptability

Pemeliharaan

Aspek ini menjelaskan tentang seberapa baik suatu perangkat lunak memiliki kemampuan untuk mempertahankan dirinya sendiri dalam lingkungan yang selalu berubah:

  • Modularity
  • Maintainability
  • Flexibility
  • Scalability

Singkatnya, Rekayasa perangkat lunak adalah cabang ilmu komputer, yang menggunakan konsep rekayasa yang terdefinisi dengan baik yang diperlukan untuk menghasilkan produk perangkat lunak yang efisien, tahan lama, dapat diskalakan, sesuai anggaran, dan tepat waktu.