Mengapa kita perlu rekayasa perangkat lunak?

Untuk memahami kebutuhan akan rekayasa perangkat lunak, kita perlu berhenti sejenak untuk melihat kembali sejarah penggunaan komputer baru-baru ini. Sejarah ini akan membantu kita untuk memahami masalah yang menjadi jelas pada awal tahun enam puluhan dan awal tujuh puluhan dan solusi yang mengarah pada penciptaan bidang rekayasa perangkat lunak. Masalah-masalah ini disebut oleh beberapa orang sebagai "The Software Crisis", yang disebut gejala masalah. Situasi ini juga bisa disebut "The Complexity Barrier", yang disebut sebagai penyebab utama masalah. Beberapa merujuk pada krisis perangkat lunak dalam bentuk lampau. Krisis masih jauh dari selesai, tetapi berkat perkembangan banyak teknologi baru yang kini berada di bawah judul rekayasa perangkat lunak, kami telah membuat kemajuan dan terus berkembang.

Pada hari-hari awal penggunaan komputer, kekhawatiran terbesar adalah membangun atau membeli perangkat keras. Perangkat lunak itu hampir diharapkan untuk mengurus dirinya sendiri. Konsensus adalah bahwa "perangkat keras" adalah "sulit" untuk diubah, sementara "perangkat lunak" adalah "lunak" atau mudah diubah. Menurut kebanyakan orang di industri, pengembangan perangkat keras direncanakan dengan hati-hati, tetapi perangkat lunaknya kurang dipikirkan dengan baik. Jika perangkat lunak itu tidak berfungsi, mereka percaya, itu akan cukup mudah untuk mengubahnya sampai berhasil. Mengapa, dalam hal ini, apakah Anda akan berusaha untuk merencanakan?

Biaya perangkat lunak berjumlah sebagian kecil dari biaya perangkat keras yang tidak seorang pun menganggapnya sangat penting untuk mengelola pengembangannya. Namun, semua orang melihat pentingnya memproduksi program yang efisien dan cepat, karena ini menghemat waktu pada perangkat keras yang mahal. Diasumsikan bahwa waktu manusia menghemat waktu mesin. Pengolahan yang efisien dari orang-orang diberi prioritas kecil.

Pendekatan ini memuaskan pada hari-hari awal penggunaan komputer, ketika perangkat lunaknya sederhana. Namun, ketika komputer matang, program menjadi lebih kompleks dan proyek semakin besar sementara program secara rutin ditentukan, ditulis, dioperasikan, dan dipelihara oleh orang yang sama, program dikembangkan oleh tim pemrogram untuk memenuhi harapan orang lain. 19659002] Upaya individu dilakukan untuk upaya tim. Komunikasi dan koordinasi yang pernah terjadi dalam kepala satu orang harus dilakukan di antara kepala banyak orang, membuat keseluruhan proses menjadi lebih rumit. Akibatnya, komunikasi, manajemen, perencanaan dan dokumentasi menjadi sangat penting.

Pertimbangkan analogi ini: seorang tukang kayu hanya dapat bekerja untuk membangun rumah sederhana untuk dirinya sendiri tanpa lebih dari konsep umum sebuah rencana. Dia bisa menyelesaikan masalah atau membuat penyesuaian saat pekerjaan berlangsung. Itu adalah bagaimana program awal ditulis. Tetapi jika rumah itu lebih luas, atau jika dibangun untuk orang lain, tukang kayu harus merencanakan lebih hati-hati bagaimana rumah itu harus dibangun. Rencana harus dinilai dengan pemilik masa depan sebelum konstruksi dimulai. Dan jika rumah itu dibangun oleh banyak tukang kayu, seluruh proyek pasti harus direncanakan sebelum pekerjaan dimulai, sehingga ketika seorang tukang kayu membangun bagian rumah, yang lain tidak membangun sisi lain dari rumah lain. Perencanaan menjadi elemen kunci, sehingga kontraktor semen menuangkan dinding basement sebelum para tukang kayu mulai membingkai. Karena rumah menjadi lebih kompleks dan lebih banyak orang perlu dikoordinasikan, cetak biru dan rencana manajemen diperlukan.

Karena program menjadi lebih kompleks, metode awal pembuatan cetak biru (flowchart) tidak lagi memenuhi kerumitan yang lebih besar ini. Dan itu menjadi sulit bagi satu orang yang membutuhkan program tertulis untuk mentransfer ke orang lain, programmer, hanya apa yang mereka inginkan, atau untuk programmer untuk berkomunikasi satu sama lain apa yang mereka lakukan. Tanpa metode tampilan yang lebih baik, menjadi sulit bahkan bagi seorang programmer untuk melacak apa yang dia lakukan.

Waktu yang diperlukan untuk menulis program dan biayanya mulai melebihi semua perkiraan. Tidak jarang sistem menelan biaya lebih dari dua kali daripada yang diperkirakan dan memakan waktu berminggu-minggu, berbulan-bulan atau bertahun-tahun lebih lama dari yang diperkirakan selesai. Sistem yang diserahkan kepada pelanggan sering kali tidak berfungsi dengan benar karena uang atau waktu telah habis sebelum program dapat dibuat sesuai dengan tujuan semula. Atau program itu sangat kompleks sehingga setiap upaya untuk memecahkan masalah menimbulkan lebih banyak masalah daripada terpecahkan. Ketika pelanggan akhirnya melihat apa yang mereka dapatkan, mereka sering mengubah pikiran mereka tentang apa yang mereka inginkan. Setidaknya satu proyek besar sistem perangkat lunak militer yang menelan biaya ratusan juta dolar ditinggalkan karena tidak pernah bisa berfungsi dengan baik.

Kualitas program menjadi perhatian utama. Karena komputer dan program mereka digunakan untuk tugas yang lebih penting, seperti pemantauan peralatan pendukung kehidupan, kualitas program mendapat makna baru. Karena kami telah meningkatkan ketergantungan kami pada komputer dan dalam banyak kasus tidak bisa lagi tanpa mereka, kami menemukan betapa pentingnya mereka bekerja dengan benar.

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

Pada saat yang sama, perangkat keras menjadi lebih murah. Tabung digantikan oleh transistor dan transistor digantikan oleh sirkuit terpadu hingga mikrokomputer yang harganya kurang dari tiga ribu dolar telah menjadi beberapa juta dolar. Sebagai indikasi seberapa cepat perubahan terjadi, biaya sejumlah penggunaan komputer berkurang setengahnya setiap dua tahun. Dengan adanya pengelompokan ulang ini, waktu dan biaya pengembangan perangkat lunak tidak terlalu kecil, dibandingkan dengan perangkat keras, yang dapat diabaikan.

Ketika biaya perangkat keras merosot, perangkat lunak masih ditulis oleh orang-orang yang upahnya meningkat. Penghematan pada peningkatan produktivitas dalam pengembangan perangkat lunak dari penggunaan assembler, kompiler, dan sistem manajemen basis data tidak berjalan secepat penghematan biaya perangkat keras. Saat ini biaya perangkat lunak tidak hanya dapat diabaikan, mereka bahkan menjadi lebih besar dari biaya perangkat keras. Beberapa perkembangan saat ini, seperti bahasa non-prosedural (generasi keempat) dan penggunaan kecerdasan buatan (generasi kelima), menjanjikan peningkatan produktivitas pengembangan perangkat lunak, tetapi kami baru mulai melihat potensi mereka.

Masalah lain adalah bahwa dalam program-program sebelumnya sering bahkan sebelum sepenuhnya dipahami apa yang harus dilakukan oleh program. Setelah program itu ditulis, klien mulai mengungkapkan ketidakpuasan. Dan jika pelanggan tidak puas, produser akhirnya tidak senang. Seiring waktu berlalu, pengembang perangkat lunak belajar persis apa yang mereka rencanakan dengan kertas dan pensil sebelum mereka mulai. Kemudian mereka dapat melihat rencana dengan pelanggan untuk melihat apakah mereka memenuhi harapan pelanggan. Lebih mudah dan lebih murah untuk membuat perubahan pada versi kertas dan pensil ini daripada membuatnya setelah sistem dibangun. Penggunaan perencanaan yang baik akan mengurangi kemungkinan perubahan yang harus dilakukan setelah program selesai.

Sayangnya, hingga beberapa tahun yang lalu, belum ada metode presentasi yang baik untuk menggambarkan sistem yang memuaskan yang serumit sistem yang sedang dikembangkan saat ini. Satu-satunya representasi yang baik tentang bagaimana produk akan terlihat adalah produk akhir itu sendiri. Pengembang tidak dapat menunjukkan kepada pelanggan apa yang mereka rencanakan. Dan pelanggan tidak dapat melihat apakah perangkat lunak itu yang mereka inginkan sampai akhirnya dibangun. Maka itu terlalu mahal untuk berubah.

Sekali lagi, pertimbangkan analogi konstruksi bangunan. Seorang arsitek bisa menggambar rencana. Pelanggan biasanya dapat memperoleh beberapa wawasan tentang apa yang telah direncanakan arsitek dan memberikan umpan balik apakah itu sesuai. Denah lantai cukup mudah dimengerti oleh orang awam, karena kebanyakan orang akrab dengan gambar-gambar yang melambangkan benda-benda geometris. Arsitek dan klien berbagi konsep umum tentang ruang dan geometri. Tetapi perancang perangkat lunak harus mengusulkan sistem untuk pelanggan dengan logika dan pemrosesan informasi. Karena mereka belum memiliki bahasa konsep umum, perancang perangkat lunak harus belajar bahasa baru kepada klien sebelum mereka dapat berkomunikasi.

Selain itu, penting bahwa bahasa ini sederhana sehingga dapat dipelajari dengan cepat. ]



Source by Edeh Chijioke