Perangkat lunak adalah seperangkat instruksi, data, atau program untuk mengoperasikan komputer atau menjalankan tugas tertentu. Kebalikan dari perangkat lunak adalah perangkat keras, yaitu komponen fisik penyusun komputer seperti processor, memory, disk drive, dan masih banyak lagi.
Segala bentuk aplikasi, script, dan program yang berjalan di komputer dapat disebut sebagai perangkat lunak (software).
Pada mulanya, perangkat lunak dijual bersama dengan komputer sebagai satu kesatuan. Sekitar tahun 1980-an, perangkat lunak mulai dijual terpisah dengan media floppy disk, kemudian CD dan DVD. Hari ini, sebagian besar aplikasi bisa langsung diunduh di internet tanpa memerlukan media eksternal, baik dari website resmi pengembang ataupun distributor perangkat lunak.
Jenis dan Contoh Perangkat Lunak
Perangkat lunak adalah bidang yang sangat luas sehingga mengkategorikannya bukanlah hal yang mudah. Anda mungkin saja menemukan perbedaan kategori antara beberapa sumber yang berlainan pendapat.
Secara umum, perangkat lunak dibagi menjadi dua kategori, yaitu:
Software Aplikasi – perangkat lunak yang memenuhi kebutuhan spesifik atau menjalankan tugas tertentu. Aplikasi dapat berjalan sendiri (self-contained) atau berupa sekelompok program. Beberapa contoh aplikasi modern adalah software desain grafis, software office, database, web browser, text editor, dan masih banyak lagi.
Software Sistem – perangkat lunak yang berfungsi untuk menjalankan perangkat keras dan menyediakan platform agar aplikasi dapat berjalan di atasnya. Dalam operasi komputer, software sistem berperan sebagai perantara yang mengatur segala fungsi dan aktivitas antara hardware dengan software. Sistem operasi yang Anda gunakan saat ini termasuk dalam kategori software sistem. Selain OS, contoh software sistem lainnya adalah firmware, penerjemah bahasa komputer dan utilitas sistem.
Selain dua kategori di atas, masih ada banyak jenis perangkat lunak lain, di antaranya:
Software Programming – perangkat lunak yang menyediakan tools pemrograman yang dibutuhkan programmer. Fungsi umumnya adalah untuk menulis, mengembangkan, menguji, dan debugging perangkat lunak. Contoh software programming adalah assembler, compiler, debugger, dan interpreter.
Middleware – perangkat lunak yang memperantarai software sistem dan aplikasi atau antara dua jenis aplikasi. Contohnya adalah middleware yang memperantarai Microsoft Windows dengan Word dan Excel, akses remote antara dua komputer dengan OS berbeda, dan memfasilitasi aplikasi modern agar dapat menjalankan aplikasi di versi-versi sebelumnya.
Driver – perangkat lunak yang mengoperasikan perangkat komputer dan periferal. Banyak yang mengategorikan driver sebagai bagian dari software sistem. Driver mengontrol setiap perangkat yang terhubung ke komputer agar dapat bekerja sebagaimana mestinya. Contoh perangkat yang memerlukan driver adalah konsol game, media penyimpanan USB, keyboard, headphone, dan printer.
Bagaimana Cara Kerja Perangkat Lunak?
Karena perangkat lunak adalah bidang dengan banyak kategori, maka setiap kategori perangkat lunak memiliki cara kerja yang berbeda. Di artikel ini, kita akan membahas cara kerja dua jenis perangkat lunak utama, yaitu software aplikasi dan software sistem.
Cara Kerja Software Aplikasi
Untuk dapat menjalankan fungsinya, semua aplikasi pasti memerlukan sistem operasi seperti Windows, Linux, Mac, atau OS lainnya. Aplikasi mungkin juga membutuhkan software lain untuk dapat bekerja. Di Linux, kita menyebutnya sebagai dependency.
Jika Anda pengguna Windows, Anda mungkin pernah harus meng-install software tertentu sebelum dapat menjalankan sebuah aplikasi. Misalnya update Microsoft .NET Framework dan Microsoft C++ Redistributable ke versi terbaru, install Adobe Flash Player atau DirectX, atau yang lainnya. Setelah Anda memenuhi semua kebutuhan aplikasi, barulah Anda bisa menjalankan aplikasi tersebut.
Dahulu, aplikasi hanya bisa dijalankan via desktop (aplikasi desktop-based). Anda perlu meng-install aplikasi ke komputer dan menyediakan sumber daya (penyimpanan, memori, dll) sesuai kebutuhan aplikasi.
Kini, tren aplikasi sudah beralih ke web (aplikasi web-based). Anda dapat menjalankan banyak aplikasi canggih lewat web browser tanpa terkendala OS dan sumber daya. Yang Anda butuhkan hanyalah sebuah web browser seperti Google Chrome, Mozilla Firefox, Opera, Safari, atau lainnya.
Cara Kerja Software Sistem
Software sistem bekerja di balik layar. Kapan pun Anda mengoperasikan komputer, saat itulah software sistem bekerja tanpa Anda sadari. Software sistem menangani hardware dan software sehingga Anda bisa menjalankan aplikasi di komputer. Software sistem secara otomatis bekerja saat Anda menyalakan komputer (booting sistem) dan tetap berjalan selama Anda mengoperasikannya.
Desain dan Implementasi Perangkat Lunak
Seorang project manager adalah individu yang bertanggung jawab dalam pengembangan perangkat lunak dari tahap planning, desain, sampai implementasi. Dalam menjalankan pekerjaannya, seorang project manager menggunakan framework siklus pengembangan software yang terdiri dari beberapa tahapan, yaitu:
- Planning – merencanakan upaya dan menganalisis kebutuhan pengguna. Dari hasil analisis tersebut, project manager dapat membuat persyaratan yang harus dipenuhi perangkat lunak secara terperinci.
- Desain – membuat spesifikasi teknis untuk memenuhi kebutuhan pengguna.
- Implementasi – proses pengembangan perangkat lunak, termasuk uji coba dan maintenance.
Dari ketiga tahap di atas, kita akan membahas tahap desain secara utuh. Desain software berkaitan dengan perencanaan teknis mencakup deskripsi, struktur, model data, tampilan, sampai algoritma.
Hasil desain itulah yang menjadi acuan developer dalam mengembangkan perangkat lunak sampai ke detail terkecilnya.
Software desain terbagi ke dalam tiga fase, yaitu:
- Desain Arsitektural – mengidentifikasi struktur sistem secara keseluruhan, komponen utamanya, dan hubungannya antara satu sama lain.
- Desain Level Atas – layer desain kedua yang berfokus pada bagaimana sistem dan semua komponennya dapat diimplementasikan dalam bentuk modul yang didukung dengan sekumpulan software. Di dalamnya mencakup hubungan antar arus data (data flow) dan berbagai modul dan fungsi sistem.
- Desain Detail – fokus pada detail implementasi sesuai desain arsitektur yang sudah dibuat.
Bagaimana Cara Mempertahankan Kualitas Perangkat Lunak?
Perangkat lunak adalah sistem yang kompleks sehingga sangat mungkin mengalami penurunan dan kegagalan fungsi (error). Karena itulah developer perlu mempertahankan kualitas perangkat lunak agar dapat bekerja seperti yang diharapkan.
Secara fungsional, perangkat lunak harus dapat menjalankan tugas sebagaimana mestinya. Hal ini mencakup detail teknis, pemrosesan dan manipulasi data, kalkulasi dan fungsi spesifik lain.
Secara non-fungsional, perangkat lunak juga harus memenuhi berbagai kriteria non-teknis seperti portabilitas, pemulihan force majeure, keamanan, privasi, dan kegunaan.
Software testing adalah upaya untuk mengetahui kinerja perangkat lunak guna menemukan celah (bug) dan error. Software testing dijalankan secara terus-menerus, baik oleh tim developer maupun oleh pengguna.
Kualitas software terdiri dari beberapa dimensi dengan kriteria berikut:
- Aksesibilitas – sejauh mana kelompok pengguna dapat menggunakan perangkat lunak dengan nyaman.
- Kompatibilitas – dapat digunakan di berbagai OS, perangkat, dan browser berbeda.
- Efisiensi – penggunaan energi, sumber daya, usaha, waktu, atau uang seminimal mungkin.
- Fungsionalitas – kemampuan software untuk menjalankan semua fungsinya.
- Kemudahan instalasi – dapat diinstall di OS, perangkat, atau browser tertentu.
- Lokalisasi – bermacam-macam bahasa, zona waktu, mata uang, dan hal-hal lain yang berkaitan dengan lokasi.
- Pemeliharaan – seberapa mudah perangkat lunak dapat diubah untuk menambah dan meningkatkan fitur, memperbaiki bug, dan lain-lain.
- Performa – seberapa cepat perangkat lunak bekerja dengan beban kerja tertentu.
- Portabilitas – bagaimana perangkat lunak dapat dipindahkan dari satu tempat ke tempat lainnya.
- Keandalan – menjalankan suatu fungsi dalam kondisi tertentu dan dalam jangka waktu tertentu tanpa error sama sekali.
- Skalabilitas – menyesuaikan performa sesuai beban kerja.
- Keamanan – perlindungan dari akses tanpa izin, penyerangan privasi, pencurian, kehilangan data, software berbahaya, dan sebagainya.
- Kemudahan pengujian – seberapa mudah untuk menguji perangkat lunak.
- Kegunaan – seberapa mudah untuk menggunakan perangkat lunak.
Jenis Maintenance Perangkat Lunak
Lewat pengujian internal, beta test, dan laporan dari pengguna, developer dapat menemukan bug dan error untuk segera memperbaikinya. Ada 4 jenis perbaikan yang bisa developer lakukan, yaitu:
- Korektif – memperbaiki error yang dilaporkan pengguna selama penggunaan.
- Adaptif – perubahan rutin untuk merespon perubahan software dan hardware untuk menjaga kompatibilitas, misalnya saat rilis versi OS atau browser baru.
- Penyempurnaan – meningkatkan fungsionalitas dengan mengubah tampilan dan kode program.
- Pencegahan – restrukturisasi dan optimasi kode untuk mencegah terjadinya error pada perangkat lunak.
Dari fase desain dan kualitas software saja, kita dapat menyimpulkan bahwa perangkat lunak adalah sebuah sistem kompleks yang terdiri dari sekumpulan file dan instruksi yang saling terhubung untuk menjalankan fungsi tertentu.