91 RAID (Redundant Array of Independent Disks): Menggunakan RAID untuk memberikan redundansi data dan meningkatkan keandalan sistem penyimpanan. Backup Reguler: Melakukan pencadangan data secara teratur dan menyimpan salinan di lokasi yang aman. Teknologi Verifikasi Data: Menggunakan checksum atau teknologi verifikasi data lainnya untuk memastikan integritas data. 5. Kebutuhan Ketersediaan Data a. Tantangan Aksesibilitas yang Tidak Terputus: Organisasi membutuhkan akses secara terus-menerus ke data untuk menjaga kelancaran operasi bisnis. Pemulihan Bencana: Perencanaan untuk pemulihan dari kejadian bencana yang mungkin menyebabkan kehilangan data. b. Solusi Replikasi Data: Menyalin data ke lokasi terpisah secara terus-menerus untuk memastikan ketersediaan data dan pemulihan bencana. Pengelolaan Failover: Menggunakan teknologi failover untuk secara otomatis beralih ke sumber daya alternatif jika terjadi kegagalan sistem. Dengan mengidentifikasi tantangan utama dalam penyimpanan dan pemulihan data serta menerapkan solusi yang sesuai, organisasi dapat mengelola dan
92 melindungi data mereka dengan lebih efektif dalam menghadapi perubahan teknologi dan ancaman keamanan yang terus berkembang. Berikut adalah praktik terbaik yang dapat diterapkan dalam penyimpanan dan pemulihan data pada sistem komputer: 1. Penjadwalan Pencadangan Otomatis Tujuan: Memastikan bahwa tidak ada data yang terlewat dari proses pencadangan. Implementasi: Menggunakan perangkat lunak pencadangan yang dapat dijadwalkan untuk secara otomatis mencadangkan data sesuai dengan jadwal yang telah ditentukan. 2. Diversifikasi Media Pencadangan Tujuan: Mengurangi risiko kehilangan data karena kerusakan media penyimpanan tunggal. Implementasi: Menyimpan salinan cadangan di media penyimpanan yang berbeda, seperti hard drive eksternal, server jarak jauh, atau penyimpanan cloud. 3. Uji Pemulihan Rutin Tujuan: Memastikan bahwa proses pemulihan data berfungsi seperti yang diharapkan saat diperlukan. Implementasi: Melakukan uji pemulihan secara berkala untuk memastikan bahwa data dapat
93 dipulihkan dengan sukses dan dalam waktu yang dapat diterima. 4. Enkripsi Data Tujuan: Melindungi data dari akses yang tidak sah selama penyimpanan dan saat data dipindahkan. Implementasi: Menggunakan teknologi enkripsi untuk mengenkripsi data saat disimpan di perangkat penyimpanan dan saat ditransmisikan melalui jaringan. 5. Penyimpanan Hierarkis Tujuan: Mengoptimalkan penggunaan ruang penyimpanan dan kinerja sistem dengan memindahkan data yang jarang digunakan ke media penyimpanan yang lebih murah. Implementasi: Menggunakan sistem penyimpanan hierarkis yang secara otomatis memindahkan data antara tingkat penyimpanan berdasarkan pola akses. 6. Dokumentasi dan Manajemen Inventaris Tujuan: Memastikan bahwa semua data penting diidentifikasi dan dipulihkan saat diperlukan. Implementasi: Membuat inventaris lengkap dari semua data penting, termasuk lokasi penyimpanan dan prosedur pemulihan yang terkait. 7. Pemantauan dan Peringatan Tujuan: Mendeteksi dan merespons cepat terhadap masalah yang mungkin terjadi dengan sistem penyimpanan dan pencadangan.
94 Implementasi: Menggunakan perangkat lunak pemantauan untuk mengawasi kesehatan sistem penyimpanan dan menyediakan peringatan dini tentang masalah potensial. 8. Kebijakan Penyimpanan dan Pencadangan Tujuan: Mengatur kebijakan yang jelas untuk pengelolaan data dan proses pencadangan. Implementasi: Mengembangkan kebijakan yang mengatur retensi data, frekuensi pencadangan, dan tanggung jawab pengguna dalam mengelola data. 9. Pelatihan Karyawan Tujuan: Memastikan bahwa semua personel memahami pentingnya penyimpanan dan pemulihan data serta tahu bagaimana melaksanakan praktik terbaik. Implementasi: Melakukan pelatihan reguler kepada karyawan tentang kebijakan dan prosedur penyimpanan dan pemulihan data. 10.Pembaruan dan Peningkatan Berkala Tujuan: Menjaga infrastruktur penyimpanan dan pencadangan tetap relevan dan aman dalam menghadapi perubahan teknologi dan ancaman keamanan. Implementasi: Melakukan pembaruan perangkat lunak dan perangkat keras secara teratur serta mengevaluasi dan meningkatkan kebijakan dan prosedur secara berkala.
95 Dengan menerapkan praktik terbaik ini, organisasi dapat memastikan bahwa data mereka aman, dapat diakses, dan dapat dipulihkan dengan efektif dalam menghadapi tantangan yang mungkin terjadi.
96 Muhamad Masjun Efendi, M.Kom Dalam era globalisasi komunikasi data dan perkembangan pesat teknologi informasi, keamanan menjadi isu yang krusial. Baik itu keamanan fisik, keamanan data, maupun keamanan aplikasi, semuanya menjadi sangat penting. Namun, kita perlu menyadari bahwa mencapai tingkat keamanan yang mutlak adalah sesuatu yang sangat sulit, mirip dengan dunia nyata saat ini. Tidak ada daerah yang benar-benar aman, meskipun upaya-upaya keamanan telah dilakukan. Demikian pula dengan keamanan sistem komputer. Namun, yang dapat kita lakukan adalah mengurangi risiko gangguan keamanan tersebut. Keamanan komputer sangat penting untuk melindungi sistem komputer dari akses oleh pihak yang tidak berwenang. Dengan meningkatnya jumlah pengguna komputer dan koneksi jaringan LAN ke internet, kebutuhan akan sistem keamanan komputer semakin
97 meningkat. Namun, kurangnya Sumber daya Manusia (SDM) yang mampu menjaga keamanan data dan informasi dapat mengancam keamanan data tersebut dari akses yang tidak sah. Keamanan komputer berkaitan erat dengan Privacy, Integrity, Autentication, Confidentiality, dan Availability. Ancaman keamanan komputer seperti virus, worm, trojan, spam, dan lain-lain memiliki potensi untuk mencuri data atau merusak sistem komputer. Meskipun ancaman tersebut tidak bisa dihilangkan sepenuhnya, pengguna dapat meminimalisir risiko dengan menggunakan perangkat lunak keamanan seperti antivirus, antispam, dan sebagainya. Keamanan komputer, yang juga dikenal sebagai keamanan informasi dalam konteks teknologi, bertujuan untuk melindungi informasi yang disimpan di dalam komputer. Tujuan utama dari keamanan komputer adalah mencegah pencurian atau kerusakan informasi serta memastikan ketersediaannya, seperti yang diatur dalam kebijakan keamanan. Gollmann dalam bukunya "Computer Security" pada tahun 1999 menyatakan bahwa keamanan komputer berkaitan dengan pencegahan dan deteksi terhadap tindakan pengganggu yang tidak dikenal dalam sistem komputer. Menurut Howard (1997) dalam bukunya "An Analysis of Security Incidents on The Internet", ia menyatakan bahwa keamanan komputer merupakan langkah pencegahan terhadap serangan dari pengguna komputer
98 atau pengakses jaringan yang tidak bertanggung jawab. Keamanan dalam sistem komputer sangat mempengaruhi beberapa faktor, antara lain: 1. Social engineering 2. Security hole pada sistem operasi dan servis 3. Keamanan fisik 4. Serangan pada jaringan 5. DOS attack 6. Serangan via aplikasi berbasis web 7. Trojan, backdoor, rootkit, keylogger 8. Virus, worm 9. Anatomy of A Hack Menurut Wicak dalam bukunya "Mengamankan Komputer dari Spyware: 2007", Keamanan data, media, dan teknik komunikasi (Communication security) banyak menggunakan kelemahan yang ada pada perangkat lunak, baik itu aplikasi maupun perangkat lunak yang digunakan untuk mengelola sebuah database. Dalam menjaga keamanan sistem komputer, langkah yang perlu dilakukan adalah membuat sistem kita sulit diganggu oleh pihak lain, baik itu menggunakan komputer secara mandiri, jaringan lokal, maupun jaringan global. Penting untuk memastikan bahwa sistem dapat beroperasi dengan lancar dan aman, serta aplikasi programnya tetap dapat digunakan tanpa masalah.
99 Penyebab meningkatnya kejahatan computer yaitu: 1. Meningkatnya aplikasi berbasis IT dan jaringan komputer, seperti : online banking, e-commerce, Electronic data Interchange (EDI). 2. Desentralisasi server sehingga lebih banyak system yang harus ditangani, sementara SDM terbatas. Seperti lemahnya keamanan ketika terjadi pemindahan data. 3. Transisi dari single vendor ke multi vendor, seperti: ada 2 server dalam 1 vendor. 4. Meningkatnya kemampuan pemakai (user). 5. Lemahnya hukum IT yaitu kesulitan penegak hukum dan belum adanya ketentuan yang pasti. 6. Kompleksitas sistem yang digunakan, seperti pada penginstallan aplikasi yang tidak kompleks/tidak selesai 7. Koneksi internet yang lemah tingkat security nya. 8. Banyaknya software yang pada awalnya digunakan untuk melakukan audit sebuah system dengan cara mencari kelemahan dan celah yang mungkin disalahgunakan untuk melakukan scanning system orang lain. 9. Banyaknya software-software untuk melakukan penyusupan yang tersedia di Internet dan bisa di download secara gratis.
100 Cybercrime adalah tindakan yang melanggar hukum yang terjadi melalui penggunaan internet dan teknologi komputer serta telekomunikasi. Alasan kenapa keamanan komputer dibutuhkan : 1. Information-based society, menyebabkan nilai informasi menjadi sangat penting dan menuntut kemampuan untuk mengakses dan menyediakan informasi secara cepat dan akurat menjadi sangat esensial bagi sebuah organisasi. 2. Infrastruktur Jaringan komputer, seperti LAN dan Internet, memungkinkan untuk menyediakan informasi secara cepat, sekaligus membuka potensi adanya lubang keamanan (security hole). Ada beberapa hal penyebab keamanan komputer dibutuhkan, seperti : 1. Mengurangi resiko ancaman, hal ini biasa berlaku di institusi dan perusahaan swasta. 2. Melindungi system dari kerentanan, kerentanan akan menjadikan system berpotensi untuk memberikan akses yang tidak diizinkan bagi orang lain yang tidak berhak. 3. Melindungi system dari gangguan alam seperti petir dan lain-lainnya.
101 Klasifikasi keamanan menurut John D. Howard, 1997 yaitu [3] : 1. Keamanan yang bersifat fisik (physical security): termasuk akses orang ke gedung, peralatan, dan media yang digunakan, contoh : a. Wiretapping atau hal-hal yang ber-hubungan dengan akses ke kabel atau komputer yang digunakan. b. Denial of service, dilakukan misalnya dengan mematikan peralatan atau membanjiri saluran komunikasi dengan pesan-pesan (yang dapat berisi apa saja karena yang diutamakan adalah banyaknya jumlah pesan). c. Syn Flood Attack, dimana sistem (host) yang dituju dibanjiri oleh permintaan sehingga dia menjadi ter-lalu sibuk dan bahkan dapat berakibat macetnya sistem (hang). 2. Keamanan yang berhubungan dengan orang (personel), Contoh : a. Identifikasi user (username dan password) b. Profil resiko dari orang yang mempunyai akses (pemakai dan pengelola). 3. Keamanan dari data dan media serta teknik komunikasi (communications). yang termasuk di dalam kelas ini adalah kelemahan dalam software yang digunakan untuk mengelola data. Seorang kriminal dapat memasang virus atau trojan horse
102 sehingga dapat mengumpulkan infor- masi (seperti password) yang semestinya tidak berhak diakses. 4. Keamanan dalam operasi: Adanya prosedur yang digunakan untuk mengatur dan mengelola sistem keamanan, dan juga ter-masuk prosedur setelah serangan (post attack recovery). Macam - macam karakteristik penyusup, yaitu : 1. The Curious (Si Ingin Tahu) Tipe penyusup ini pada dasarnya tertarik menemukan jenis sistem dan data yang digunakan. 2. The Malicious (Si Perusak) Tipe penyusup ini ingin merusak system yang digunakan atau mengubah tampilan layar yang dibuat. 3. The High-Profile Intruder (Si Profil Tinggi) Tipe penyusup ini penyusup ini menggunakan system untuk mencapai popularitas dia sendiri, semakin tinggi system keamanan yang kita buat, semakin membuatnya penasaran. Jika dia berhasil masuk ke sistem kita maka ini menjadi sarana baginya untuk mempromosikan diri. 4. The Competition (Si Pesaing) Penyusup ini lebih tertarik pada data yang ada dalam system yang kita miliki, karena dia menganggap kita memiliki sesuatu yang dapat menguntungkannya secara finansial atau malah merugikannya (penyusup).
103 Istilah bagi hacker (penyusup) : 1. Mundane Tahu mengenai hacking tapi tidak mengetahui metode dan prosesnya. 2. Lamer (script kiddies) Mencoba script yang pernah di buat oleh aktivis hacking, tapi tidak paham bagaimana cara membuatnya. 3. Wannabe Paham sedikit metode hacking, dan sudah mulai berhasil menerobos. 4. Larva (newbie) Hacker pemula, teknik hacking mulai dikuasai dengan baik, sering bereksperimen. 5. Wizard Hacker yang membuat komunitas pembelajaran di antara mereka. 6. Master of the master hacker Lebih mengarah ke penciptaan tools-tools yang powerfull yang salah satunya dapat menunjang aktivitas hacking, namun lebih jadi tools pemrograman system yang umum.
104 Menurut Garfinkel *Simson Garfinkel, ‚PGP: Pretty Good Privacy,‛ O’Reilly & Associ-ates, Inc., 1995.] 1. Privacy / Confidentiality a. Defenisi Menjaga informasi dari orang yang tidak berhak mengakses. 1) Privacy Lebih kearah data-data yang sifatnya privat, Contoh : email seorang pemakai (user) tidak boleh dibaca oleh administrator. 2) Confidentiality Berhubungan dengan data yang diberikan ke pihak lain untuk keperluan tertentu dan hanya diperbolehkan untuk keperluan tertentu tersebut. b. Contoh Data-data yang sifatnya pribadi (seperti nama, tempat tanggal lahir, social security number, agama, status perkawinan, penyakit yang pernah diderita, nomor kartu kredit, dan sebagainya) harus dapat diproteksi dalam penggunaan dan penyebarannya. c. Bentuk Serangan Usaha penyadapan (dengan program sniffer). d. Usaha-usaha yang dapat dilakukan untuk meningkatkan privacy dan confidentiality adalah dengan menggunakan teknologi kriptografi.
105 2. Integrity a. Defenisi Informasi tidak boleh diubah tanpa seijin pemilik informasi. b. Contoh E-mail di intercept di tengah jalan, diubah isinya, kemudian diteruskan ke alamat yang dituju. c. Bentuk serangan Adanya virus, trojan horse, atau pemakai lain yang mengubah informasi tanpa ijin, ‚man in the middle attack‛ dimana seseorang menempatkan diri di tengah pembicaraan dan menyamar sebagai orang lain. 3. Authentication a. Defenisi Metode untuk menyatakan bahwa informasi betul-betul asli, atau orang yang mengakses atau memberikan informasi adalah betul-betul orang yang dimaksud. b. Dukungan 1) Adanya Tools membuktikan keaslian dokumen, dapat dilakukan dengan teknologi watermarking(untuk menjaga ‚intellectual property‛, yaitu dengan menandai dokumen atau hasil karya dengan ‚tanda tangan‛ pembuat ) dan digital signature. 2) Access control, yaitu berkaitan dengan pembatasan orang yang dapat mengakses informasi. User harus menggunakan
106 password, biometric (ciri-ciri khas orang), dan sejenisnya. 4. Availability a. Defenisi Berhubungan dengan ketersediaan informasi ketika dibutuhkan. b. Contoh hambatan : 1) Denial of service attack (DoS attack), dimana server dikirimi permintaan (biasanya palsu) yang bertubi-tubi atau permintaan yang diluar perkiraan sehingga tidak dapat melayani permintaan lain atau bahkan sampai down, hang, crash. 2) Mailbomb, dimana seorang pemakai dikirimi e-mail bertubi-tubi (katakan ribuan e-mail) dengan ukuran yang besar sehingga sang pemakai tidak dapat membuka e-mailnya atau kesulitan mengakses e-mailnya. 5. Access Control a. Defenisi Cara pengaturan akses kepada informasi. Berhubungan dengan masalah authentication dan juga privacy. b. Metode Menggunakan kombinasi password atau denganmenggunakan mekanisme lain.
107 6. Non-repudiation a. Defenisi Aspek iniberhubungan dengan si pengirim. Tujuannya agar seseorangtidak dapat mengelak bahwa dialah yang mengirim informasi tersebut. b. Contoh ancaman Penyangkalan pesanan melalui email c. Solusi Digital signature, certificate dan kriptografi Dengan mempertimbangkan spesifikasi kebijakan keamanan mengenai tindakan yang "aman" dan "tidak aman", mekanisme keamanan dapat menghambat serangan, mendeteksi serangan, atau memulihkan dari serangan. Pendekatan ini dapat diterapkan secara terpadu atau terpisah. Pencegahan berarti mencegah serangan agar gagal. Sebagai contoh, jika seseorang mencoba mengakses host melalui Internet dan host tersebut tidak terhubung ke Internet, maka serangan tersebut sudah dicegah. Umumnya, pencegahan melibatkan penerapan mekanisme yang mengatur pengguna untuk melakukan tindakan tertentu dan dipercayai untuk diterapkan secara benar dan tidak dapat diubah, sehingga penyerang tidak bisa mengatasinya dengan mengubahnya. Mekanisme pencegahan sering kali kompleks dan dapat mengganggu penggunaan sistem hingga menghambat penggunaan normal sistem.
108 Beberapa metode pencegahan yang sederhana, seperti penggunaan kata sandi (yang bertujuan untuk menghalangi akses yang tidak sah ke dalam sistem), telah diterima secara luas. Mekanisme pencegahan bisa mencegah kompromi bagian-bagian sistem, sehingga sumber daya yang dilindungi oleh mekanisme tersebut tidak perlu terus dipantau untuk masalah keamanan, setidaknya dalam teori. Deteksi menunjukkan efektivitas dari tindakan pencegahan, dan sangat bermanfaat jika serangan tidak dapat dihindari. Mekanisme deteksi mengakui kemungkinan adanya serangan. Tujuannya adalah untuk mengidentifikasi bahwa serangan sedang berlangsung atau telah terjadi, dan memberikan laporan terkait. Namun, serangan dapat terus dipantau untuk mengumpulkan data tentang karakteristiknya, tingkat keparahan, dan hasilnya. Mekanisme deteksi biasanya memonitor berbagai aspek sistem, mencari tanda-tanda atau informasi yang menunjukkan kemungkinan serangan. Contoh yang baik dari mekanisme semacam itu adalah memberikan peringatan ketika pengguna gagal memasukkan kata sandi sebanyak tiga kali. Proses masuk tetap dapat dilanjutkan, namun catatan kesalahan akan dicatat dalam log sistem yang mencatat jumlah percobaan kata sandi yang gagal. Mekanisme deteksi tidak menghentikan gangguan pada bagian-bagian sistem, yang merupakan kelemahan serius. Sumber daya yang dilindungi oleh mekanisme deteksi akan terus dipantau secara terus menerus atau secara berkala untuk masalah keamanan.
109 Pemulihan terdiri dari dua bentuk. Yang pertama adalah menghentikan serangan, mengevaluasi, dan memperbaiki kerusakan yang diakibatkannya. Sebagai contoh, jika penyerang menghapus file, salah satu cara pemulihannya adalah dengan mengembalikan file dari cadangan. Namun, dalam praktiknya, proses pemulihan jauh lebih kompleks karena setiap serangan memiliki karakteristik yang unik. Oleh karena itu, jenis dan tingkat kerusakan sering sulit untuk dikarakterisasi sepenuhnya. Selain itu, ada kemungkinan penyerang kembali, sehingga pemulihan juga melibatkan identifikasi dan perbaikan kerentanan yang dimanfaatkan oleh penyerang untuk masuk ke dalam sistem. Dalam beberapa situasi, pembalasan (baik dengan menyerang sistem penyerang atau mengambil langkah hukum untuk menuntut pertanggungjawaban penyerang) juga merupakan bagian dari proses pemulihan. Dalam semua kasus tersebut, fungsi sistem terganggu oleh serangan tersebut. Sesuai dengan definisinya, pemulihan memerlukan pengembalian operasi ke kondisi yang benar. Palam dalam bentuk pemulihan kedua, sistem tetap beroperasi dengan benar selama serangan sedang terjadi. Jenis pemulihan ini sulit diterapkan karena kompleksitas sistem komputer. Ini mencakup teknik toleransi kesalahan dan teknik keamanan, biasanya digunakan dalam sistem kritis terhadap keselamatan. Ini berbeda dari bentuk pemulihan pertama, di mana sistem tidak perlu berfungsi dengan benar, tetapi dapat menonaktifkan fungsionalitas yang tidak krusial. Namun, seringkali, jenis pemulihan ini diterapkan dalam bentuk yang lebih sederhana di mana
110 sistem secara otomatis mendeteksi dan mencoba memperbaiki kesalahan fungsi. (Bishop, 2019)
111 Dessy Ana Laila Sari, S.Si., M.T ALAM era yang semakin terhubung secara digital ini, embedded system dan internet of things (IoT) telah menjadi aspek penting dalam revolusi teknologi informasi yang mengubah cara manusia berinteraksi dengan lingkungan di setiap aspek kehidupannya. Sistem tertanam (embedded system) adalah teknologi yang telah menjadi elemen tak terpisahkan dalam kehidupan. Embedded system secara umum merupakan sekumpulan komponen yang dikombinasikan untuk menyelesaikan suatu tugas kompleks dalam bentuk terorganisir. Dalam kasus ini, komponen yang digunakan meliputi software, hardware komputer, hardware digital, rangkaian analog, hingga sensor dan actuator. Secara umum, embedded system memang hampir sama dengan komputer konvensional yang membedakan adalah tugas embedded system yang lebih spesifik dan kompleks (Valvano, 2014). Tanpa disadari, embedded system telah menjadi inti dari perangkat yang manusia gunakan sehari-hari dengan perannya dalam menjalankan tugas – tugas khusus secara efisien. D
112 Di sisi lain, internet of things (IoT) merupakan jaringan perangkat yang saling terhubung satu sama lain dengan internet sebagai jembatan (Cristina et al., n.d.). Interaksi ini memungkinkan terjadinya pertukaran data dan control yang efisian antar perangkat. Internet of things (IoT) mampu memperluas cakupan embedded system dengan menghubungkannya ke internet sehingga membuka kemungkinan terjadi interaksi perangkat yang lebih luas, real-time monitoring dan pengambilan keputusan otomatis (Indian Institute of Embedded System, n.d.). Embedded system merujuk pada prinsip – prinsip fundamental yang mengatur desain, pengembangan dan implementasi sistem yang terintegrasi ke dalam perangkat keras serta perangkat lunak khusus dalam melakukan fungsi atau tugasnya yang spesifik. Berdasarkan definisi pakar, embedded system merupakan sebuah sistem berbasis mikroprosesor yang dirancang untuk fungsi khusus yang ditanamkan pada sistem lain dan tidak dapat deprogram oleh pengguna (Jaya et al., 2017). Penerapan sistem ini memiliki kelebihan yaitu fitur umum yang memungkinkan untuk ditanamkan pada berbagai sistem dan meningkatkan fasilitas yang dapat diberikan oleh sistem tersebut. Adapun ciri – ciri yang membedakan sistem ini dengan sistem konvesional lainnya adalah.
113 1. Dirancang untuk penerapan tertentu Embedded system adalah suatu sistem yang dibuat untuk menjalankan fungsi tertentu (single purpose processor). Sistem ini dirancang secara presisi untuk kebutuhan fungsional yang khusus (Cristina et al., n.d.). Komponen prosesor yang digunakan dirancang berbeda dengan prosesor pada komputer konvensional. 2. Respon cepat Waktu respon embedded system cenderung cepat terrhadap pemicu yang berasal dari lingkungan. Respon yang berbeda akan disesuaikan dengan kebutuhan yang diinginkan. 3. Domain perangkat keras Pada embedded system, proses dapat diterapkan ke dalam bentuk perangkat keras maupun perangkat lunak. Pada perangkat keras pemrosesan cenderung lebih cepat ketimbang perangkat lunak karena pada perangkat keras tidak perlu dilakukan akses memory. 4. Murah Embedded system memiliki fungsi tambahan yang ditanamkan pada produk sehingga diperlukan standar harga tertentu. Karena kelemahannya dalam implementasi perangkat keras yang relatif lebih mahal, embedded system diproduksi secara massal untuk menutupi kekurangan tersebut.
114 5. Supplier listrik rendah Sebagai sistem yang ditanamkan pada sistem lain, embedded system mendapatkan energi listrik dari induk sistemnya sehingga untuk menunjang kinerja sistem induk agar tidak terganggu, embedded system perlu menggunakan energi listrik yang rendah. Embedded system secara umum diimplementasikan dengan menggunakan mikrokontroler, embedded system dapat memberikan respon yang sifatnya real-time dan banyak digunakan pada peralatan digital. Dengan kemampuan embedded system dalam menyediakan kotnrol spesifik, efisien dan otomatis atas fungsi-fungsi tertentu, embedded system menjadi kunci dalam pengembangan teknologi yang inovatif. 1. Arsitektur Embedded System Terdapat berbagai variasi arsitektur yang digunakan pada embedded system. Pada level tertinggi, perangkat utama arsitektur dalam desain embedded system dinyatakan sebagai model embedded system yang ditunjukkan pada Gambar 11.1. berikut. Perangkat Keras (Harus Ada) Perangkat Lunak Sistem (Opsional) Perangkat Lunak Aplikasi (Opsional) Gambar 11.1. Model embedded system
115 Model embedded system menggambarkan bahwa seluruh embedded system memiliki kesamaan pada level tertinggi yaitu seluruh sistem memiliki minimal 1 (Jaya et al., 2017)lapisan yang meliputi perangkat keras sistem atau memiliki seluruh lapisan (lapisan perangkat keras, perangkat lunak aplikasi dan perangkat lunak sistem). Lapisan perangkat keras berisi seluruh komponen fisik utama yang terletak pada papan embedded dimana lapisan peragkat lunak berisi seluruh software yang terletak di dalam dan diproses oleh embedded system. 2. Perangkat Keras (Hardware) dan Perangkat Lunak (Software) Pada model perangkat keras embedded system dibagi menjadi dua model yaitu model Von Neumann dan model Harvard (Indian Institute of Embedded System, n.d.). Model Von Neumann pada model ini, hanya terdapat satu jalur data atau bus untuk setiap instruksi data sehingga CPU mengolah operasi satu per satu. Model ini dapat dilihat pada Gambar 11.2.(a). Gambar 1. Arsitektur hardware embedded system (a) model Von Haumann (b) model Harvard
116 Pada model Harvard, diberikan jalur bus terpisah antara jalur memori dan jalur sinyal untuk setiap instruksi dan data. Arsitektur model ini memiliki sistem penyimpanan data di dalam CPU sehingga sistem memungkinkan melakukan akses instruksi dan data secara bersamaan, model ini dapat dilihat pada Gambar 11.2.(b). Software embedded system terdiri dari tiga komponen utama yaitu : Sistem operasi; device drivers; dan software aplikasi. Sistem operasi (operating system) pada penerapannya bersifat opsional tergantung pada tingkat kompleksitas embedded system. Device drivers berperan sebagai jembatan antara sistem operasi dengan perangkat keras, dan memfasilitasi komunikasi serta kegiatan pengaturan. Software aplikasi dibuat secara spesifik sesuai dengan fungsi embedded system. Pada lapisan software ini menentukan bagaimana sistem merespon input, memroses data serta menghasilkan outputnya (Cristina et al., n.d.). 3. Aplikasi Embedded System Embedded system memiliki banyak aplikasi dimana sistem dapat disesuaikan dengan kebutuhan pengguna. Berdasarkan penelitian (Goeritno et al., 2023), embedded system diaplikasikan sebagai device berbasis IoT sebagai proteksi kegagalan sistem baterai pada gardu listrik di area Bogor. Sistem dibuat sebagai
117 pemantau keadaan tegangan baterai secara berkala untuk memastikan baterai bekerja secara optimal. Sistem juga disambungkan pada IoT via aplikasi Blynk sehingga keadaan baterai dapat dipantau via smartphone. Skematik dari sistem ini dapat dilihat pada Gambar 11.3. berikut. Internet of Things (IoT) merupakan konsep dimana koneksi internet diperluas ke perangkat fisik yang digunakan dalam kehidupan sehari-hari. Perangkat tersebut kemudian dapat berkomunikasi satu sama lain (Rani Tiyas Budiyanti, 2021). Saat ini teknologi IoT lebih dikelan dengan produk yang berhubungan dengan konsep ‚rumah pintar‛ atau smart home, seperti sistem keamanan rumah yang terkoneksi dengan internet. Gambar11.3. Skematik prototype embedded system yang diangkat
118 1. Arsitektur Internet of Things (IoT) Arsitektur IoT adalah cara perangkat IoT terhubung satu sama lain, berkomunikasi dan bekerja bersama untuk menjalankan suatu fungsi yang diinginkan. Arsitektur IoT terdiri dari empat lapisan utama (Samie et al., 2016) yaitu. a. Lapisan Perangkat (Things) : Lapisan perangkat terdiri dari perangkat IoT seperti sensor, perangkat pintar dan perangkat yang dapat terhubung ke internet. Perangkat ini mampu berkomunikasi dengan jaringan melalui protokol komunikasi. b. Lapisan Jaringan : Lapisan ini terdiri dari jaringan perangkat dan teknologi yang memungkinkan perangkat untuk berkomunikasi dengan internet. Contoh pada jaringan ini adalah WiFi, Bluetooth maupun LoRaWAN. c. Lapisan Platform : Lapisan platform terdiri dari perangkat lunak dan layanan pengelola data yang dikumpulkan oleh perangkat IoT dan memberikan berbagai layanan sesuai dengan kebutuhan pengguna. d. Lapisan Aplikasi : Lapisan ini terdiri dari aplikasi dan layanan yang digunakan dalam memroses dan menganalisa data dari perangkat IoT. 2. Aplikasi Internet of Things (IoT) Pada penerapan IoT dalam smart green house yang dilakukan oleh (Burhanudin Baharsah et al., 2023), IoT dimanfaatkan sebagai pengendali perangkat green house seperti pendingin ruangan dan pompa air
119 yang dioperasikan secara otomatis. Selain itu IoT juga dimanfaatkan sebagai sistem monitoring terhadap keadaan green house seperti suhu, kelembaban udara, kelembaban tanah dan intensitas cahaya. Aplikasi IoT yang dilakukan Baharsah seperti yang ditunjukkan pada Gambar 11.4. Pada penerapannya IoT sendiri dimanfaatkan dalam embedded system dalam menjalankan fungsi dan tugas yang diinginkan. Semakin berkembangnya teknologi internet mendorong pengembangan perangkat yang mampu berkomunikasi via internet atas dasar tersebut hamper seluruh embedded system yang dibuat pasti menerapkan IoT dalam komunikasi antar perangkatnya. Gambar11.4. Arsitektur IoT dengan embedded system
120 1. Protokol Komunikasi Internet of Things (IoT) Protokol IoT merupakan seperangkat aturan dan standar komunikasi yang digunakan untuk memberikan perangkat IoT kemampuan berkomunikasi dan berinteraksi satu sama lain. Adanya protokol menungkinkan perangkat IoT melakukan transfer data dan berbagi informasi melalui jaringan internet (Samie et al., 2016). 2. Platform Pengembangan untuk Embedded System dan Internet of Things (IoT) Ada banyak platform pengembangan IoT yang tersedia untuk membantu membangun solusi IoT dengan cepat dan efisien. Berikut adalah beberapa platform pengembangan IoT yang popular. a. Arduino: Arduino adalah platform pengembangan perangkat keras open source yang sangat popular di kalangan pengembang IoT. Arduino menyedian berbagai media pengembangan yang dapat Gambar11.5. Pengelompokan protokol IoT berdasarkan hubungan antara kecepatan data dengan jarak tangkapnya
121 diprogram dengan mudah menggunakan Bahasa pemrograman C/C++ b. Raspberry Pi : Merupakan computer kecil berbiaya kecil yang mampu digunakan dalam berbagai proyek IoT. Raspberry Pi memberikan lingkungan yang kuat dan fleksibel untuk mengembangkan projek IoT dengan banyak bahasa pemrograman dan sistem operasi 3. Tantangan dan Peluang di Masa Depan Pengembangan IoT dan embedded system menawarkan sejumlah tantangan dan peluang yang unik bagi para pengembang, adapun tantangan yang ditemui ketika dilakukan pengembangan antara lain : a. Banyak perangkat IoT dan embedded system memiliki keterbatasan sumber daya sehingga pengembang perlu mengoptimalkan software dan hardware sehingga mampu beroperasi dengan batasan tersebut. b. Karena perangkat IoT terhubung dengan internet, keamanan data menjadi masalah yang kompleks. c. Kompatibilitas juga menjadi permasalahan dengan banyaknya protokol komunikasi dan platform perangkat keras yang tersedia.
122 Erna Piantari, S.Kom., M.T. 1. Definisi dan konsep dasar Pengembangan perangkat lunak dapat didefinisikan sebagai sekumpulan aktivitas yang dimulai dari perencanaan, perancangan, pembuatan, pengujian dan pemeliharan produk perangkat lunak. Aktivitas tersebut juga dikenal dengan istilah software development lifecycle (SDLC). Dalam pengertian konsep ini SDLC juga dapat didefinisikan sebagai tahapan yang disusun untuk menyajikan sebuah perangkat lunak yang berkualitas. Secara umum terdapat banyak pendekatan atau model yang dilakukan untuk mendefinisikan bagaimana proses pengembangan perangkat lunak dilakukan untuk dapat menghasilkan perangkat lunak yang berkualitas. Mempelajari pengebangan perangkat
123 lunak, berarti mempelajari berbagai pendekatan atau model tersebut. Berbagai alasan mengapa model atau pendekatan pengembangan perangkat lunak dibangun. a. Membantu untuk memahami keseluruhan proses dari pengembangan perangkat lunak. b. Memberlakukan pendekatan yang terstruktur dalam proses pengembangan. c. Melakukan proses perencanaan untuk memaksimalkan sumber daya yang tersedia. d. Melakukan kontrol secara menyeluruh dan terus menerus terhadap proses pengembangan. e. Membantu untuk mengelola progres dalam pengembangan perangkat lunak. 2. Kualitas perangkat lunak Salah satu alasan penggunaan model dalam pengembangan perangkat lunak adalah adanya factor kualitas perangkat lunak. Kualitas perangkat lunak ini merupakan kondisi yang menunjukan seberapa baik perangkat lunak yang dihasilkan sehingga perangkat lunak yang dihasilkan layak untuk digunakan. Beberapa factor yang menunjukan kualitas perangkat lunak adalah a. Maintanability Merupakan ukuran yang menunjukan bahwa perangkat lunak yang dibangun mudah untuk dikelola, termasuk jika terjadi perubahan atau pengembangan dimasa yang akan datang. Perangkat lunak yang baik memungkinkan untuk terus dikembangkan.
124 b. Dependability Perangkat lunak yang baik adalah perangkat lunak yang dapat diandalkan dan dapat dipercaya untuk membantu menyelesaikan pekerjaan sesuai dengan tujaun pengembangannya. c. Efficiency Perangkat lunak yang baik harus dapat menggunakan sumber daya secara efisien, baik itu untuk proses komputasi maupun memori penyimpanannya. Selain itu efisiensi juga harus tercapai pada saat pengembangan, proses pengembangan harus dapat mengefesiensikan anggaran pengembangan. d. Acceptability Perangkat lunak harus diterima dan memenuhi kebutuhan pengguna pengguna. Ini berarti bahwa perangkat lunak yang dihasilkan harus dapat dimengerti, dapat digunakan dan kompatibel dengan sistem lain, sehingga mudah digunakan oleh pengguna. e. Heterogenity Pengembangan perangkat lunak harus mampu mengatasi platfom dan lingkungan yang bervariasi. f. Delivery Penggunaan model pengembangan perangkat lunak harus mempertimbangkan waktu penyelesaian perangkat lunak karena waktu penyelesaian perangkat lunak merupakan salah satu bagian dari kualitas perangkat lunak. Perangkat lunak yang berkualitas adalah perangkat lunak yang dihasilkan sesuai dengan target waktu dalam perencanaan.
125 g. Trust Dalam pengembangan perangkat lunak, kepercayaan pengguna juga merupakan salah satu hal yang menentukan kualitas perangkat lunak. 3. Jenis-jenis perangkat lunak Perangkat lunak yang dibangun terdiri dari berbagai jenis sesuai dengan tujuan dikembangkannya, yaitu: a. Perangkat lunak sistem (system software) Contoh perangkat lunak sistem adalah Sistem Operasi misalnya Windows, Linux dan IOS. b. Perangkat lunak waktu nyata (real-time software) Contohnya, aplikasi jual beli saham atau perangkat lainnya yang selalu mengalami update secara realtime. c. Perangkat lunak rekayasa dan ilmu pengetahuan (engineering and scientific software). Perangkat lunak ini biasa digunakan untuk membantu dalam proses engineering maupun proses scientific. Contohnya, MATLAB dan SPSS. d. Embedded Sofware Merupakan perangkat lunak yang dibangun untuk menyelesaikan tugas tertentu dan biasanya tertanam pada sebuah kesatuan sistem. Contohnya adalah pearngkat lunak pada mesin ATM. e. Perangkat lunak pribadi (personal software) Merupakan perangkat lunak yang dapat dijalankan pada setiap komputer pribadi. Perangkat
126 lunak ini adalah perangkat lunak yang paling umum digunakan, contoh windows office. f. Perangkat lunak integensia buatan Merupakan perangkat lunak yang dibangun dengan mengimplementasikan berbagai algoritma kecerdasan buatan, contohnya SIRI atau chatGPT. g. Selain keenam jenis perangkat lunak tersebut masih banyak jenis perangkat lunak lain yang dapat dikembangkan. 1. Analisis Kebutuhan Analisis kebutuhan merupakan tahapan dalam pengembangan perangkat lunak yang dilakukan untuk mendefinisikan bagaimana perangkat lunak harus dibangun. Kesalahan yang terjadi pada saat melakukan analisis kebutuhan perangkat lunak akan sangat merugikan dan akan menghasilkan perangkat lunak dengan kualitas yang buruk. Berdasarkan pada IEEE Standard Glossary of Software Engineering Terminology (1990), requirement atau kebutuhan adalah a. Sebuah kondisi atau kemampuan dari perangkat lunak yang dibutuhkan oleh user atau pengguna untuk mencapai tujuannya b. Sebuah kondisi atau kemampuan dari perangkat lunak yang harus dipenuhi oleh sistem atau
127 komponen sistem untuk memenuhi kontrak, standar, spesifikasi atau dokumen formal c. Representasi dari kondisi atau kemampuan pada poin 1 dan 2 yang didokumentasikan Berdasarkan pengertian tersebut, kebutuhan perangkat lunak didefisinikan dengan mempertimbangkan sudut pandang pengguna dan pengembang (developer). Namun demikian, pengguna perlu digeneralisasikan sebagai stakeholder atau yang berkepentingan. Dan tidak semua user adalah stakeholder. Definisi lain oleh Sommerville dan Sawyer, 1997 bahwa kebutuhan perangkat lunak adalah ‚Spesifikasi apa yang harus diimplementasikan. Hal ini mendeskrispikan bagaimana sistem harus berjalan atau bagaimana properti atau atribut sistem. Kebutuhan ini mungkin adalah batasan dalam sebuah proses pengembangan sistem‛. Pada domain perekayasaan perangkat lunak, kebutuhan perangkat lunak dibedakan menjadi tiga bagian yaitu : a. Kebutuhan level bisnis: kebutuhan ini merepresentasikan tujuan high-level dari sebuah bisnis atau organisasi yang membutuhkan sistem. Kebutuhan ini biasanya muncul dari pihak yang menjadi sponsor pengembangan perangkat lunak yang mendefinisikan mengapa diperlukan pengembangan perangkat lunak. Definisi dari kebutuhan ini biasa didefinisikan dan
128 didokumentasikan sebagai cakupan (scope) dari pengembangan perangkat lunak. b. Kebutuhan level pengguna: kebutuhan ini berasal dari pengguna yang secara langsung akan menggunakan sistem. Kebutuhan ini didefinisikan sebagai tujuan pengguna atau tasks yang harus dilakukan oleh pengguna dengan sistem. Biasanya kebutuhan ini didefinisikan dan didokumentasikan sebagai use case, scenario descriptions, dan tabel event-response. c. Kebutuhan functional: lebih sepesifik dari kebutuhan pengguna adalah kebutuhan functional yaitu fungsionalitas dari sistem yang harus dibangun oleh tim pengembang sehingga dengan fungsionalitas-fungsionalitas tersbut user dapat melakukan pekerjaannya yang melibatkan perangkat lunak yang dibangun. Kebutuhan ini terkadang disebut sebagai behavioral requirement. Untuk mendokumentasikan kebutuhan cukup ditulis sebagai pernyataan seperti : Sistem mampu untuk mengirim email konfirmasi pemesanan kepada pengguna. Selain ketiga kebutuhan tersebut, terdapat kebutuhan non-functional yaitu kebutuhan yang tidak berkaitan dengan funsionalitas yang harus dipenuhi sistem namun akan mendukung pengguna dalam melakukan pekerjaannya. Yang termasuk pada cakupan kebutuhan non-functional adalah security, realibitity, usability, scalability, maintainability, compliance dan efisiensi sistem.
129 2. Perencanaan Proyek Perencanaan proyek merupakan aktivitas untuk merencanakan dan mengelola sumber daya yang ada yang akan digunakan dalam pengembangan perangkat lunak. Atau dengan kata lain perencanaan proyek perangkat lunak adalah aktivitas yang dilakukan untuk mendeskripsikan tugas-tugas teknis, risiko, sumber daya, produk setiap aktivitas dan jadwal melaksanakannya. Lebih detail penjelasan setiap aktivitas dalam fase perencanaan proyek perangkat lunak aktivitas: a. Mengidentifikasi tujuan dan lingkup proyek b. Mengidentifikasi stakeholder c. Menetapkan sumber daya yang dibutuhkan d. Menentukan jadwal e. Menetapkan metode pengembangan f. Menetapkan tim pengembangan perangkat lunak g. Mengidentifikasi risiko h. Merencanakan manajemen perubahan 3. Desain Perangkat Lunak Dalam sebuah pengembangan perangkat lunak, selalu ada dua hal yang harus di-delivery, yaitu : a. Model yang berupa prototype, diagram dan dokumen pendukung b. Sistem yang dapat berupa perangkat lunak atau perangkat keras. Desain perangkat lunak merupakan tahapan yang menjembatani antara hasil proses analisis kebutuhan dan perencanaan dengan proses implementasi. Pada
130 tahapan ini hasil dari analisis kebutuhan dan perencanaan akan dirancang menjadi sebuah desain yang selanjutnya siap untuk diimplementasikan yang disebut sebagai model. Dalam proses desain perangkat lunak terdapat dua jenis desain yang dapat dilakukan yaitu desain perangkat lunak untuk pengembangan procedural dan desain perangkat lunak untuk pengembangan OOP (Object Oriented Programming). Jenis desain tersebut disesuaikan dengan rencana implementasi yang akan dilakukan. Untuk pengembangan perangkat lunak dengan procedural, desain perangkat lunak dilakukan dengan memodelkan perangkat lunak dalam bentuk DFD (Data Flow Diagram). Sedangkan model desain pengembangan perangkat lunak OOP dapat menggunakan model UML ( Unified Modeling Language). Dalam bahasan ini, kita akan lebih banyak membahas mengenai pengembangan perangkat lunak untuk OOP, sehingga pada tahap desain perangkat lunak bahasa pemodelan yang akan digunakan adalah UML. Sebelum membahas mengenai UML, akan dibahas terlebih dahulu prinsip-prinsip pengembangan perangkat lunak berbasis objek oriented atau yang akan disebut sebagai OOAD (Object Oriented Analysis and Desain). OOAD adalah pengembangan perangkat lunak yang dikembangkan secara iterative dan incremental. Secara iterative artinya bahwa dalam pengembangan terdapat perualangan yang dilakukan secara terus menerus untuk memperbaiki konsep. Secara incremental berarti dalam pengembangan
131 perangkat lunak terdapat proses untuk pemecahan kedalam beberapa bagian dalam satu silkus pengembangan. UML bukan bahasa pemograman tetapi bahasa pemodelan yang digunakan sebagai alat komunikasi dari model perangkat lunak yang akan dibangun. Perangkat lunak sendiri memiliki dua behavior: a. Dynamic behavior 1) Merupakan behavior dari perangkat lunak yang menekankan persyaratan fungsional sistem dari sudut pandang pengguna. Behavior ini modelkan dalam bentuk use case. 2) Menekankan perilaku dinamis sistem dengan menunjukkan kolaborasi antar objek dan perubahan keadaan internal objek yang dimodelkan dalam bentuk sequence diagram, activity diagram dan state diagram. b. Static behavior Merupakan behavior sistem yang menekankan pada struktur statis sistem menggunakan objek, atribut, operasi, dan hubungan. Behavior ini dapat dimodelkan dalam bentuk class diagram dan composite structure diagram. Berdasarkan pada Gambar 1, maka proses desain perangkat lunak untuk OOAD dimulai dari desain class. Desain class adalah aktivitas yang dilakukan untuk mendefisikan beberapa set class yang akan diimplementasikan.
132 Selain class diagram dan sequence diagram, dalam desain perangkat lunak juga dilakukan pemodelan data model yang dapat diimpelentasikan dalam bentuk relational diagram atau ERD. Gambar 12.1. Hubungan diagram UML (sumber : Pressman, 2014) Gambar 12.2. Contoh class diagram (sumber : Pressman, 2014).
133 4. Pengembangan kode program Tahapan selanjutanya adalah implementasi desain yang dihasilkan menjadi produk dengan melakukan pengembangan kode program. Pada tahap ini akan melibatkan pemrogram dan pengembang untuk menulis kode dan membangun perangkat lunak sesuai dengan persyaratan dan spesifikasi desain yang diuraikan dalam tahap desain dan tahap analisis kebutuhan. Bayangkan dalam pembangunan sebuah rumah; tahap ini adalah saat struktur sebenarnya disatukan, bata demi bata. Secara umum, prinsip yang harus dicapai pada tahap ini adalah a. Tahap pengembangan kode adalah untuk menerjemahkan desain sistem ke dalam format bahasa komputer. b. Tahap ini sangat menentukan proses selanjutnya. c. Program harus mudah dibaca dan dipahami. d. Penggunaan bahasa pemograman disesuaikan dengan konsep paradigma pemograman yang digunakan pada saat desain, yaitu OOP. 5. Pengujian Perangkat Lunak Pengujian perangkat lunak merupakan tahapan yang dilakukan untuk memastikan apakah perangkat lunak yang dibangun sudah dapat digunakan atau diimplementasikan pada lingkungan sesuai dengan kebutuhan pengguna. Setidaknya terdapat dua aspek yang perlu diperhatikan: a. Realibity atau keandalan Keandalan perangkat lunak berarti keandalan operasional. Hal ini digambarkan sebagai kemampuan suatu sistem
134 atau komponen untuk menjalankan fungsi yang diperlukan dalam kondisi statis untuk jangka waktu tertentu. b. Mekanisme Kegagalan Kegagalan perangkat lunak mungkin disebabkan oleh bug, ambiguitas, kelalaian atau salah tafsir terhadap spesifikasi yang seharusnya dipenuhi oleh perangkat lunak, kecerobohan atau ketidakmampuan dalam menulis kode, pengujian yang tidak memadai, penggunaan perangkat lunak yang salah atau tidak terduga, atau masalah lain yang tidak terduga. Kegagalan perangkat lunak secara umum dapat dikategorikan sebagai berikut : kegagalan sementara, kegagalan permane, kegagalan yang dapat dipulihkan, kegagalan yang tidak dapat dipulihkan, kegagalan non-korupsi, kegagalan yang merusak. Pada proses pengujian kegagalankegagalan tersebut harus dapat diidentifikasi. 6. Pemeliharaan Perangkat Lunak Pemeliharaan perangkat lunak adalah bagian dari Siklus Hidup Pengembangan Perangkat Lunak. Tujuan utamanya adalah untuk memodifikasi dan memperbarui aplikasi perangkat lunak setelah pengiriman untuk memperbaiki kesalahan dan meningkatkan kinerja. Perangkat lunak adalah model dunia nyata. Ketika dunia nyata berubah, perangkat lunak memerlukan perubahan sedapat mungkin. Pemeliharaan perangkat punak adalah aktivitas inklusif yang mencakup koreksi kesalahan, peningkatan kemampuan, penghapusan kemampuan
135 usang, dan optimalisasi. Hal pertama yang perlu dilakukan pada proses pemiliharaan perangkat lunak adalah menentukan terlebih dahulu tujuan dari pemeliharan sebelum prosesnya dilakukan. Jika tujuannya sudah jelas maka proses pemeliharaan perangkat lunak dapat dilakukan. Secara umum, terdapat 4 fase dalam proses pemeliharaan perangkat lunak : a. Memahami program b. Menggenerate masalah pemeliharaan atau memperjelas masalah yang ingin diatasi dalam proses pemeliharaan c. Memperhitungkan efek yang mungkin terjadi karena adanya perubahan atau perbaikan. d. Melakukan pengujian 1. Model Waterfall Winston Royce memperkenalkan Model Waterfall pada tahun 1970. Model ini memiliki lima fase: Analisis dan spesifikasi persyaratan, desain, implementasi, dan pengujian unit, integrasi dan pengujian sistem, serta operasi dan pemeliharaan. Langkah-langkahnya selalu mengikuti urutan ini dan tidak tumpang tindih. Pada proses pengembang perangkat lunak dengan model ini setiap fase harus disesaikan sebelum fase berikutnya dimulai. Model ini diberi nama ‚Model Waterfall‛, karena representasi diagramnya menyerupai rangkaian air terjun. Fase pada model ini :
136 a. Fase analisis dan spesifikasi kebutuhan b. Fase Desain c. Implementasi dan pengujian unit d. Integrasi dan Pengujian Sistem e. Fase pengoperasian dan pemeliharaan: Model waterfall baik digunakan jika: 1) Ketika persyaratannya konstan dan tidak berubah secara teratur 2) Sebuah proyek itu singkat 3) Situasinya tenang 4) Alat dan teknologi yang digunakan konsisten dan tidak berubah 5) Sumber daya dipersiapkan dengan baik dan tersedia untuk digunakan. 2. Model Spiral Model spiral, awalnya diusulkan oleh Boehm, adalah model proses perangkat lunak evolusioner yang menggabungkan fitur iteratif dari pembuatan prototipe dengan aspek terkontrol dan sistematis dari model sekuensial linier. Ini mengimplementasikan potensi pengembangan pesat versi perangkat lunak baru. Dengan menggunakan model spiral, perangkat lunak ini dikembangkan dalam serangkaian rilis tambahan. Selama iterasi awal, rilis tambahan mungkin berupa model kertas atau prototipe. Selama iterasi selanjutnya, versi yang lebih lengkap dari sistem rekayasa dihasilkan.
137 Setiap siklus dalam model ini dijelaskan berikut : a. Identifikasi tujuan b. Penilaian dan pengurangan risiko c. Pengembangan dan validasi d. Perencanaan kembali siklus selanjutnya Kapan model ini sebaiknya digunakan? 1) Saat proses delivery sistem harus sering dilakukan. 2) Proyeknya besar 3) Persyaratan tidak jelas dan rumit 4) Perubahan mungkin diperlukan kapan saja 5) Proyek dengan anggaran besar dan tinggi 3. Model Prototype Pada pengembangan dengan model prototipe mensyaratkan bahwa sebelum melakukan pengembangan perangkat lunak sebenarnya, sistem prototipe yang berfungsi harus dibangun. Gambar 12.3 adalah tahapan yang dilakukan pada model ini. Sesuai dengan Gambar 12.3, pengembagan dimulai dengan mengembangkan prototype yang kemudian dievaluasi oleh pengguna sampai menghasilkan acceptance dari pengguna, sebelum dilanjutkan pada tahap selanjutnya yaitu proses iterative development.
138 Gambar 12.3. Tahapan pengembangan model prototype 4. Model Iteratif Dalam Model ini, dimulai dengan beberapa spesifikasi perangkat lunak dan mengembangkan perangkat lunak versi pertama. Setelah versi pertama jika ada kebutuhan untuk mengubah perangkat lunak, maka perangkat lunak versi baru dibuat dengan iterasi baru. Setiap rilis Model Iteratif selesai dalam periode yang tepat dan tetap yang disebut iterasi. Model Iteratif (Gambar 12.4) memungkinkan pengaksesan
139 fase-fase sebelumnya, di mana variasi dibuat masingmasing. Hasil akhir proyek diperbarui pada akhir proses Software Development Life Cycle (SDLC). Gambar 12.4. Iteratif Model 5. Incremental Model Model incremental adalah proses pengembangan perangkat lunak di mana persyaratan dibagi menjadi beberapa modul mandiri dari siklus pengembangan perangkat lunak. Dalam model ini (Gambar 12.5), setiap modul melewati tahap analisis kebutuhan, desain dan pengkodean, pengujian, dan implementasi. Setiap rilis modul berikutnya menambahkan fungsi ke rilis sebelumnya. Proses berlanjut hingga sistem lengkap tercapai. Model incremental sebaiknya digunakan jika a. Hasil analisis kebutuhan didefinisikan dengan baik
140 b. Proyek memiliki jadwal pengembangan yang panjang. c. Tim Perangkat Lunak tidak terlalu terampil atau terlatih. d. Deadline pengerjaan yang singkat. e. Memungkinkan mengembangkan kebutuhan yang diprioritaskan terlebih dahulu. Gambar 12.5. Proses dalam Model Incremental 6. Agile Arti dari Agile adalah cepat atau serbaguna. "Model Agile" mengacu pada pendekatan pengembangan perangkat lunak berdasarkan pengembangan berulang. Pada model ini setiap iterasi dianggap sebagai "kerangka" untuk waktu singkat dalam model Agile, yang biasanya berlangsung dari satu hingga empat minggu. Setiap iterasi melibatkan tim yang bekerja melalui siklus hidup pengembangan perangkat lunak penuh termasuk perencanaan, analisis persyaratan, desain, pengkodean, dan