Apakah rekayasa pengembangan perangkat lunak? Jika tidak, apa saja hal-hal yang kurang sehingga harus memenuhi syarat?
Ya, rekayasa perangkat lunak adalah disiplin teknik.
Wikipedia mendefinisikan teknik sebagai "aplikasi matematika, serta pengetahuan ilmiah, ekonomi, sosial, dan praktis untuk menciptakan, berinovasi, merancang, membangun, memelihara, meneliti, dan meningkatkan struktur, mesin, peralatan, sistem, komponen, bahan , proses, solusi, dan organisasi. " Hasil rekayasa perangkat lunak adalah sistem perangkat lunak yang dapat meningkatkan kehidupan masyarakat, dan dapat melibatkan beberapa kombinasi pengetahuan ilmiah, matematika, ekonomi, sosial, atau praktis.
Dalam hal bagaimana dilihat, secara akademis dan profesional, itu bervariasi. Program rekayasa perangkat lunak dapat diakreditasi oleh ABET sebagai program rekayasa. Insinyur perangkat lunak dapat menjadi anggota IEEE. Beberapa perusahaan menganggap rekayasa perangkat lunak sebagai disiplin teknik, sementara yang lain tidak - itu benar-benar sulit.
Buku terbaik tentang hal ini adalah Pengembangan Perangkat Lunak Profesional Steve McConnell: Jadwal Lebih Pendek, Produk Berkualitas Tinggi, Proyek Lebih Sukses, Peningkatan Karir . Ini terlihat pada rekayasa perangkat lunak sebagai profesi, evolusi dari kerajinan untuk profesi, ilmu pengembangan perangkat lunak, perbedaan antara software engineering dan software engineering (menerapkan praktek-praktek rekayasa perangkat lunak dibandingkan insinyur yang terjadi pada software membangun, dengan studi kasus yang termasuk almamater saya ), sertifikasi dan lisensi, dan etika.
Glenn Vanderburg memiliki serangkaian pembicaraan yang disebut "Rekayasa Perangkat Lunak Nyata" yang telah diberikan antara 2010 dan 2015 di sejumlah konferensi, bersama dengan dua pembicaraan terkait, "Kerajinan, Rekayasa, dan Esensi Pemrograman" (diberikan pada tahun 2011 sebagai keynote di RailsConf) dan "Craft and Software Engineering" (diberikan pada 2011 di QCon London). Saya pikir pembicaraan ini adalah argumen yang cukup komprehensif untuk mengapa rekayasa perangkat lunak adalah disiplin teknik.
Satu argumen, yang diajukan Vanderburg secara singkat dalam pembicaraannya, adalah argumen yang dibuat oleh Jack W. Reeves pada tahun 1992 (dan ditinjau kembali pada tahun 2005) tentang apa desain perangkat lunak dan bagaimana kode adalah output dari kegiatan desain rekayasa perangkat lunak ( ini juga dibahas pada wiki C2). Begitu Anda keluar dari aliran pemikiran lama di mana spesifikasi dan pemodelan adalah desain perangkat lunak dan menjadi desain kode perangkat lunak, beberapa hubungan antara rekayasa perangkat lunak dan disiplin teknik lainnya menjadi lebih mudah terlihat. Beberapa perbedaan dan alasan untuk perbedaan itu menjadi lebih jelas setelah Anda melihat bahwa ekonomi pengembangan perangkat lunak sangat berbeda dari banyak disiplin ilmu lainnya - konstruksi murah (hampir gratis, dalam banyak kasus), sementara desain adalah bagian yang mahal.
Apakah itu [CMMI] sesuatu yang akan mengubah pembangunan menjadi rekayasa?
Tidak. CMMI adalah kerangka kerja peningkatan proses yang memberikan panduan bagi organisasi tentang jenis kegiatan apa yang berguna saat membangun perangkat lunak. Disiplin teknik biasanya memiliki proses rekayasa. Memiliki proses seperti itu penting untuk keberhasilan penyelesaian proyek berkualitas tinggi. Yang mengatakan, CMMI (atau kerangka proses atau metodologi lainnya) hanya alat tunggal - menggunakannya tidak akan membuat Anda secara ajaib maju dari pengembang ke insinyur. Namun, tidak mengikuti semacam proses, menurut pendapat saya, merupakan tanda proyek yang bukan proyek rekayasa.
Juga, apa pendapat Anda tentang kursus / sertifikat rekayasa perangkat lunak?
Ini hanya nilai sebanyak orang lain dimasukkan ke dalamnya. Ada kursus yang bermanfaat dan ada kursus yang tidak berguna. Ada sertifikat yang berharga, dan sertifikat yang tidak sebanding dengan kertas yang dicetaknya. Ada banyak faktor, dari siapa yang mendukung atau mengakreditasi kursus atau siapa yang mengeluarkan sertifikat untuk industri pekerjaan Anda saat ini ke pekerjaan Anda saat ini dan ke mana Anda ingin pergi.