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.
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 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.
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