Mengapa Kita Membutuhkan Rekayasa Perangkat Lunak?

Mengapa Kita Membutuhkan Rekayasa Perangkat Lunak?

itu adalah bahwa mereka bekerja dengan benar.

Membuat perubahan dalam program yang kompleks ternyata sangat mahal. Seringkali bahkan untuk membuat program melakukan sesuatu yang sedikit berbeda begitu sulit sehingga lebih mudah untuk membuang program lama dan memulai dari awal. Ini, tentu saja, mahal. Bagian dari evolusi dalam pendekatan rekayasa perangkat lunak adalah belajar mengembangkan sistem yang dibangun dengan cukup baik pertama kali sehingga perubahan sederhana dapat dilakukan dengan mudah.

Pada saat yang sama, perangkat keras tumbuh semakin murah. Tabung digantikan oleh transistor dan transistor digantikan oleh sirkuit terpadu sampai komputer mikro seharga kurang dari tiga ribu dolar menjadi beberapa juta dolar. Sebagai indikasi seberapa cepat perubahan terjadi, biaya sejumlah komputasi tertentu berkurang setengahnya setiap dua tahun. Dengan penataan kembali ini, waktu dan biaya untuk mengembangkan perangkat lunak tidak lagi begitu kecil, dibandingkan dengan perangkat keras, sehingga dapat diabaikan.

Ketika biaya perangkat keras merosot, perangkat lunak terus ditulis oleh manusia, yang gajinya meningkat. Penghematan dari peningkatan produktivitas dalam pengembangan perangkat lunak dari penggunaan assembler, compiler, dan sistem manajemen basis data tidak berlangsung secepat penghematan biaya perangkat keras. Memang, hari ini biaya perangkat lunak tidak hanya tidak dapat diabaikan, mereka telah menjadi lebih besar dari biaya perangkat keras. Beberapa perkembangan saat ini, seperti bahasa nonprosedural (generasi keempat) dan penggunaan kecerdasan buatan (generasi kelima), menjanjikan peningkatan produktivitas pengembangan perangkat lunak, tetapi kami baru mulai melihat potensinya.

Masalah lain adalah bahwa di masa lalu program seringkali belum sepenuhnya dipahami apa yang perlu dilakukan oleh program tersebut. Setelah program ditulis, klien mulai mengungkapkan ketidakpuasan. Dan jika klien tidak puas, akhirnya produser juga tidak senang. Seiring berjalannya waktu, pengembang perangkat lunak belajar menyusun kertas dan pensil dengan tepat apa yang ingin mereka lakukan sebelum memulai. Kemudian mereka dapat meninjau rencana dengan klien untuk melihat apakah mereka memenuhi harapan klien. Lebih sederhana dan lebih murah untuk membuat perubahan pada versi kertas dan pensil ini daripada membuatnya setelah sistem dibangun. Menggunakan perencanaan yang baik membuat kecil kemungkinan bahwa perubahan harus dilakukan setelah program selesai.

Sayangnya, sampai beberapa tahun yang lalu tidak ada metode representasi yang baik untuk menggambarkan sistem yang memuaskan serumit yang sedang dikembangkan saat ini. Satu-satunya representasi yang baik tentang seperti apa produk itu nantinya adalah produk jadi itu sendiri. Pengembang tidak dapat menunjukkan kepada klien apa yang mereka rencanakan. Dan klien tidak dapat melihat apakah perangkat lunak itu yang mereka inginkan sampai akhirnya dibuat. Kemudian terlalu mahal untuk berubah.

Sekali lagi, pertimbangkan analogi konstruksi bangunan. Seorang arsitek dapat menggambar denah lantai. Klien biasanya dapat memperoleh beberapa pemahaman tentang apa yang telah direncanakan arsitek dan memberikan umpan balik apakah itu sesuai. Denah lantai cukup mudah dipahami oleh orang awam karena kebanyakan orang akrab dengan gambar yang mewakili objek geometris. Arsitek dan klien berbagi konsep umum tentang ruang dan geometri. Tetapi perekayasa perangkat lunak harus mewakili klien suatu sistem yang melibatkan logika dan pemrosesan informasi. Karena mereka belum memiliki bahasa konsep umum, insinyur perangkat lunak harus mengajarkan bahasa baru kepada klien sebelum mereka dapat berkomunikasi.

 

Apa yang Terlibat dalam Rekayasa Perangkat Lunak?

 

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.

Karena sistem perangkat lunak telah tumbuh lebih canggih dan kompleks, pengembang perangkat lunak telah mencari metode baru untuk pengembangannya. Rekayasa perangkat lunak adalah jawaban atas kebutuhan itu. Rekayasa perangkat lunak masih cepat berubah dan matang.

Biasanya, ketika seseorang diminta untuk menulis sebuah program, orang lain telah memberitahunya apa yang harus dilakukan program tersebut dan mengapa; programmer hanya peduli dengan cara menulisnya. Sebagai insinyur perangkat lunak, bagaimanapun, kita akan menjadi orang yang peduli dengan apa dan mengapa. Rekayasa perangkat lunak mencakup seluruh rangkaian kegiatan yang berkaitan dengan pemecahan masalah – mulai dari membantu klien mendefinisikan masalah atau peluang, hingga mengevaluasi kepuasan klien dengan solusi.

Mengembangkan sistem perangkat lunak mungkin memerlukan penulisan seluruh kumpulan program untuk memberi tahu mesin apa yang harus dilakukan, menulis prosedur untuk memberi tahu orang apa yang harus dilakukan, dan memberikan pelatihan sehingga orang mengerti bagaimana melakukannya. Kita mungkin perlu mengonversi data dari sistem lama sehingga dapat dijalankan oleh sistem baru, mempekerjakan orang dan memperoleh mesin untuk menjalankan program, dan mendapatkan ruang di mana mesin dan orang dapat melakukan pekerjaan mereka. Apa yang kami bangun adalah sistem dari banyak bagian yang bekerja bersama. Upaya seperti itu membutuhkan kesabaran dan fleksibilitas. Kami harus memperbaiki sistem ketika tidak melakukan apa yang kami harapkan, atau klien mungkin meminta kami untuk mengubah sistem karena dia ingin melakukan hal lain yang sebelumnya tidak dimaksudkan.

Pemrograman mungkin tidak lebih dari 20 persen dari total ruang lingkup rekayasa perangkat lunak, dan sebagian kecil dari upaya yang terlibat dengan pemrograman dapat diperkirakan menurun karena metode yang lebih baik digunakan untuk mengembangkan sistem perangkat lunak. Seiring berjalannya waktu, lebih banyak upaya kami akan dilakukan untuk mengelola keseluruhan proses dan lebih sedikit untuk pemrograman.

Pemrograman