Software Engineering
Software engineering ialah Suatau penerapan dan penggunaan prinsip-prinsip engineering yang baik dalam rangka menghasilkan software yang ekonomis, reliable, dan bekerja secara efisien pada komputer sungguhan. Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.
Sementara itu IEEE mendefinisikan software engineering sebagai: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
Requirements engineering
Requirements engineering adalah fase terdepan dari proses software engineering, dimana software requirements (kebutuhan) dari user (pengguna) dan customer (pelanggan) dikumpulkan, dipahami dan ditetapkan. Para pakar software engineering (rekayasa perangkat lunak) Sepakat bahwa requirements engineering adalah suatu pekerjaan yang sangat penting, terutama berdasarkan fakta bahwa kebanyakan kegagalan pengembangan software disebabkan karena adaya ketidakkonsistenan (inconsistent), ketidak lengkapan (incomplete), maupun ketidakbenaran (incorrect) dari requirements specification (spesifikasi kebutuhan) The Standish Group mencatat bahwa prosentase akumulatif kegagalan sebuah project pengembangan software sebagian besar disebabkan oleh masalah requirements dan spesifikasinya
Kebanyakan asosiasi software yang ada di Indonesia saat ini tidak menyentuh sisi ini dan lebih diorientasikan ke pengusaha dan bisnisnya, bukan di kualitas SDM dan karya pengembang. Di lain sisi, universitas juga tidak terlalu agresif memecahkan masalah ini karena dunia akademisi “kehilangan link” dengan dunia industri. Ini membawa implikasi ke dosen dan mahasiswa Indonesia yang tidak banyak berkesempatan bermain di industri praktis pengembangan software.Meskipun jumlah pengembang profesional Indonesia di tahun 2007 tercatat 56.500 dan akan terus berkembang hingga mencapai 71.600 sampai tahun 2008, produksi software kita jauh di bawah Malaysia dan Singapore yang jumlah developernya cuman seperempat SDM kita. SDM kita memiliki keterbatasan pengetahuan dalam software development, tentang standard methodology (kebanyakan menggunakan hajar bleh methodology), sehingga begitu software diukur dari seluruh proses Software Development Life Cycle (SDLC)nya, kita kedodoran dan kalah bersaing. Jujur saja, saya agak kesulitan mensosialisasi masalah-masalah seperti ini ke asosiasi software yang ada di Indonesia karena mereka sulit dijangkau, sudah terlalu kuat, merasa stabil, sehingga maaf kadang agak “lamban” bergerak.
Saya yakin bahwa saat ini sudah ratusan pergerakan-pergerakan kecil dilakukan teman-teman di berbagai komunitas pengembang, dalam bentuk knowledge sharing, membuat ebook gratis, workshop komunitas, dsb. Dan saya yakin ini semua bisa menjadi modal yang sangat baik untuk membangun Asosiasi Pengembang Software Indonesia (APSI) atau Asosiasi Pengembang Perangkat Lunak Indonesia (APPLI).
Definisi
Untuk memperkuat pemahaman dari seri tulisan requirements engineering ini, alangkahbaiknya apabila diskusi ini kita mulai dari definisi terminologi-terminologi yang di gunakan.RequirementsKita mulai dari definisi requirement, menurut IEEE Standard Glossary of SoftwareEngineering Technology, requirement dapatdiartikan sebagai berikut.
1. Suatu kondisi atau kemampuan yang diperlukan oleh user untuk memecahkan masalah atau mencapai tujuan
2. Suatu kondisi atau kemampuan yang harus dipenuhi atau dimiliki oleh system atau komponen sistem untuk memenuhi kontrak, standard, spesifikasi atau dokumen Formal lainnya.
3. Gambaran yang terdokumentasi dari kondisi atau kemampuan yang disebut pada 1 dan 2User, Customer, SupplierTerminologi “user” pada definisi requirements diatas bisa merupakan end-user(pengguna akhir) dari software yang akan dikembangkan atau orang-orang dibelakanglayar. Termasuk didalamnya orang yang menggunakan informasi yang dihasilkan darisoftware, dan juga menunjuk ke customer (client) yang membayar proyek pengembangan software. Penggunaan terminologi user seperti ini (untuk end-user dan stakeholder) banyak digunakan dalam penjelasan masalah requirements engineering, termasuk didalamnya proses iterasi, metodologi requirements elicitation, dan sebagainya.Meskipun kalau kita mau kembali, sebenarnya ada perbedaan mendasar definisi formal dari terminologi berhubungan dengan orang-orang dalam requirements