Poin pertama yang harus dibuat tentang rekayasa perangkat lunak berkaitan dengan ruang lingkup kegiatannya. Rekayasa perangkat lunak adalah pengelolaan seluruh proses pengembangan sistem komputer untuk memecahkan masalah.
Ketika sistem perangkat lunak berkembang menjadi lebih canggih dan kompleks, pengembang perangkat lunak mencari metode baru untuk pengembangannya. Rekayasa perangkat lunak adalah jawaban terhadap kebutuhan tersebut. Rekayasa perangkat lunak masih terus berubah dan berkembang dengan cepat.
Biasanya, ketika seseorang diminta untuk menulis sebuah program, orang lain telah memberitahunya apa yang harus dilakukan oleh program tersebut dan alasannya; programmer hanya peduli dengan cara menulisnya. Namun, sebagai insinyur perangkat lunak, kitalah yang akan memikirkan apa dan mengapa. Rekayasa perangkat lunak mencakup keseluruhan aktivitas yang berkaitan dengan pemecahan masalah – mulai dari membantu klien mendefinisikan masalah atau peluang, hingga mengevaluasi kepuasan klien terhadap solusi.
Mengembangkan sistem perangkat lunak mungkin memerlukan penulisan seluruh kumpulan program untuk memberitahu mesin apa yang harus dilakukan, menulis prosedur untuk memberitahu orang apa yang harus dilakukan, dan memberikan pelatihan sehingga orang memahami bagaimana melakukannya. Kita mungkin perlu mengkonversi data dari sistem lama agar dapat dijalankan oleh sistem baru, mempekerjakan orang dan memperoleh mesin untuk menjalankan program, serta mendapatkan ruang di mana mesin dan manusia dapat melakukan pekerjaannya. Apa yang kami bangun adalah sistem yang terdiri dari banyak bagian yang bekerja sama. Upaya seperti ini membutuhkan kesabaran dan fleksibilitas. Kami harus memperbaiki sistem jika sistem tidak berfungsi seperti yang kami harapkan, atau klien mungkin meminta kami mengubah sistem karena dia ingin sistem melakukan hal lain yang sebelumnya tidak dimaksudkan.
Pemrograman mungkin tidak lebih dari 20 persen dari total cakupan rekayasa perangkat lunak, dan sebagian kecil upaya yang terlibat dalam pemrograman diperkirakan akan berkurang seiring dengan digunakannya metode yang lebih baik untuk mengembangkan sistem perangkat lunak. Seiring berjalannya waktu, upaya kami akan lebih banyak dilakukan untuk mengelola keseluruhan proses dan lebih sedikit pada pemrograman.