REFACTOR KODE PADA PROGRAM ALGORITMA DATA ENCRYPTION STANDARD

Nama         : Achmad Ferdiansyah

NRP           : 5025201245

Kelas         : Evolusi Perangkat Lunak

Tugas         : 7

Pertemuan : 12


Pada tugas ini saya merefactor kode pada program implementasi slgoritma Data Encryption Standard. program ini berfungsi sebagai enkripsi dan dekripsi pesan untuk mengamankan suatu pesan. Untuk dapat melakukan enkripsi dan dekripsi, salah satu elemen yang dibutuhkan yaitu pembuatan 16 kunci berbeda sesuai dengan langkah-langkah yang telah ditetukan. Pada kode yang lama terlihat banyak melakukan repetisi dengan menggunakan banyak variabel sebagai penampung nilai tiap kunci dari kunci ke-1 hingga kunci ke-16 seperti pada gambar di bawah ini.


Selain itu ada beberapa kode yang terlihat kurang efisien seperti operasi XOR pada program yang ternyata menggunakan perbandingan yang banyak, padahal untuk hasilnya sama saja, lihat contoh kode di bawah ini.


Dari 2 contoh potongan kode diatas, saya telah merefactor potongan kode tersebut menjadi sebagai berikut:

Untuk potongan kode pertama, daripada membuat variabel sebanyak 16 kali, saya memasukkan pembuatan tiap kunci dari awal sampai terbentuk kunci tersebut ditiap perulangan "for" dari index 0 sampai 15 yang berjumlah 16 iterasi. Jika perulangan index[i] sidah mencapai akhir dan akan berganti iterasi, maka variabel key ke-i akan dibuat dan otomatis menampung key hasil kalkulasi tersebut. Lihat contoh gambar di bawah ini.



Untuk Potongan kode kedua, pada tiap pengkondisian terlihat memang sangat detail untuk menghindari error yang tidak tampak. Operasi XOR akan menghasilkan nilai "1" atau "TRUE" jika salah satu saja nilai perbandingannya bernilai "1" atau "TRUE". pada kode sebelumnya memakan banyak operasi pengecekan. Pada kode refactory ini saya mengubah logika pengecekannya menjadi variabel A = Variabel B ? Maka hasilkan "0" atau "FALSE". Atau variabel A tidak sama dengan variabel B ? Maka hasilkan "1" atau "TRUE". Lihat gambar di bawah ini.



Itu tadi beberapa hasil refactoring kode implementasi data encryption standard, masih banyak potongan kode yang bisa di refactor, tetaoi hanya saya tampilkan 2 contoh ini karena kebanyakn potongan kodenya perlu direfactory dengan cara tidak menggunakan pengulangan kode atau menggunakan prinsip "Don't Repeat Yourself! (DRY)".



Comments

Popular posts from this blog

Evolusi Sistem Operasi Android

Evolusi Perangkat Lunak Tugas 3 - Sistem Informasi Pelanggan - CRM

Analisis Aktivitas Evolusi Perangkat Lunak pada Jurnal Penerapan Pemeliharaan Systems Maintenance Life Cycle Bank Swasta Nasional Berdasarkan IEEE dan ISO