Mengenali Insinyur Perangkat Lunak

Dipublikasikan oleh Jovita Aurelia Sugihardja

08 Mei 2024, 08.44

Sumber: Wikipedia

Rekayasa perangkat lunak adalah pendekatan rekayasa untuk pengembangan perangkat lunak. Seorang praktisi, seorang perekayasa perangkat lunak, menerapkan proses desain rekayasa untuk mengembangkan perangkat lunak.

Istilah programmer dan coder tumpang tindih dengan insinyur perangkat lunak, tetapi keduanya hanya menyiratkan aspek konstruksi dari beban kerja insinyur perangkat lunak pada umumnya.

Seorang insinyur perangkat lunak menerapkan proses pengembangan perangkat lunak, yang melibatkan definisi, implementasi, pengujian, manajemen dan pemeliharaan sistem perangkat lunak dan dengan pengembangan proses pengembangan perangkat lunak itu sendiri.

Sejarah

Dimulai pada tahun 1960-an, rekayasa perangkat lunak diakui sebagai bidang teknik yang terpisah.

Perkembangan rekayasa perangkat lunak dipandang sebagai sebuah perjuangan. Sulit untuk mengimbangi perangkat keras yang menyebabkan banyak masalah bagi para insinyur perangkat lunak. Masalah termasuk perangkat lunak yang melebihi anggaran, melebihi tenggat waktu, membutuhkan debugging dan pemeliharaan yang ekstensif, dan tidak berhasil memenuhi kebutuhan konsumen atau bahkan tidak pernah selesai.

Pada tahun 1968 NATO mengadakan konferensi Rekayasa Perangkat Lunak pertama di mana masalah yang berkaitan dengan perangkat lunak dibahas: pedoman dan praktik terbaik untuk pengembangan perangkat lunak ditetapkan.

Asal-usul istilah rekayasa perangkat lunak telah dikaitkan dengan berbagai sumber. Istilah ini muncul dalam daftar layanan yang ditawarkan oleh perusahaan pada edisi Juni 1965 "Komputer dan Otomasi" dan digunakan secara lebih formal pada edisi Agustus 1966 Communications of the ACM (Volume 9, nomor 8) "surat kepada keanggotaan ACM" oleh Presiden ACM, Anthony A. Oettinger.  Istilah ini juga dikaitkan dengan judul konferensi NATO pada tahun 1968 oleh Profesor Friedrich L. Bauer.  Margaret Hamilton menggambarkan disiplin "rekayasa perangkat lunak" selama misi Apollo untuk memberikan legitimasi atas apa yang mereka lakukan. Pada saat itu dianggap terjadi "krisis perangkat lunak".   Konferensi Internasional Rekayasa Perangkat Lunak ke-40 (ICSE 2018) merayakan 50 tahun "Rekayasa Perangkat Lunak" dengan keynote Sesi Pleno dari Frederick Brooks  dan Margaret Hamilton.

Pada tahun 1984, Software Engineering Institute (SEI) didirikan sebagai pusat penelitian dan pengembangan yang didanai oleh pemerintah yang berkantor pusat di kampus Carnegie Mellon University di Pittsburgh, Pennsylvania, Amerika Serikat. Watts Humphrey mendirikan Program Proses Perangkat Lunak SEI, yang bertujuan untuk memahami dan mengelola proses rekayasa perangkat lunak. Tingkat Kematangan Proses yang diperkenalkan akan menjadi Integrasi Model Kematangan Kemampuan untuk Pengembangan (CMMI-DEV), yang telah mendefinisikan bagaimana Pemerintah AS mengevaluasi kemampuan tim pengembangan perangkat lunak.

Praktik terbaik modern yang diterima secara umum untuk rekayasa perangkat lunak telah dikumpulkan oleh sub-komite ISO/IEC JTC 1/SC 7 dan diterbitkan sebagai Software Engineering Body of Knowledge (SWEBOK). Rekayasa perangkat lunak dianggap sebagai salah satu disiplin ilmu komputasi yang utama.

Terminologi

Definisi

Definisi penting dari rekayasa perangkat lunak meliputi:

  • "Penerapan sistematis pengetahuan ilmiah dan teknologi, metode, dan pengalaman pada desain, implementasi, pengujian, dan dokumentasi perangkat lunak"-Biro Statistik Tenaga Kerja-IEEE Sistem dan rekayasa perangkat lunak - Kosakata

  • "Penerapan pendekatan yang sistematis, disiplin, dan terukur untuk pengembangan, pengoperasian, dan pemeliharaan perangkat lunak"-IEEE Daftar Istilah Standar Rekayasa Perangkat Lunak

  • "disiplin ilmu teknik yang berkaitan dengan semua aspek produksi perangkat lunak"-Ian Sommerville

  • "pembentukan dan penggunaan prinsip-prinsip rekayasa yang baik untuk mendapatkan perangkat lunak yang dapat diandalkan dan bekerja secara efisien pada mesin yang sebenarnya"-Fritz Bauer

  • "cabang ilmu komputer yang berhubungan dengan desain, implementasi, dan pemeliharaan program komputer yang kompleks"-Merriam-Webster

  • "'Rekayasa perangkat lunak' tidak hanya mencakup tindakan menulis kode, tetapi juga semua alat dan proses yang digunakan organisasi untuk membangun dan memelihara kode tersebut dari waktu ke waktu. [Rekayasa perangkat lunak dapat dianggap sebagai 'pemrograman yang terintegrasi dari waktu ke waktu'."-Rekayasa Perangkat Lunak di Google

Istilah ini juga telah digunakan secara tidak terlalu formal:

  • sebagai istilah kontemporer informal untuk berbagai kegiatan yang sebelumnya disebut pemrograman komputer dan analisis sistem;

  • sebagai istilah luas untuk semua aspek praktik pemrograman komputer, sebagai lawan dari teori pemrograman komputer, yang secara formal dipelajari sebagai sub-disiplin ilmu komputer;

  • sebagai istilah yang mewujudkan advokasi pendekatan khusus untuk pemrograman komputer, yang mendesak agar diperlakukan sebagai disiplin ilmu teknik daripada seni atau kerajinan, dan menganjurkan kodifikasi praktik yang direkomendasikan.

Etimologi

Margaret Hamilton mempromosikan istilah "rekayasa perangkat lunak" selama bekerja pada program Apollo. Istilah "rekayasa" digunakan untuk mengakui bahwa pekerjaan tersebut harus dianggap sama seriusnya dengan kontribusi lain terhadap kemajuan teknologi. Hamilton merinci penggunaan istilah tersebut:

Ketika saya pertama kali menggunakan istilah ini, tidak ada yang pernah mendengarnya sebelumnya, setidaknya di dunia kita. Itu adalah lelucon yang terus berlanjut untuk waktu yang lama. Mereka suka mengolok-olok saya tentang ide-ide radikal saya. Itu adalah hari yang tak terlupakan ketika salah satu guru perangkat keras yang paling dihormati menjelaskan kepada semua orang dalam sebuah pertemuan bahwa dia setuju dengan saya bahwa proses membangun perangkat lunak juga harus dianggap sebagai disiplin ilmu teknik, seperti halnya perangkat keras. Bukan karena penerimaannya terhadap "istilah" baru itu sendiri, tetapi karena kami telah mendapatkan penerimaannya dan penerimaan orang lain di ruangan itu sebagai sebuah bidang teknik dengan sendirinya.

Kesesuaian

Para komentator secara individu telah berselisih pendapat secara tajam tentang bagaimana mendefinisikan rekayasa perangkat lunak atau legitimasinya sebagai sebuah disiplin ilmu teknik. David Parnas mengatakan bahwa rekayasa perangkat lunak, pada kenyataannya, adalah sebuah bentuk rekayasa. Steve McConnell mengatakan bahwa itu bukan rekayasa, tetapi seharusnya demikian. Donald Knuth mengatakan bahwa pemrograman adalah sebuah seni dan ilmu. Edsger W. Dijkstra menyatakan bahwa istilah rekayasa perangkat lunak dan perekayasa perangkat lunak telah disalahgunakan dan harus dianggap berbahaya, terutama di Amerika Serikat.

Beban kerja

Analisis kebutuhan

Rekayasa kebutuhan adalah tentang elisitasi, analisis, spesifikasi, dan validasi kebutuhan perangkat lunak. Persyaratan perangkat lunak dapat berupa fungsional, non-fungsional, atau domain.

Persyaratan fungsional menggambarkan perilaku yang diharapkan (yaitu keluaran). Persyaratan non-fungsional menentukan masalah seperti portabilitas, keamanan, pemeliharaan, keandalan, skalabilitas, kinerja, penggunaan kembali, dan fleksibilitas. Mereka diklasifikasikan ke dalam jenis-jenis berikut: batasan antarmuka, batasan kinerja (seperti waktu respons, keamanan, ruang penyimpanan, dll.), Batasan operasi, batasan siklus hidup (pemeliharaan, portabilitas, dll.), dan batasan ekonomi. Pengetahuan tentang cara kerja sistem atau perangkat lunak diperlukan dalam menentukan persyaratan non-fungsional. Persyaratan domain berkaitan dengan karakteristik kategori atau domain proyek tertentu.

Desain

Desain perangkat lunak adalah proses pembuatan rencana tingkat tinggi untuk perangkat lunak. Desain terkadang dibagi menjadi beberapa tingkatan:

  • Desain antarmuka merencanakan interaksi antara sistem dan lingkungannya serta cara kerja sistem

  • Desain arsitektur merencanakan komponen utama dari sebuah sistem; termasuk tanggung jawab, properti, dan antarmuka di antara komponen-komponen tersebut.

  • Desain terperinci merencanakan elemen internal; termasuk properti, hubungan, algoritme, dan struktur datanya.

Konstruksi

Konstruksi perangkat lunak,  biasanya melibatkan pemrograman (alias pengkodean), pengujian unit, pengujian integrasi, dan debugging untuk mengimplementasikan desain. Pengujian selama fase ini umumnya dilakukan oleh programmer dan dengan tujuan untuk memverifikasi bahwa kode berperilaku sesuai desain dan untuk mengetahui kapan kode siap untuk pengujian tingkat berikutnya.

Pengujian

Pengujian perangkat lunak adalah investigasi teknis empiris yang dilakukan untuk memberikan informasi kepada para pemangku kepentingan tentang kualitas perangkat lunak yang sedang diuji.

Ketika dijelaskan secara terpisah dari konstruksi, pengujian biasanya dilakukan oleh teknisi pengujian atau jaminan kualitas, bukan oleh pemrogram yang menulisnya, dan dilakukan di tingkat sistem dan dianggap sebagai aspek kualitas perangkat lunak.

Analisis program

Analisis program adalah proses menganalisis program komputer sehubungan dengan aspek seperti kinerja, ketahanan, dan keamanan.

Pemeliharaan

Pemeliharaan perangkat lunak mengacu pada dukungan terhadap perangkat lunak setelah dirilis. Hal ini dapat mencakup tetapi tidak terbatas pada: koreksi kesalahan, pengoptimalan, penghapusan fitur yang tidak terpakai dan dibuang, dan peningkatan fitur yang ada.

Biasanya, pemeliharaan memakan waktu sekitar 40% hingga 80% dari biaya proyek, oleh karena itu, fokus pada pemeliharaan dapat mengurangi biaya pengembangan.

Pendidikan

Contoh dan perspektif dalam artikel ini mungkin tidak mewakili pandangan seluruh dunia tentang subjek ini. Anda dapat memperbaiki artikel ini, mendiskusikan masalah ini di halaman pembicaraan, atau membuat artikel baru, jika diperlukan. (November 2010) (Pelajari bagaimana dan kapan harus menghapus pesan templat ini)

Pengetahuan tentang pemrograman komputer adalah prasyarat untuk menjadi seorang insinyur perangkat lunak. Pada tahun 2004, IEEE Computer Society menerbitkan SWEBOK, yang telah diterbitkan sebagai ISO/IEC Technical Report 1979:2005, yang menjelaskan pengetahuan yang mereka rekomendasikan untuk dikuasai oleh seorang insinyur perangkat lunak lulusan sarjana dengan pengalaman empat tahun. Banyak insinyur perangkat lunak yang memasuki profesi ini dengan memperoleh gelar sarjana atau pelatihan di sekolah kejuruan. Satu kurikulum internasional standar untuk gelar sarjana rekayasa perangkat lunak ditentukan oleh Satuan Tugas Bersama tentang Kurikulum Komputasi dari IEEE Computer Society dan Asosiasi Mesin Komputasi, dan diperbarui pada tahun 2014. Sejumlah universitas memiliki program gelar Rekayasa Perangkat Lunak; pada tahun 2010, terdapat 244 program Sarjana Rekayasa Perangkat Lunak Kampus, 70 program Online, 230 program tingkat Magister, 41 program tingkat Doktor, dan 69 program tingkat Sertifikat di Amerika Serikat.

Selain pendidikan di universitas, banyak perusahaan mensponsori program magang bagi siswa yang ingin mengejar karir di bidang teknologi informasi. Magang ini dapat memperkenalkan siswa pada tugas-tugas dunia nyata yang menarik yang biasa dihadapi oleh para insinyur perangkat lunak setiap hari. Pengalaman serupa dapat diperoleh melalui dinas militer di bidang rekayasa perangkat lunak.

Program gelar rekayasa perangkat lunak

Setengah dari semua praktisi saat ini memiliki gelar dalam ilmu komputer, sistem informasi, atau teknologi informasi.[rujukan] Sejumlah kecil, tetapi terus bertambah, sejumlah praktisi memiliki gelar rekayasa perangkat lunak. Pada tahun 1987, Departemen Komputasi di Imperial College London memperkenalkan gelar sarjana rekayasa perangkat lunak tiga tahun pertama di Inggris dan dunia; pada tahun berikutnya, Universitas Sheffield mendirikan program serupa. [Pada tahun 1996, Rochester Institute of Technology mendirikan program gelar sarjana rekayasa perangkat lunak pertama di Amerika Serikat, namun tidak memperoleh akreditasi ABET hingga tahun 2003, pada saat yang sama dengan Rice University, Clarkson University, Milwaukee School of Engineering, dan Mississippi State University yang mendapatkannya. Pada tahun 1997, PSG College of Technology di Coimbatore, India adalah yang pertama kali memulai program gelar Master of Science terintegrasi selama lima tahun di bidang Rekayasa Perangkat Lunak.

Sejak saat itu, gelar sarjana rekayasa perangkat lunak telah didirikan di banyak universitas. Kurikulum internasional standar untuk gelar sarjana rekayasa perangkat lunak, SE2004, ditetapkan oleh komite pengarah antara tahun 2001 dan 2004 dengan dana dari Asosiasi Mesin Komputasi dan Masyarakat Komputer IEEE. Pada tahun 2004, di Amerika Serikat, sekitar 50 universitas menawarkan gelar sarjana rekayasa perangkat lunak, yang mengajarkan ilmu komputer dan prinsip-prinsip serta praktik-praktik rekayasa. Gelar Master rekayasa perangkat lunak pertama kali didirikan di Seattle University pada tahun 1979. Sejak saat itu, gelar pascasarjana rekayasa perangkat lunak telah tersedia di lebih banyak universitas. Demikian juga di Kanada, Dewan Akreditasi Teknik Kanada (CEAB) dari Dewan Insinyur Profesional Kanada telah mengakui beberapa program rekayasa perangkat lunak.

Pada tahun 1998, Sekolah Pascasarjana Angkatan Laut AS (NPS) mendirikan program doktoral Rekayasa Perangkat Lunak pertama di dunia. Selain itu, banyak gelar lanjutan online di bidang Rekayasa Perangkat Lunak telah muncul seperti gelar Master of Science dalam Rekayasa Perangkat Lunak (MSE) yang ditawarkan melalui Departemen Ilmu Komputer dan Teknik di California State University, Fullerton. Steve McConnell berpendapat bahwa karena sebagian besar universitas mengajarkan ilmu komputer daripada rekayasa perangkat lunak, ada kekurangan insinyur perangkat lunak yang sebenarnya. Universitas ETS (École de technologie supérieure) dan UQAM (Université du Québec à Montréal) diberi mandat oleh IEEE untuk mengembangkan Perangkat Lunak Rekayasa Badan Pengetahuan (SWEBOK), yang telah menjadi standar ISO yang menggambarkan badan pengetahuan yang dicakup oleh seorang insinyur perangkat lunak.

Profesi

Persyaratan hukum untuk lisensi atau sertifikasi perekayasa perangkat lunak profesional bervariasi di seluruh dunia. Di Inggris, tidak ada lisensi atau persyaratan hukum untuk mengasumsikan atau menggunakan gelar pekerjaan Insinyur Perangkat Lunak. Di beberapa daerah di Kanada, seperti Alberta, British Columbia, Ontario, dan Quebec, perekayasa perangkat lunak dapat memegang sebutan Insinyur Profesional (P.Eng) dan / atau sebutan Profesional Sistem Informasi (ISP). Di Eropa, Insinyur Perangkat Lunak dapat memperoleh gelar profesional Insinyur Eropa (EUR ING). Insinyur Perangkat Lunak juga dapat memperoleh kualifikasi profesional sebagai Insinyur Chartered melalui British Computer Society.

Di Amerika Serikat, NCEES mulai menawarkan ujian Insinyur Profesional untuk Rekayasa Perangkat Lunak pada tahun 2013, sehingga memungkinkan Insinyur Perangkat Lunak untuk dilisensikan dan diakui. NCEES mengakhiri ujian tersebut setelah April 2019 karena kurangnya partisipasi. Lisensi wajib saat ini sebagian besar masih diperdebatkan, dan dianggap kontroversial.

IEEE Computer Society dan ACM, dua organisasi profesional utama yang berbasis di Amerika Serikat untuk rekayasa perangkat lunak, menerbitkan panduan untuk profesi rekayasa perangkat lunak. Panduan IEEE untuk Rekayasa Perangkat Lunak - Versi 2004, atau SWEBOK, mendefinisikan bidang ini dan menjelaskan pengetahuan yang diharapkan oleh IEEE untuk dimiliki oleh seorang perekayasa perangkat lunak yang berpraktik. SWEBOK v3 terbaru adalah versi terbaru dan dirilis pada tahun 2014. IEEE juga mengumumkan "Kode Etik Rekayasa Perangkat Lunak".

Pekerjaan

Contoh dan perspektif di Amerika Serikat ini mungkin tidak mewakili pandangan di seluruh dunia tentang subjek ini. Anda dapat memperbaiki Amerika Serikat ini, mendiskusikan masalah ini di halaman pembicaraan, atau membuat Amerika Serikat baru, jika diperlukan. (September 2021) 

Diperkirakan ada 26,9 juta insinyur perangkat lunak profesional di dunia pada tahun 2022, naik dari 21 juta pada tahun 2016.

Banyak perekayasa perangkat lunak yang bekerja sebagai karyawan atau kontraktor. Insinyur perangkat lunak bekerja dengan bisnis, lembaga pemerintah (sipil atau militer), dan organisasi nirlaba. Beberapa insinyur perangkat lunak bekerja untuk diri mereka sendiri sebagai pekerja lepas. Beberapa organisasi memiliki spesialis untuk melakukan setiap tugas dalam proses pengembangan perangkat lunak. Organisasi lain membutuhkan insinyur perangkat lunak untuk melakukan banyak atau semua tugas tersebut. Dalam proyek-proyek besar, orang mungkin mengkhususkan diri hanya dalam satu peran. Dalam proyek kecil, orang dapat mengisi beberapa atau semua peran pada saat yang bersamaan. Banyak perusahaan mempekerjakan pekerja magang, biasanya mahasiswa universitas atau perguruan tinggi selama liburan musim panas, atau magang. Spesialisasi termasuk analis, arsitek, pengembang, penguji, dukungan teknis, analisis perangkat lunak, manajer proyek, manajer produk perangkat lunak, pendidik, dan peneliti.

Sebagian besar insinyur perangkat lunak dan pemrograman bekerja 40 jam seminggu, tetapi sekitar 15 persen insinyur perangkat lunak dan 11 persen pemrogram bekerja lebih dari 50 jam seminggu pada tahun 2008. Potensi cedera pada pekerjaan ini mungkin terjadi karena seperti pekerja lain yang menghabiskan waktu lama duduk di depan terminal komputer untuk mengetik di papan ketik, insinyur dan pemrogram rentan terhadap kelelahan mata, ketidaknyamanan punggung, dan masalah pada tangan dan pergelangan tangan seperti sindrom lorong karpal.

Disadur dari: en.wikipedia.org