Penggunaan kata software semakin marak diperbincangkan oleh masayarakat umum sejalan dengan perkembangan ilmu teknologi dan informasi, ini dikarenakan kemunculan dari produk yang kita sebut sebagai “software” sudah melengkapi aktivitas kita sehari-hari.
Apa itu Software?
Software atau yang disebut juga perangkat lunak memiliki beberapa definisi, yaitu:
- Intruksi (program komputer) yang ketika dijalankan menyediakan fitur, fungsi dan kinerja yang diinginkan.
- Struktur data yang memungkinkan program untuk memanipulasi informasi secara memadai.
- Informasi deskriptif di keduanya hard copy dan bentuk virtual yang menjelaskan pengoperasian dan penggunaan program[1].

Sommerville(2009) mendefinisikan software adalah program komputer dan dokumentasi terkait. Software dapat dikembangkan untuk pelanggan tertentu atau mungkin dikembangkan untuk pasar umum[2].
Dapat disimpulkan bahwa software merupakan sebuah perangkat yang tersusun atas program-program yang berfungsi untuk menjalankan suatu intruksi berupa inputan kepada sistem komputer. Software berisi kumpulan logika yang membentuk algoritma komputasional yang akan menyelesaikan masalah. Software tidak diproduksi secara fisik (benda) oleh karena itu karakteristik utama dari software adalah tidak usang dibandingkan hardware.
Diatas sudah dijelaskan sekilas mengenai software (perangkat lunak). Selanjutnya yang penting Software Engineer mereka adalah teknisi yang telah mempelajari ilmu Software Engineering untuk kemudian diterapkan saat membangun sebuah produk perangkat lunak.
Apa itu Software Engineering?
Pengertian Software Engineering menurut IEEE Computer Society merupakan penerapan yang sistematis, disiplin, terukur pendekatan untuk pengembangan, pengoperasian, dan pemeliharaan perangkat lunak[3]. Sedangkan menurut Sommerville(2009) mendefinisikan Software Engineering merupakan disiplin ilmu yang membahas tentang semua aspek pembangunan perangkat lunak, mulai dari tahap awal (spesifikasi), desain, konstruksi, testing sampai pemeliharaan setelah digunakan[4].
Software Engineering berfokus membahas disiplin ilmu yang didalamnya menjelaskan proses membangun perangkat lunak dengan metode yang telah ditentukan sehingga dapat melakukan proses secara terstruktur dan berulang hingga perangkat lunak dapat digunakan oleh user. Software engineering tidak hanya tentang pemrograman, melainkan akan terbagi menjadi banyak bagian sesuai fokus yang didalami. Dalam penerapannya, pembagian fokus tersebut tetap melingkupi pembangunan sebuah perangkat lunak itu sendiri.
Software yang baik harus memenuhi beberapa standar umum yang dipakai oleh perusahaan pengembang, software yang baik harus :
- Sesuai dengan keinginan atau permintaan user.
- Functional, berfungsi dengan baik dan performa sistem berjalan dengan lancar tanpa kendala.
- Usability, mudah digukan oleh user dan memberikan kesan nyaman saat mengoperasikan perangkat lunak.
- Maintainability, mudah dipelihara dan dikembangkan sehingga dapat mengikuti perkembangan zaman.
- Dependability, dapat dipercaya khususnya keamanan data user dan penanganan masalah terkait dengan perangkat lunak.
Dalam membangun perangkat lunak terdapat metode yang memberikan petunjuk teknis, yang mencakup komunikasi, analisis kebutuhan, permodelan, desain, konstruksi program, pengujian dan dukungan. Komunikasi memudahkan saat berkolaborasi dan berdiskusi dengan stakeholder. Stakeholder merupakan pemangku kepentingan perangkat lunak yaitu, user/customer, market analyst, regulator(pemilik aturan), software engineer dan lainnya.
Berikut adalahh tahapan yang dilakukan software engineer dalam melakukan pembangunan software secara umum:

- Request, yaitu adanya permintaan atau pengajuan sistem software seperti apa yang diinginkan baik software yang baru dibuat ataupun yang sedang digunakan.
- Planning, yaitu tahap perencanaan dan merancang solusi pemecahan masalah.
- Requirement, yaitu tahap analisis kebutuhan dan menentukan apa yang perlu dilakukan software untuk menyelesaikan masalah sesuai dengan persyaratan.
- Design, yaitu tahap permodelan dari sistem dan perangkat lunak dengan menerjemahkan masalah dan kebutuhan kedalam bentuk tampilan sistem yang dapat dioperasikan untuk memecahkan masalah.
- Construction, yaitu tahap membangun apa yang telah dirancang dengan menggunakan kode dan bahasa pemrograman sesuai dengan aplikasi yang akan dibangun.
- Testing and Implementation, yaitu tahap merealisasikan program menjadi software lalu dilakukan pengujian untuk menilai spesifikasi dari sistem hingga aplikasi sesuai dan memenuhi setelah itu akan dikirim ke customer.
- Maintenance, yaitu tahap pemeliharaan software. Tahap ini dilakukan ketika ada perubahan yang diinginkan atau ada permasalahan pada software yang perlu diselesaikan.
- Documentation, yaitu tahap dokumentasi pada setiap proses pembangunan yang berguna sebagai analisis pengembangan software berikutnya.
Referensi :
- [1] : Sommervill, Ian. 2015. Software Engineering 10th. United States of America:Addison-Wesley.
- [3] : Sommervill, Ian. 2011. Software Engineering 9th. United States of Americ:Addison-Wesley.
- [2],[4], : Pressman, Roger S. and Maxim, Bruce R.2015. Software Engineering A Practitioner’s Approach 8th. New York:McGraw-Hill.
- Gambar 1.1 : Pressman, Roger S. and Maxim, Bruce R.2015. Software Engineering A Practitioner’s Approach 8th. New York:McGraw-Hill.
- Gambar 1.2 : PPT Materi Kuliah Software Engineering