Software saat ini bisa kita
dapatkan dari memesan dari situs
penyedia, mendapatkan DVD dari majalah yang terdistribusi atau membeli dari
pasar spesifik seperti iTunes sampai mengunduh secara legal ataupun illegal. Sekarang
kita berada di era yang memiliki sisi kompleksitas kebutuhan dan ketersediaan
yang berlebih (information over flood). Inilah yang menggerakkan penelitian
yang terkait software crisis pada era internet.
Pada jaman sebelum ada internet.
Pembengan software masih dimiliki oleh kampus dengan kartu plong atau computer
486 yang dipasangkan turbo pascal. Pada saat itu, itulah software crisis yang
dikarenakan pengetahuan, aliran informasi yang terbatas, dan mahalnya harga
software. Era ini mulai bergeser saat diperkenalkannya system operasi yang
dikenal ddengan Windows dan Linux yang bisa terhubung ke software yang
dinamakan browser Internet Explorer, Yang menjanjikan teknologi pengembangan
perangkat lunak menjadi lebih maju dan effisien.
Software pada masa kini bukanlah
suatu komoditas yang berada di laboratorium komputasi atau berada di
perkantoran canggih semata. Software kini sudah menyentuh berbagai lini
kehidupan dan menyentuh pasar baik yang bersifat vertical (perusahaan) dan
horizontal (pengguna langsung)
Rekayasa perangkat lunak adalah
suatu tahapan demi tahapan yang dibahas satu demi setu dan memiliki hasil dari
setiap tahapannya. Mulai dari pengambilan kebutuhan, analisis, desain,
pembuatan kode dan diakhiri dengan pendistribusian aplikasi. Software
Development Life Cycle adalah penggambaran secara abstrak langkah apa saja yang
dikerjakan untuk membuat software yang lenih terprediksi dari segi hasil dan
kualitas. Kita membutuhkan SDLC saat (1) proyek dengan kerangka kerja lebih
dari 1 bulan atau bahkan multiyear project (2) klien membutuhkan suatu laporan
administrative selain source codes dan software (3) komposisi tim lebih dari 3
orang dan tiap orang memiliki role spesifik untuk bekerja fulltime. Kita tidak
membutuhkan SDLC saat (1) mengembangkan software sederhana dengan jangka waktu
kurang dari 1minggu (2) memiliki pengalaman mengembangkan software yang identic
/ mirip (3) mampu dan paham saat menceritakan secara sederhana mengenai proses
bisnis aplikasi yang dikembangkan.
Masalah dalam pengembangan
perangkat lunak mencakup masalah teknis dan non teknis. Masalah non teknis
seperti (1) aspek komunikasi yang kurang baik, (2) pengelolaan sumber daya
tidak mencukupi (waktu, dana, dan manusia), (3) manajemen risiko yang tidak
terkendali hingga aspek kenyamanan bekerja adalah faktor-faktor kegagalan
sebagian besar pengembangan perangkat lunak.
Masalah teknis seperti (1) Sisem kompleks makin
banyak diusulkan dank lien makin membutuhkannya untuk kebutuhan bisnisnya, (2)
Terlalu banyak teknologi yang bisa dipilih, sebenarnya itu memudahkan tetapi
terkadang membuat bingung dalam memilihnya (3) Semakin banyak system yang
terdistribusi dan terintegrasi (machine to machine), (4) Inisialiasi kebuuthan
yang kurang baik dari klien, (5) Pengujian yang tidak mencukupi atau kurang
detail.
Dalam lapisan software
engineering ada tools, method, process, dan quality focus. Tools adalah perangkat
bantu yang membantu pengembangan software sehingga menjadi lebih mudah dan
produktif. Metode adalah sekumpulan langkah teknis yang dilakukan untuk mengembangkah
perangkat lunak. Proses adalah berbagai hal yang dapat dilakukan oleh tim untuk
mewujudkan suatu perangkat lunak berkualitas. Quality focus adalah keberfokusan
pada kualitas bukan hanya dengan rendahnya kesalahan tetapi juga seberapa besar
klien bersedia menerima software yang telah dikembangkan dengan kelebihan dan
kekurangannya.