Software Komputer adalah kumpulan dari intruksi atau statement yang di
susun secara logis dan berbentuk kode yang hanya dapat di mengerti oleh
komputer. Teori
pertama tentang Software Komputer diusulkan oleh Alan Turing pada tahun
1935-nya nomor esai Komputasi dengan aplikasi ke (masalah Keputusan)
Entscheidungsproblem. “Software” istilah pertama kali digunakan di cetak oleh
John W. Tukey pada tahun 1958. Dalam ilmu komputer dan rekayasa Software,
Software adalah semua informasi diproses oleh program sistem komputer, dan
data.
Software
Komputer ini berangsur-angsur mengalami perkembangannya. Berdasarkan
perkembangannya, Sejarah Perkembangan Software Komputer dibagi
dalam beberapa era yaitu Era Pioneer, Stabil, Mikro, dan Modern. Berikut adalah
Sejarah Perkembangan Software Komputer :
1. Era Pioneer. Pada Era
Pioneer ini bentuk software komputer pada awalnya adalah sambungan-sambungan
kabel ke antar bagian dalam komputer, Cara dalam mengakses komputer adalah
menggunakan punched card yaitu kartu yang di lubangi. Penggunaan komputer
dengan sebuah program yang digunakan untuk sebuah mesin tertentu dan untuk
tujuan tertentu. Di era ini software komputer merupakan satu kesatuan dengan
sebuah hardware komputer.
2. Era Stabil. Pada Era
ini software komputer yang dijalankan bukan lagi satu-satu, tapi sudah banyak
proses yang di lakukan secara bersamaan (multi tasking). Software Komputer
pada era stabil ini juga mampu menyelesaikan banyak pengguna (multi user) dan
secara cepat/langsung (real time). Di era ini jugalah mulai di kenal sistem
basis data, yang memisahkan antara program dan data .
3. Era Mikro. Pada Era
Mikro ini software komputer dapat dibedakan menjadi beberapa bagian yaitu
Software Sistem (Windows, Linux, Machintos, dll), Software Aplikasi (Ms.Office,
OpenOffice, dll) dan Languange Software/Bahasa Pemograman (Assembler, Visual
Basic, Delphi, dll)
4. Era Modern. Pada Era
Modern ini software komputer tidak hanya untuk sebuah komputer tetapi sebuah
handphone pun telah di lengkapi dengan sebuah software sistem seperti Android,
Symbian, dll. Tingkat kecerdasan yang ditunjukkan oleh software komputer pun
semakin meningkat, selain permasalahan teknis, software komputer sekarang juga
mulai bisa mengenal suara dan gambar.
Tahun-tahun Penemuan
Software Komputer
# Pada tahun 1945 sampai 1965
Istilah
software engineering digunakan pertama kali pada akhir 1950-an dan awal
1960-an. Pada tahun 1968 dan 1969, komite sains NATO mensponsori dua konferensi
tentang rekayasa perangkat lunak, yang memberikan dampak kuat terhadap
perkembangan rekayasa perangkat lunak. Banyak yang menganggap bahwa dua
konferensi inilah yang menandai awal resmi profesi rekayasa perangkat lunak.
# Pada tahun 1965 sampai 1985
Pada tahun
ini banyak masalah yang ditemukan para praktisi pengembangan perangkat lunak.
Pada tahun ini disebut juga sebagai krisis perangkat lunak. Karena banyak
projek yang gagal dalam pengembangan perangkat lunak komputer ( software
komputer). Dalam projek ini banyak kasus-kasus yang terjadi, salah satu yang
paling terkenal adalah meledaknya roket Ariane akibat kegagalan perangkat
lunak.
# Pada tahun 1985
Selama
bertahun-tahun, para peneliti memfokuskan usahanya untuk menemukan teknik jitu
untuk memecahkan masalah krisis perangkat lunak. Berbagai teknik, metode, alat,
proses diciptakan dan diklaim sebagai senjata pamungkas untuk memecahkan kasus
ini. Mulai dari pemrograman terstruktur, pemrograman berorientasi object,
perangkat pembantu pengembangan perangkat lunak (CASE tools), berbagai standar,
UML hingga metode formal diagung-agungkan sebagai senjata pamungkas untuk
menghasilkan software yang benar, sesuai anggaran dan tepat waktu.
Pada tahun
1987, Fred Brooks menulis artikel No Silver Bullet, yang berproposisi bahwa
tidak ada satu teknologi atau praktik yang sanggup mencapai 10 kali lipat perbaikan
dalam produktivitas pengembangan perangkat lunak dalam tempo 10 tahun.
Mengembangkan
sistem software yang kompleks,cukup kompleks, membutuhkan waktu dan biaya yang
cukup besar. kita akan melihat pada lima metodologi secara garis besar yang
biasanya dikembangkan dan digunakan:
1.
Structured Programming - Sturctured programming berurusan dengan penggunaan
blok sturktur, state procedure call, dan beragam konstruksi loop yang sesuai.
Kita dapatkan mantra baru untuk ini:”go to considered harfull”(kita mencari hal
yang diperkirakan salah/merugikan).Ide yang cukup jelas untuk memberikan
pengetahuan/pengertian terhadap flow kontrol program dengan mudah, agar program
disusun secara terstruktur dan transparan. Penulis berpendapat bahwa ide dari
structured programming telah terintegrasi pada semua metodologi yang muncul
setelahnya.
2.
Object Oriented Programming - Metodologi Object Oriented Programming (OOP)
berkembang dari ide structrured programming. OOP mengatur komplesitas software
dengan memaketkan kode dan data yang biasa digunakan bersama. sebagai object
software dan juga sebagai model benda non-material seperti prosess, cara
mengorganisasi informasi dan lain sebagainya sebagai object software.
Sebuah
object software dapat menjaga internal statenya sendiri. Hal ini sangat berbeda
dengan program terstruktur yang kodenya bisa terstruktur dan dapat dimengerti
dengan mudah, tetapi global data yang dipakai bersama terdapat pada semua
bagian sistem software-termasuk didalamnya bagian tanpa kebutuhan untuk akses
atau modifikasi data tersebut.
3.
Design Patterns - Pada
pengembangan software, penggunaan design patern didasarkan pada observasi bahwa
beberapa proyek software gagal sementara proyek yang mirip berhasil (hal ini
dapat berupa pola managemen, pole penjadwalan, pola testing dll). pada desain
software, penggunaan pola didasarkan pada observasi lebih lanjut pada pola
desain umum untuk tugas yang hampir sama digunakan berulangkali untuk proyek
yang berhasil.
4. Extreme
Programming -
Extreme programming didasarkan pada identifikasi kebutuhan kostumer dan
berkonsentrasi pada pengembangan dan pembuatan kebutuhan pelanggan (kostumer)
dengan cepat. Extreme programming merupakan pendekatan yang berbeda dengan
skenario tradisional yang memerlukan waktu baik pengembang maupun pelanggan
untuk mencoba (biasanya dengan tingkat kesuksesan yang terbatas)
mendokumentasikan secara detail software yang telah dikembangkan selama
beberapa lama waktu yang dihabiskan. pengembang yang berpengalaman mengerti
bahwa implementasi yang ter-stag secara positif berpengaruh pada proses desain.
extreme programming secara special efektif ketika kebutuhan kompleks dan tidak
memerlukan hal seperti sebelumnya.
Extreme
programming biasanya dideskripsikan sebagai sebuah phrase yang cukup berarti
bagi penulis: test driven programming, menulis kode test sebelum menulis kode
aplikasi, kemudian menulis software cukup untuk memenuhi unit test
5. Aspect
oriented Programming - Ide
utama dibalik aspect oriented programming (AOP) adalah pemisahan konsentrasi
sistem software pada bagian yang berbeda. pada prinsipnya, pilosofi ini
mengijinkan pengembangan sistem yang lebih modular, dengan modularitasnya
terkontrol oleh konsentrasi pengembangan yang berbeda. untuk programmer java,
direkomendasikan untuk mencari AspectJ project
Source: http://bimofajarblog.blogspot.com