Friday, January 20, 2012

sejarah komputer

Sejarah komputer sudah dimulai sejak zaman dahulu kala. Sejak dahulu kala, proses pengolahan data telah dilakukan oleh manusia. Manusia juga menemukan alat-alat mekanik dan elektronik untuk membantu manusia dalam penghitungan dan pengolahan data supaya bisa mendapatkan hasil lebih cepat. Komputer yang kita temui saat ini adalah suatu evolusi panjang dari penemuan-penemuan manusia sejak dahulu kala berupa alat mekanik maupun elektronik


Saat ini komputer dan piranti pendukungnya telah masuk dalam setiap aspek kehidupan dan pekerjaan. Komputer yang ada sekarang memiliki kemampuan yang lebih dari sekedar perhitungan matematik biasa. Diantaranya adalah sistem komputer di kassa supermarket yang mampu membaca kode barang belanja, sentral telepon yang menangani jutaan panggilan dan komunikasi, jaringan komputer dan internet yang menghubungkan berbagai tempat di dunia.


Sejarah Komputer menurut periodenya adalah:

* Alat Hitung Tradisional dan Kalkulator Mekanik

* Komputer Generasi Pertama

* Komputer Generasi Kedua

* Komputer Generasi Ketiga

* Komputer Generasi Keempat

* Komputer Generasi Kelima



ALAT HITUNG TRADISIONAL dan KALKULATOR MEKANIKAbacus, yang muncul sekitar 5000 tahun yang lalu di Asia kecil dan masih digunakan di beberapa tempat hingga saat ini dapat dianggap sebagai awal mula mesin komputasi.Alat ini memungkinkan penggunanya untuk melakukan perhitungan menggunakan biji-bijian geser yang diatur pada sebuah rak. Para pedagang di masa itu menggunakan abacus untuk menghitung transaksi perdagangan. Seiring dengan munculnya pensil dan kertas, terutama di Eropa, abacus kehilangan popularitasnya


Setelah hampir 12 abad, muncul penemuan lain dalam hal mesin komputasi. Pada tahun 1642, Blaise Pascal (1623-1662), yang pada waktu itu berumur 18 tahun, menemukan apa yang ia sebut sebagai kalkulator roda numerik (numerical wheel calculator) untuk membantu ayahnya melakukan perhitungan pajak


Kotak persegi kuningan ini yang dinamakan Pascaline, menggunakan delapan roda putar bergerigi untuk menjumlahkan bilangan hingga delapan digit. Alat ini merupakan alat penghitung bilangan berbasis sepuluh. Kelemahan alat ini adalah hanya terbatas untuk melakukan penjumlahan


Tahun 1694, seorang matematikawan dan filsuf Jerman, Gottfred Wilhem von Leibniz (1646-1716) memperbaiki Pascaline dengan membuat mesin yang dapat mengalikan. Sama seperti pendahulunya, alat mekanik ini bekerja dengan menggunakan roda-roda gerigi. Dengan mempelajari catatan dan gambar-gambar yang dibuat oleh Pascal, Leibniz dapat menyempurnakan alatnya.


Barulah pada tahun 1820, kalkulator mekanik mulai populer. Charles Xavier Thomas de Colmar menemukan mesin yang dapat melakukan empat fungsi aritmatik dasar. Kalkulator mekanik Colmar, arithometer, mempresentasikan pendekatan yang lebih praktis dalam kalkulasi karena alat tersebut dapat melakukan penjumlahan, pengurangan, perkalian, dan pembagian. Dengan kemampuannya, arithometer banyak dipergunakan hingga masa Perang Dunia I. Bersama-sama dengan Pascal dan Leibniz, Colmar membantu membangun era komputasi mekanikal.
link_sejarah komputer


Awal mula komputer yang sebenarnya dibentuk oleh seorang profesor matematika Inggris, Charles Babbage (1791-1871). Tahun 1812, Babbage memperhatikan kesesuaian alam antara mesin mekanik dan matematika yaitu mesin mekanik sangat baik dalam mengerjakan tugas yang sama berulangkali tanpa kesalahan; sedang matematika membutuhkan repetisi sederhana dari suatu langkah-langkah tertenu. Masalah tersebut kemudain berkembang hingga menempatkan mesin mekanik sebagai alat untuk menjawab kebutuhan mekanik. Usaha Babbage yang pertama untuk menjawab masalah ini muncul pada tahun 1822 ketika ia mengusulkan suatu mesin untuk melakukanperhitungan persamaan differensial. Mesin tersebut dinamakan Mesin Differensial. Dengan menggunakan tenaga uap, mesin tersebut dapat menyimpan program dan dapat melakukan kalkulasi serta mencetak hasilnya secara otomatis.


Setelah bekerja dengan Mesin Differensial selama sepuluh tahun, Babbage tiba-tiba terinspirasi untuk memulai membuat komputer general-purpose yang pertama, yang disebut Analytical Engine. Asisten Babbage, Augusta Ada King (1815-1842) memiliki peran penting dalam pembuatan mesin ini. Ia membantu merevisi rencana, mencari pendanaan dari pemerintah Inggris, dan mengkomunikasikan spesifikasi Analytical Engine kepada publik. Selain itu, pemahaman Augusta yang baik tentang mesin ini memungkinkannya membuat instruksi untuk dimasukkan ke dalam mesin dan juga membuatnya menjadi programmer wanita yang pertama. Pada tahun 1980, Departemen Pertahanan Amerika Serikat menamakan sebuah bahasa pemrograman dengan nama ADA sebagai penghormatan kepadanya.


Mesin uap Babbage, walaupun tidak pernah selesai dikerjakan, tampak sangat primitif apabila dibandingkan dengan standar masa kini. Bagaimanapun juga, alat tersebut menggambarkan elemen dasar dari sebuah komputer modern dan juga mengungkapkan sebuah konsep penting. Terdiri dari sekitar 50.000 komponen, disain dasar dari Analytical Engine menggunakan kartu-kartu perforasi (berlubang-lubang) yang berisi instruksi operasi bagi mesin tersebut.


Pada 1889, Herman Hollerith (1860-1929) juga menerapkan prinsip kartu perforasi untuk melakukan penghitungan. Tugas pertamanya adalah menemukan cara yang lebih cepat untuk melakukan perhitungan bagi Biro Sensus Amerika Serikat. Sensus sebelumnya yang dilakukan di tahun 1880 membutuhkan waktu tujuh tahun untuk menyelesaikan perhitungan. Dengan berkembangnya populasi, Biro tersebut memperkirakan bahwa dibutuhkan waktu sepuluh tahun untuk menyelesaikan perhitungan sensus.


Hollerith menggunakan kartu perforasi untuk memasukkan data sensus yang kemudian diolah oleh alat tersebut secara mekanik. Sebuah kartu dapat menyimpan hingga 80 variabel. Dengan menggunakan alat tersebut, hasil sensus dapat diselesaikan dalam waktu enam minggu. Selain memiliki keuntungan dalam bidang kecepatan, kartu tersebut berfungsi sebagai media penyimpan data. Tingkat kesalahan perhitungan juga dapat ditekan secara drastis. Hollerith kemudian mengembangkan alat tersebut dan menjualnya ke masyarakat luas. Ia mendirikan Tabulating Machine Company pada tahun 1896 yang kemudian menjadi International Business Machine (1924) setelah mengalami beberapa kali merger. Perusahaan lain seperti Remington Rand and Burroghs juga memproduksi alat pembaca kartu perforasi untuk usaha bisnis. Kartu perforasi digunakan oleh kalangan bisnis dn pemerintahan untuk permrosesan data hingga tahun 1960.


Pada masa berikutnya, beberapa insinyur membuat penemuan baru lainnya. Vannevar Bush (18901974) membuat sebuah kalkulator untuk menyelesaikan persamaan differensial di tahun 1931. Mesin tersebut dapat menyelesaikan persamaan differensial kompleks yang selama ini dianggap rumit oleh kalangan akademisi. Mesin tersebut sangat besar dan berat karena ratusan gerigi dan poros yang dibutuhkan untuk melakukan perhitungan. Pada tahun 1903, John V. Atanasoff dan Clifford Berry mencoba membuat komputer elektrik yang menerapkan aljabar Boolean pada sirkuit elektrik. Pendekatan ini didasarkan pada hasil kerja George Boole (1815-1864) berupa sistem biner aljabar, yang menyatakan bahwa setiap persamaan matematik dapat dinyatakan sebagai benar atau salah. Dengan mengaplikasikan kondisi benar-salah ke dalam sirkuit listrik dalam bentuk terhubung-terputus, Atanasoff dan Berry membuat komputer elektrik pertama di tahun 1940. Namun proyek mereka terhenti karena kehilangan sumber pendanaan.


KOMPUTER GENERASI PERTAMA

Dengan terjadinya Perang Dunia Kedua, negara-negara yang terlibat dalam perang tersebut berusaha mengembangkan komputer untuk mengeksploitasi potensi strategis yang dimiliki komputer. Hal ini meningkatkan pendanaan pengembangan komputer serta mempercepat kemajuan teknik komputer. Pada tahun 1941, Konrad Zuse, seorang insinyur Jerman membangun sebuah komputer Z3, untuk mendisain pesawat terbang dan peluru kendali.


Pihak sekutu juga membuat kemajuan lain dalam pengembangan kekuatan komputer. Tahun 1943, pihak Inggris menyelesaikan komputer pemecah kode rahasia yang dinamakan Colossus untuk memecahkan kode-rahasia yang digunakan Jerman. Dampak pembuatan Colossus tidak terlalu mempengaruhi perkembangan industri komputer dikarenakan dua alasan. Pertama, colossus bukan merupakan komputer serbaguna general-purpose computer), ia hanya didisain untuk memecahkan kode rahasia. Kedua, keberadaan mesin ini dijaga kerahasiaannya hingga satu dekade setelah perang berakhir.


Usaha yang dilakukan oleh pihak Amerika pada saat itu menghasilkan suatu kemajuan lain. Howard H. Aiken (1900-1973), seorang insinyur Harvard yang bekerja dengan IBM, berhasil memproduksi kalkulator elektronik untuk US Navy. Kalkulator tersebut berukuran panjang setengah lapangan bola kaki dan memiliki rentang kabel sepanjang 500 mil. The Harvd-IBM Automatic Sequence Controlled Calculator, atau Mark I, merupakan komputer relai elektronik. Ia menggunakan sinyal elektromagnetik untuk menggerakkan komponen mekanik. Mesin tersebut beropreasi dengan lambat (ia membutuhkan 3-5 detik untuk setiap perhitungan) dan tidak fleksibel (urutan kalkulasi tidak dapat diubah). Kalkulator tersebut dapat melakukan perhitungan aritmatik dasar dan persamaan yang lebih kompleks.


Perkembangan komputer lain pada masa ini adalah Electronic Numerical Integrator and Computer (ENIAC), yang dibuat oleh kerjasama antara pemerintah Amerika Serikat dan University of Pennsylvania. Terdiri dari 18.000 tabung vakum, 70.000 resistor, dan 5 juta titik solder, komputer tersebut merupakan mesin yang sangat besar yang mengkonsumsi daya sebesar 160kW. Komputer ini dirancang oleh John Presper Eckert (1919-1995) dan John W. Mauchly (1907-1980), ENIAC merupakan komputer serbaguna (general purpose computer) yang bekerja 1000 kali lebih cepat dibandingkan Mark I.Pada pertengahan 1940-an, John von Neumann (1903-1957) bergabung dengan tim University of Pennsylvania dalam usha membangun konsep desin komputer yang hingga 40 tahun mendatang masih dipakai dalam teknik komputer.


Von Neumann mendesain Electronic Discrete Variable Automatic Computer(EDVAC) pada tahun 1945 dengan sebuah memori untuk menampung baik program ataupun data. Teknik ini memungkinkan komputer untuk berhenti pada suatu saat dan kemudian melanjutkan pekerjaannya kembali. Kunci utama arsitektur von Neumann adalah unit pemrosesan sentral (CPU), yang memungkinkan seluruh fungsi komputer untuk dikoordinasikan melalui satu sumber tunggal. Tahun 1951, UNIVAC I (Universal Automatic Computer I) yang dibuat oleh Remington Rand, menjadi komputer komersial pertama yang memanfaatkan model arsitektur von Neumann tersebut. Baik Badan Sensus Amerika Serikat dan General Electric memiliki UNIVAC. Salah satu hasil mengesankan yang dicapai oleh UNIVAC dalah keberhasilannya dalam memprediksi kemenangan Dwilight D. Eisenhower dalam pemilihan presiden tahun 1952.


Komputer Generasi pertama dikarakteristik dengan fakta bahwa instruksi operasi dibuat secara spesifik untuk suatu tugas tertentu. Setiap komputer memiliki program kode-biner yang berbeda yang disebut "bahasa mesin" (machine language). Hal ini menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya. Ciri lain komputer generasi pertama adalah penggunaan tube vakum (yang membuat komputer pada masa tersebut berukuran sangat besar) dan silinder magnetik untuk penyimpanan data.


KOMPUTER GENERASI KEDUA

Pada tahun 1948, penemuan transistor sangat mempengaruhi perkembangan komputer. Transistor menggantikan tube vakum di televisi, radio, dan komputer. Akibatnya, ukuran mesin-mesin elektrik berkurang drastis. Transistor mulai digunakan di dalam komputer mulai pada tahun 1956. Penemuan lain yang berupa pengembangan memori inti-magnetik membantu pengembangan komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan lebih hemat energi dibanding para pendahulunya. Mesin pertama yang memanfaatkan teknologi baru ini adalah superkomputer. IBM membuat superkomputer bernama Stretch, dan Sprery-Rand membuat komputer bernama LARC. Komputer-komputer ini, yang dikembangkan untuk laboratorium energi atom, dapat menangani sejumlah besar data, sebuah kemampuan yang sangat dibutuhkan oleh peneliti atom. Mesin tersebut sangat mahal dan cenderung terlalu kompleks untuk kebutuhan komputasi bisnis, sehingga membatasi kepopulerannya. Hanya ada dua LARC yang pernah dipasang dan digunakan: satu di Lawrence Radiation Labs di Livermore, California, dan yang lainnya di US Navy Research and Development Center di Washington D.C. Komputer generasi kedua menggantikan bahasa mesin dengan bahasa assembly. Bahasa assembly adalah bahasa yang menggunakan singkatan-singkatan untuk menggantikan kode biner.


Pada awal 1960-an, mulai bermunculan komputer generasi kedua yang sukses di bidang bisnis, di universitas, dan di pemerintahan. Komputer-komputer generasi kedua ini merupakan komputer yang sepenuhnya menggunakan transistor. Mereka juga memiliki komponen-komponen yang dapat diasosiasikan dengan komputer pada saat ini: printer, penyimpanan dalam disket, memory, sistem operasi, dan program. Salah satu contoh penting komputer pada masa ini adalah IBM 1401 yang diterima secara luas di kalangan industri. Pada tahun 1965, hampir seluruh bisnis-bisnis besar menggunakan komputer generasi kedua untuk memproses informasi keuangan.


Program yang tersimpan di dalam komputer dan bahasa pemrograman yang ada di dalamnya memberikan fleksibilitas kepada komputer. Fleksibilitas ini meningkatkan kinerja dengan harga yang pantas bagi penggunaan bisnis. Dengan konsep ini, komputer dapat mencetak faktur pembelian konsumen dan kemudian menjalankan desain produk atau menghitung daftar gaji. Beberapa bahasa pemrograman mulai bermunculan pada saat itu. Bahasa pemrograman Common Business-Oriented Language (COBOL) dan Formula Translator (FORTRAN) mulai umum digunakan. Bahasa pemrograman ini menggantikan kode mesin yang rumit dengan kata-kata, kalimat, dan formula matematika yang lebih mudah dipahami oleh manusia. Hal ini memudahkan seseorang untuk memprogram dan mengatur komputer. Berbagai macam karir baru bermunculan (programmer, analyst, dan ahli sistem komputer). Industri piranti lunak juga mulai bermunculan dan berkembang pada masa komputer generasi kedua ini.


KOMPUTER GENERASI KETIGA

Walaupun transistor dalam banyak hal mengungguli tube vakum, namun transistor menghasilkan panas yang cukup besar, yang dapat berpotensi merusak bagian-bagian internal komputer. Batu kuarsa (quartz rock) menghilangkan masalah ini. Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit terintegrasi (IC: integrated circuit) di tahun 1958. IC mengkombinasikan tiga komponen elektronik dalam sebuah piringan silikon kecil yang terbuat dari pasir kuarsa. Para ilmuwan kemudian berhasil memasukkan lebih banyak komponen-komponen ke dalam suatu chip tunggal yang disebut semikonduktor. Hasilnya, komputer menjadi semakin kecil karena komponen-komponen dapat dipadatkan dalam chip. Kemajuan komputer generasi ketiga lainnya adalah penggunaan sistem operasi (operating system) yang memungkinkan mesin untuk menjalankan berbagai program yang berbeda secara serentak dengan sebuah program utama yang memonitor dan mengkoordinasi memori komputer.


KOMPUTER GENERASI KEEMPAT

Setelah IC, tujuan pengembangan menjadi lebih jelas yaitu mengecilkan ukuran sirkuit dan komponen-komponen elektrik. Large Scale Integration (LSI) dapat memuat ratusan komponen dalam sebuah chip. Pada tahun 1980-an, Very Large Scale Integration (VLSI) memuat ribuan komponen dalam sebuah chip tunggal.Ultra-Large Scale Integration (ULSI) meningkatkan jumlah tersebut menjadi jutaan. Kemampuan untuk memasang sedemikian banyak komponen dalam suatu keping yang berukuran setengah keping uang logam mendorong turunnya harga dan ukuran komputer. Hal tersebut juga meningkatkan daya kerja, efisiensi dan kehandalan komputer. Chip Intel 4004 yang dibuat pada tahun 1971 membawa kemajuan pada IC dengan meletakkan seluruh komponen dari sebuah komputer (central processing unit, memori, dan kendali input/output) dalam sebuah chip yangsangat kecil. Sebelumnya, IC dibuat untuk mengerjakan suatu tugas tertentu yang spesifik. Sekarang, sebuah mikroprosesor dapat diproduksi dan kemudian diprogram untuk memenuhi seluruh kebutuhan yang diinginkan. Tidak lama kemudian, setiap perangkat rumah tangga seperti microwave oven, televisi, dan mobil dengan electronic fuel injection dilengkapi dengan mikroprosesor.


Perkembangan yang demikian memungkinkan orang-orang biasa untuk menggunakan komputer biasa. Komputer tidak lagi menjadi dominasi perusahaan-perusahaan besar atau lembaga pemerintah. Pada pertengahan tahun 1970-an, perakit komputer menawarkan produk komputer mereka ke masyarakat umum. Komputer-komputer ini, yang disebut minikomputer, dijual dengan paket piranti lunak yang mudah digunakan oleh kalangan awam. Piranti lunak yang paling populer pada saat itu adalah program word processing dan spreadsheet. Pada awal 1980-an, video game seperti Atari 2600 menarik perhatian konsumen pada komputer rumahan yang lebih canggih dan dapat diprogram.Pada tahun 1981, IBM memperkenalkan penggunaan Personal Computer (PC) untuk penggunaan di rumah, kantor, dan sekolah. Jumlah PC yang digunakan melonjak dari 2 juta unit di tahun 1981 menjadi 5,5 juta unit di tahun 1982. Sepuluh tahun kemudian, 65 juta PC digunakan. Komputer melanjutkan evolusinya menuju ukuran yang lebih kecil, dari komputer yang berada di atas meja (desktop computer) menjadi komputer yang dapat dimasukkan ke dalam tas (laptop), atau bahkan komputer yang dapat digenggam (palmtop).


IBM PC bersaing dengan Apple Macintosh dalam memperebutkan pasar komputer. Apple Macintosh menjadi terkenal karena mempopulerkan sistem grafis pada komputernya, sementara saingannya masih menggunakan komputer yang berbasis teks. Macintosh juga mempopulerkan penggunaan piranti mouse.


Pada masa sekarang, kita mengenal perjalanan IBM compatible dengan pemakaian CPU: IBM PC/486, Pentium, Pentium II, Pentium III, Pentium IV (Serial dari CPU buatan Intel). Juga kita kenal AMD k6, Athlon, dsb. Ini semua masuk dalam golongan komputer generasi keempat. Seiring dengan menjamurnya penggunaan komputer di tempat kerja, cara-cara baru untuk menggali potensi terus dikembangkan. Seiring dengan bertambah kuatnya suatu komputer kecil, komputer-komputer tersebut dapat dihubungkan secara bersamaan dalam suatu jaringan untuk saling berbagi memori, piranti lunak, informasi, dan juga untuk dapat saling berkomunikasi satu dengan yang lainnya. Komputer jaringan memungkinkan komputer tunggal untuk membentuk kerjasama elektronik untuk menyelesaikan suatu proses tugas. Dengan menggunakan perkabelan langsung (disebut juga local area network, LAN), atau kabel telepon, jaringan ini dapat berkembang menjadi sangat besar.


KOMPUTER GENERASI KELIMA

Mendefinisikan komputer generasi kelima menjadi cukup sulit karena tahap ini masih sangat muda. Contoh imajinatif komputer generasi kelima adalah komputer fiksi HAL9000 dari novel karya Arthur C. Clarke berjudul 2001:Space Odyssey. HAL menampilkan seluruh fungsi yang diinginkan dari sebuah komputer generasi kelima. Dengan kecerdasan buatan (artificial intelligence), HAL dapat cukup memiliki nalar untuk melakukan percapakan dengan manusia, menggunakan masukan visual, dan belajar dari pengalamannya sendiri.


Walaupun mungkin realisasi HAL9000 masih jauh dari kenyataan, banyak fungsi-fungsi yang dimilikinya sudah terwujud. Beberapa komputer dapat menerima instruksi secara lisan dan mampu meniru nalar manusia. Kemampuan untuk menterjemahkan bahasa asing juga menjadi mungkin. Fasilitas ini tampak sederhan. Namun fasilitas tersebut menjadi jauh lebih rumit dari yang diduga ketika programmer menyadari bahwa pengertian manusia sangat bergantung pada konteks dan pengertian daripada sekedar menterjemahkan kata-kata secara langsung.


Banyak kemajuan di bidang disain komputer dan teknologi semakin memungkinkan pembuatan komputer generasi kelima. Dua kemajuan rekayasa yang terutama adalah kemampuan pemrosesan paralel, yang akan menggantikan model von Neumann. Model von Neumann akan digantikan dengan sistem yang mampu mengkoordinasikan banyak CPU untuk bekerja secara serempak. Kemajuan lain adalah teknologi superkonduktor yang memungkinkan aliran elektrik tanpa ada hambatan apapun, yang nantinya dapat mempercepat kecepatan informasi.


Jepang adalah negara yang terkenal dalam sosialisasi jargon dan proyek komputer generasi kelima. Lembaga ICOT (Institute for new Computer Technology) juga dibentuk untuk merealisasikannya. Banyak kabar yang menyatakan bahwa proyek ini telah gagal, namun beberapa informasi lain bahwa keberhasilan proyek komputer generasi kelima ini akan membawa perubahan baru paradigma komputerisasi di dunia. Kita tunggu informasi mana yang lebih valid dan membuahkan hasil.

Pengertian Software engineer


Seorang software engineer adalah orang yang menerapkan prinsip-prinsip rekayasa perangkat lunak dalam mendesain, pengembangan, pengujian, dan evaluasi perangkat lunak dan sistem yang membuat komputer atau apapun yang berisi perangkat lunak. Sebelum pertengahan tahun 1990-an, sebagian besar praktisi perangkat lunak menyebut dirinya programmer atau software developer, tanpa memandang pekerjaan yang sebenarnya. Banyak orang lebih suka menyebut dirinya pemrogrammer dan software developer, karena dapat diterima secara luas, sementara istilah software engineer masih dalam perdebatan.
Istilah programmer sering digunakan sebagai istilah yg merujuk kepada mereka yang tidak memiliki tools, keterampilan, pendidikan, atau etika untuk membangun perangkat lunak yang berkualitas baik. Akibatnya, banyak praktisi menyebut diri sendiri sebagai software engineer untuk melepaskan diri dari stigma yang melekat pada kata programmer. Di banyak perusahaan, untuk berbagai kategori programmer, nama jabatan programmer atau software developer telah diubah menjadi software engineer. Istilah tersebut menimbulkan kebingungan, karena ada beberapa penolakan, dengan argumentasi bahwa semua orang pada dasarnya melakukan hal yang sama dengan perangkat lunak, sedangkan yang lain menggunakan istilah untuk membuat sebuah perbedaan, dengan argumentasi bahwa pekerjaan tersebut benar-benar berbeda.
Sebuah Seni Pada tahun 2004, Biro Statistik Tenaga Kerja Amerika Serikat sebanyak 760.840 software engineer memegang pekerjaan di Amerika Serikat, pada waktu yang sama terdapat 1,4 juta praktisi yang bekerja diberbagai bidang. Tabel software engineer digunakan secara luas dalam dunia usaha. Sangat sedikit dari para software engineer terlatih yang mneyandang gelar Engineer dari perguruan tinggi terkemuka. Bahkan, menurut Asosiasi untuk Mesin Komputasi, “sebagian besar software engineer di Amerika bukanlah lulusan Software Engineering tetapi Computer Science“. Aturan Klasifikasi Biro Statistik Tenaga Kerja Amerika Serikat menggolongkan Insinyur perangkat lunak komputer sebagai subkategori dari “ahli komputer”, bersama dengan pekerjaan seperti ilmuwan komputer, pemrogram, dan administrator jaringan. Inggris telah melihat adanya penyesuaian antara Profesi Teknologi Informasi dan Profesi-profesi perkeyasaan. Sebagian wilayah Amerika Serikat mengatur penggunaan istilah-istilah seperti “Computer Engineer”, bahkan “Software Engineer”. Diantaranta adalah Texas dan Florida. Texas bahkan telah melakukannya lebih jauh, yaitu dengan melarang siapapun menulis program tanpa lisensi engineer. Pendidikan Sekitar sebagian dari semua praktisi saat ini memeiliki kualifikasi di bidang Ilmu Komputer. Sementara sebagian kecil, dan terus berkembang, diantara mereka meraih kualifikasi software engineering.
Pada tahun 1996, Rochester Institute of Technology mendirikan program Sarjana dengan gelar Software Enginering yang pertama di Amerika Serikat, namun tidak mendapatkan ABET, yaitu sebuah badan penjaminan kepemimpinan dan kualitas dibidang ilmu terapan, komputasi,engineering, dan teknologi pendidikan, sampai dengan tahun 2003, dimana pada tahun tersebut Clarkson University, Milwaukee School of Engineering dan Mississippi State University melakukan hal yang sama. Sejak itu, progam sarjana untuk software engineering dibentuk di berbagai universitas. Standar kurikulum internasional untuk software engineering pun ditetapkan oleh CCSE. Pada tahun 2004, di Amerika Serikat, sekitar 50 perguruan tinggi menawarkan progam software engineering, baik yang mengajarakan prinsip-prinsip dan praktis Computer Science dan Engineering. Program Master software engineering pertama didirikan di Seattle University di tahun 1979. Sejak itu progam software engineering semakin banyak tersedia diberbagai berbagai perguruan tinggi. Pada tahun 1998, the US Naval Postgraduate School (NPS) mendirikan program doktoral pertama di dunia untuk Software Engineering. Selain itu, program pendidikan lanjutan untuk Software Engineering secara online banyak bermunculan, seperti Master of Science in Engineering (MSE), yaitu gelar yang ditawarkan melalui Jurusan Ilmu Komputer dan Teknik di California State University, Fullerton. Steve McConnell berpendapat bahwa sebagian besar universitas mengajarkan Computer Science, bukan Software Engineering, sehingga terdapat kekurangan akan Software Engineer yang sebenarnya. Lembaga European Training Foundation (ETS) dan Universite du Quebec a Montreal (UQAM) diamanati oleh IEEE untuk mengembangkan Software Engineering Body of Knowledge (SWEBOK), yang telah menjadi salah satu ISO standar yang menggambarkan pengetahuan yang tercakup oleh software engineer. Program-program Lain Dalam bisnis, beberapa praktisi software engineering memiliki kemampuan MIS. Dalam embedded system, diantara mereka memiliki kemampuan Electrical dan Computer Engineering, dikarenakan perangkat lunak embedded system selalu memerlukan pemahaman akan hardware secara rinci. Dalam perangkat lunak medis, praktisi memiliki kemampuan dalam informatika medis, medical secara umum, atau biologi. Beberapa praktisi memiliki kemampuan didalam matematika, sains, rekayasa, atau teknologi. Ada juga yang memiliki kemampuan filsafat (terutama logika) atau kemampuan non-teknis.
Pekerjaan Kebanyakan software engineer bekerja sebagai karyawan atau kontraktor. Software engineer bekerja untuk perusahaan, instansi pemerintah (sipil atau militer), dan organisasi nirlaba. Beberapa software engineer bekerja untuk sendiri sebagai freelancer. Beberapa organisasi telah memiliki spesialis untuk melakukan tugas tertentu dalam proses pengembangan software, dan organisasi membutuhkan software engineer untuk melakukan sebagian atau seluruhnya. Dalam proyek-proyek besar, orang dapat mengkhususkan diri dalam satu bidang. Dalam proyek-proyek kecil, beberapa tugas dapat dilakukan seorang diri. Specializations meliputi: industri (analis, arsitek, pengembang, testers, dukungan teknis, manajer) dan akademisi (pendidik, peneliti). Terdapat perdebatan atas masa depan prospek untuk pekerjaan Software Engineers dan Professional IT. Sebagai contoh, pasar online masa depan yang disebut pekerjaan IT masa depan di Amerika mencoba menjawab untuk apakah padaa pada tahun 2012 akan ada lebih banyak proyek TI, termasuk software engineer, dibandingkan pada tahun 2002.
Sertifikasi Sertifikasi profesional software engineer adalah isu yg menimbulkan perdebatan. Sebagian menganggapnya sebagai alat untuk meningkatkan praktek profesional. Program sertifikasi didalam industri perangkat lunak yang paling sukses diorientasikan kepada teknologi tertentu, dan dikelola oleh penyedia teknologi tersebut. Program sertifikasi tersbut disesuaikan dengan lembaga yang akan mempekerjakan orang yang menggunakan teknologi ini. ACM memiliki program sertifikasi profesional pada awal tahun 1980-an, yang telah dihentikan karena kurangnya peminat. Pada 2006, IEEE telah mensertifikasi lebih dari 575 profesional perangkat lunak. Dampak globalisasi Banyak siswa di negara maju menghindari jurusan yang berkaitan dengan software engineering karena khawatir akan offshore outsurcing, yaitu impor produk perangkat lunak atau layanannya dari negara lain, dan teragntikan oleh para pendatang yang memiliki visa pekerja. Meskipun statistik pemerintah saat ini tidak menunjukkan ancaman terhadap software engineering itu sendiri; karir terkait, pemrograman komputer tidak terpengaruh. Seseorang diharapkan memulainya sebagai programmer sebelum sebelum dipromosikan sebagai software engineer. Dengan demikian, janjang karir untuk software engineering mungkin berat, terutama selama masa resesi. Beberapa penasehat menyarankan agar siswa juga fokus pada “people skill” dan kemampuan bisnis, tidak hanya keterampilan teknis, karena “soft skill” diperkirakan akan lebih sulit untuk para pendatang. Ini adalah aspek manajemen-rekayasa dari rekayasa perangkat lunak yang muncul untuk menjadi pelindung dari dampak globalisasi.
Hadiah/Penghargaan
Ada beberapa penghargaan di bidang rekayasa perangkat lunak: CODiE penghargaan yang merupakan penghargaan tahunan yang dikeluarkan oleh Asosiasi Industri Software dan Informasi untuk keunggulan dalam pengembangan perangkat lunak untuk industri. Jolt Award adalah penghargaan dalam industri perangkat lunak. Stevens Award adalah penghargaan untuk rekayasa perangkat untuk mengenang Wayne Stevens. Kontroversi istilah Engineer Beberapa orang percaya bahwa software engineering mengimplikasikan tingkat tertentu dari pendidikan akademis, disiplin profesional, dan ketaatan terhadap proses formal yang sering diabaikan dalam pengembangan perangkat lunak. Analogi yang umum digunakan adalah bahwa pekerjaan dibidang konstruksi tidak membuat sesorang menjadi seorang insinyur sipil, begitu juga dengan pekerjaan menulis kode program tidak akan menjadikan orang tersebut seorang software engineer.
Status Rekayasa Perangkat Lunak
Kata rekayasa dalam istilah software engineering menyebabkan kebingungan. Perdebatan atas status software engineering (antara insinyur tradisional dan ilmuwan komputer) dapat diinterpretasikan sebagai perebutan kekuasaan terhadap istilah engineering. Insinyur tradisional mempertanyakan apakah software engineers dapat menggunakan istilah tersebut secara sah. Insinyur tradisional (terutama insinyur sipil dan NSPE) menyatakan bahwa mereka memiliki hak istimewa terhadapistilah engineering, dan untuk pihak lain yang akan menggunakannya memerlukan persetujuan mereka. Pada pertengahan tahun 1990-an, yang NSPE melakukan gugatan untuk mencegah dari siapapun menggunakan istilah software engineering untuk nama pekerjaan. NSPE memenangkan perkara di 48 negara. Namun, praktisi SE, pendidik, dan peneliti mengabaikan kasus-kasus tersebut dan tetap menyebut diri mereka software engineer. Biro Statistik Tenaga Kerja Amerika Serikat menggunakan istilah software engineer juga. Istilah engineering berusia jauh lebih tua dari setiap organisasi pengatur, sehingga banyak ahli yang mempercayai bahwa insinyur tradisional hanya memiliki sedikit hak terhadapnya. Mulai tahun 2007, sikap NSPE mulai melunak dan menyelidiki kemungkinan lisensi untuk software engineer dengan melakukan konsultasi dengan IEEE, NCEES dan kelompok lain “demi perlindungan kesehatan, keselamatan, dan kesejahteraan masyarakat”.

Trend Profesi Software Engineering
Selama bertahun-tahun, rekayasa perangkat lunak telah berusaha untuk menjadi sebuah profesi. Hal ini terhambat oleh persepsi umum bahwa itu hanya aplikasi dari ilmu komputer. Tujuan membuat Software Engineering sebagai sebuah profesi dipicu banyaknya perdebatan mengenai apakah tujuannya menjadi sebuah profesi. Saat ini, Software Engineering telah menjadi sebuah disiplin tersendiri didalam profesi engineering.
Sejarah
Di AS pada pertengahan tahun 1990-an, National Society of Professional Engineers digugat di semua negara bagian di AS untuk melarang siapapun menggunakan istilah software engineering sebagai kata benda atau bidang ketenagakerjaan. Mereka memenangkan di sebagian besar negara bagian.
Sebagai tanggapan, IEEE dan ACM membentuk JCESEP pada tahun 1993, yang berkembang menjadi SWECC pada tahun 1998 untuk merumuskan Software Engineering sebagai sebuah profesi. Kedua komite teknik menggunakan model rekayasa tradisional. ACM mengundurkan diri dari SWECC (pada bulan Mei 1999), karena berkeberatan untuk memberikan dukungan kepada upaya profesionalisasi Texas, untuk mendapatkan pengakuan negara sebagai Software Engineer. IEEE melanjutkan dukungannya untuk menjadikan Software Engineering sebagai cabang dari engineering tradisional.
Trend Profesi SE
Fenomena yang muncul saat ini, 10 orang terkaya di Amerika didominasi oleh mereka bermain di knowledge capital alias berbasis pengetahuan. Bahkan data menunjukkan bahwa mereka memang orang besar yang memulai bisnis dari kecil, pekerja keras, berkubang lumpur, dan di waktu mudanya mereka sangat memahami masalah teknis berhubungan dengan bisnisnya. Sangat berbeda dengan daftar 10 orang terkaya di Indonesia yang berlatar belakang bisnis yang tidak terlepas dari kekayaan sumber daya alam yang pada suatu saat akan habis.
Software engineer adalah profesi dan peluang baru yang baru berkembang di Indonesia. Bukan hal yang mustahil suatu saat daftar 10 orang terkaya di Indonesia adalah mereka yang bermain di knowledge capital. Trend ke arah itu sudah mulai terlihat dimana diperkirakan jumlah pengembang profesional di Indonesia adalah 56.500 orang (menyumbang 0.5% dunia – IDC Professional Developer Model 2004) dan akan meningkat sampai 71.600 orang di tahun 2008. Jumlah software house di Indonesia juga tercatat meningkat ke arah diatas 250 perusahaan, dan diperkirakan akan menjadi dua kali lipat pada 5 tahun mendatang.
Meningkatnya kesadaran masyarakat korporasi terhadap pentingnya otomasi dilingkungan bisnis dan pemenuhan kebutuhan akan informasi yang cepat dan akurat, secara linier telah meningkatkan permintaan akan peran Software engineer untuk menganalisa, mendesain, dan mengaplikasikan sebuah sistem baru berbasis komputer.
Selain itu, laporan APKOMINDO mengenai penjualan komputer pada tahun 2008 yang mencapai angka 2,2 juta unit, sedikit dibawah target yang 2,5 juta unit, menunjukan pasar yang luas untuk Software Engineering. Software Engineering tidak selalu harus tergantung pada pasar korporasi. Luasnya pasar pada pemakai individual merupakan lahan yang patut digarap dan cukup menjanjikan. Untuk menggarap ceruk pasar yang cukup luas tentunya dibutuhkan SDM yang tidak hanya mampu dari sisi teknis komputasi namun mampu juga dari sisi ekonominya, jiwa wirausaha.

Sebagai sebuah profesi baru, tentunya masih banyak hak yang harus dibenahi untuk membentuk SDM yang profesional sebagai seorang software engineer, diantaranya :
• Memperbaiki kurikulum pendidikan jurusan komputasi, khususnya bidang Software Engineering termasuk didalamnya teknik pengembangan, metodologi baku, sertifikasi, pengelolaan, dan kewirausahaan, termasuk etika.
• Keterlibatan pemerintah diperlukan dalam membuat pipa antara software developer dan pasar, juga masalah kebijakan proteksi untuk perusahaan software lokal.
• Mengarahkan SDM software engineer untuk memiliki keunggulan defacto (kreatifitas) dan keunggulan dejure (degree) sekaligus, dalam level sesuai dengan kemampuan yang bisa diraih.
• Membina para spesialis software engineer kita untuk menjadi seorang versatilist (seseorang yang sangat ahli dalam sebuah bidang; fokus, akan tetapi dengan mudah untuk belajar dan mengembangkan fokus ke hal lain pada saat yang sama jika diperluakan.), karena Gartner Group memperkirakan dalam laporan khususnya bahwa dalam tahun 2010, pasar IT dunia akan dikuasai oleh para versatilist, yang menggerus 40% lapangan kerja spesialis
• Yang terakhir, manfaatkan Internet sebagai alat softmarketing, personal branding dan knowledge sharing. Dengan populasi lebih dari 1 miliar pada tahun 2008 ini, mau tidak mau, suka tidak suka, kita akan masuk, bersentuhan dengan Internet dan secara tidak sadar Internet membentuk kultur dan behavior baru dalam kehidupan sehari hari. Sekali lagi tidak ada satu media massa pun yang akan bisa menandingi penetrasi media bernama Internet ini.

Tuesday, December 13, 2011

Software Engineering

Software Engineering adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal analisa kebutuhan pengguna, spesifikasi, desain, coding, testing sampai pemeliharaan sistem setelah digunakan.
Dari istilah Software Enginering dapat kita telaah dari pengertian Software adalah perangkat lunak, program komputer dan semua dokumentasi yang berhubungan dengan operasi pada sistem computer

Dalam pembuatan software ada beberapa hal yang harus diperhatikan antara lain:

1. Tahapan Perencanaan

Yaitu tahapan yang berisikan tentang rencana pembuatan software apa yang mau dibuat, analisa

kebutuuhan software, dan analisa cost benefir

2. Tahapan Pengembangan

Yaitu tahapan pembuatan program seutuhnya dan melakukan testing terhadap program yang telah dibuat.

3. Tahapan Pemeliharaan

Yaitu tahapan dalam mengkoreksi setelah dilakukan beberapa tes jika terjadi kesalahan, serta adaptasi terhadap system operasi yang selalu berkembang, RDBMS dan generasi bahasa pemrograman selanjutnya.

TREN TERBARU SOFTWARE ENGINEERING

Perangkat lunak komputer (Software) adalah satu dari hanya beberapa teknologi kunci yang akan berpengaruh penting pada hampir setiap aspek masyarakat modern selama tahun 1990-an. Software merupakan suatu mekanisme untuk mengotomatisasi bisnis, industri, dan pemerintahan. Software sangat penting bagi hampir setiap aspek bisnis. Tetapi, dalam banyak hal, software juga merupakan suatu teknologi yang tersembunyi karena tanpa kita sadari dalam setiap kegiatan kita sering menggunakan software misalnya dalam bebelanja di supermarket, menabung di bank, melakukan hubungan telepon dan lainnya.
Karakteristik Software antara lain :

· Software bersifat kompleks yaitu didalam pembuatan suatu software harus didukung oleh banyak hal antara lain sistem kerja, hardware, dan lainnya.

· Software bersifat tidak sama meskipun pada kasus yang sama software yang telah dibuat belum tentu cocok di tempat lain. Misalnya pembuatan software supermarket, belum tentu satu supermarket dengan supermarket yang lain sistemnya sama.

· Software bersifat tidak dapat digunakan diluar dari tujuan yang telah ditetapkan

· Software seperti pabrik yang menghasilkan nilai-nilai tertentu dan sangat membantu segala kegiatan manusia

· Software dibangun dan dikembangkan, tidak dibuat dalam bentuk yang klasik

· Sebagian besar perangkat lunak dibuat secara custom-built, serta tidak dapat dirakit dari komponen yang sudah ada

· Software bersifat pervasif, dan banyak orang di dalam posisi tanggung jawab, kurang atau tidak memahami apa sebenarnya software itu, bagaimana dia dibangun, atau apa yang dimaksudkannya dengan bagian yang dikontrol. Karena sifat pervasif pada software tersebut maka software harus ditangani dengan hati-hati.



Perkembangan Software

Software Engineering adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal requirement capturing (analisa kebutuhan pengguna), specification (menentukan spesifikasi dari kebutuhan pengguna), design, coding, testing sampai pemeliharaan sistem setelah diguna kan.

Software mengalami perkembangan yang pesat dan usang setelah periode tertentu, Software memerlukan review secara berkala untuk mengetahui perubahan yang dinamis terhadap kebutuhan pasar. Sejak pertama kali software diperkenalkan sekitar tahun 60-an telah mengalami perkembangan yang cukup pesat, dan total berbeda disemua spesifikasi seperti struktur program, arsitektur dan Line Of Code (LoC) kini lebih pendek, mudah dan tampilan grafis yang menarik sehingga lebih efisien dibandingkan dengan versi lamanya.

Secara terminologi software engginering pertama kali di gunakan pada sebuah international conference tentang software pada tahun 1968. Pada conference ini dibahas tentang krisis software. Krisis software merupakan akibat dari lahirnya komputer generasi ke 3 yang canggih. Dari hasil conference itu software yang dihasilkan menjadi beberapa kali lebih besar dan kompleks. Seiring dengan itu pendekatan informasi tidak cukup efektif dalam pengembangan software. Dengan perkembangan hardware dan software yang begitu pesat sehingga mengakibatkan biaya perangkat lunak naik lebih cepat dibandingkan dengan software.

Tren software enginering saat ini mengarah pada biaya yang murah, platform bersifat multiuser, dapat digunakan oleh umum, pengembangannya bersifat open source dan cara aksesnya adalah online. Perubahan-perubahan yang akan mempengaruhi software selama dekade selanjutnya akan dipengaruhi oleh beberapa hal yang simultan yaitu :

1. Manusia yang melakukan pekerjaan tersebut
2. Proses yang mereka aplikasikan
3. Sifat Informasi
4. Teknologi komputer yang mendasar

Semua kegiatan yang telah dilakukan baik pengukuran, disiplin, dan fokus pada kualitas akan menghasilkan perangkat lunak yang bisa dipelihara, perangkat lunak yang lebih baik. Hal tersebut tidak pernah menjanjikan bahwa software yang kita hasilkan tersebut adalah software yang paling manjur, karena selagi kita berjalan menuju abad yang baru, maka perangkat lunak dan sistem teknik tetap menjadi tantangan bagi setiap profesional perangkat lunak dan setiap perusahaan yang membangun sistem berbasis komputer. Perusahaan harus berusaha lebih keras dalam menguasai teknologi hanya untuk bertahan hidup karena perubahan teknologi informasi menjadi begitu cepat dan tidak pernah bisa mengampuni, dan akibat dari ketinggalan tersebut tidak dapat dikembalikan lagi.
APLIKASI SOFTWARE

1. Sistem Software
Adalah sekumpulan program yang ditulis untuk melayani atau menunjang program lainnya. Beberapa sistem software seperti compiler, editor, komponen-komponen sistem operasi, driver dan prosesor telekomunikasi.
2. Real Time software
Software yang mengukur, menganalisis dan mengontrol kejadian yang sesungguhnya terjadi di dunia. Ele-men-elemen real time software terdiri dari :
A. Komponen pengumpul data
Yang mengumpulkan dan menyusun informasi dari lingkungan external.
B. Komponen analisis
Yang mentransformasikan informasi yang diperlukan oleh aplikasi
C. Komponen kontrol
Yang memberikan respon kepada lingkungan external
D. Komponen monitor
Yang mengkoordinasi semua komponen-komponen lainnya, sehingga respons real time yang berkisar 1 milisecond sampai 1 menit dapat dipertahankan.
Perlu dicatat bahwa istilah real time berbeda dari istilah interactive atau time sharing. Sistem real time harus memberikan respons pada waktu yang ditentukan, sedangkan pada sistem interactive atau time sharing respons time biasanya melebihi batas waktu yang ditentukan tanpa merusak hasil.
3. Business software
Software yang palinmg banyak digunakan dalam bidang aplikasi software. Software ini digunakan oleh manajemen untuk mengambil kepitusan ( Decision Making ) dalam bidang bisnis. Contoh :
 DAC EASY ACCOUNTING
 FINANCE MANAJER
4. Engineering and sciencetific software
Software yang dicirikan dengan algoritma numerik, aplikasinya berkisar dari astronomi sampai vulkanologi, dari analis ketegangan otomotif sampai dinamika orbit ruang angkasa. Software ini banyak digunakan dalam bidang engineering dan science. Contoh
 CAD / CAM ( Computer Aided Design / Computer Aided Manufacture - Ssimulasi sistem )
5. Emdebed software
Suatu software disimpan dalam memori tetap - ROM - Read Only Memory, dan digunakan untuk mengon¬trol product dan sistem software ini dijalankan dengan berbagai fungsi terbatas.
6. PC software (Personal Computer)
Software yang banyak digunakan di komputer pribadi (PC). Contoh :
 Word Processing : WS, WP
 Spreadsheet : Lotus, Supercalc
 Computer Graphics : Printshop, Print Magic
 Games : Paoman, Load Runner
 DBMS : Dbase III+, Foxbase, Clipper
 Network : LAN, Novell
7. Artificial Intelegence software
Software yang banyak menggunakan algoritma non numerik dalam memecahkan masalah kompleks yang tidak dapat dianalisis dengan analisis komputasi biasa. Saat ini bidang AI yang paling aktif adalah expert system atau knowledge base system. Bidang aplikasi lain dari software AI adalah pengenalan citra dan suara ( image and voice pattern recognition ), teorema pembuktian dan permainan / games.

KRISIS SOFTWARE
Adalah sekumpulan masalah yang ditemukan dalam pengembangan software computer. Masalahnya tidak hanya terbatas pada software yang tidak berfungsi sebagaimana mestinya, tetapi krisis software ini terdiri dari masalah yang berhubungan dengan :
1. Bagaimana mengembangkan software
2. Bagaimana memelihara software ynag ada, yang berkembang dalam jumlah besar
3. Bagaimana mengimbangi permintaan software yang makin besar.

MASALAH
Krisis software oleh beberapa masalah :
1. Estimasi jadual dan biaya yang seringkali tidak tepat
2. Produktivitas orang-orang software yang tidak dapat mengimbangi permintaan software
3. Kualitas software yang kurang baik.

Penyebab :
Masalah yang berhubungan dengan krisis software disebabkan oleh :
1. Karakteristik software itu sendiri
Karakteristik software adalah software yang bersifat logika dibandingkan fisik, oleh karena itu mengukur software harus merupakan suatu kesatuan, tidak seperti hardware. Software yang bersifat tidak aus ini menyebabkan kesalahan yang terjadi pada software. Umumnya terjadi pada tahap pengembangan. Manajer tingkat menengah dan tingkat atas yang tidak mempunyai latar belakang software, seringkali diberi tang¬gung jawab untuk mengembangkan software. Padahal tidak semua manajer itu dapat me-manage semua proyek.
Praktisnya : software programmer atau software engineering mendapatkan latihan formal yang sedikit dalam hal tehnik baru pengembangan software.
2. Kegagalan mereka yang bertanggung jawab dalam pengembangan software.

MITOS SOFTWARE
1. Mitos managements
A. Kita tidak perlu mengubah pendekatan terhadap pengembangan software, karena jenis pemrograman yang kita lakukan sekarang ini sudah kita lakukan 10 tahun yang lalu.
Realitasnya : Walau hasil program sama, produktivitas dan kualitas software harus ditingkatkan dengan menggunakan pendekatan software developments
B. Kita sudah mempunyai buku yang berisi standarisasi dan prosedur untuk pembentukan software.
Realitasnya : Memang buku tersebut ada, tetapi apakah buku tersebut sudah dibaca atau buku tersebut sudah ketinggalan jaman ( out of date ).
C. Jika kita tertinggal dari jadwal yang ditetapkan, kita menambah beberapa programmer saja. Konsep ini sering disebut Mongolian harde concept.
2. Mitos Langganan / Customer
A. Pernyataan tujuan umum sudah cukup untuk memulai penulisan program. Penjelasan yang lebih rinci akan menyusul kemudian.
Realitasnya : Definisi awal yang buruk adalah penyebab utama kegagalan terhadap usaha-usaha pem-bentukkan software. Penjelasan yang formal dan terinci tentang informasi fungsi performance interface, hambatan desain dan kriteria validasi adalah penting. Karakteristik di atas dapat ditentukan hanya sete¬lah adanya komunikasi antara customer dan developer.
B. Kebutuhan proyek yang terus menerus berubah dapat dengan mudah diatasi karena software itu bersifat fleksibel. Kenyataannya memang benar bahwa kebutuhan software berubah, tetapi dampak dari peru¬bahan berbeda dari waktu ke waktu.

Kesimpulan : Jika perubahan mendekati akhir penyelesaian, maka biaya akan lebih besar.
3. Mitos Praktisi
A. Tidak ada metode untuk analisis disain dan testing terhadap suatu pekerjaan, cukup menuju ke depan terminal dan mulai coding.
Realitasnya : Metode untuk analisis desain dan testing diperlukan dalam pengembangan software.
B. Segera setelah software digunakan, pemeliharaan dapat diminimalisasikan dan diatasi dengan cara “CATCH AS CATCH CAM”.
Realitasnya : Diperlukan budget yang besar dalam maintenance software. Pemeliharaan software harus diorganisir, direncanakan dan dikontrol seolah-olah sebagai suatu proyek besar dalam sebuah or¬ganisasi.

MODEL SOFTWARE ENGINEERING
Krisis software tidak dapat hilang dalam satu satu malam, di mana tidak ada suatu pendekatan yang baik dalam mengatasi krisis software, namun gabungan dari metode untuk semua fase dalam pengembangan siftware seperti peralatan yang lebih baik untuk mengautomatisasi metode-metode ini, tehnik yang lebih baik untuk mengontrol kualitas, dan filosofi untuk koordinasi kontrol, serta manajemen dipelajari dalam suatu disiplin ilmu yang kita sebut software engineering.

Definisi :
Menurut Fritz Badar, software engineering adalah disiplin ilmu yang menerapkan prinsip-prinsip engineering agar mendapatkan software yang ekonomis yang dapat dipercaya dan bekerja lebih efisien pada mesin yang se¬benarnya.
Software engineering terdiri dari 3 elemen kunci, yaitu :
1. Metode,
2. Peralatan (tools),
3. Prosedur,
yang memungkinkan manajer mengontrol proses pengembangan software dan memberikan praktisi dasar yang baik untuk pembentukan software berkualitas tinggi.

1. Metode Software Enginnering
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Metode ini terdiri dari serangkaian tugas :
 Perencanaan & estimasi proyek
 Analisis kebutuhan sistem dan software
 Desain struktur data
 Arsitektur program dan prosedur algoritma
 Coding
 Testing dan pemeliharaan
2. Peralatan Software Engineering
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
 CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hard¬ware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
 Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
 Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE
3. Prosedur Software Engineering
Terdiri dari :
 urut-urutan di mana metode tersebut diterapkan
 dokumen
 laporan-laporan
 formulir-formulir yang diperlukan
 mengontrol kualitas software
 mengkoordinasi perubahan yang terjadi pada software

Dalam penguasaan atas model software engineering atau software engineering paradigm, dikenal ada 3 metode yang luas dipergunakan, yaitu :

1. Classic Life Cycle Pradigm - Model Water Fall - Model Siklus Hidup Klasik

Keterangan :
A. System Engineering and Analysis
Karena software merupakan bagian terbesar dari sistem, maka pekerjaan dimulai dengan cara menerap¬kan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan ele¬men lain, seperti :
 Hardware
 Software
 Database
B. Analisis kebutuhan software
Suatu proses pengumpulan kebutuhan software untuk mengerti sifat-sifat program yang dibentuk soft¬ware engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan inter¬face terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan direview / dibahas / ditinjau bersama-sama customer.
C. Design
Desain software sesungguhnya adalah proses multi step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3 atribut program yang berbeda, yaitu :
 Struktur data
 Arsitektur software
 Rincian prosedur
Proses desain menterjemahkan kebutuhan ke dalam representasi software yang dapat diukur kualitasnya sebelum mulai coding. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.
D. Coding
Desain harus diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin
E. Testing
Segera sesudah objek program dihasilkan, pengetesan program dimulai. Proses testing difokuskan pada logika internal software. Jaminan bahwa semua pernyataan atau statements sudah dites dan lingkungan external menjamin bahwa definisi input akan menghasilkan output yang diinginkan.
F. Maintenance
Software yang sudah dikirim ke customer data berubah karena
 Software mengalami error
 Software harus diadaptasi untuk menyesuaikan dengan lingkungan external, misalnya adanya sistem operasi baru atau peripheral baru.
 Software yang lebih disempurnakan karena adanya permintaan dari customer.
Masalah yang dihadapi dari model siklus hidup klasik adalah :
 Proyek yang sebenarnya jarang mengikuti aliran sequential yang ditawarkan model ini. Iterasi (Pengulangan) selalu terjadi dan menimbulkan masalah pda aplikasi yang dibentuk oleh model ini.
 Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara explisit (jelas).
 Customer harus sabar karena versi program yang jalan tidak akan tersedia sampai proyek software sele¬sai dalam waktu yang lama.






2. Prototype Paradigm

Keterangan :
Seringkali seorang customer sulit menentukan input yang lebih terinci, proses yang diinginkan dan output yang diharapkan. Tentu saja ini menyebabkan developer tidak yakin dengan efisiensi alogoritma yang di¬buatnya, sulit menyesuaikan sistem operasi, serta interaksi manusia dan mesin yang harus diambil. Dalam hal seperti ini, pendekatan prototype untuk software engineering merupakan langkah yang terbaik. Proto¬type sebenarnya adalah suatu proses yang memungkinkan developer membuat sebuah model software.
Ada 2 bentuk dari model ini, yaitu :
A. Paper Prototype
Menggambarkan interaksi manusia dan mesin dalam sebuah bentuk yang memungkinkan user mengerti bagaimana interaksi itu terjadi.
B. Working Prototype
Adalah prototype yang mengimplementasikan beberapa bagian dari fungsi software yang diinginkan seperti pada pendekatan pengembangan software. Model ini dimulai dengan :
 Pengumpulan kebutuhan developer dan customer
 Menentukan semua tujuan software
 Mengidentifikasi kebutuhan-kebutuhan yang diketahui
Hasil dari pengumpulan kebutuhan diteruskan pada Quick Design. Quick Design ini memfokuskan pada representasi aspek-aspek software yang dapat dilihat oleh user, misalnya format input dan output, selanjutanya dari desain cepat diteruskan pada pembentukan prototype (langkah ke 3). Prototype ini dievaluasi oleh customer / user dan digunakan untuk memperbaiki kebutuhan-kebutuhan software. Proses iterasi terjadi agar prototype yang dihasilkan memenuhi kebutuhan customer, juga pada saat yang sama developer mengerti lebih baik tentang apa yang harus dikerjakan.
Masalah yang dihadapi oleh prototyping paradigm ini adalah :
 Customer hanya melihat pada apa yang dihasilkan oleh software, tidak peduli pada hal-hal yang ber¬hubungan dengan kualitas software dan pemeliharaan jangka panjang.
 Developer seringkali menyetujui apa yang diterangkan oleh customer agar prototype dapat dihasilkan dengan cepat. Akibatnya timbul pemilihan sistem operasi / bahasa pemrograman yang tidak tepat.

3. Fourth Generation Tehnique Paradigm - Model tehnik generasi ke 4 / 4GT

Istilah Fourth Generation Technique (4GT) meliputi seperangkat peralatan software yang memungkinkan seorang developer software menerapkan beberapa karakteristik software pada tingkat yang tinggi, yang ke¬mudian menghasilkan source code dan object code secara otomatis sesuai dengan spesifikasi yang ditentu¬kan developer. Saat ini peralatan / tools 4GT adalah bahasa non prosedur untuk :
 DataBase Query
 Pembentukan laporan ( Report Generation )
 Manipulasi data
 Definisi dan interaksi layar (screen)
 Pembentukan object dan source ( Object and source generation )
 Kemampuan grafik yang tinggi, dan
 Kemampuan spreadsheet
Keterangan gambar :
 Model 4GT untuk software engineering dimulai dengan rangkaian pengumpulan kebutuhan. Idealnya, seorang customer menjelaskan kebutuhan-kebutuhan yang selanjutnay diterjemahkan ke dalam proto¬type. Tetapi ini tidak dapat dilakukan karena customer tidak yakin dengan apa yang diperlukan, tidak jelas dalam menetapkan fakta-fakta yang diketahui dan tidak dapat menentukan informasi yang diing¬inkan oleh peralatan 4GT.
 Untuk aplikasi kecil adalah mungkin bergerak langsung dari langkah pengumpulan kebutuhan ke im¬plementasi yang menggunakan bahasa non prosedur fourth generation (generasi ke 4). Tetapi untuk proyek besar, pengembangan strategi desain sistem tetap diperlukan, sekalipun kita menggunakan 4GL. Penggunaan 4GT tanpa desain untuk proyek besar akan menyebabkan masalah yang sama yang ditemui dalam pengembangan software yang menggunakan pendekatan konvensional.
 Implementasi yang menggunakan 4GL memungkinkan developer software menjelaskan hasil yang diing¬inkan yang kemudian diterjemahkan ke dalam bentuk source code dan object code secara otomatis.
 Langkah yang terakhir adalah mengubah implementasi 4GT ke dalam sebuah product. Selanjutnya de¬veloper harus melakukan pengetesan, pengembangan dokumentasi dan pelaksanaan semua aktifitas lainnya yang diwujudkan dalam model software engineering.

Masalah yang dihadapi dalam model 4GT adalah adanya sebagian orang yang beranggapan bahwa :
A. peralatan 4GT tidak semudah penggunaan bahasa pemrograman,
B. source code yang dihasilkan oleh peralatan ini tidak efisien,
C. pemeliharaan sistem software besar yang dikembangkan dengan 4GT masih merupakan tanda tanya.

4. Model Kombinasi - Combining Paradigm

Keterangan :
Model ini menggabungkan keuntungan-keuntungan dari beberapa model sebelumnya. Seperti pada model sebelumnya, model kombinasi ini dimulai dengan langkah pengumpulan kebutuhan.
Pendekatan yang dapat diambil adalah pendekatan siklus hidup klasik (Analisis sistem dan analisis kebu-tuhan software) atau dapat juga menggunakan pendekatan seperti prototyping jika definisi masalahnya tidak terlalu formal.
Jika kebutuhan untuk fungsi dan performance software diketahui dan dimengerti, pendekatan yang dianjur¬kan adalah model siklus hidup klasik. Sebaliknya, jika aplikasi software menuntut interaksi yang sering antara manusia dan mesin, membutuhkan algoritma yang tidak dapat dibuktikan, atau membutuhkan tehnik output / kontrol, maka pendekatan yang dianjurkan adalah model prototyping.
Pada kasus seperti ini, 4GL dapat digunakan untuk mendapat prototype dengan cepat. Segera sesudah pro¬totype dievaluasi dan disempurnakan, langkah desain dan implementasi dalam siklus hidup klasik diterap¬kan.

Dari model yang disebut di atas dapat diambil suatu kesimpulan, bahwa proses pengembangan software terdiri dari 3 fase, yaitu :
1. Fase Definisi
2. Fase Pengembangan (Development)
3. Fase Pemeliharaan (Maintenance)

1. Fase Definisi
Fase definisi memfokuskan pada “What”. Selama definisi ini, developer software berusaha untuk :
 Mengidentifikasi informasi apa yang dikerjakan proses
 Fungsi dan performance apa yang diinginkan
 Interface apa yang dibutuhkan
 Hambatan desain apa yang ada, dan
 Kriteria validasi apa yang dibutuhkan untuk menetapkan keberhasilan sistem.

A. Sistem Analis
Sistem analis menetapkan peranan dari setiap elemen dalam sistem berbasis komputer, terutama menga¬lokasikan peranan software.
B. Sistem Software Planning
Dalam sistem ini, setelah lingkungan software dialokasikan, maka langkah dari sistem software plan-ning ini adalah :
 Pengalokasian sumber / resource
 Estimasi biaya
 Penetapan tugas pekerjaan dan jadual.
C. Requirement Analysis
Penetapan lingkup untuk software memberikan petunjuk / arah. Namun definisi yang lebih rinci dari in¬formasi dan fungsi software diperlukan sebelum pekerjaan dimulai.

2. Fase Pengembangan
Fase pengembangan berfokus pada “How”. Selama pengembangan, developer software berusaha menjelas¬kan :
 Bagaimana struktur data dan arsitektur software yang didesain
 Bagaimana rincian prosedur diimplementasikan ( diterapkan )
 Bagaimana desain diterjemahkan ke dalam bahasa pemrograman atau bahasa non prosedur, dan
 Bagaimana pengetesan akan dilaksanakan.

A. Desain software ( Software Design )
Desain menterjemahkan kebutuhan-kebutuhan software ke dalam sekumpulan representasi (grafik, ta¬bel, diagram, atau bahasa yang menjelaskan struktur data, arsitektur software dan prosedur algoritma).
B. Coding
Representasi desain harus diterjemahkan ke dalam bahasa tiruan / artificial language yang menghasilkan perintah-perintah yang dapat dieksekusi oleh komputer.
C. Software Testing
Segera sesudah software diimplementasikan dalam bentuk yang dapat dieksekusi oleh mesin, software perlu ditest untuk menemukan kesalahan ( merupakan fungsi logika dan implementasi ).

3. Fase Pemeliharaan
Fase pemelihaaan berfokus pada “Change” atau perubahan. Ini dapat disebabkan :
A. Perubahan karena software error ( Corective Maintenance )
B. Perubahan karena software disesuaikan / diadaptasi dengan lingkungan external, misalnya munculnya CPU baru, sistem operasi baru ( Adaptive Maintenance )
C. Perubahan software yang disebabkan customer / user meminta fungsi tambahan, misalnya fungsi grafik, fungsi matematik, dll ( Perfective Maintenance )

PENGENALAN SOFTWARE ENGINERING

SOFTWARE AND SOFTWARE ENGINEERING

Selama tiga dekade pertama dari era komputerisasi, tantangan utama adalah mengembangkan hardware kom¬puter yang dapat mengurangi biaya pengolahan dan penyimpanan data. Selama dekade tahun 1980 an, kemajuan yang pesat dari mikro elektronik menghasilkan kemampuan komputer yang lebih baik pada tingkat biaya yang lebih rendah. Namun masalah sekarang berbeda. Tantangan utama adalah mengurangi biaya dan memperbaiki kualitas solusi berbasis komputer (Solusi yang diimplementasikan dengan mempergunakan software). Software merupakan faktor kunci dalam keberhasilan suatu usaha, software dapat membedakan satu perusahaan dari per¬usahan saingannya.

EVOLUSI PERKEMBANGAN SOFTWARE

Evolusi software

Tahun-tahun awal :
 Batch orientation
 Limmited distribution
 Custummer software

Era kedua :
 Multi user
 Real time
 Database

Era ketiga
 Distibuted system
 Embedded intellegence
 Low cost hardware
 Consumer infact

Era keempat :
 Expert system
 A I Machine
 Parallel architecture


TAHUN-TAHUN PERTAMA :
 Batch Orientation
Suatu orientasi di mana proses dilakukan setelah data dikumpulkan dalam satuan waktu tertentu, atau proses dilakukan setelah data terkumpul, lawan dari batch adalah ONLINE atau Interactive Process.
Keuntungan dari Interactive adalah mendapatkan data yang selalu up to date.
 Limmited distribution
Suatu penyebaran software yang terbatas pada perusahaan-perusahaan tertentu.
 Custom software
Software yang dikembangkan berdaasarkan perusahaan-perusahaan tertentu.

ERA KEDUA :
 Multi user
Suatu sistem di mana satu komputer digunakan oleh beberapa user pada saat yang sama.
 Real Time
Suatu sistem yang dapat mengumpulkan, menganalisa dan mentransformasikan data dari berbagai sumber, mengontrol proses dan menghasilkan output dalam mili second.
 Database
Perkembangan yang pesat dari alat penyimpan data yang OnLine menyebabkan muncul generasi pertama DBMS (DataBase Management System).
 Product Software
Adalah software yang dikembangkan untuk dijual kepada masyarakat luas.

ERA KETIGA :
 Distributed system
Suatu sistem yang tidak hanya dipusatkan pada komputer induk (Host computer), daerah atau bidang lain¬nya yang juga memiliki komputer yang ukurannya lebih kecil dari komputer induk. Lawan dari distributed system adalah Centralized System.
 Embedded Intelegence
Suatu product yang diberi tambahan “Intellegence” dan biasanya ditambahkan mikroprocessor yang mutak¬hir. Contohnya adalah automobil, robot, peralatan diagnostic serum darah.
 Low Cost Hardware
harga hardware yang semakin rendah, ini dimungkinkan karena munculnya Personal Computer.
 Consummer Inpact
Adanya perkembangan komputer yang murah menyebabkan banyaknya software yang dikembangkan, soft¬ware ini memberi dampak yang besar terhadap masyarakat.

ERA KEEMPAT :
 Expert system
Suatu penerapan A.I. (Artificial Intellegence) pada bidang-bidang tertentu, misalnya bidang kedokteran, komunikasi, dll.
 AI Machine
Suatu mesin yang dapat meniru kerja dari sebagian otak manusia. Misalnya mesin robot, komputer catur.
 Parallel Architecture
Arsitektur komputer yang memungkinkan proses kerja LAN paralel, yang dimungkinkan adanya prosesor berbeda dalam satu komputer

ARTI SOFTWARE
1. Instruksi
Atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan.
2. Struktur data
Yang memungkinkan program memanipulasi informasi
3. Dokumen
Yang menggambarkan operasi dan penggunaan program.

SIFAT DAN KARAKTERISTIK SOFTWARE
1. Software merupakan elemen sistem logik dan bukan elemen sistem fisik seperti hardware
2. Elemen itu tidak aus, tetapi bisa rusak.
3. Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardware
4. Software itu tidak bisa dirakit.

KOMPONEN SOFTWARE
1. Bentuk bahasa
Terbagi 2, yaitu
A. High Level, contoh PASCAL, COBOL, FORTRAN.
B. Middle Level, contoh C
2. Bentuk translator
Terbagi 3 , yaitu :
A. Interpreter
Menerjemahkan dari bahasa tingkat tinggi ke bahasa tingkat rendah secara satu persatu (statemen demi statemen)
B. Compiler
Menerjemahkan secara keseluruhan, proses lebih cepat dari interpreter
C. Assembler
Menerjemahkan dari bahasa rakitan ke bahasa mesin