Perangkat lunak

Perangkat lunak komputer, atau hanya perangkat lunak, adalah setiap set mesin-instruksi yang dapat dibaca (paling sering dalam bentuk program komputer ) yang mengarahkan sebuah komputer prosesor untuk melakukan operasi tertentu. Istilah ini digunakan untuk kontras dengan perangkat keras komputer , benda-benda fisik ( prosesor dan perangkat terkait) yang melaksanakan instruksi. Hardware dan software membutuhkan satu sama lain, tidak memiliki nilai apapun tanpa yang lain.
Firmware adalah perangkat lunak yang telah secara permanen disimpan dalam perangkat keras (khususnya di non-volatile memori ). Ini tentunya memiliki kualitas dari kedua perangkat lunak dan perangkat keras.
Software adalah istilah umum. Hal ini dapat merujuk pada semua instruksi komputer secara umum atau kepada set instruksi khusus komputer. Hal ini termasuk baik instruksi mesin (dengan kode biner bahwa prosesor memahami) dan kode sumber (petunjuk lebih manusiawi-dimengerti bahwa harus diberikan ke dalam kode mesin oleh compiler atau interpreter sebelum dieksekusi).
Pada platform komputer yang paling, software dapat dikelompokkan menjadi dua kategori: Sistem perangkat lunak adalah perangkat lunak dasar yang diperlukan untuk komputer untuk beroperasi (terutama sistem operasi ). Aplikasi perangkat lunak adalah semua perangkat lunak yang menggunakan sistem komputer untuk melakukan pekerjaan yang berguna di luar pengoperasian komputer itu sendiri. (Sebuah kategori ketiga, perangkat lunak tertanam , berada sebagai firmware dalam embedded system , perangkat yang didedikasikan untuk penggunaan tunggal Dalam konteks bahwa tidak ada perbedaan yang jelas antara sistem dan perangkat lunak aplikasi..)
Software mengacu pada satu atau lebih program komputer dan data dalam penyimpanan komputer. Dengan kata lain, perangkat lunak adalah seperangkat program, prosedur, algoritma dan dokumentasinya berkaitan dengan pengoperasian sistem pengolahan data. Program perangkat lunak melakukan fungsi dari program yang menerapkan, baik dengan langsung memberikan instruksi kepada elektronika digital atau dengan melayani sebagai masukan untuk software lain. The Istilah ini diciptakan untuk kontras dengan istilah hardware (berarti perangkat fisik). Berbeda dengan hardware, software "tidak bisa disentuh". Software ini juga kadang-kadang digunakan dalam arti yang lebih sempit, yang berarti perangkat lunak aplikasi saja. Kadang-kadang istilah mencakup data yang belum tradisional dikaitkan dengan komputer, seperti film, kaset, dan catatan.
Perangkat lunak komputer begitu dipanggil untuk membedakannya dari perangkat keras komputer , yang meliputi interkoneksi fisik dan perangkat yang diperlukan untuk menyimpan dan melaksanakan (atau menjalankan) perangkat lunak. Pada tingkat terendah, kode executable terdiri dari instruksi bahasa mesin yang spesifik untuk prosesor individu. Sebuah bahasa mesin terdiri dari kelompok nilai biner menandakan instruksi prosesor yang mengubah keadaan komputer dari negara yang sebelumnya. Program adalah memerintahkan urutan instruksi untuk mengubah keadaan komputer dalam urutan tertentu. Hal ini biasanya ditulis dalam bahasa tingkat tinggi pemrograman yang lebih mudah dan lebih efisien bagi manusia untuk menggunakan (lebih dekat ke bahasa alam ) daripada bahasa mesin. Bahasa tingkat tinggi yang dikompilasi atau ditafsirkan ke dalam kode mesin bahasa pemrograman. Perangkat lunak juga dapat ditulis dalam bahasa assembly , pada dasarnya, sebuah mnemonic representasi dari bahasa mesin menggunakan alfabet bahasa alami. Bahasa assembly harus dirakit menjadi kode obyek melalui assembler .
Sejarah
Teori pertama tentang perangkat lunak diusulkan oleh Alan Turing pada tahun 1935-nya nomor esai Computable dengan aplikasi ke Entscheidungsproblem tersebut (masalah keputusan). Bahasa sehari-hari, istilah ini sering digunakan untuk berarti perangkat lunak aplikasi . Dalam ilmu komputer dan rekayasa perangkat lunak , perangkat lunak adalah semua informasi diproses oleh sistem komputer , program dan data yang . Para bidang akademik mempelajari perangkat lunak ilmu komputer dan rekayasa perangkat lunak .
Sebagai program semakin banyak memasuki bidang firmware, dan perangkat keras itu sendiri menjadi lebih kecil, lebih murah dan lebih cepat seperti yang diperkirakan oleh hukum Moore , elemen komputasi pertama dianggap perangkat lunak, bergabung dengan barisan hardware. Perusahaan hardware yang paling saat ini memiliki programer perangkat lunak lebih pada gaji dari desainer hardware karena perangkat lunak telah otomatis banyak tugas dari papan sirkuit cetak insinyur. Sama seperti industri Auto , yang industri Software telah berkembang dari beberapa visioner beroperasi dari garasi mereka dengan prototipe . Steve Jobs dan Bill Gates adalah Henry Ford dan Louis Chevrolet kali mereka, yang memanfaatkan ide-ide yang sudah dikenal sebelum mereka mulai dalam bisnis. Dalam hal pengembangan perangkat lunak , saat ini umumnya setuju untuk menjadi publikasi pada tahun 1980 dari spesifikasi untuk IBM Personal Computer diterbitkan oleh IBM karyawan Philip Don Estridge . Hari kepindahannya akan dilihat sebagai jenis orang-sourcing . Komputer perusahaan hardware tidak hanya paket perangkat lunak mereka, mereka juga ditempatkan tuntutan pada lokasi hardware di ruang berpendingin disebut ruang komputer .
Sampai saat itu, perangkat lunak ini dibundel dengan hardware oleh produsen peralatan asli (OEM) seperti Data General , Digital Equipment dan IBM. Ketika seorang pelanggan membeli komputer mini , pada saat itu komputer terkecil di pasaran, komputer tidak datang dengan pra-instal perangkat lunak , tetapi harus diinstal oleh insinyur dipekerjakan oleh OEM. Komputer perusahaan hardware tidak hanya paket perangkat lunak mereka, mereka juga ditempatkan tuntutan pada lokasi hardware di ruang berpendingin disebut ruang komputer . Sebagian besar perusahaan memiliki perangkat lunak mereka pada buku-buku untuk 0 dolar, tidak dapat mengklaim sebagai aset (ini mirip dengan pembiayaan musik populer pada masa itu). Ketika Data General memperkenalkan Data General Nova , sebuah perusahaan bernama Digidyne ingin menggunakan nya RDOS sistem operasi sendiri clone hardware . Data General menolak untuk lisensi perangkat lunak mereka (yang sulit untuk dilakukan, karena itu pada buku sebagai aset gratis), dan mengklaim mereka "hak bundling". The Mahkamah Agung menetapkan preseden yang disebut Digidyne v Data General pada tahun 1985. Mahkamah Agung membiarkan berdiri sirkuit keputusan 9, dan Data General akhirnya dipaksa lisensi perangkat lunak Sistem Operasi karena memutuskan bahwa membatasi lisensi hanya hardware DG merupakan pengaturan ikatan ilegal. Tidak dapat mempertahankan kerugian dari pengacara biaya, Data General akhirnya diambil alih oleh EMC Corporation . Keputusan Mahkamah Agung memungkinkan untuk perangkat lunak nilai, dan juga membeli paten Software .
Ada banyak perusahaan sukses saat ini yang menjual produk-produk perangkat lunak saja, meskipun masih banyak masalah lisensi perangkat lunak umum karena kompleksitas desain dan dokumentasi yang buruk, yang menyebabkan troll paten .
Dengan spesifikasi perangkat lunak terbuka dan kemungkinan lisensi perangkat lunak, peluang baru muncul untuk perangkat lunak yang kemudian menjadi standar de facto , seperti DOS untuk sistem operasi, tetapi juga berbagai pengolah kata eksklusif dan spreadsheet program. Dalam pola pertumbuhan yang sama, metode pengembangan kepemilikan menjadi standar metodologi pengembangan perangkat lunak .
Jenis-jenis perangkat lunak

Sebuah struktur lapisan yang menunjukkan di mana sistem operasi perangkat lunak dan perangkat lunak aplikasi terletak pada saat menjalankan khas komputer desktop
Perangkat Lunak mencakup semua berbagai bentuk dan peran yang data digital yang tersimpan dapat memiliki dan bermain di sebuah komputer (atau sistem serupa), terlepas dari apakah data yang digunakan sebagai kode untuk CPU, atau interpreter , atau apakah itu merupakan jenis lain dari informasi . Software sehingga mencakup berbagai macam produk yang dapat dikembangkan dengan menggunakan teknik yang berbeda seperti biasa bahasa pemrograman , bahasa scripting , microcode , atau FPGA konfigurasi.
Jenis-jenis perangkat lunak termasuk halaman web yang dikembangkan dalam bahasa dan kerangka kerja seperti HTML , PHP , Perl , JSP , ASP.NET , XML , dan aplikasi desktop seperti OpenOffice.org , Microsoft Word dikembangkan dalam bahasa seperti C , C + + , Objective-C , Java , C # , atau Smalltalk . Aplikasi perangkat lunak biasanya berjalan pada perangkat lunak yang mendasari sistem operasi seperti Linux atau Microsoft Windows . Software (atau firmware ) juga digunakan dalam video game dan untuk bagian-bagian dikonfigurasi dari logika sistem mobil , televisi , dan lainnya elektronik konsumen .
Praktis sistem komputer membagi sistem perangkat lunak ke dalam tiga kelompok utama : sistem perangkat lunak , perangkat lunak pemrograman dan perangkat lunak aplikasi , meskipun perbedaan adalah sewenang-wenang, dan sering kabur.
Sistem perangkat lunak
Sistem perangkat lunak adalah perangkat lunak komputer yang dirancang untuk mengoperasikan perangkat keras komputer , untuk menyediakan fungsi dasar, dan untuk menyediakan platform untuk menjalankan aplikasi perangkat lunak . Sistem perangkat lunak termasuk driver perangkat , sistem operasi , server , utilitas , dan sistem jendela .
Sistem perangkat lunak bertanggung jawab untuk mengelola berbagai komponen hardware independen, sehingga mereka dapat bekerja sama secara harmonis. Tujuannya adalah untuk melepaskan beban yang perangkat lunak aplikasi programmer dari detail sering kompleks dari komputer tertentu yang sedang digunakan, termasuk aksesoris seperti perangkat komunikasi , printer, pembaca perangkat, menampilkan dan keyboard, dan juga untuk partisi komputer sumber daya seperti memori dan waktu prosesor dengan cara yang aman dan stabil.
Programming
Software pemrograman termasuk alat dalam bentuk program atau aplikasi yang pengembang perangkat lunak gunakan untuk membuat, men-debug, mempertahankan, atau mendukung program lain dan aplikasi. Istilah ini biasanya mengacu pada program yang relatif sederhana seperti kompiler , debugger , interpreter , linker , dan editor teks , yang dapat dikombinasikan bersama-sama untuk menyelesaikan tugas, sebanyak satu mungkin menggunakan alat-alat tangan ganda untuk memperbaiki objek fisik. Tool pemrograman dimaksudkan untuk membantu programmer dalam menulis program komputer , dan mereka dapat dikombinasikan dalam suatu lingkungan pengembangan terpadu (IDE) untuk lebih mudah mengelola semua fungsi.
Perangkat Lunak topik
Arsitektur
Pengguna sering melihat hal-hal berbeda dari programmer. Orang yang menggunakan komputer tujuan modern yang umum (sebagai lawan dari embedded system , komputer analog dan superkomputer ) biasanya melihat tiga lapisan perangkat lunak melakukan berbagai tugas: platform, aplikasi, dan pengguna perangkat lunak.
• Software platform: platform termasuk firmware , driver perangkat , sebuah sistem operasi , dan biasanya antarmuka pengguna grafis yang, secara total, memungkinkan pengguna untuk berinteraksi dengan komputer dan yang periferal (peralatan yang terkait). Software platform sering datang dibundel dengan komputer. Pada PC Anda biasanya akan memiliki kemampuan untuk mengubah platform perangkat lunak.
• Aplikasi perangkat lunak: Aplikasi perangkat lunak atau Aplikasi adalah apa yang kebanyakan orang pikirkan ketika mereka berpikir tentang perangkat lunak. Contoh umum termasuk suite kantor dan video game. perangkat lunak aplikasi sering dibeli secara terpisah dari perangkat keras komputer. Kadang-kadang aplikasi yang dibundel dengan komputer, tapi itu tidak mengubah fakta bahwa mereka berjalan sebagai aplikasi independen. Aplikasi biasanya program independen dari sistem operasi, meskipun mereka sering dirancang untuk platform tertentu. Sebagian besar pengguna memikirkan kompiler, database, dan lainnya "sistem perangkat lunak" sebagai aplikasi.
• Pengguna-menulis perangkat lunak: pengembangan pengguna akhir sistem penjahit untuk memenuhi kebutuhan spesifik pengguna. Pengguna perangkat lunak termasuk template spreadsheet dan pengolah kata template. Bahkan filter email semacam perangkat lunak pengguna. Pengguna software ini membuat sendiri dan sering mengabaikan betapa pentingnya. Tergantung pada seberapa kompeten pengguna perangkat lunak yang ditulis telah diintegrasikan ke dalam paket aplikasi default, banyak pengguna mungkin tidak menyadari perbedaan antara paket asli, dan apa yang telah ditambahkan oleh rekan kerja.
Eksekusi
Perangkat lunak komputer harus "dimuat" ke dalam penyimpanan komputer (seperti hard drive atau memori ). Setelah perangkat lunak telah dimuat, komputer mampu menjalankan perangkat lunak. Ini melibatkan melewati instruksi dari perangkat lunak aplikasi , melalui perangkat lunak sistem, dengan hardware yang akhirnya menerima instruksi sebagai kode mesin . Setiap instruksi menyebabkan komputer untuk melakukan operasi - memindahkan data yang , melaksanakan perhitungan , atau mengubah aliran kontrol instruksi.
Data gerakan biasanya dari satu tempat ke tempat lain dalam memori. Kadang-kadang melibatkan data yang bergerak antara memori dan register yang memungkinkan kecepatan tinggi akses data dalam CPU. Data bergerak, terutama dalam jumlah besar itu, bisa menjadi mahal. Jadi, ini kadang-kadang dihindari dengan menggunakan "pointer" untuk data, bukan. Perhitungan termasuk operasi sederhana seperti incrementing nilai dari elemen data variabel. Perhitungan yang lebih kompleks mungkin melibatkan banyak operasi dan elemen data bersama-sama.
Kualitas dan keandalan
Perangkat Lunak kualitas sangat penting, terutama untuk komersial perangkat lunak dan sistem seperti Microsoft Office , Microsoft Windows dan Linux . Jika perangkat lunak yang salah (kereta), dapat menghapus pekerjaan seseorang, crash komputer dan melakukan hal-hal tak terduga lainnya. Kesalahan dan kesalahan disebut " bug . " Banyak bug yang ditemukan dan dieliminasi (debugged) melalui pengujian perangkat lunak . Namun, perangkat lunak pengujian jarang - jika pernah - menghilangkan bug setiap, beberapa programmer mengatakan bahwa "setiap program memiliki setidaknya satu lagi bug" (Hukum Lubarsky s). Semua perusahaan perangkat lunak besar, seperti Microsoft, Novell dan Sun Microsystems , memiliki departemen pengujian software mereka sendiri dengan tujuan khusus hanya menguji. Software dapat diuji melalui unit testing , pengujian regresi dan metode lainnya, yang dilakukan secara manual, atau yang paling sering, otomatis, karena jumlah kode yang akan diuji dapat cukup besar. Misalnya, NASA memiliki prosedur pengujian perangkat lunak yang sangat ketat untuk berbagai sistem operasi dan fungsi komunikasi. Banyak operasi berbasis NASA berinteraksi dan mengidentifikasi satu sama lain melalui program perintah yang disebut perangkat lunak. Hal ini memungkinkan banyak orang yang bekerja di NASA untuk memeriksa dan mengevaluasi sistem fungsional secara keseluruhan. Program yang berisi perintah perangkat lunak memungkinkan perangkat keras dan sistem operasi rekayasa berfungsi lebih mudah bersama-sama.
Lisensi
Lisensi perangkat lunak memberikan pengguna hak untuk menggunakan perangkat lunak dalam lingkungan berlisensi. Beberapa software dilengkapi dengan lisensi ketika dibeli dari rak, atau lisensi OEM ketika digabungkan dengan hardware. Perangkat lunak lain datang dengan lisensi perangkat lunak bebas , pemberian penerima hak untuk memodifikasi dan mendistribusikan perangkat lunak. Software ini juga bisa dalam bentuk freeware atau shareware .
Paten
Software dapat dipatenkan di beberapa tapi tidak semua negara, namun, paten perangkat lunak bisa menjadi kontroversial di industri perangkat lunak dengan banyak orang memegang pandangan yang berbeda tentang hal itu. Kontroversi atas paten perangkat lunak adalah tentang spesifik algoritma atau teknik bahwa perangkat lunak berisi, yang tidak dapat diduplikasi oleh orang lain dan dianggap kekayaan intelektual dan pelanggaran hak cipta tergantung pada beratnya.
Desain dan implementasi

Sebuah implementasi tertentu dari perangkat lunak. Perangkat lunak ini diciptakan untuk membantu situs Wikipedia. Juga, tidak menggunakan antarmuka pengguna grafis selain dari jendela konsol sederhana.
Desain dan implementasi perangkat lunak bervariasi tergantung pada kompleksitas perangkat lunak. Misalnya, desain dan penciptaan Microsoft Word perangkat lunak akan memakan waktu lebih dari merancang dan mengembangkan Microsoft Notepad karena perbedaan dalam fungsi di masing-masing.
Software biasanya dirancang dan dibuat (kode / ditulis / diprogram) di lingkungan pengembangan terpadu (IDE) seperti Eclipse , Emacs dan Microsoft Visual Studio yang dapat menyederhanakan proses dan mengkompilasi program. Seperti disebutkan dalam bagian yang berbeda, perangkat lunak biasanya dibuat di atas perangkat lunak yang ada dan antarmuka pemrograman aplikasi (API) yang menyediakan perangkat lunak yang mendasari seperti GTK + , JavaBeans atau swing . Perpustakaan (API) dikategorikan untuk tujuan yang berbeda. Misalnya, JavaBeans perpustakaan digunakan untuk merancang aplikasi perusahaan , Windows Forms perpustakaan digunakan untuk merancang antarmuka pengguna grafis (GUI) aplikasi seperti Microsoft Word , dan Windows Communication Foundation digunakan untuk merancang layanan web . Mendasari pemrograman komputer konsep seperti quicksort , tabel hash , berbagai , dan pohon biner dapat berguna untuk menciptakan perangkat lunak. Ketika program dirancang, hal itu bergantung pada API. Misalnya, jika pengguna adalah merancang aplikasi desktop Microsoft Windows, dia / dia mungkin menggunakan . NET jendela perpustakaan Forms untuk merancang aplikasi desktop dan panggilan API yang seperti Form1.Close () dan Form1.Show () untuk menutup atau membuka aplikasi dan menulis operasi tambahan dia / dirinya sendiri bahwa ia perlu memiliki. Tanpa API, pemrogram perlu menuliskan API dirinya / dirinya sendiri. Perusahaan seperti Sun Microsystems , Novell , dan Microsoft menyediakan API mereka sendiri, sehingga banyak aplikasi yang ditulis menggunakan mereka software perpustakaan yang biasanya memiliki banyak API di dalamnya.
Perangkat lunak komputer memiliki karakteristik ekonomi khusus yang membuat desain, pembuatan, dan distribusi yang berbeda dari barang ekonomi yang paling lainnya.
Seseorang yang membuat software disebut programmer , software engineer , pengembang perangkat lunak , atau "kode monyet", istilah yang semua memiliki arti yang sama.
Industri dan organisasi
Sejumlah besar perusahaan perangkat lunak dan programer di dunia terdiri dari industri perangkat lunak. Software dapat cukup menguntungkan industri: Bill Gates , pendiri Microsoft adalah orang terkaya di dunia pada tahun 2009, terutama dengan menjual Microsoft Windows dan Microsoft Office produk perangkat lunak. Hal yang sama berlaku untuk Larry Ellison , terutama melalui nya database Oracle software. Melalui waktu industri perangkat lunak telah menjadi semakin khusus.
Non-profit organisasi perangkat lunak termasuk Free Software Foundation , GNU Project dan Mozilla Foundation . Software organisasi standar seperti W3C , IETF mengembangkan standar perangkat lunak sehingga perangkat lunak yang paling dapat saling beroperasi melalui standar seperti XML , HTML , HTTP atau FTP .
Lainnya terkenal perusahaan software besar termasuk Novell , SAP , Symantec , Adobe Systems , dan Corel , sementara perusahaan kecil sering memberikan inovasi.
Perangkat lunak komputer, atau hanya perangkat lunak, adalah setiap set mesin-instruksi yang dapat dibaca (paling sering dalam bentuk program komputer ) yang mengarahkan sebuah komputer prosesor untuk melakukan operasi tertentu. Istilah ini digunakan untuk kontras dengan perangkat keras komputer , benda-benda fisik ( prosesor dan perangkat terkait) yang melaksanakan instruksi. Hardware dan software membutuhkan satu sama lain, tidak memiliki nilai apapun tanpa yang lain.
Firmware adalah perangkat lunak yang telah secara permanen disimpan dalam perangkat keras (khususnya di non-volatile memori ). Ini tentunya memiliki kualitas dari kedua perangkat lunak dan perangkat keras.
Software adalah istilah umum. Hal ini dapat merujuk pada semua instruksi komputer secara umum atau kepada set instruksi khusus komputer. Hal ini termasuk baik instruksi mesin (dengan kode biner bahwa prosesor memahami) dan kode sumber (petunjuk lebih manusiawi-dimengerti bahwa harus diberikan ke dalam kode mesin oleh compiler atau interpreter sebelum dieksekusi).
Pada platform komputer yang paling, software dapat dikelompokkan menjadi dua kategori: Sistem perangkat lunak adalah perangkat lunak dasar yang diperlukan untuk komputer untuk beroperasi (terutama sistem operasi ). Aplikasi perangkat lunak adalah semua perangkat lunak yang menggunakan sistem komputer untuk melakukan pekerjaan yang berguna di luar pengoperasian komputer itu sendiri. (Sebuah kategori ketiga, perangkat lunak tertanam , berada sebagai firmware dalam embedded system , perangkat yang didedikasikan untuk penggunaan tunggal Dalam konteks bahwa tidak ada perbedaan yang jelas antara sistem dan perangkat lunak aplikasi..)
Software mengacu pada satu atau lebih program komputer dan data dalam penyimpanan komputer. Dengan kata lain, perangkat lunak adalah seperangkat program, prosedur, algoritma dan dokumentasinya berkaitan dengan pengoperasian sistem pengolahan data. Program perangkat lunak melakukan fungsi dari program yang menerapkan, baik dengan langsung memberikan instruksi kepada elektronika digital atau dengan melayani sebagai masukan untuk software lain. The Istilah ini diciptakan untuk kontras dengan istilah hardware (berarti perangkat fisik). Berbeda dengan hardware, software "tidak bisa disentuh". Software ini juga kadang-kadang digunakan dalam arti yang lebih sempit, yang berarti perangkat lunak aplikasi saja. Kadang-kadang istilah mencakup data yang belum tradisional dikaitkan dengan komputer, seperti film, kaset, dan catatan.
Perangkat lunak komputer begitu dipanggil untuk membedakannya dari perangkat keras komputer , yang meliputi interkoneksi fisik dan perangkat yang diperlukan untuk menyimpan dan melaksanakan (atau menjalankan) perangkat lunak. Pada tingkat terendah, kode executable terdiri dari instruksi bahasa mesin yang spesifik untuk prosesor individu. Sebuah bahasa mesin terdiri dari kelompok nilai biner menandakan instruksi prosesor yang mengubah keadaan komputer dari negara yang sebelumnya. Program adalah memerintahkan urutan instruksi untuk mengubah keadaan komputer dalam urutan tertentu. Hal ini biasanya ditulis dalam bahasa tingkat tinggi pemrograman yang lebih mudah dan lebih efisien bagi manusia untuk menggunakan (lebih dekat ke bahasa alam ) daripada bahasa mesin. Bahasa tingkat tinggi yang dikompilasi atau ditafsirkan ke dalam kode mesin bahasa pemrograman. Perangkat lunak juga dapat ditulis dalam bahasa assembly , pada dasarnya, sebuah mnemonic representasi dari bahasa mesin menggunakan alfabet bahasa alami. Bahasa assembly harus dirakit menjadi kode obyek melalui assembler .
Sejarah
Teori pertama tentang perangkat lunak diusulkan oleh Alan Turing pada tahun 1935-nya nomor esai Computable dengan aplikasi ke Entscheidungsproblem tersebut (masalah keputusan). Bahasa sehari-hari, istilah ini sering digunakan untuk berarti perangkat lunak aplikasi . Dalam ilmu komputer dan rekayasa perangkat lunak , perangkat lunak adalah semua informasi diproses oleh sistem komputer , program dan data yang . Para bidang akademik mempelajari perangkat lunak ilmu komputer dan rekayasa perangkat lunak .
Sebagai program semakin banyak memasuki bidang firmware, dan perangkat keras itu sendiri menjadi lebih kecil, lebih murah dan lebih cepat seperti yang diperkirakan oleh hukum Moore , elemen komputasi pertama dianggap perangkat lunak, bergabung dengan barisan hardware. Perusahaan hardware yang paling saat ini memiliki programer perangkat lunak lebih pada gaji dari desainer hardware karena perangkat lunak telah otomatis banyak tugas dari papan sirkuit cetak insinyur. Sama seperti industri Auto , yang industri Software telah berkembang dari beberapa visioner beroperasi dari garasi mereka dengan prototipe . Steve Jobs dan Bill Gates adalah Henry Ford dan Louis Chevrolet kali mereka, yang memanfaatkan ide-ide yang sudah dikenal sebelum mereka mulai dalam bisnis. Dalam hal pengembangan perangkat lunak , saat ini umumnya setuju untuk menjadi publikasi pada tahun 1980 dari spesifikasi untuk IBM Personal Computer diterbitkan oleh IBM karyawan Philip Don Estridge . Hari kepindahannya akan dilihat sebagai jenis orang-sourcing . Komputer perusahaan hardware tidak hanya paket perangkat lunak mereka, mereka juga ditempatkan tuntutan pada lokasi hardware di ruang berpendingin disebut ruang komputer .
Sampai saat itu, perangkat lunak ini dibundel dengan hardware oleh produsen peralatan asli (OEM) seperti Data General , Digital Equipment dan IBM. Ketika seorang pelanggan membeli komputer mini , pada saat itu komputer terkecil di pasaran, komputer tidak datang dengan pra-instal perangkat lunak , tetapi harus diinstal oleh insinyur dipekerjakan oleh OEM. Komputer perusahaan hardware tidak hanya paket perangkat lunak mereka, mereka juga ditempatkan tuntutan pada lokasi hardware di ruang berpendingin disebut ruang komputer . Sebagian besar perusahaan memiliki perangkat lunak mereka pada buku-buku untuk 0 dolar, tidak dapat mengklaim sebagai aset (ini mirip dengan pembiayaan musik populer pada masa itu). Ketika Data General memperkenalkan Data General Nova , sebuah perusahaan bernama Digidyne ingin menggunakan nya RDOS sistem operasi sendiri clone hardware . Data General menolak untuk lisensi perangkat lunak mereka (yang sulit untuk dilakukan, karena itu pada buku sebagai aset gratis), dan mengklaim mereka "hak bundling". The Mahkamah Agung menetapkan preseden yang disebut Digidyne v Data General pada tahun 1985. Mahkamah Agung membiarkan berdiri sirkuit keputusan 9, dan Data General akhirnya dipaksa lisensi perangkat lunak Sistem Operasi karena memutuskan bahwa membatasi lisensi hanya hardware DG merupakan pengaturan ikatan ilegal. Tidak dapat mempertahankan kerugian dari pengacara biaya, Data General akhirnya diambil alih oleh EMC Corporation . Keputusan Mahkamah Agung memungkinkan untuk perangkat lunak nilai, dan juga membeli paten Software .
Ada banyak perusahaan sukses saat ini yang menjual produk-produk perangkat lunak saja, meskipun masih banyak masalah lisensi perangkat lunak umum karena kompleksitas desain dan dokumentasi yang buruk, yang menyebabkan troll paten .
Dengan spesifikasi perangkat lunak terbuka dan kemungkinan lisensi perangkat lunak, peluang baru muncul untuk perangkat lunak yang kemudian menjadi standar de facto , seperti DOS untuk sistem operasi, tetapi juga berbagai pengolah kata eksklusif dan spreadsheet program. Dalam pola pertumbuhan yang sama, metode pengembangan kepemilikan menjadi standar metodologi pengembangan perangkat lunak .
Jenis-jenis perangkat lunak
Sebuah struktur lapisan yang menunjukkan di mana sistem operasi perangkat lunak dan perangkat lunak aplikasi terletak pada saat menjalankan khas komputer desktop
Perangkat Lunak mencakup semua berbagai bentuk dan peran yang data digital yang tersimpan dapat memiliki dan bermain di sebuah komputer (atau sistem serupa), terlepas dari apakah data yang digunakan sebagai kode untuk CPU, atau interpreter , atau apakah itu merupakan jenis lain dari informasi . Software sehingga mencakup berbagai macam produk yang dapat dikembangkan dengan menggunakan teknik yang berbeda seperti biasa bahasa pemrograman , bahasa scripting , microcode , atau FPGA konfigurasi.
Jenis-jenis perangkat lunak termasuk halaman web yang dikembangkan dalam bahasa dan kerangka kerja seperti HTML , PHP , Perl , JSP , ASP.NET , XML , dan aplikasi desktop seperti OpenOffice.org , Microsoft Word dikembangkan dalam bahasa seperti C , C + + , Objective-C , Java , C # , atau Smalltalk . Aplikasi perangkat lunak biasanya berjalan pada perangkat lunak yang mendasari sistem operasi seperti Linux atau Microsoft Windows . Software (atau firmware ) juga digunakan dalam video game dan untuk bagian-bagian dikonfigurasi dari logika sistem mobil , televisi , dan lainnya elektronik konsumen .
Praktis sistem komputer membagi sistem perangkat lunak ke dalam tiga kelompok utama : sistem perangkat lunak , perangkat lunak pemrograman dan perangkat lunak aplikasi , meskipun perbedaan adalah sewenang-wenang, dan sering kabur.
Sistem perangkat lunak
Sistem perangkat lunak adalah perangkat lunak komputer yang dirancang untuk mengoperasikan perangkat keras komputer , untuk menyediakan fungsi dasar, dan untuk menyediakan platform untuk menjalankan aplikasi perangkat lunak . Sistem perangkat lunak termasuk driver perangkat , sistem operasi , server , utilitas , dan sistem jendela .
Sistem perangkat lunak bertanggung jawab untuk mengelola berbagai komponen hardware independen, sehingga mereka dapat bekerja sama secara harmonis. Tujuannya adalah untuk melepaskan beban yang perangkat lunak aplikasi programmer dari detail sering kompleks dari komputer tertentu yang sedang digunakan, termasuk aksesoris seperti perangkat komunikasi , printer, pembaca perangkat, menampilkan dan keyboard, dan juga untuk partisi komputer sumber daya seperti memori dan waktu prosesor dengan cara yang aman dan stabil.
Programming
Software pemrograman termasuk alat dalam bentuk program atau aplikasi yang pengembang perangkat lunak gunakan untuk membuat, men-debug, mempertahankan, atau mendukung program lain dan aplikasi. Istilah ini biasanya mengacu pada program yang relatif sederhana seperti kompiler , debugger , interpreter , linker , dan editor teks , yang dapat dikombinasikan bersama-sama untuk menyelesaikan tugas, sebanyak satu mungkin menggunakan alat-alat tangan ganda untuk memperbaiki objek fisik. Tool pemrograman dimaksudkan untuk membantu programmer dalam menulis program komputer , dan mereka dapat dikombinasikan dalam suatu lingkungan pengembangan terpadu (IDE) untuk lebih mudah mengelola semua fungsi.
Perangkat Lunak topik
Arsitektur
Pengguna sering melihat hal-hal berbeda dari programmer. Orang yang menggunakan komputer tujuan modern yang umum (sebagai lawan dari embedded system , komputer analog dan superkomputer ) biasanya melihat tiga lapisan perangkat lunak melakukan berbagai tugas: platform, aplikasi, dan pengguna perangkat lunak.
• Software platform: platform termasuk firmware , driver perangkat , sebuah sistem operasi , dan biasanya antarmuka pengguna grafis yang, secara total, memungkinkan pengguna untuk berinteraksi dengan komputer dan yang periferal (peralatan yang terkait). Software platform sering datang dibundel dengan komputer. Pada PC Anda biasanya akan memiliki kemampuan untuk mengubah platform perangkat lunak.
• Aplikasi perangkat lunak: Aplikasi perangkat lunak atau Aplikasi adalah apa yang kebanyakan orang pikirkan ketika mereka berpikir tentang perangkat lunak. Contoh umum termasuk suite kantor dan video game. perangkat lunak aplikasi sering dibeli secara terpisah dari perangkat keras komputer. Kadang-kadang aplikasi yang dibundel dengan komputer, tapi itu tidak mengubah fakta bahwa mereka berjalan sebagai aplikasi independen. Aplikasi biasanya program independen dari sistem operasi, meskipun mereka sering dirancang untuk platform tertentu. Sebagian besar pengguna memikirkan kompiler, database, dan lainnya "sistem perangkat lunak" sebagai aplikasi.
• Pengguna-menulis perangkat lunak: pengembangan pengguna akhir sistem penjahit untuk memenuhi kebutuhan spesifik pengguna. Pengguna perangkat lunak termasuk template spreadsheet dan pengolah kata template. Bahkan filter email semacam perangkat lunak pengguna. Pengguna software ini membuat sendiri dan sering mengabaikan betapa pentingnya. Tergantung pada seberapa kompeten pengguna perangkat lunak yang ditulis telah diintegrasikan ke dalam paket aplikasi default, banyak pengguna mungkin tidak menyadari perbedaan antara paket asli, dan apa yang telah ditambahkan oleh rekan kerja.
Eksekusi
Perangkat lunak komputer harus "dimuat" ke dalam penyimpanan komputer (seperti hard drive atau memori ). Setelah perangkat lunak telah dimuat, komputer mampu menjalankan perangkat lunak. Ini melibatkan melewati instruksi dari perangkat lunak aplikasi , melalui perangkat lunak sistem, dengan hardware yang akhirnya menerima instruksi sebagai kode mesin . Setiap instruksi menyebabkan komputer untuk melakukan operasi - memindahkan data yang , melaksanakan perhitungan , atau mengubah aliran kontrol instruksi.
Data gerakan biasanya dari satu tempat ke tempat lain dalam memori. Kadang-kadang melibatkan data yang bergerak antara memori dan register yang memungkinkan kecepatan tinggi akses data dalam CPU. Data bergerak, terutama dalam jumlah besar itu, bisa menjadi mahal. Jadi, ini kadang-kadang dihindari dengan menggunakan "pointer" untuk data, bukan. Perhitungan termasuk operasi sederhana seperti incrementing nilai dari elemen data variabel. Perhitungan yang lebih kompleks mungkin melibatkan banyak operasi dan elemen data bersama-sama.
Kualitas dan keandalan
Perangkat Lunak kualitas sangat penting, terutama untuk komersial perangkat lunak dan sistem seperti Microsoft Office , Microsoft Windows dan Linux . Jika perangkat lunak yang salah (kereta), dapat menghapus pekerjaan seseorang, crash komputer dan melakukan hal-hal tak terduga lainnya. Kesalahan dan kesalahan disebut " bug . " Banyak bug yang ditemukan dan dieliminasi (debugged) melalui pengujian perangkat lunak . Namun, perangkat lunak pengujian jarang - jika pernah - menghilangkan bug setiap, beberapa programmer mengatakan bahwa "setiap program memiliki setidaknya satu lagi bug" (Hukum Lubarsky s). Semua perusahaan perangkat lunak besar, seperti Microsoft, Novell dan Sun Microsystems , memiliki departemen pengujian software mereka sendiri dengan tujuan khusus hanya menguji. Software dapat diuji melalui unit testing , pengujian regresi dan metode lainnya, yang dilakukan secara manual, atau yang paling sering, otomatis, karena jumlah kode yang akan diuji dapat cukup besar. Misalnya, NASA memiliki prosedur pengujian perangkat lunak yang sangat ketat untuk berbagai sistem operasi dan fungsi komunikasi. Banyak operasi berbasis NASA berinteraksi dan mengidentifikasi satu sama lain melalui program perintah yang disebut perangkat lunak. Hal ini memungkinkan banyak orang yang bekerja di NASA untuk memeriksa dan mengevaluasi sistem fungsional secara keseluruhan. Program yang berisi perintah perangkat lunak memungkinkan perangkat keras dan sistem operasi rekayasa berfungsi lebih mudah bersama-sama.
Lisensi
Lisensi perangkat lunak memberikan pengguna hak untuk menggunakan perangkat lunak dalam lingkungan berlisensi. Beberapa software dilengkapi dengan lisensi ketika dibeli dari rak, atau lisensi OEM ketika digabungkan dengan hardware. Perangkat lunak lain datang dengan lisensi perangkat lunak bebas , pemberian penerima hak untuk memodifikasi dan mendistribusikan perangkat lunak. Software ini juga bisa dalam bentuk freeware atau shareware .
Paten
Software dapat dipatenkan di beberapa tapi tidak semua negara, namun, paten perangkat lunak bisa menjadi kontroversial di industri perangkat lunak dengan banyak orang memegang pandangan yang berbeda tentang hal itu. Kontroversi atas paten perangkat lunak adalah tentang spesifik algoritma atau teknik bahwa perangkat lunak berisi, yang tidak dapat diduplikasi oleh orang lain dan dianggap kekayaan intelektual dan pelanggaran hak cipta tergantung pada beratnya.
Desain dan implementasi
Sebuah implementasi tertentu dari perangkat lunak. Perangkat lunak ini diciptakan untuk membantu situs Wikipedia. Juga, tidak menggunakan antarmuka pengguna grafis selain dari jendela konsol sederhana.
Desain dan implementasi perangkat lunak bervariasi tergantung pada kompleksitas perangkat lunak. Misalnya, desain dan penciptaan Microsoft Word perangkat lunak akan memakan waktu lebih dari merancang dan mengembangkan Microsoft Notepad karena perbedaan dalam fungsi di masing-masing.
Software biasanya dirancang dan dibuat (kode / ditulis / diprogram) di lingkungan pengembangan terpadu (IDE) seperti Eclipse , Emacs dan Microsoft Visual Studio yang dapat menyederhanakan proses dan mengkompilasi program. Seperti disebutkan dalam bagian yang berbeda, perangkat lunak biasanya dibuat di atas perangkat lunak yang ada dan antarmuka pemrograman aplikasi (API) yang menyediakan perangkat lunak yang mendasari seperti GTK + , JavaBeans atau swing . Perpustakaan (API) dikategorikan untuk tujuan yang berbeda. Misalnya, JavaBeans perpustakaan digunakan untuk merancang aplikasi perusahaan , Windows Forms perpustakaan digunakan untuk merancang antarmuka pengguna grafis (GUI) aplikasi seperti Microsoft Word , dan Windows Communication Foundation digunakan untuk merancang layanan web . Mendasari pemrograman komputer konsep seperti quicksort , tabel hash , berbagai , dan pohon biner dapat berguna untuk menciptakan perangkat lunak. Ketika program dirancang, hal itu bergantung pada API. Misalnya, jika pengguna adalah merancang aplikasi desktop Microsoft Windows, dia / dia mungkin menggunakan . NET jendela perpustakaan Forms untuk merancang aplikasi desktop dan panggilan API yang seperti Form1.Close () dan Form1.Show () untuk menutup atau membuka aplikasi dan menulis operasi tambahan dia / dirinya sendiri bahwa ia perlu memiliki. Tanpa API, pemrogram perlu menuliskan API dirinya / dirinya sendiri. Perusahaan seperti Sun Microsystems , Novell , dan Microsoft menyediakan API mereka sendiri, sehingga banyak aplikasi yang ditulis menggunakan mereka software perpustakaan yang biasanya memiliki banyak API di dalamnya.
Perangkat lunak komputer memiliki karakteristik ekonomi khusus yang membuat desain, pembuatan, dan distribusi yang berbeda dari barang ekonomi yang paling lainnya.
Seseorang yang membuat software disebut programmer , software engineer , pengembang perangkat lunak , atau "kode monyet", istilah yang semua memiliki arti yang sama.
Industri dan organisasi
Sejumlah besar perusahaan perangkat lunak dan programer di dunia terdiri dari industri perangkat lunak. Software dapat cukup menguntungkan industri: Bill Gates , pendiri Microsoft adalah orang terkaya di dunia pada tahun 2009, terutama dengan menjual Microsoft Windows dan Microsoft Office produk perangkat lunak. Hal yang sama berlaku untuk Larry Ellison , terutama melalui nya database Oracle software. Melalui waktu industri perangkat lunak telah menjadi semakin khusus.
Non-profit organisasi perangkat lunak termasuk Free Software Foundation , GNU Project dan Mozilla Foundation . Software organisasi standar seperti W3C , IETF mengembangkan standar perangkat lunak sehingga perangkat lunak yang paling dapat saling beroperasi melalui standar seperti XML , HTML , HTTP atau FTP .
Lainnya terkenal perusahaan software besar termasuk Novell , SAP , Symantec , Adobe Systems , dan Corel , sementara perusahaan kecil sering memberikan inovasi.