Mengapa kita perlu rekayasa perangkat lunak?

Untuk memahami perlunya 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 mulai muncul pada akhir tahun enam puluhan dan awal tahun tujuh puluhan, dan solusi yang mengarah pada penciptaan bidang rekayasa perangkat lunak. Masalah-masalah ini disebut oleh beberapa orang sebagai "Krisis Perangkat Lunak", yang disebut sebagai gejala dari masalah tersebut. Situasi ini juga bisa disebut "The Complexity Barrier", yang disebut sebagai penyebab utama masalah. Beberapa merujuk pada krisis perangkat lunak di masa lalu. Krisis masih jauh dari selesai, tetapi berkat pengembangan banyak teknologi baru yang sekarang berada di bawah judul rekayasa perangkat lunak, kami telah membuat kemajuan dan terus membuatnya.

Pada hari-hari awal penggunaan komputer, perhatian 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, sedangkan "perangkat lunak" adalah "lunak" atau mudah diubah. Menurut kebanyakan orang di industri ini, pengembangan perangkat keras direncanakan dengan hati-hati, tetapi perangkat lunaknya kurang dipikirkan dengan baik. Jika perangkat lunak tidak bekerja, mereka percaya, itu akan cukup mudah untuk mengubahnya sampai berfungsi. Mengapa Anda berupaya merencanakan dalam hal itu?

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

Pendekatan ini memuaskan di masa awal komputer, ketika perangkat lunaknya sederhana. Namun, ketika komputer matang, program menjadi lebih kompleks dan proyek tumbuh lebih 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 terjadi antara kepala banyak orang, membuat keseluruhan proses menjadi jauh lebih rumit. Akibatnya, komunikasi, manajemen, perencanaan dan dokumentasi menjadi kritis.

Pertimbangkan analogi ini: seorang tukang kayu hanya dapat bekerja untuk membangun rumah sederhana untuk dirinya sendiri tanpa lebih dari konsep umum rencana. Ia dapat bekerja atau menyesuaikan berbagai hal seiring dengan berjalannya pekerjaan. Begitulah program awal ditulis. Tetapi jika rumah itu lebih luas, atau jika itu dibangun untuk orang lain, tukang kayu harus merencanakan dengan lebih hati-hati bagaimana seharusnya rumah itu dibangun. Paket harus dinilai dengan pemilik di 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 dari rumah, yang lain tidak membangun sisi lain dari rumah lain. Perencanaan menjadi elemen kunci, sehingga kontraktor semen menuangkan dinding ruang bawah tanah sebelum tukang kayu mulai membingkai. Karena rumah menjadi lebih kompleks dan lebih banyak orang bekerja perlu dikoordinasikan, cetak biru dan rencana manajemen diperlukan.

Ketika program menjadi lebih kompleks, metode awal pembuatan cetak biru (diagram alur) tidak lagi memenuhi kompleksitas yang lebih besar ini. Sehingga menjadi sulit bagi seseorang yang membutuhkan program tertulis untuk mentransfer ke orang lain, programmer, apa yang mereka inginkan, atau bagi programmer untuk berkomunikasi satu sama lain tentang apa yang mereka lakukan. Tanpa metode representasi yang lebih baik, bahkan sulit bagi satu programmer untuk melacak apa yang dia lakukan.

Waktu yang dibutuhkan untuk menulis program dan biayanya mulai melampaui semua perkiraan. Bukan hal yang aneh bahwa sistem harganya lebih dari dua kali lipat dari yang diperkirakan dan akan memakan waktu berminggu-minggu, berbulan-bulan atau bertahun-tahun lebih lama dari yang diperkirakan selesai. Sistem yang diserahkan kepada pelanggan seringkali tidak berfungsi dengan benar karena uang atau waktu telah habis sebelum program dapat dibuat seperti yang dimaksudkan semula. Atau program itu sangat kompleks sehingga setiap upaya untuk memecahkan masalah menghasilkan lebih banyak masalah daripada masalah yang dipecahkan. Ketika pelanggan akhirnya melihat apa yang mereka dapatkan, mereka sering berubah pikiran tentang apa yang mereka inginkan. Setidaknya satu proyek sistem perangkat lunak militer yang sangat besar yang menelan biaya beberapa ratus juta dolar ditinggalkan karena tidak pernah bisa berfungsi dengan baik.

Kualitas program menjadi perhatian utama. Karena komputer dan program mereka digunakan untuk tugas-tugas yang lebih penting, seperti memonitor peralatan pendukung kehidupan, kualitas program mendapat makna baru. Karena kami telah meningkatkan ketergantungan kami pada komputer dan dalam banyak kasus tidak dapat lagi melakukannya 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 yang lama dan memulai dari awal. Ini tentu saja mahal. Bagian dari evolusi dalam pendekatan rekayasa perangkat lunak adalah belajar mengembangkan sistem yang dibangun cukup baik untuk pertama kalinya, sehingga perubahan sederhana dapat dilakukan dengan mudah.

Pada saat yang sama, perangkat keras menjadi semakin murah. Tabung diganti oleh transistor dan transistor digantikan oleh sirkuit terintegrasi sampai mikrokomputer dengan biaya kurang dari tiga ribu dolar telah menjadi beberapa juta dolar. Sebagai indikasi seberapa cepat perubahan terjadi, biaya sejumlah penggunaan komputer berkurang setengah setiap dua tahun. Mengingat pengelompokan ini, waktu dan biaya pengembangan perangkat lunak tidak begitu kecil, dibandingkan dengan perangkat keras, sehingga mereka dapat diabaikan.

Ketika biaya perangkat keras menurun, perangkat lunak masih ditulis oleh orang-orang yang gajinya naik. Penghematan pada peningkatan produktivitas dalam pengembangan perangkat lunak dari penggunaan assembler, compiler dan sistem manajemen basis data tidak berjalan secepat penghematan pada biaya perangkat keras. Memang, 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 benar-benar mulai melihat potensi mereka.

Masalah lain adalah bahwa dalam program-program sebelumnya sering bahkan sebelum sepenuhnya dipahami apa yang harus dilakukan oleh program tersebut. Setelah program ditulis, klien mulai menyatakan ketidakpuasan. Dan jika pelanggan tidak puas, produsen akhirnya tidak puas. Seiring berlalunya waktu, pengembang perangkat lunak mengetahui dengan tepat apa yang mereka rencanakan dengan kertas dan pensil sebelum memulai. 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 membuat kecil kemungkinan bahwa perubahan harus dilakukan setelah program selesai.

Sayangnya, sampai beberapa tahun yang lalu, tidak ada metode presentasi yang baik untuk menggambarkan sistem yang memuaskan yang serumit sistem yang 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 bisa memastikan apakah perangkat lunak itu yang mereka inginkan sampai akhirnya dibangun. Maka terlalu mahal untuk berubah.

Perhatikan kembali analogi konstruksi bangunan. Seorang arsitek dapat menggambar rencana. Pelanggan biasanya bisa mendapatkan beberapa wawasan tentang apa yang telah direncanakan arsitek dan memberikan umpan balik, apakah itu sesuai. Denah lantai cukup mudah dipahami oleh orang awam, karena kebanyakan orang terbiasa dengan gambar yang mewakili objek geometris. Arsitek dan klien berbagi konsep umum tentang ruang dan geometri. Tetapi insinyur perangkat lunak harus mengusulkan sistem untuk pelanggan dengan logika dan pemrosesan informasi. Karena mereka belum memiliki bahasa konsep umum, insinyur perangkat lunak harus mempelajari bahasa baru kepada klien sebelum mereka dapat berkomunikasi.

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



Source by Edeh Chijioke

You may also like

Leave a Reply

Your email address will not be published. Required fields are marked *