Perangkat lunak atau software digunakan untuk menghasilkan, mengatur, mendapatkan, merubah, menampilkan serta mengirimkan informasi. Jadi dapat disimpulkan tujuan utama dari sebuah software adalah untuk mentransformasikan informasi. Software biasanya akan mengalami banyak perubahan dari proses prototipe sampai menjadi produk yang layak diproduksi atau digunakan. Hal ini berbeda dengan prototipe yang dihasilkan oleh para pengembang displin ilmu lain yang tidak mengalami perubahan berarti antara prototipe dengan produk yang diproduksi. Meskipun demikian software tidak mengalami “usang” dalam arti fungsi yang ada tidak akan rusak karena waktu, berbeda dengan produk selain software yang bisa rusak karena waktu.

Failure curve for hardware

Namun produk selain software jika diperbaiki pada umumnya menjadi semakin baik berbeda dengan software pada situasi tertentu software bisa menjadi lebih buruk setelah diperbaiki, masalah ini timbul bila perbaikan yang dilakukan kurang memperhatikan software secara menyeluruh.

Idealized and actual failure curves for software

Permasalahan yang dihadapi pengembang software saat ini adalah menghasilkan software yang sesuai kebutuhan pengguna dengan cepat dan menjaga pertumbuhan software yang ada. Kemampuan pengembang software untuk memahami kebutuhan pengguna merupakan langkah awal yang penting, karena kualitas software diukur dari langkah-langkah proses pengembangan software tersebut.

Proses merupakan salah satu bagian dari software engineering. Definisi dari software engineering adalah disiplin yang mengintegrasikan proses, metode, dan alat untuk pengembangan software. Saat ini banyak model proses pengembangan software bisa dijadikan acuan, diantaranya adalah Linear Sequential Model, Prototyping Model, RAD Model, Evolutionary Models, Component-Based Development, Formal Methods Model dan Fourth Generation Techniques. Saat ini adanya penekanan terhadap sebuah proses pengembangan software yang disebut “process maturity”. The Software Engineering Institute (SEI) telah mengembangkan model yang komprehensif didasarkan pada satu set kemampuan pengembangan software yang harus ada pada organisasi untuk mencapai tingkat kematangan yang berbeda dari proses. Tingkat “process maturity” secara berurutan adalah Initial, Repeatable, Defined, Managed dan Optimizing.

The Software Engineering Institute (SEI) - Process Maturity

Pengembangan software dikerjakan secara tim maka dibutuhkan tools yang digunakan untuk membantu tim menganalisis proses, mengatur pembagian tugas kerja, mengendalikan dan memantau kemajuan, dan mengelola kualitas teknis software. Dengan tools ini diharapkan bisa mendapatkan proses pengembangan software yang berkualitas sehingga software yang dihasilkan pun berkualitas.