Apa itu Perangkat Lunak?

Dipublikasikan oleh Nadia Pratiwi

21 Mei 2024, 11.37

Sumber: pinterest

Perangkat lunak adalah kumpulan program dan data yang memberi tahu komputer bagaimana melakukan tugas tertentu. Perangkat lunak sering kali menyertakan dokumentasi perangkat lunak terkait. Ini berbeda dengan perangkat keras, yang darinya sistem dibangun dan yang benar-benar melakukan pekerjaan.

Pada tingkat pemrograman terendah, kode yang dapat dieksekusi terdiri dari instruksi bahasa mesin yang didukung oleh prosesor individu-biasanya unit pemrosesan pusat (CPU) atau unit pemrosesan grafis (GPU). Bahasa mesin terdiri dari kelompok nilai biner yang menandakan instruksi prosesor yang mengubah keadaan komputer dari keadaan sebelumnya. Sebagai contoh, sebuah instruksi dapat mengubah nilai yang tersimpan di lokasi penyimpanan tertentu di komputer - sebuah efek yang tidak dapat diamati secara langsung oleh pengguna. Instruksi juga dapat memanggil salah satu dari banyak operasi input atau output, misalnya, menampilkan beberapa teks pada layar komputer, menyebabkan perubahan status yang seharusnya terlihat oleh pengguna. Prosesor menjalankan instruksi sesuai urutan yang diberikan, kecuali jika diinstruksikan untuk "melompat" ke instruksi yang berbeda atau diinterupsi oleh sistem operasi. Pada tahun 2024, sebagian besar komputer pribadi, perangkat ponsel cerdas, dan server memiliki prosesor dengan beberapa unit eksekusi, atau beberapa prosesor yang melakukan komputasi secara bersamaan, sehingga komputasi telah menjadi aktivitas yang jauh lebih bersamaan daripada di masa lalu.

Mayoritas perangkat lunak ditulis dalam bahasa pemrograman tingkat tinggi, misalnya Python, JavaScript, Visual Basic, Delphi, Perl, PHP, ECMAScript, Ruby, C#, dan Java. Bahasa pemrograman ini lebih mudah dan lebih efisien bagi para programmer karena lebih dekat dengan bahasa alamiah daripada bahasa mesin.[2] Bahasa tingkat tinggi diterjemahkan ke dalam bahasa mesin dengan menggunakan kompilator, penerjemah, atau kombinasi keduanya. Perangkat lunak juga dapat ditulis dalam bahasa rakitan tingkat rendah, misalnya C, C++, Assembly, dan Fortran. Bahasa rakitan memiliki korespondensi yang kuat dengan instruksi bahasa mesin komputer dan diterjemahkan ke dalam bahasa mesin menggunakan assembler.

Sejarah

Algoritma untuk perangkat lunak pertama ditulis oleh Ada Lovelace pada abad ke-19, untuk Analytical Engine yang direncanakan. Dia menciptakan bukti untuk menunjukkan bagaimana mesin akan menghitung bilangan Bernoulli. Karena bukti dan algoritmanya, ia dianggap sebagai pemrogram komputer pertama.

Teori pertama tentang perangkat lunak, sebelum terciptanya komputer seperti yang kita kenal sekarang, diusulkan oleh Alan Turing dalam esainya tahun 1936, On Computable Numbers, dengan Aplikasi pada Entscheidungsproblem (masalah keputusan). Hal ini pada akhirnya mengarah pada penciptaan bidang akademis ilmu komputer dan rekayasa perangkat lunak; kedua bidang tersebut mempelajari perangkat lunak dan pembuatannya. Ilmu komputer adalah studi teoritis tentang komputer dan perangkat lunak (esai Turing adalah contoh dari ilmu komputer), sedangkan rekayasa perangkat lunak adalah penerapan prinsip-prinsip rekayasa untuk pengembangan perangkat lunak.

Pada tahun 2000, Fred Shapiro, seorang pustakawan di Yale Law School, menerbitkan sebuah surat yang mengungkapkan bahwa makalah John Wilder Tukey pada tahun 1958 yang berjudul "The Teaching of Concrete Mathematics" berisi penggunaan istilah "perangkat lunak" yang paling awal yang ditemukan dalam pencarian arsip elektronik JSTOR, yang mendahului kutipan Kamus Bahasa Inggris Oxford selama dua tahun. Hal ini membuat banyak orang memuji Tukey sebagai pencipta istilah tersebut, terutama dalam berita kematian yang diterbitkan pada tahun yang sama, meskipun Tukey tidak pernah mengklaim kredit untuk istilah tersebut. Pada tahun 1995, Paul Niquette mengklaim bahwa dia yang pertama kali menciptakan istilah ini pada bulan Oktober 1953, meskipun dia tidak dapat menemukan dokumen yang mendukung klaimnya. Publikasi paling awal yang diketahui tentang istilah "perangkat lunak" dalam konteks teknik adalah pada bulan Agustus 1953 oleh Richard R. Carhart, dalam Memorandum Penelitian Rand Corporation.

Jenis

Pada hampir semua platform komputer, perangkat lunak dapat dikelompokkan ke dalam beberapa kategori besar.

Tujuan, atau domain penggunaan

Berdasarkan tujuannya, perangkat lunak komputer dapat dibagi menjadi:

  • Perangkat lunak aplikasi menggunakan sistem komputer untuk menjalankan fungsi khusus di luar operasi dasar komputer itu sendiri. Ada banyak jenis perangkat lunak aplikasi yang berbeda karena berbagai tugas yang dapat dilakukan dengan komputer modern sangat banyak-lihat daftar perangkat lunak.
  • Perangkat lunak sistem mengatur perilaku perangkat keras, untuk menyediakan fungsi dasar yang diperlukan oleh pengguna, atau agar perangkat lunak lain dapat berjalan dengan baik, jika ada. Perangkat lunak sistem juga dirancang untuk menyediakan platform untuk menjalankan perangkat lunak aplikasi, dan ini mencakup hal-hal berikut:
  • Sistem operasi adalah kumpulan perangkat lunak penting yang mengelola sumber daya dan menyediakan layanan umum untuk perangkat lunak lain yang berjalan "di atasnya". Program pengawas, pemuat boot, shell, dan sistem jendela adalah bagian inti dari sistem operasi. Pada praktiknya, sistem operasi dibundel dengan perangkat lunak tambahan (termasuk perangkat lunak aplikasi) sehingga pengguna berpotensi melakukan beberapa pekerjaan dengan komputer yang hanya memiliki satu sistem operasi.
  • Driver perangkat mengoperasikan atau mengontrol jenis perangkat tertentu yang terpasang pada komputer. Setiap perangkat membutuhkan setidaknya satu driver perangkat yang sesuai; karena komputer biasanya memiliki setidaknya satu perangkat input dan setidaknya satu perangkat output, komputer biasanya membutuhkan lebih dari satu driver perangkat.
  • Utilitas adalah program komputer yang dirancang untuk membantu pengguna dalam pemeliharaan dan perawatan komputer mereka.
  • Perangkat lunak berbahaya, atau malware, adalah perangkat lunak yang dikembangkan untuk merusak atau mengganggu komputer. Malware sangat erat kaitannya dengan kejahatan yang berhubungan dengan komputer, meskipun beberapa program jahat mungkin dirancang sebagai lelucon.

Sifat atau domain eksekusi

Aplikasi desktop seperti peramban web dan Microsoft Office dan LibreOffice dan WordPerfect, serta aplikasi ponsel cerdas dan tablet (disebut "aplikasi").

Skrip JavaScript adalah perangkat lunak yang secara tradisional disematkan dalam halaman web yang dijalankan langsung di dalam browser web saat halaman web dimuat tanpa memerlukan plugin browser web. Perangkat lunak yang ditulis dalam bahasa pemrograman lain juga dapat dijalankan di dalam peramban web jika perangkat lunak tersebut diterjemahkan ke dalam JavaScript, atau jika plugin peramban web yang mendukung bahasa tersebut diinstal; contoh yang paling umum dari yang terakhir adalah skrip ActionScript, yang didukung oleh plugin Adobe Flash.

Perangkat lunak server, termasuk:

  • Aplikasi web, yang biasanya berjalan di server web dan menampilkan halaman web yang dibuat secara dinamis ke browser web, menggunakan misalnya PHP, Java, ASP.NET, atau bahkan JavaScript yang berjalan di server. Di zaman modern ini biasanya menyertakan beberapa JavaScript untuk dijalankan di peramban web juga, dalam hal ini mereka biasanya berjalan sebagian di server, sebagian di peramban web.
  • Plugin dan ekstensi adalah perangkat lunak yang memperluas atau memodifikasi fungsionalitas perangkat lunak lain, dan mengharuskan perangkat lunak tersebut digunakan agar dapat berfungsi.
  • Perangkat lunak yang disematkan berada sebagai firmware di dalam sistem yang disematkan, perangkat yang didedikasikan untuk penggunaan tunggal atau beberapa penggunaan seperti mobil dan televisi (meskipun beberapa perangkat yang disematkan seperti chipset nirkabel dapat menjadi bagian dari sistem komputer biasa yang tidak disematkan seperti PC atau ponsel cerdas). Dalam konteks sistem tertanam, terkadang tidak ada perbedaan yang jelas antara perangkat lunak sistem dan perangkat lunak aplikasi. Namun, beberapa sistem tertanam menjalankan sistem operasi tertanam, dan sistem ini mempertahankan perbedaan antara perangkat lunak sistem dan perangkat lunak aplikasi (meskipun biasanya hanya akan ada satu aplikasi tetap yang selalu dijalankan).
  • Microcode adalah jenis perangkat lunak tertanam khusus yang relatif tidak jelas yang memberi tahu prosesor itu sendiri cara menjalankan kode mesin, jadi sebenarnya ini adalah tingkat yang lebih rendah dari kode mesin. Ini biasanya merupakan hak milik produsen prosesor, dan setiap pembaruan perangkat lunak mikrokode pemasyarakatan yang diperlukan diberikan oleh mereka kepada pengguna (yang jauh lebih murah daripada pengiriman perangkat keras prosesor pengganti). Dengan demikian, seorang programmer biasa tidak akan berharap untuk berurusan dengannya.

Alat pemrograman

Alat pemrograman juga merupakan perangkat lunak dalam bentuk program atau aplikasi yang digunakan pengembang untuk membuat, men-debug, memelihara, atau mendukung perangkat lunak.

Perangkat lunak ditulis dalam satu atau lebih bahasa pemrograman; ada banyak bahasa pemrograman yang ada, dan masing-masing memiliki setidaknya satu implementasi, yang masing-masing terdiri dari seperangkat alat pemrogramannya sendiri. Alat-alat ini dapat berupa program yang relatif mandiri seperti kompiler, debugger, penerjemah, penghubung, dan editor teks, yang dapat digabungkan untuk menyelesaikan suatu tugas; atau mereka dapat membentuk lingkungan pengembangan terintegrasi (IDE), yang menggabungkan sebagian besar atau semua fungsionalitas alat mandiri tersebut. IDE dapat melakukan hal ini dengan menggunakan alat individual yang relevan atau dengan mengimplementasikan kembali fungsionalitasnya dengan cara yang baru. IDE dapat mempermudah untuk melakukan tugas-tugas tertentu, seperti mencari file dalam proyek tertentu. Banyak implementasi bahasa pemrograman yang menyediakan pilihan untuk menggunakan alat individual atau IDE.

Topik

Arsitektur

Orang yang menggunakan komputer serba guna modern (bukan sistem tertanam, komputer analog, dan superkomputer) biasanya melihat tiga lapisan perangkat lunak yang melakukan berbagai tugas: platform, aplikasi, dan perangkat lunak pengguna.

  • Perangkat lunak platform: Platform mencakup firmware, driver perangkat, sistem operasi, dan biasanya antarmuka pengguna grafis yang, secara keseluruhan, memungkinkan pengguna untuk berinteraksi dengan komputer dan periferal (peralatan terkait). Perangkat lunak platform sering kali dibundel dengan komputer. Pada PC, biasanya memiliki kemampuan untuk mengubah perangkat lunak platform.
  • Perangkat lunak aplikasi: Perangkat lunak aplikasi adalah apa yang kebanyakan orang pikirkan ketika mereka memikirkan perangkat lunak. Contoh umum termasuk aplikasi perkantoran dan permainan video. Perangkat lunak aplikasi sering kali dibeli secara terpisah dari perangkat keras komputer. Terkadang aplikasi dibundel dengan komputer, tetapi itu tidak mengubah fakta bahwa aplikasi tersebut berjalan sebagai aplikasi independen. Aplikasi biasanya merupakan program independen dari sistem operasi, meskipun sering kali dirancang untuk platform tertentu. Sebagian besar pengguna menganggap kompiler, basis data, dan "perangkat lunak sistem" lainnya sebagai aplikasi.
  • Perangkat lunak yang ditulis oleh pengguna: Pengembangan pengguna akhir menyesuaikan sistem untuk memenuhi kebutuhan spesifik pengguna. Perangkat lunak pengguna mencakup templat spreadsheet dan templat pengolah kata.[rujukan] Bahkan filter email juga merupakan jenis perangkat lunak pengguna. Pengguna membuat perangkat lunak ini sendiri dan sering kali mengabaikan betapa pentingnya perangkat lunak ini. Tergantung pada seberapa kompeten perangkat lunak yang ditulis oleh pengguna 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 dimuat, komputer dapat menjalankan perangkat lunak tersebut. Hal ini melibatkan pengiriman instruksi dari perangkat lunak aplikasi, melalui perangkat lunak sistem, ke perangkat keras yang pada akhirnya menerima instruksi sebagai kode mesin. Setiap instruksi menyebabkan komputer melakukan operasi-memindahkan data, melakukan komputasi, atau mengubah aliran kontrol instruksi.

Pemindahan data biasanya dari satu tempat di memori ke tempat lain. Kadang-kadang melibatkan pemindahan data antara memori dan register yang memungkinkan akses data berkecepatan tinggi di CPU. Memindahkan data, terutama dalam jumlah besar, dapat menjadi mahal; hal ini terkadang dihindari dengan menggunakan "penunjuk" ke data sebagai gantinya.[rujukan] Komputasi mencakup operasi sederhana seperti menambah nilai elemen data variabel. Komputasi yang lebih kompleks dapat melibatkan banyak operasi dan elemen data secara bersamaan.

Kualitas dan keandalan

Kualitas perangkat lunak sangat penting, terutama untuk perangkat lunak komersial dan sistem. Jika perangkat lunak rusak, perangkat lunak tersebut dapat menghapus pekerjaan seseorang, merusak komputer, dan melakukan hal-hal yang tidak terduga lainnya. Kesalahan dan kesalahan disebut "bug" yang sering ditemukan selama pengujian alfa dan beta. Perangkat lunak sering juga menjadi korban dari apa yang dikenal sebagai penuaan perangkat lunak, penurunan kinerja progresif yang dihasilkan dari kombinasi bug yang tidak terlihat.

Banyak bug yang ditemukan dan diperbaiki melalui pengujian perangkat lunak. Namun, pengujian perangkat lunak jarang - jika tidak pernah - menghilangkan semua bug; beberapa programmer mengatakan bahwa "setiap program memiliki setidaknya satu bug" (Hukum Lubarsky). Dalam metode pengembangan perangkat lunak waterfall, tim penguji terpisah biasanya dipekerjakan, tetapi dalam pendekatan yang lebih baru, yang secara kolektif disebut pengembangan perangkat lunak lincah, pengembang sering melakukan semua pengujian sendiri, dan mendemonstrasikan perangkat lunak kepada pengguna / klien secara teratur untuk mendapatkan umpan balik. Perangkat lunak dapat diuji melalui pengujian unit, pengujian regresi, dan metode lain, yang dilakukan secara manual, atau yang paling umum, secara otomatis, karena jumlah kode yang harus diuji bisa sangat besar.

Lisensi

Lisensi perangkat lunak memberikan hak kepada pengguna untuk menggunakan perangkat lunak dalam lingkungan berlisensi, dan dalam kasus lisensi perangkat lunak bebas, juga memberikan hak lain seperti hak untuk membuat salinan.

Perangkat lunak berpemilik dapat dibagi menjadi dua jenis:

freeware, yang mencakup kategori perangkat lunak "uji coba gratis" atau perangkat lunak "freemium" (di masa lalu, istilah shareware sering digunakan untuk perangkat lunak uji coba gratis/freemium). Seperti namanya, freeware dapat digunakan secara gratis, meskipun dalam kasus perangkat lunak uji coba gratis atau perangkat lunak freemium, hal ini terkadang hanya berlaku untuk jangka waktu terbatas atau dengan fungsionalitas terbatas.

Perangkat lunak berbayar tersedia dengan biaya, yang hanya dapat digunakan secara legal dengan membeli lisensi.

Perangkat lunak sumber terbuka hadir dengan lisensi perangkat lunak gratis, yang memberikan hak kepada penerima untuk memodifikasi dan mendistribusikan ulang perangkat lunak tersebut.

Paten

Paten perangkat lunak, seperti jenis paten lainnya, secara teoritis seharusnya memberikan penemu sebuah lisensi eksklusif dan terbatas waktu untuk ide terperinci (misalnya algoritma) tentang cara mengimplementasikan sebuah perangkat lunak, atau komponen dari sebuah perangkat lunak. Ide-ide untuk hal-hal berguna yang dapat dilakukan oleh perangkat lunak, dan kebutuhan pengguna, tidak seharusnya dipatenkan, dan implementasi konkret (yaitu paket perangkat lunak aktual yang mengimplementasikan paten) juga tidak seharusnya dipatenkan - yang terakhir ini sudah dilindungi oleh hak cipta, umumnya secara otomatis. Jadi paten perangkat lunak seharusnya mencakup area tengah, antara persyaratan dan implementasi konkret. Di beberapa negara, persyaratan untuk penemuan yang diklaim memiliki efek pada dunia fisik juga dapat menjadi bagian dari persyaratan agar paten perangkat lunak dianggap sah - meskipun karena semua perangkat lunak yang berguna memiliki efek pada dunia fisik, persyaratan ini mungkin terbuka untuk diperdebatkan. Sementara itu, hukum hak cipta Amerika diterapkan pada berbagai aspek penulisan kode perangkat lunak.

Paten perangkat lunak merupakan hal yang kontroversial dalam industri perangkat lunak dengan banyak orang yang memiliki pandangan yang berbeda mengenai hal tersebut. Salah satu sumber kontroversi adalah bahwa pemisahan yang disebutkan di atas antara ide awal dan paten tampaknya tidak dihormati dalam praktiknya oleh pengacara paten - misalnya paten untuk pemrograman berorientasi aspek (AOP), yang dimaksudkan untuk mengklaim hak atas alat pemrograman apa pun yang mengimplementasikan ide AOP, bagaimana pun implementasinya. [Sumber kontroversi lainnya adalah efeknya terhadap inovasi, dengan banyak ahli dan perusahaan terkemuka yang berpendapat bahwa perangkat lunak adalah bidang yang bergerak cepat sehingga paten perangkat lunak hanya menimbulkan biaya dan risiko litigasi tambahan yang sangat besar, dan sebenarnya menghambat inovasi. Dalam kasus perdebatan tentang paten perangkat lunak di luar Amerika Serikat, argumen yang dibuat adalah bahwa perusahaan-perusahaan besar di Amerika Serikat dan pengacara paten kemungkinan besar akan menjadi penerima manfaat utama dalam mengizinkan atau terus mengizinkan paten perangkat lunak.

Desain dan implementasi

Desain dan implementasi perangkat lunak bervariasi tergantung pada kompleksitas perangkat lunak. Sebagai contoh, perancangan dan pembuatan Microsoft Word membutuhkan lebih banyak waktu daripada merancang dan mengembangkan Microsoft Notepad karena Microsoft Notepad memiliki fungsionalitas yang lebih mendasar.

Perangkat lunak biasanya dikembangkan dalam lingkungan pengembangan terintegrasi (IDE) seperti Eclipse, IntelliJ, dan Microsoft Visual Studio yang dapat menyederhanakan proses dan kompilasi perangkat lunak. Seperti yang telah disebutkan di bagian lain, perangkat lunak biasanya dibuat di atas perangkat lunak yang sudah ada dan antarmuka pemrograman aplikasi (API) yang disediakan oleh perangkat lunak yang mendasarinya seperti GTK+, JavaBeans, atau Swing.[rujukan] Pustaka (API) dapat dikategorikan berdasarkan tujuannya. Sebagai contoh, Spring Framework digunakan untuk mengimplementasikan aplikasi perusahaan, perpustakaan Windows Forms digunakan untuk mendesain aplikasi antarmuka pengguna grafis (GUI) seperti Microsoft Word, dan Windows Communication Foundation digunakan untuk mendesain layanan web. Ketika sebuah program dirancang, itu bergantung pada API. Misalnya, aplikasi desktop Microsoft Windows dapat memanggil fungsi API di perpustakaan Formulir Windows .NET Windows seperti Form1.Close () dan Form1.Show () untuk menutup atau membuka aplikasi. Tanpa API ini, programmer perlu menulis fungsi-fungsi ini sendiri. Perusahaan seperti Oracle dan Microsoft menyediakan API mereka sendiri sehingga banyak aplikasi yang ditulis menggunakan pustaka perangkat lunak mereka yang biasanya memiliki banyak API di dalamnya.

Struktur data seperti tabel hash, array, dan pohon biner, serta algoritma seperti quicksort, dapat berguna untuk membuat perangkat lunak.

Perangkat lunak komputer memiliki karakteristik ekonomi khusus yang membuat desain, pembuatan, dan distribusinya berbeda dari kebanyakan barang ekonomi lainnya.

Seseorang yang membuat perangkat lunak disebut programmer, insinyur perangkat lunak, atau pengembang perangkat lunak, istilah-istilah yang memiliki arti yang sama. Istilah yang lebih informal untuk programmer juga ada seperti "coder" dan "hacker" - meskipun penggunaan kata yang terakhir dapat menyebabkan kebingungan, karena lebih sering digunakan untuk mengartikan seseorang yang membobol sistem komputer secara ilegal.

Disadur dari: https://en.wikipedia.org/