Konsep Rekayasa Perangkat Lunak (Tugas 2)
Halo semuanya, di tulisan saya kali ini saya akan membahas tentang Konsep Rekayasa Perangkat Lunak. Pasti terdengar tidak asing kan. Rekayasa Perangkat Lunak atau biasa disingkat dengan RPL adalah salah satu bidang profesi dan juga mata pelajaran yang mempelajari tentang pengembangan perangkat-perangkat lunak termasuk dalam hal pembuatannya, pemeliharaan hingga manajemen organisasi dan manajemen kualitasnya. Langsung saja kita masuk ke penjelasannya secara rinci.
Rekayasa Perangkat Lunak
Menurut IEEE Computer Society mendefinisikan bahwa rekayasa perangkat lunak sebagai penerapan suatu pendekatan yang sistematis, disiplin dan terkuantifikasi atas pengembangan, penggunaan dan pemeliharaan perangkat lunak, serta studi atas pendekatan-pendekatan ini, yaitu penerapan pendekatan engineering atas perangkat lunak. Sedangkan menurut Ian Sommervile yang dikutip dari buku Software Engineering Jilid 1, pengertian dari rekayasa perangkat lunak atau RPL adalah salah satu aspek produksi dan pengembangan perangkat lunak. Produksi yang dimaksud yaitu bagaimana suatu perangkat lunak diciptakan, mulai dari user requirements, spesifikasi, desain, testing, dokumentasi (misal berupa manual pembuatan program), dan sebagainya.
Pengembangan perangkat lunak skala besar tidak mungkin dapat dikerjakan oleh satu orang saja. Diperlukan kerja tim yang baik agar pengembangan dapat berjalan sesuai rencana. Untuk itu, diperlukan teknik-teknik rekayasa untuk pengembangan perangkat lunak. RPL belum tentu diperlukan untuk pengembangan PL skala kecil, namun sudah mulai diperlukan untuk pengembangan skala medium. Terdapat setidaknya 5 Peran dalam pembangunan perangkat lunak yaitu Project Manager, System Analyst, UI/UX Designer, Programmer, dan Software Tester.
Tujuan rekayasa perangkat lunak Selain menghasilkan perangkat lunak bernilai ekonomis, rekayasa perangkat lunak (software engineering) juga ditujukan untuk:
Membentuk perangkat lunak yang andal dan tepat waktu
Menghasilkan sebuah software yang kuat serta mampu menghadapi ancaman dan gangguan
Menciptakan software dengan biaya produksi dan biaya pemeliharaan paling minimum
Perangkat lunak yang dihasilkan sesuai kebutuhan yang diinginkan
Memberikan manfaat bagi pemakai yang menggunakannya
Menurut Ian Sommerville terdapat beberapa karakteristik mengenai perangkat lunak, yaitu:
Maintanability, yaitu dapat dirawat. Dimana perangkat lunak harus bisa memenuhi perubahan dari kebutuhan user.
Dependability, yaitu perangkat lunak harus bersifat dapat dipercaya.
Efisiensi, yaitu dalam hal penggunaan resource (penyimpanan) harus efisien.
Usability, yaitu penggunaan dari perangkat lunak harus bisa sesuai dengan yang telah direncanakan/yang dibuat.
Terdapat 3 Cakupan dalam Rekayasa Perangkat Lunak. 3 hal ini merupakan hal penting dalam Rekayasa Perangkat Lunak yaitu:
Proses yaitu semua aspek teknis yang diperlukan untuk membangun PL dari tahap Spesifikasi yaitu apa yang harus dilakukan oleh perangkat lunak dan batasan/kendala pengembangannya
Pengembangan yaitu proses memproduksi sistem perangkat lunak
Validasi yaitu pengujian perangkat lunak terhadap keinginan pengguna
Evolusi yaitu perubahan perangkat lunak berdasarkan perubahan keinginan.
Produk yaitu hasil proses rekayasa yang citerapkan untuk membangun PL, berupa produk PL yang siap digunakan olen pengguna. Produk diperoleh melalui tahapan Pengembangan (Software Development Life Cycle).
Manajemen yaitu Pengelolaan (aspek manajemen) yang diperlukan ketika membangun PL, biasanya dalam bentuk proyek PL. Terdiri atas manajemen biaya, waktu, orang. risiko. dll
Proses Perangkat Lunak
Serangkaian kegiatan dan hasil-hasil relevannya yang menghasilkan perangkat lunak sebagian besar dilakukan oleh perekayasa perangkat lunak. Ada 4 kegiatan/aktivitas pada proses PL:
• Spesifikasi yaitu tentang apa yang harus dilakukan oleh perangkat lunak dan batasan/kendala pengembangannya. Mendefinisikan fungsionalitas dan batasan operasi
• Pengembangan yaitu proses memproduksi sistem perangkat lunak serta merancang dan membuat perangkat lunak yang memenuhi persyaratan
• Validasi yaitu menjamin perangkat lunak berjalan sesuai dengan apa yang diinginkan user
• Evolusi yaitu mengembangkan perangkat lunak sesuai perubahan kebutuhan user
Perbedaan Software Engineer dan Software Developer
Software engineer dan software developer ibaratkan seperti arsitek dan tukang. Software engineer adalah arsitek nya, sedangkan software developer sebagai tukangnya. Tetapi, keduanya memiliki korelasi yang erat. Software engineer adalah orang yang bertanggung jawab dalam perancangan, pengembangan, pengelolaan, pengujian, hingga evaluasi software. Sedangkan software developer adalah orang yang bertanggung jawab menciptakan sebuah software atau aplikasi sesuai dengan kebutuhan, melakukan analisa terhadap persyaratan software serta memutuskan langkah perancangan software secara spesifik.
Perekayasa perangkat lunak harus memiliki tanggung jawab etis dan moral jika ingin dihormati sebagai profesional. Terdapat beberapa standar dan kode etik yang harus dipertimbangkan, yaitu :
a. Konfidensialitas = Harus menghormati konfidensialitas atasan dan kliennya walaupun tidak ada persetujuan yang ditandatangani secara formal. Kompetensi Tidak boleh menyalahi tingkat kompetensinya (melebihi atau menyimpang)
b. Hak Properti Intelektual = Menyadari terhadap hukum yang mengatur penggunaan properti intelektual, seperti paten, hak cipta dan lain sebagainya.
c. Kompetensi = Perekayasa tidak boleh menggambarkan tingkat kompetensi mereka. Mereka seharusnya tidak sengaja menerima pekerjaan yang melebihi kompetensi mereka.
d. Penyalahgunaan Komputer = Tidak boleh dengan sengaja menyalahgunakan komputer yang nantinya berakibat merugikan orang lain, seperti penyebaran virus, penyadapan dan
lain sebagainya.
Seorang Software Engineer harus berkomitmen untuk membuat analisis, spesifikasi, desain, pengembangan, pengujian dan pemeliharaan perangkat lunak profesi yang bermanfaat dan dihormati. Ada delapan prinsip profesional software engineering yang dibuat oleh ACM/ICEE-CS (Asosiasi Profesi):
Publik = Seorang Software Engineer harus bertindak konsisten dengan kepentingan publik.
Client dan Pegawai = Seorang Software Engineer harus mampu memebrikan tindakan yang terbaik untuk kepentingan Client ataupun Atasan mereka secara konsisten dengan kepentingan publik.
Produk = Seorang Software Engineer harus memastikan bahwa produk mereka dan modifikasi terkait, memenuhi standar profesional setinggi mungkin.
Judgment = Seorang Software Engineer harus menjaga integritas dan kemandirian dalam penilaian profesional mereka.
Manajemen = Manajer dan pemimpin pengembangan perangkat lunak harus bisa membagikan dan mensosialisasikan suatu pendekatan etis untuk manajemen sebuah pengembangan perangkat lunak dan pemeliharaannya.
Profesi = Seorang Software Engineer harus meningkatkan integritas dan reputasi profesi yang konsisten dengan kepentingan publik.
Kolega = Seorang Software Engineer harus adil dan mendukung rekan kerja mereka.
Diri Sendiri = Seorang Software Engineer harus mau untuk terus belajar sepanjang hayat yang berkaitan dengan praktik profesinya dan harus mempromosikan pendekatan etika terhadap praktik profesi.
Kesimpulan
Rekayasa perangkat lunak adalah pengubahan perangkat lunak itu sendiri guna mengembangkan, memelihara, dan membangun kembali dengan menggunakan prinsip rekayasa untuk menghasilkan perangkat lunak yang dapat bekerja lebih efisien dan efektif untuk pengguna.
Perbedaan utama dari software engineer dan software developer adalah software developer hanya berfokus pada satu area saja. Salah satunya adalah membangun kode. Sedangkan software engineer adalah orang yang merancang, merencanakan, dan mengimplementasikan prinsip engineering ke pengembangan software. Software engineer juga harus memantau keseluruhan proyek dan meng-handle area yang lebih luas. Perbedaan yang paling menonjol adalah software engineer fokus mengawasi, sedangkan developer fokus membangun program yang fungsional.
Dalam proses perangkat lunak, terdapat 4 hal/kegiatan yang dilakukan yaitu spesifikasi, pengembangan, validasi dan evolusi.
Terdapat 8 prinsip profesional software engineering yang dibuat oleh ACM/ICEE-CS (Asosiasi Profesi) yaitu publik, client dan pegawai, produk, judgment, manajemen, profesi, kolega dan diri sendiri.
Komentar
Posting Komentar