Thursday, March 10, 2011

Terjemahan Buku Software Engineering

Roger S. Pressman, Ph.D.



CHAPTER 1: Produk

Software atau perangkat lunak komputer sudah menjadi sebuah alat penggerak, dan sudah merupakan mesin yang mengendalikan pembuat keputusan bisnis, selain sebagai dasar invetigasi bagi pengetahuan modern dan pemecah masalah engineering. Software merupakan kunci yng membedakan produk dan layanan modern, yang telah menyatu dalam sistem dari hampir semua bidang seperti: transportasi, kesehatan, telekomunikasi, militer, proses industri, hiburan, produk perkantoran, dan masih banyak daftar lainnya yang hampir tak berujung. Penggunaan software tidak bisa dihindari lagi didunia modern seperti saat ini. Masuk abad dua puluh satu, software akan menjadi pengendali untuk kemajuan-kemajuan baru dalam segala hal, mulai dari pendidikan dasar sampai rekayasa genetika/keturunan (genetic engineering).

Tinjauan singkat.
Software adalah produk yang dirancang dan dibangun oleh software engineer, meliputi program  yang dijalankan dalam komputer dengan berbagai ukuran dan arsitektur, dokumen hasil cetakan dan formulir yang bersifat maya, data yang terdiri dari kombinasi angka dan huruf,  termasuk informasi yang disajikan melalui gambar, gambar hidup dan suara. Pemahaman terhadap software itu penting, karena software telah memberikan imbas ke hampir seluruh aspek kehidupan kita, dan telah menembus kedalam perdagangan, kebudayaan, dan aktivitas keseharian kita. Untuk membangun software komputer sama seperti membangun sebuah produk jadi lainnya, dengan melalui suatu proses dan dengan pendekatan rekayasa software (software engineering) agar supaya produk yang dihasilkan berkwalitas tinggi dan bisa memenuhi kebutuhan orang yang ingin menggunakan produk tersebut. Dari sudut pandang software engineer, produk yang merupakan hasil kerja adalah berupa software komputer, sebuah program, dokumen, dan data. Tapi dari sudut pandang pemakai, hasil produk adalah keluarannya yang berupa informasi, yang dengan itu membuat pemakai mendapatkan kemudahan dan membuat keadaan menjadi lebih nyaman.

Dalam kurun waktu lima tahun sejak edisi ke empat dari buku ini diterbitkan, peran software sebagai tenaga penggerak ekonomi telah menjadi semakin nyata. Industri baru yang dipicu oleh software telah bangkit dan perusahaan lama yang tidak bisa menyesuaikan terancam kepunahan. Pemerintahan US menuntut pada perusahaan industri software yang terbesar, untuk mencoba  menghentikan praktek monopoli, sama  seperti yang terjadi pada industri minyak dan baja sebelumnya.

Dampak software pada masyarakat dan budaya kita terus berlangsung semakin dalam, tapi komunitas software terus-menerus berusaha untuk membangun teknologi yang akan membuatnya lebih mudah, lebih cepat, dan lebih murah dalam pembuatan program-program komputer yang berkwalitaas tinggi. Beberapa teknologi ini ada yang ditujukan untuk aplikasi bidang khusus (seperti, rancangan dan implementasi Web); beberapa lagi fokus dibidang teknologi (misalnya, sistem object-oriented); dan masih ada yang lainnya yang berbasis lebih luas (misalnya, sistem opersi seperti Linux). Meskipun demikian, masih belum ada yang mengembangkan sebuah teknologi software yang dapat melakukan semuanya, dan kemungkinan ini sangatlah kecil dimasa mendatang.

Buku ini memberikan sebuah kerangka  kerja yang dapat dipergunakan oleh mereka yang ingin membangun software komputer, melalui cara-cara yang benar dan dengan menggunakan teknologi yang meliputi suatu proses, metode-metode, dan sejumlah alat bantu lainnya yang kemudian kita sebut dengan Software Engineering.

Perkembangan Peran Software

Software saat ini memegang dua peran. Software sebagai sebuah produk dan, dalam waktu yang bersamaan, juga sebagai sarana untuk menghasilkan sebuah produk. Sebagai sebuah produk, software memberikan suatu kemampuan menghitung yang disatukan kedalam hardware komputer, atau yang lebih luas lagi, pada jaringan komputer yang bisa diakses oleh hardware lokal. Software bisa berada melekat didalam sebuah telepone selular atau beroperasi didalam sebuah komputer mainframe, yang bekerja untuk merobah data menjadi informasi, memproduksi, mengatur, mendapatkan, mengubah, mempertunjukan, atau mengirimkan informasi yang sederhana, seperti sebuah bit tunggal atau, barangkali sekompleks pertunjukan dengan multimedia. Sebagai sarana yang digunakan untuk menghasilkan suatu produk, software bertindak sebagai basis untuk mengontrol komputer (sistem operasi), komunikasi informasi (jaringan), dan pembuat serta pengontrol dari program yang lainnya (software sebagai alat bantu (tools) dan lingkungan ( environments)).

Software menghantar informasi, produk paling penting yang dihasilkan untuk kita, mengubah data pribadi (seperti misalnya transaksi keuangan pribadi) sehingga data itu bisa lebih berarti dalam konteks lokal; software juga mengelola informasi bisnis menjadikannya lebih bisa bersaing; juga menjadi penyedia pintu masuk ke jaringan informasi dunia( misal internet) dan yang bisa memenuhi permintaan informasi dalam berbagai bentuk.

Peran software komputer cukup banyak mengalami perubahan sepanjang kurun waktu tidak kurang dari 50 tahun. Dengan peningkatan kemampuan hardware yang dramatis, perubahan yang terjadi lebih dalam lagi dari segi arsitektur komputer, kecepatan,  peningkatan kapasitas memori dan penyimpanan, dan dengan beragamnya variasi pilihan input dan output menjadikan sistem berbasis komputer semakin lengkap dan kompleks. Kehandalan dan kompleksitas bisa menimbulkan kekaguman ketika suatu sistem yang berjalan dengan baik dan sukses, tetapi dia juga bisa menimbulkan masalah yang besar manakala mereka harus membangun sebuah sistem yang rumit.

Buku terkenal yang dicetak sepanjang tahun 1970 and 1980 memberikan sejarah yang berguna untuk melihat kedalam perubahan persepsi tentang komputer dan software dan dampaknya terhadap budaya kita. Osborne [OSB79] menengarai dengan sebuah “revolusi industri baru” Toffler [TOF80] menamakan dengan kemajuan dari microelektronik bagian dari “perobahan gelombang ketiga”  dalam sejarah manusia, dan Naisbitt [NAI82] memperkirakan sebuah perubahan dari sebuah masyarakat industri ke sebuah “masyarakat informasi”. Feigenbaum dan McCorduck [FEI83] memperkirakan bahwa informasi dan pengetahuan (yang dikendalikan komputer) akan menjadi tonggak kekuatan diabad dua satu, dan Stoll [STO89] berargumentasi bahwa melalui “komunitas elektronik” yang terbentuk oleh jaringan dan software adalah kunci pertukaran pengetahuan dunia.

Mulai 1990, Toffler [TOF90] menerangkan  “pergantian kekuatan” dimana struktur kekuatan lama (pemerintahan, dunia pendidikan, industri, ekonomi, dan militer) dipisahkan, oleh karena komputer dan software mengarahkan kepada ” demokratisasi pengetahuan”. Yourdan [YOU92] khawatir bahwa perusahaan US mungkin akan kehilangan daya saingnya dalam bisnis yang berkaitan dengan software dan memperkirakan “penurunan dan kejatuhan dari programer Amerika”. Hammer dan Champy [HAM93] berargumantasi bahwa teknologi informasi telah memainkan peran pemutar balikan dalam “perekayasaan kembali korporasi (reengineering of the corporation)”. Sepanjang pertengahan tahun 1990-an, pemakaian komputer dan software telah melahirkan sejumlah buku oleh “neo-Luddites” (seperti Resisting the Virtual Life, yang diedit oleh James Brook dan Iain Boal dan The Future Does Not Compute oleh Stephen Talbot). Penulis-penulis ini telah dihantui oleh komputer, mereka menegaskan keprihatinannya yang masuk akal,  dan menghiraukan suatu keuntungan-keuntungan yang amat besar dan yang telah terbukti nyata.

Sepanjang akhir 1990-an, Yourdan {YOU96] mengevaluasi kembali kemungkinan-kemungkinan yang diharapkan untuk profesional software dan menyarankan “kenaikan dan kebangkitan” dari Programer Amerika. Sejalan dengan pentingya pertumbuhan internet, perubahan peminatan menunjukan kebenaran. Begitu abad dua puluh tutup, fokus berobah sekali lagi, kali ini kedampak  Y2K “bom wktu” (misal, [YOU98b], [DEJ98], [KAR99]. Meskipun prediksi tentang Y2K dari orang-orang yang mengatakan akan kiyamat tidak benar, tulisan-tulisan terkenal mereka menggiring peninjauan kembali sejauh mana pemakaian software dalam kehidupan kita. Dengan “menjamurnya komputer” [NOR98] melahirkan suatu generasi peralatan-peralatan informasi yang nyediakan koneksi menggunakan saluran pita lebar (broadband) ke Web,  “koneksi yang tak terlihat mata kerumah kita, kantor dan dalam perjalanan.” [LEV99]. Peranan software masih akan terus berkembang.

Seorang programer dari era terdahulu telah diganti oleh sebuah tim dari spesialis software, masing-masing fokus pada satu bagian dari teknologi yang diperlukan untuk menghasilkan sebuah aplikasi yang kompleks. Namun demikian masih tetap saja timbul pertanyaan yang sama tetang kenapa dalam penyelesaian masih memerlukan waktu yang lama dengan biaya yang tinggi, dan mengapa masih saja ada kesalahan dalam software setelah pengiriman serta mengapa sulit untuk mengukur kemajuan dalam membangun suatu software.
Pertanyaan-pertanyaan diatas, dan masih banyak pertanyaan lainnya, adalah perwujudan dari keprihatinan kita terhadap software dan cara bagaimana software itu dibangun, sebuah keprihatianan yang menghantarkan kita kedalam paraktek pemakaian software engineering.

Software

Ditahun 1970, masyarakat yang bisa menerangkan apa yang disebut dengan “software komputer” kurang dari 1 %.  Sekarang, banyak profesional dan anggota masyarakat umum sebagian besar  telah   mengetahui apa yang dinamakan software. Apakah benar demikian?
Dalam buku teks, penjelasan mengenai software dapat diterangkan sebagai berikut: Software adalah perintah-perintah (program komputer) yang  ketika dijalankan memberikan suatu fungsi dan  hasil yang diinginkan, data yang tersusun memungkinkan program mengolahnya menjadi suatu informasi, dan dokumen yang menerangkan  bagaimana cara mengoperasikan dan menggunakan program.

Karakteristik Software

Untuk  menambah pemahaman mengenai software (dan mengerti sepenuhnya Software Engineering), sangatlah penting untuk memeriksa ciri-ciri software yang membuat beda dengan barang-barang yang dibuat orang lainnya. Sewaktu software dibangun, proses kreasi manusia ( analisa, perancangan, pembangunan, percobaan/tes) pada akhirnya diwujudkan kedalam bentuk fisik. Jika kita bangun sebuah komputer yang baru, mula-mula kita buat sketsa, gambar rancangan formal, dan dari bentuk dasar rancangan fisik tersebut, kemudian berkembang menjadi bentuk produk secara fisik (chips, circuit board, power supply, dll).
Software adalah suatu kerangka berpikir atau logika bukan seperti elemen yang dapat dilihat secara fisik. Oleh karena itu software mempunyai ciri-ciri yang berbeda dibanding dengan perangkat keras (hardware):
1. Software itu dibangun atau direkayasa (engineered), bukan diproduksi seperti pada pengertian  klasik.

Meskipun ada persamaan diantara pembangunan software dan produksi hardware, kedua aktivitas tersebut secara fondamental berbeda. Pada dua kegiatan itu kwalitas yang tinggi sama-sama bisa dicapai dengan perancangan yang bagus, namun ditahap perakitan, pada hardware kemungkinan bisa timbul didalam hal kwalitas, yang dalam software masalah tersebut tidak ada ( atau kalaupun ada, perbaikannya dalam software lebih mudah).

Kedua aktivitas diatas tergantung sepenuhnya pada manusia, tetapi dalam hubungan antara pengguna dan usaha yang dilakukan sangatlah berbeda, dua-duanya sama membangunan suatu produk, tapi pendekatannya berlainan. Biaya software terpusat pada perekayasaan, artinya software tidak bisa dikelola seperti halnya pada sebuah proyek pabrikan.

Kerusakan yang sering terjadi pada hardware, seiring dengan berjalannya waktu. Secara umum kerusakan hardware yang tinggi terjadi pada awal pemakaiannya (kerusakan ini seringkali dialamatkan pada perancangan atau perakitan yang jelek), kerusakan/cacat dikoreksi, yang selanjutnya kegagalan-kegagalan menjadi berkurang, menuju kearah kondisi yang stabil (idealnya, cukup rendah) untuk beberapa periode waktu. Seiring berlalunya waktu, suatu saat kerusakan hardware akan meningkat lagi, karena bagaimanapun juga komponen perangkat keras, tidak bisa lepas dari gangguan yang diakibatkan oleh debu, getaran, pemakaian secara kasar, suhu yang tinggi, dan berbagai kondisi lingkungan lainnya yang bisa menyebabkan kerusakan. Secara sederhana bisa dikatakan, perangkat keras atau hardware mulai usang.

Sedangkan sofware tidak rentan terhadap lingkungan yang bisa menyebabkan  kerusakan seperti halnya hardware yang menjadi usang. Secara teori, bisa dikatakan kurva kerusakan  untuk software mengambil bentuk kurva yang ideal, diperlihatkan di Gambar 1. Cacat yang tidak terlihat akan menyebabkan rata-rata kegagalan terjadi diawal pemakai program. Meskipun demikian, hal ini bisa dikoreksi (idealnya, tanpa menimbulkan kesalahan yang lain lagi) dan kurva akan kembali mendatar. Kurva ideal adalah penyederhanaan secara menyeluruh dari model kerusakan yang sebenarnya pada software. Meskipun begitu, kesimpulannya jelas , bahwa software tidak mengenal usang/aus, yang mungkin adalah sudah kurang begitu sesuai lagi.

Gambar 1.

Selama masa pemakaian, software akan mengalami perubahan (perawatan). Sewaktu perubahan dilakukan, kemungkinan akan bisa timbul kerusakan, menyebabkan lonjakan kurva kegagalan seperti Gambar 1. Sebelum kurva kembali ke-kondisi semula yang stabil, perubahan yang lain juga diperlukan, menyebabkan kurva melonjak kembali. Perlahan-lahan, level kegagalan minimal mulai naik, software menjadi buruk dikarenakan oleh adanya perubahan.

Aspek yang lain perbedaan antara hardware dan sofware adalah ketika sebuah komponen hardware usang, hal ini bisa diganti dengan suku cadang baru, yang didalam software tidak ada yang namanya suku cadang. Setiap kegagalan dalam suatu software itu mengindikasikan adanya kesalahan dalam perancangan atau dalam proses penerjemahan rancangan kekode/pengkodean yang bisa dijalankan oleh mesin.  Oleh karena itu dalam pemeliharaan suatu software terdapat pertimbangan yang lebih kompleks dari pada pemeliharaan hardware.
3. Meskipun industri bergerak kearah perakitan berbasis komponen, kebanyakan software masih terus dibangun berdasarkan permintaan.

Kita bayangkan bagaimana cara mengontrol hardware dimana produk yang berbasis komputer dirancang dan dibangun, mulai dari engineer merancang gambar skhema rangkaian elektronik digital sederhana, kemudian melakukan beberapa analisa dasar untuk meyakinkan bahwa fungsi yang sempurna telah dicapai, selanjutnya kebagian lain untuk menentukan komponen elektronik, dengan pilihan sesuai nomor IC, fungsi, dan keterangan interface dengan jelas, barulah kemudian diintegrasikan berdasarkan petunjuk standard.
Sejalan dengan perkembangan disiplin engineering, koleksi standard rancangan komponen diciptakan, ribuan komponen standard digunakan oleh engineer mekanik dan elektronik, dalam rancangan sistem mereka yang baru. Penggunaan ulang komponen diciptakan, engineer berkonsentrasi pada  sebuah rancangan komponen yang benar-benar inovatif dan mewakili sesuatu yang baru. Penggunaan kembali komponen  didunia hardware adalah satu hal yang wajar dalam suatu proses rekayasa (engineering). Dalam dunia software, ini adalah sesuatu yang baru saja dimulai yang harus dicapai dalam skala yang lebih luas.

Suatu komponen software harus dirancang dan diimplementasikan sehingga ini bisa dipergunakan lagi dibeberapa program yang lain. Tahun 1960-an, telah dibangun kumpulan subroutine yang bisa dipergunakan lagi dengan algorithma yang telah didefinisikan dengan baik dan dalam suatu cara yang efektif, tapi hanya untuk bidang aplikasi yang terbatas. Sekarang penggunaan ulang diperluas, tidak hanya algorithmanya saja tapi meliputi juga struktur datanya. Penggunaan ulang komponen secara modern membungkus bersama, data dan proses dalam data itu sendiri, sehingga membebaskan engineer software untuk menciptakan aplikasi baru dengan menggunakan bagian yang bisa dipakai ulang. Misalnya, saat ini interface grafik menggunakan komponen yang bisa dipergunakan ulang, yang memungkinkan membuat kreasi jendela grafis, menu pull-down, dan variasi yang luas untuk mekanisme interaksi. Struktur data dan rincian proses yang diperlukan untuk membangun suatu interface berisikan suatu kumpulan dari komponen-komponen pemakaian ulang untuk bangunan interface.

Aplikasi Software.

Software mungkin dipergunakan dalam suatu situasi dimana suatu program menerima data yang sudah didefinisikan urutannya, melaksanakan analisa algorithma tanpa penundaan, dan memberikan hasil data dalam format laporan atau grafik. Aplikasi macam ini disebut ketergantungan (determinate).  System operasi multiuser, disisi lain, menerima masukan yang mempunyai isi bervariasi dan waktu yang tidak menentu, menjalankan algorithma yang bisa diinterupsi oleh kondisi luar, dan memberikan keluaran yang bervariasi sesuai lingkungan fungsi dan waktunya. Aplikasi dengan krakteristik semacam ini disebut tidak tergantung (indeterminate).

Cukup sulit untuk membangun aplikasi software dengan kategori umum yang mengandung banyak keperluan. Sejalan dengn pertumbuhan software yang kompleks, penggolongan dengan tegas menjadi hilang. Software berikut mengindikasikan kecendrungn aplikasi yang mengandung cakupan luas:

System Software.

System software dalah suatu kumpulan program yang ditulis untuk melayani program lain. Beberapa system software (misal, compiler, editor, dan utility File Management) prosesnya sangat kompleks, struktur informasinya tergantung (determinate). System aplikasi yang lain ( misal, komponen system operasi, driver, prosesor telekomunikasi) sebagian besar proses datanya tidak tergantung (indeterminate).  Dalam kasus yang lain, area system software bercirikan interaksi dengan hardware komputer yang tinggi, banyak digunakan untuk multiuser, operasi bersamaan yang memerlukan antrian, pemakaian bersama sumber daya, dan proses manajemen yang rumit; struktur data yang kompleks, dan mempunyai multiple interface external.

Software dengan waktu seketika (real time).

Software yang memonitor/analisa/kontrol peristiwa sesuai dengan waktu kejadian nyata disebut dengan waktu seketika (real-time). Elemen software real-time termasuk diantaranya komponen data bersangkutan yang mengumpulkan dan memformat informasi dari lingkungan luar, komponen analisa yang merobah informasi sesuai yang diperlukan oleh aplikasi, komponen pengontrol keluaran yang menjawab lingkungan luar, dan komponen monitor yang mengkoordinasikan semua komponen lainnya, sehingga jawaban seketika (umumnya antara 1-60 millidetik) dapat terjaga.

Software Bisnis.

Proses informasi bisnis merupakan area aplikasi software tunggal yang paling besar. Payroll, account receivable/payable, inventory adalah  software manajemen sistem informasi bisnis, aplikasi diarea ini merestruktur data yang ada dalam database, dengan suatu cara, guna memberi fasilitas operasi bisnis atau membuat keputusan manajemen, aplikasi software bisnis juga meliputi perhitungan dengan cara yang interaktif (misal, proses transaksi PoS).

Engineering dan Software ilmiah.

Engineering dan software untuk keperluan ilmiah telah digolongkan dalam algorithma dengan “angka rumit”. Jajaran aplikasi ini mulai dari astronomi sampai vulcanology, dari analisa otomotive yang ketat sampai pesawat ulang- alik dengan orbit yang dimanis, dan dari molekul biology  sampai perakitan otomatis. Aplikasi modern dalam area engineering dan ilmiah bergerak menjauh dari algorithma angka konvensional seperti misalnya Computer-Aided Design, sistem simulasi, dan aplikasi interaktif lainnya dengan mengambil waktu seketika (real time).

Software melekat.

Produk cerdas telah menjadi sesuatu hal yang biasa dalam hampir setiap barang industri yang dipasarkan, menggunakan embedded software atau software melekat yang ditanam dalam read-only memory (ROM) dan dipergunakan untuk mengontrol produk dan sistem untuk pasar umum maupun industri. Software melekat dapat melakukan fungsi yang sangat terbatas dan tertentu saja. (misal, keypad pengotrol untuk oven microwave) atau menyediakan fungsi dan kemampuan kontrol yang cukup (misal, digital yang berfungsi dalam mobil seperti pengontrol bensin, peraga dashboard, dan sistem pengereman).

Software komputer pribadi.
Pasar Software komputer pribadi telah berkembang dalam dua dekade terakhir ini. Word Processing, spreadsheet, komputer grafik, multimedia, hiburan, manjemen database, aplikasi keuangan perorangan dan bisnis, jaringan external, dan akses database hanyalah beberapa dari ratusan aplikasi komputer yang lain.
Software berbasis Web.
Halaman Web yang diakses dengan menggunakan browser adalah sebuah software yang memadukan pelaksanaan perintah-perintah (misal, CGI, HTML, Perl, atau Java), dan data (misal, hypertext dan berbagai macam format visual dan audio). Pada intinya, penggunaan jaringan, telah membuat komputer menjadi sangat besar, yang menyediakan sumber software yang hampir tak terbatas dan bisa di akses oleh semua orang melalui modem.

Software artificial intelligence.

Software Artificial Intelligent (AI), menghasilkan kecerdasan buatan dengan mempergunakan algorithma nonnumerik untuk memecahkan problem kompleks yang tidak bisa dilakukan melalui perhitungan biasa atau analisa langsung. Sistem pakar, yang juga dikenal dengan istilah sistem berbasis pengetahuan dan pengalaman (knowledge), pengenalan pola (gambar dan suara), jaringan syaraf buatan, pembuktian dalil, dan permainan game adalah katagori yang mewakili aplikasi ini.

Software: Sebuah krisis dimasa datang?

Beberapa pengamat industri (termasuk pengarang buku ini) telah mengolongkan masalah-masalah yang berkaitan dengan pembangunan software sebagai sebuah “krisis”. Beberapa buku (misal, [GLA97], [YOU98a]) sudah menghitung kembali dampak dari beberapa kegagalan software yang agak menonjol, yang terjadi pada dekade lalu. Dengan adanya sukses besar yang dicapai oleh industri software, melahirkan beberapa pertanyaan, apakah istilah krisis software masih pantas. Robert Glass, pengarang beberapa buku tentang kegagalan software, mewakili mereka yang telah merobah pendiriannya. Dia menyatakan [GLA98]:” Menengok cerita saya mengenai kegagalan dan membaca laporan khusus, kegagalan yang luar biasa ditengah beberapa keberhasilan, ibarat sebuah gelas kosong, sekarang sudah penuh terisi”.

Orang-orang software yang berhasil lebih sering dari pada mereka yang gagal, dan krisis software yang diperkirakan tiga puluh tahun yang lalu kelihatannya tidak pernah terwujud. Makna krisis diantara adalah “titik balik dalam rangkaian suatu penyakit, ketika hal itu menjadi jelas apakah pasien akan hidup atau mati” dan kaitannya dengan software definisi ini barangkali memberikan kita sebuah kata kunci tentang kenyataan dari masalah yang telah mewabah pada pengembangan software.

Apa yang sebenarnya kita hadapi  mungkin lebih baik digolongkan sebagai chronic affliction (suatu terminologi yang disarankan oleh Prof Daniel Tiechrow dari Universitas Michigan dalm pembicraannya yang dikemukakan di Geneva, Switzerland, April 1989) . Kata affliction didefinisikan sebagai “segala sesuatu yang menyebabkan sakit atau  menyusahkan.” Tetapi definisi dari kata sifat chronic adalah kunci dari argumentasinya: “berlangsung dalam waktu lama atau sering terjadi, terus menerus tidak berkesudahan.” Ini jauh lebih akurat untuk menerangkan masalah yang telah lama dialami dalam bisnis software sebagai kesulitan yang berlangsung lama dari pada krisis.

Terlepas dari mau sebut dengan istilah apa, sejumlah masalah yang terjadi dalam pengembangan software komputer, tidak terbatas pada software yang tidak berfungsi dengan sempurna. Justru, kesulitan yang menyelimuti seluruh masalah adalah berkaitan dengan bagaimana kita mengembangkan software, bagaimana kita mendukung pengembangan volume dari software yang ada, dan bagaimana kita dapat mengharapkan untuk menjaga langkah dengan permintaan pengembangan software lebih banyak. Kesulitan yang demikian masih berlangsung sampai sekarang, namun faktanya industri masih berjalan baik.

Mitos software.

Beberapa penyebab kesulitan software bisa dilacak dari dongeng yang berkembang sepanjang awal sejarah pengembangan software. Tidak seperti mitos kuno yang sering memberi pelajaran pada manusia dengan petuahnya yang berharga, mitos pada software menyebarkan kesalahan informasi dan kebingungan. Mitos software mempunyai beberapa perlengkapan-perlengkapan yang membuatnya tersembunyi dan membahayakan; misalnya, mereka kelihatannya  seperti pernyataan yang masuk akal dari suatu fakta (terkadang berisi elemen yang benar), mereka mempunyai perasaan yang berdasarkan intuisi, dan mereka seringkali diumumkan secara resmi oleh parktisi berpenglaman yang “tahu nilai.”
Saat ini, para profesional yang mempunyai banyak pengetahuan dan pengalaman mengenal mitos, jadi untuk apa mereka bersikap yang menyesatkan, yang menyebabkan masalah serius yang sama pada para manager and orang-orang teknik. Sikap dan kebiasaan lama sulit untuk dirobah, dan sisa-sisa mitos software masih dipercaya.

Mitos Manjemen.

Manajer dengan tanggung jawab terhadap software, seperti manajer dikebanyakan disiplin lainnya, seringkali dibawah tekanan untuk menjaga budget, menjaga rencana kerja supaya tidak meleset, dan meningkatkan kwalitas. Seperti seorang tenggelam yang menggapai jerami, manager software seringkali memegang kepercayaan pada mitos software, bahwa kepercayaan itu mengurangi tekanan (meskipun sementara).
Mitos: Ada buku yang penuh dengan standard dan prosedur untuk membangun software, bukankah itu cukup menyediakan pada orang-orang  segala sesuatunya yang ingin mereka ketahui?
Kenyataannya: Buku standard mungkin ada dan cukup bagus, tapi apakah itu dipakai? Apakah praktisi software memperhatikan keberadaannya? Apakah itu merefleksikan praktek engineer software modern? Apakah itu komplit? Apakah itu sejalan dengan  peningkatan waktu penyelesaian sambil tetap fokus pada kwalitas? Dalam beberapa kasus, jawaban untuk semua pertanyaan diatas adalah  “tidak”
Mitos: Orang-orang mempunyai software yang bagus untuk alat bantu pengembangan, setelah itu, kita belikan mereka komputer yang paling baru.
Kenyataannya: memerlukan lebih banyak mainframe model terbaru, workstation, atau PC untuk mengerjakan pengembangan software dengan kwalitas yang tinggi. Alat bantu Computer-aided software engineering (CASE) sebenarnya lebih penting dari pada hardware untuk menghasilkan kwalitas yang bagus dan produktif, namun demikian kebanyakan pengembang software masih tidak menggunakan nya secara efektif.
Mitos: Jika ada keterlambatan, kita dapat menambah lebih banyak programmer dan terkejar (kadangkala disebut Mongolin horde concept)
Kenyataannya: Pengembangan software bukan suatu proses mekanik seperti perakitan. Dalam perkataan Brooks [BRO75]: “menambah orang pada keterlambatan proyek software membuatnya lebih terlambat.” Ketika orang baru ditambahkan, orang yang tadinya sedang bekerja harus meluangkan waktu mengajari pendatang baru, dengan demikian mengurangi sejumlah waktu dan terbuang tenaga pengembang yang produktif.  Orang bisa ditambahkan tapi hanya dengan cara perencanaan dan koordinasi yang baik.
Mitos: Jika saya memutuskan untuk outsource proyek software pada pihak ketiga, saya bisa santai dan membiarkan perusahaan itu membangunnya.
Kenyataannya: Jika sebuh organisasi tidak tahu bagaimana mengatur dan mengontrol internal proyek, akibatnya akan bermasalah ketika proyek software dikerjakan pihak luar.
Mitos Customer:
Customer yang menginginkan software komputer mungkin orang dari meja sebelah, grup teknik lantai bawah, departemen pemasaran /penjualan, atau perusahaan dari luar dengan memakai kontrak. Bebarapa kasus, customer percaya pada mitos tentang software, karena manager software dan praktisi sedikit sekali melakukan hal-hal untuk memperbaiki kesalah pahaman, akhirnya   harapan customer tidak tercapai, akibatnya ketidak puasan pada pengembang.
Mitos: Penjelasan umum mengenai objektifnya sudah cukup untuk mulai menulis program, untuk detilnya bisa mengisinya kemudian.
Kenyataanya: Awal definisi yang jelek adalah penyebab utama dari kegagalan usaha software. Suatu formalitas dan penjelasan rinci dari mengenai informasi, fungsi, perlakuan, tampilan, interface, pembatasan rancangan, dan validasi kretaria adalah sangat penting. Karakteristik ini dapat ditentukan hanya setelah komunikasi secara menyeluruh antara customer dan pengembang dilakukan.
Mitos: Permintaan proyek terus menerus berubah, tapi perubahan bisa dengan mudah diakomodasikan karena software fleksibel.
Kenyataanya: Permintaan software memang berubah, tapi dampak dari perubahan bervariasi terkait dengan waktu pengutaraan. Apabila perhatian yang serius diberikan diawal pendefinisian, permintaan awal perubahan dapat dengan mudah ditampung. Customer dapat meninjau kembali permintaan dan merekomendasi perubahan dengan dampak yang relatif kecil dalam pembiayaan. Ketika perubahan diminta dalam waktu perancangan software, dampak pembiayaan membesar dengan cepat, karena sumber daya telah disepakati dan kerangka rancangan telah ditetapkan. Perubahan dalam fungsi, tampilan, interface, atau karakteristik pada waktu implementasi (pengkodean dan pengetesan) mempunyai dampak pembiayaan yang lebih besar lagi. Ketika perubahan diminta setelah software dalam produksi, bisa-bisa melebihi sebuah permintaan yang terbesar, lebih mahal dari perobahan sama yang ada diawal.
Mitos dari praktisi:
Mitos yang masih dipercaya oleh para praktisi software, telah didukung oleh budaya programming selama 50 tahun. Diawal mulanya software, programming dilihat sebagai bentuk dari seni. Cara lama dan sikap yang sulit untuk dihilangkan.
Mitos: Sekali kita menulis program dan hasilnya bekerja dengan baik, pekerjaan kita selesai.
Kenyataannya: Seseorang suatu kali berkata bahwa “semakin cepat anda memulai ‘menulis kode’, semakin lama hal ini akan anda selesaikan.” Data industri ([LIE80], [JON91]. PUT97]) menunjukan bahwa antara 60 – 80 % dari seluruh tenaga yang dipergunakan dalam software akan dipergunakan setelah hari pertama diserahkan pada customer.
Mitos: Sampai saya mendapatkan program “berjalan” saya tidak punya cara untuk mengukur kwalitasnya.
Kenyataannya: Salah satu mekanisme untuk meyakinkan kwalitas software yang efektif dapat dipergunakan dari permulaan proyek, adalah “filter kwalitas” yang telah terbukti lebih efektif dari pada testing untuk mencari klass tertentu dari kerusakan software.
Mitos: Penyerahan produk software jalan untuk sebuah proyek yang dianggap berhasil adalah pogram yang bisa dijalankan
Kenyataannya: Program yang bisa jalan hanyalah salah satu bagian dari sebuah konfigurasi software yang termasuk didalamnya beberapa elemen. Dokumentasi memberikan dasar untuk engineering yang berhasil dan, lebih penting lagi, menjadikannya sebagai petunjuk untuk pendukung/support software.
Banyak profesional software mengerti pemikiran yang keliru dari mitos yang baru saja diutarakan. Sangat disayangkan, sikap kebiasaan dan cara-cara mendorong manjemen dan praktek-praktek teknik menjadi jelek, meski kenyataannya mencatat pendekatan yang lebih baik.  Mengenali kenyataan-kenyataan software adalah langkah awal terhadap perumusan dari praktek pemecahan masalah untuk software engineering.

Ringkasan

Software telah menjadi elemen kunci dalam perobahan secara perlahan dari sistem dan produk berbasis komputer. Lebih dari 50 tahun yang lalu, software telah berubah secara perlahan dari sebuah pemecahan masalah khusus dan alat bantu analisa informasi, ke industri itu sendiri. Tetapi awalnya budaya dan riwayat “programming” telah menciptakan sejumlah masalah yang masih bertahan hingga sekarang. Software telah menjadi faktor pembatas dalam kelajutan perobahan dari sistem berbasis komputer. Software terdiri dari program, data, dan dokumen-dokumen. Tiap satuan ini terdiri dari sebuah konfigurasi yang dibuat sebagai satu bagian dari proses software engineering. Maksud dari software engineering adalah menyediakan suatu kerangka kerja untuk membangun software dengan kwalitas yang lebih tinggi

M. Setiawan Ahmad.
STTI BI Eresha.

3 comments:

Terimakasih telah membaca,

Semoga perjumpaan kali ini berkesan di hati sahabat-sahabat sekalian, silahkan diambil manfaatnya, serta dibawa pulang oleh-oleh pelajaran dan ilmunya. :)

Jika ingin meninggalkan jejak dan ingin mengirimkan komentar, Silahkan isi kotak komentar di bawah ini...