Apa yang dimaksud dengan Rekayasa Perangkat Lunak atau software engineering?

Rekayasa Perangkat Lunak

Rekayasa Perangkat Lunak merupakan sebuah disiplin ilmu yang berhubungan dengan seluruh aspek terkait dengan produk perangkat lunak baik dari tahapan awal hingga ke pemeliharaan dari perangkat lunak pasca produksi.

Apa yang dimaksud dengan Rekayasa Perangkat Lunak atau software engineering?

Berikut ini adalah beberapa definisi resmi dari Rekayasa Perangkat Lunak atau software engineering yang diambil dari beberapa sumber, yaitu :

Menurut IEEE, Software engineering is defined as the application of systematic, disciplined, quantifiable, approach to development, operation and maintenance software .

Rekayasa perangkat Lunak merupakan proses pengembangan, pengoperasian dan perawatan perangkat lunak yang sistematik dan dapat dikuantifikasikan alias diukur keberadaannya dengan angka-angka atau ukuran tertentu.

Menurut Conger, Software engineering is the systematic development, operation, maintenance; and retirement of software.

Rekayasa perangkat Lunak adalah sebuah proses yang sistematik, mulai dari proses pengembangan, pengoperasian, perawatan hingg perangkat lunak tersebut tidak lagi digunakan.

Menurut Gezli et al, Software engineering is the field of computer science that deals with the building of software system that are so large or so complex that they are built by a team or teams of engineers.

Dari definisi diatas terlihat bahwa penekanan dari Rekayasa perangkat Lunak hanya terjadi jika sebuah perangkat lunak dianggap telah memiliki skala besar dan dianggap kompleks sehingga membutuhkan sebuah tim untuk mengerjakannya. Definisi ini sedikit bertentangan dengan definisi-definisi sebelumnya, karena di definisi sebelumnya telah disebutkan bahwa Rekayasa perangkat Lunak tidak memiliki hubungan dengan asas skalabilitas (besar kecilnya sebuah perangkat lunak), tetapi lebih ke arah sebuah siklus hidup dari mulai perancangan hingga pemeliharaan.

Menurut Bjorner, Software engineering is the establishment and use of sound methods for the efficient construction of efficient, correct, timely and pleasing software that solves the problems such as users identify them.

Dari definisi diatas disebutkan bahwa Rekayasa perangkat Lunak lebih bertujuan ke arah sebuah efisiensi pengerjaan perangkat lunak dan mampu memuaskan pengguna dengan asumsi telah mampu memecahkan masalah yang dihadapi oleh pengguna.

Menurut Laplante, Software engineering is systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineering of software, that is, the application of engineering to software. In the software engineering approach, several models for the software life cycle are defined, and many methodologies for the definition and assessment of the different phases of a life-cycle model.

Perbedaan yang signifikan dalam definisi ini yaitu diikutsertakannya siklus hidup sebagai sebuah komponen penting dalam Rekayasa perangkat Lunak . Hal ini disebabkan bahwa sebuah perangkat lunak mungkin saja bersifat obsolete atau ketinggalan jaman, tetapi di perjalanan waktu perangkat lunak tersebut dapat direvisi dan juga dikembangkan lagi menjadi sebuah perangkat lunak yang baru dan lebih baik.

Menurut Deek et al, Software engineering is a cognitive reaction to the complexity of software development. It reflects the inevitable need for analysis and planning; reliability and control of risk; and scheduling and coordination when embarking on any complex human endeavor.

Definisi diatas mengikutsertakan unsur resiko dalam sebuah Rekayasa perangkat Lunak dan juga perilaku dari manusia (baik pengembang maupun dari pengguna) sehingga di dalam proses pengembangan perangkat lunak sesungguhnya juga terdapat unsur ilmu manajemen yang masuk didalamnya.

Rekayasa perangkat Lunak meliputi beberapa pokok bahasan penting antara lain :

  • Domain Engineering
    Mampu memahami permasalahan yang muncul dan akan dijadikan sebagai proyek perangkat lunak.

  • Requirement Engineering
    Mampu memahami kebutuhan pengguna sekaligus melakukan pemecahan masalah

  • Software Design
    Mampu memahami serta mengimplementasikan perancangan perangkat lunak termasuk didalamnya aspek HCI (Human Computer Interaction).

  • Development
    Proses pengembangan sebuah perangkat lunak yang nantinya akan melibatkan mengenai algoritma, bahasa pemrograman yang digunakan serta teknik yang berkaitan didalamnya seperti basis data dan sistem informasi.

  • Operations
    Operasional perangkat lunak dapat dipisahkan menjadi dua bagian penting yakni pada saat proses testing yang seharusnya dilakukan bersama-sama antara pengembang dan pengguna perangkat lunak, dan proses implementasi yang didalamnya bisa terdapat langkah- langkah awal seperti pelatihan dan perbaikan pasca produksi.

  • Maintenance
    Maintenance adalah proses pemeliharaan terhadap aspek perangkat lunak seperti basis data, instalasi, dimana didalamnya juga terdapat proses dokumentasi dari pengembang perangkat lunak. Proses dokumentasi nantinya tidak hanya ditujukan untuk pengguna, tetapi juga untuk pengembang perangkat lunak itu sendiri jika nantinya terjadi proses revisi atau penggantian lebih lanjut

Jika dilihat dari proses pengembangan perangkat lunak, akan melibatkan beberapa unsur antara lain :

  1. Software Engineers atau pengembang perangkat lunak
  2. Software atau perangkat lunak
  3. User atau pengguna

Fritz Bauer (Pressman, 2002) memberikan definisi pada konferensi seminar masalah pengembangan perangkat lunak: Rekayasa perangkat lunak adalah pengembangan dan penggunaan prinsip pengembangan suara untuk memperoleh perangkat lunak secara ekonomis yang handal dan bekerja secara efisien pada mesin nyata.

Berdasarkan definisi ini, IEEE (Pressman, 2002) telah mengembangkan definisi yang lebih komprehensif, yaitu rekayasa perangkat lunak adalah: (1) Aplikasi dari sebuah pendekatan kuantitatif, disiplin, dan sistematis kepada pengembangan, operasi, dan pemeliharaan perangkat lunak; yaitu aplikasi dari rekayasa perangkat lunak. (2) Studi tentang pendekatanpendekatan seperti pada (1).

Rekayasa perangkat lunak adalah suatu disiplin rekayasa yang berkaitan dengan semua aspek produksi perangkat lunak dari tahap awal spesifikasi sistem, sampai dengan pemeliharaan sistem setelah sistem tersebut dipakai (Sommerville, 2001).

Rekayasa merupakan analisis, desain, konstruksi, verifikasi, dan manajemen kesatuan teknik (atau sosial). Tanpa memperdulikan kesatuan yang dikembangkan, terdapat beberapa pertanyaan yang harus dimunculkan dan dijawab (Pressman, 2002), yaitu:

  1. Masalah apa yang akan dipecahkan?
  2. Karakteristik kesatuan apakah yang dipakai untuk menyelesaikan masalah tersebut?
  3. Bagaimanakah kesatuan (dan pemecahan tersebut) diadakan?
  4. Bagaimanakah kesatuan tersebut dibangun?
  5. Pendekatan apakah yang akan dipakai untuk menemukan kesalahankesalahan yang dibuat di dalam desain dan konstruksi dari kesatuan tersebut?
  6. Bagaimanakah kesatuan tersebut ditopang selama proses adaptasi yang lama pada saat koreksi, serta ketika perbaikan dibutuhkan oleh para pemakai kesatuan tersebut?