Pengertian Software dan Sejarah Perkembangan Software Komputer
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.
# 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