BAB 2 LANDASAN TEORI 2.1.
Tol Tol adalah biaya yang ditarik oleh pihak yang berwenang kepada orang yang
melewati suatu daerah/jalan di mana pendapatan tersebut digunakan untuk biaya pemeliharaan jalan/daerah tersebut. Pengelola tol biasanya merupakan suatu perusahaan yang berfungsi untuk membangun, mengembangkan, dan merawat tol tersebut. Perusahaan ini menarik biaya dari pengguna yang ingin melewati jalan tol untuk mengembangkan perusahaan tersebut. Dengan semakin berkembangnya suatu negara, tingkat produksi dan konsumsi masyarakatnya, akan diperlukan kapasitas jalan yang semakin baik dan luas. Baik secara kuantitas maupun kualitas. Karena itulah dibangun tol yang diharapkan dapat melayani permintaan masyarakat yang semakin meningkat. Pembangunan tol juga bertujuan untuk mengurangi kemacetan. Di Indonesia tol dibangun untuk mengurangi kemacetan dan sebagai sarana penghubung antar kota.
2.1.1. Jalan Tol Jalan di mana pemilik/pihak yang berwenang akan jalan tersebut meminta biaya untuk penggunaaanya.
2.1.2. Pintu Tol / Gerbang Tol Suatu tempat pada jalan tol di mana orang melakukan transaksi pembayaran tol.
9
10 2.2.
Sekuriti Sekuriti merupakan faktor penting dalam pengiriman informasi. Konfidensialitas
informasi sering kali menjadi kendala dalam pengiriman pesan. Vulnerabilitas atau kelemahan pada sistem sekuriti dapat dieksploitasi sehingga menyebabkan kehilangan atau kerugian informasi. Ancaman terhadap sekuriti ini dapat disebabkan oleh manusia, bencana alam, ataupun kerusakan alat. Menurut Charles P. Pfleeger (1997, p22) ada empat macam ancaman terhadap sistem komputasi, yaitu : •
Interupsi : suatu cara yang menyebabkan suatu aset penting menjadi hilang, tidak dapat digunakan, atau tidak berguna sama sekali.
•
Intersepsi : suatu cara di mana ada pihak yang tidak berhak memperoleh akses ke sebuah informasi.
•
Modifikasi : suatu cara di mana pihak yang tidak berhak memperoleh akses, dan dapat merusak dengan cara mengubah pesan atau informasi tersebut.
•
Fabrikasi atau pemalsuan : salah satu faktor ancaman yang membahayakan di mana pihak luar yang tidak berhak dapat memalsukan sebuah informasi atau program yang akan digunakan. Sekuritas komputer akan dianggap aman menurut S. Garfinkel (2002,p1), bila
memenuhi ketiga hal berikut, yaitu : •
Kerahasiaan : informasi dari sistem komputer dapat diakses hanya oleh pihak yang berhak atau legal.
•
Integritas : informasi hanya bisa dimodifikasi oleh pihak-pihak yang berhak dengan cara yang legal.
11 •
Ketersediaan : sebuah asset dapat diakses oleh orang yang berhak saja dimana tidak dibatasi hanya mengakses suatu bagian saja.
2.3.
Kriptografi Cryptography (kriptografi) berasal dari bahaya Yunani kryptos yang berarti
tersembunyi dan graphein yang artinya menulis. Menurut Trappe (2002, p1-p2), secara teknis Cryptology (Kriptologi) adalah suatu studi tentang komunikasi melalui suatu saluran yang tidak aman, dan masalah-masalah lainnya yang berhubungan. Cryptography (kriptografi) adalah proses merancang sistem untuk hal tersebut. Sehingga kriptografi merupakan ilmu dari penulisan rahasia sehingga sebuah informasi tidak dapat dibaca oleh pihak yang tidak berhak. Ilmu tentang bagaimana memecahkan kode kriptografi disebut crytanalysis (kriptanalisis) atau codebreaking. Kriptografi dan kriptanalisis sering bekerja sama dalam satu wadah yang disebut kriptologi. Karena itu pada prakteknya kriptografi sudah bukan hanya melakukan penyandian tetapi juga memecahkan sandi.
2.3.1. Sandi (Cipher) Cipher adalah suatu algoritma untuk enkripsi dan dekripsi. Operasi utama dari cipher umumnya dikontrol oleh suatu key, suatu standar informasi yang menentukan bagaimana teks cipher dihasilkan. Suatu protokol menentukan bagaimana cipher digunakan untuk menghasilkan sesuatu. Pada umumnya, suatu kode rahasia sering diasumsikan sama dengan cipher. Bagaimanapun juga pada kriptografi, masing-masing istilah tersebut mempunyai arti yang berbeda-beda. Kode adalah suatu metode untuk kriptografi klasik, yang digunakan
12 untuk menggantikan teks yang lebih kompleks, dari teks yang panjang menjadi pendek. Sebaliknya, cipher klasik biasanya hanya menggantikan atau mengatur ulang tiap huruf sehingga panjang teks tersebut tetap.
2.3.1.1. Block Cipher Pada kriptografi, block cipher adalah suatu symmetric key cipher yang beroperasi pada panjang bit tertentu, yang disebut block, dengan transformasi yang tidak berubahubah. Ketika mengenkripsi, suatu block cipher dapat menggunakan (sebagai contoh saja) 128-bit block plain-text (teks murni) sebagai masukan, dan menghasilkan keluaran berupa 128-bit chipertext. Transformasinya dikendalikan menggunakan masukan kedua, yaitu kode rahasia (key). Hal yang sama berlaku juga untuk mendekripsi ciphertext tersebut. Untuk mengenkripsi pesan yang lebih panjang daripada ukuran block, suatu mode operasi digunakan.
Gambar 2.1. Block Cipher Block cipher terdiri dari dua pasang algoritma, satu untuk enkripsi (E) dan satunya untuk dekripsi (E-1). Kedua algoritma ini menerima dua masukan, suatu block dengan ukuran n-bit dan suatu key dengan ukuran k-bit, yang menghasilkan keluaran
13 block n-bit. Untuk tiap key yang mana saja, dekripsi merupakan kebalikan dari enkripsi sehingga:
untuk semua block M dan key K.
Untuk setiap key K, EK adalah permutasi (suatu pemetaan bijektif) dari set block masukan. Setiap key memilih satu permutasi dari kemungkinan 2n! set.
Ukuran block, n, umumnya
64 atau 128 bit, walaupun beberapa cipher
mempunyai ukuran block bertipe variabel. Ukuran paling umum sampai pertengahan 1990 an adalah 64-bit, setelah itu desain yang baru mulai berubah ke panjang 128-bit. Satu dari beberapa modus operasi sering digunakan bersamaan dengan padding (menambahkan sesuatu ke dalam teks sehingga teks tersebut mempunyai panjang tertentu) untuk membuat teks dengan panjang berapapun dapat dienkripsi. Setiap modus mempunyai karakteristik yang berbeda dalam upaya pengurangan kesalahan, kemudahan dari random access, dan kelemahan dari berbagai macam tipe serangan. Tipe ukuran key (k) yang umum adalah 40, 56, 64, 80, 128, 192 dan 256 bit. Sejak 2005, 80 bit merupakan batas bawah dari panjang key yang dibutuhkan untuk menghindari teknik penyerangan brute force.
14 2.3.1.2. Iterated Block Ciphers
Sebagian besar dari block cipher dibentuk dengan cara mengaplikasikan fungsi yang sederhana secara berulang-ulang. Pendekatan ini dikenal dengan istilah iterated block cipher. Setiap iterasi disebut dengan satu round, dan fungsi perulangannya disebut round function; 4 sampai 32 round iterasi merupakan sesuatu yang umum.
Banyak block cipher yang dapat dikategorikan sebagai Feistel Networks, atau sebagai substitution-permutation networks yang umum. Operasi aritmetik, logis (khususnya XOR), S-box dan berbagai macam permutasi yang lain sering digunakan sebagai komponen.
2.3.2. Algoritma Suatu set perintah tertentu yang digunakan untuk menyelesaikan suatu tugas, di mana bila diberikan kondisi awal, akan berakhir pada suatu kondisi akhir yang dikenali. Pada algoritma bisa terjadi perulangan (iterasi) atau membutuhkan pengambilan keputusan (seperti logika ataupun perbandingan) sampai tugas tersebut diselesaikan.
2.3.2.1. Algoritma Advanced Encryption Standard (AES) / Rijndael Algoritma ini merupakan block cipher yang banyak digunakan sebagai standar enkripsi. Algoritma Rijndael menggunakan substitution-permutation network yang pengimplementasiannya cukup mudah dan hanya membutuhkan memori yang kecil. Sebagai suatu standar enkripsi, AES sekarang sedang dikembangkan dalam skala yang luas.
15 AES ini menggunakan ukuran block 128-bit dan mempunyai ukuran key 128, 192, dan 256-bit. AES beroperasi menggunakan array 4×4 byte yang disebut state.
Untuk enkripsi, setiap round dari AES (kecuali round terakhir) terdiri dari empat tahap:
1. SubBytes : Pada langkah ini, setiap byte pada array ditukar menggunakan Sbox 8 bit. Operasi ini mengakibatkan enkripsi ini tidak linear. S-box yang digunakan diturunkan oleh fungsi invers dari fungsi polinomial 28 yang dikenal tidak linear. Untuk menghindari serangan yang berdasarkan fungsi aljabar sederhana, S-box ini dibentuk dengan mengkombinasikan fungsi invers dengan transformasi affine yang tidak dapat diubah kembali. S-box juga dipilih untuk menghindari ditemukannya titik tertentu dan juga kebalikan dari titik tersebut.
Gambar 2.2. langkah SubBytes
2. ShiftRows : Langkah ini dilakukan pada baris dari tiap state, langkah ini menggeser tiap byte pada tiap baris dengan offset tertentu. Pada AES, baris awal tidak di ubah. Setiap byte dari baris kedua dipindah ke kiri satu. Begitu
16 pula dengan baris ketiga dan keempat, digeser pula sesuai dengan offset kedua dan ketiganya. Dengan cara ini, setiap kolom dari state output terdiri dari byte yang berasal dari kolom state input.
Gambar 2.3. langkah ShiftRows
3. MixColumns : Pada langkah ini, keempat byte pada tiap kolom dari state dikombinasikan menggunakan transformasi linear yang invertible. Fungsi ini menggunakan masukan empat byte dan keluaran empat byte, dimana tiap masukan byte mempengaruhi keempat byte keluaran. MixColumns yang digunakan bersama ShiftRows menghasilkan keacakan pada cipher. Tiap kolom diperlakukan sebagai suatu polinomial 28 dan kemudian dioperasikan dengan modulo x4 + 1 dengan suatu fungsi polinomial tertentu c(x). Langkah ini dapat dilihat pula sebagai suatu matrix multiplikatif pada Rijndael's finite field.
c(x)
yang
digunakan
untuk
enkripsi
ialah
c(x)=(03)x3+(01)x2+(01)x+(02). Sedangkan untuk proses deskripsi akan digunakan c(x)=(0B)x3+(0D)x2+(09)x+(0E).
17
Gambar 2.4. langkah MixColumns
4. AddRoundKey : Pada langkah ini, subkey-nya dikombinasikan dengan tiap state. Untuk tiap giliran, satu subkey diturunkan dari key utama menggunakan key schedule. Tiap subkey mepunyai ukuran yang sama dengan state. Tiap subkey kemudian ditambahkan dengan cara menggabungkan tiap byte pada state dengan byte yang berhubungan pada subkey menggunakan operasi XOR.
Gambar 2.5. langkah AddRoundKey
Round terakhir melakukan proses MixColumns.
18 2.3.2.2. S-Box Rijndael
Nilai S-box yang digunakan pada algoritma Rijndael ditunjukkan dengan nilai hexadesimal dibawah ini:
| 0 1 2 3 4 5 6 7 8 9 a b c d e f ---|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--| 00 |63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 10 |ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 20 |b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 30 |04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 40 |09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 50 |53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 60 |d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8 70 |51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 80 |cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 90 |60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db a0 |e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 b0 |e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08 c0 |ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a d0 |70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e e0 |e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df f0 |8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
Tabel 2.1. Tabel S-Box Rijndael Di sini kolom akan ditentukan berdasarkan digit yang paling tidak penting, dan barisnya ditentukan dengan digit utama. Contohnya nilai 0x9a diubah menjadi 0xb8 dengan menggunakan S-box Rijndael.
Invers S-box adalah S-box yang dijalankan secara terbalik. Contohnya, invers Sbox dari 0xdb adalah 0x9f. Tabel berikut merepresentasikan invers dari S-box Rijndael:
19 | 0 1 2 3 4 5 6 7 8 9 a b c d e f ---|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--| 00 |52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb 10 |7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb 20 |54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e 30 |08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25 40 |72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92 50 |6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84 60 |90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06 70 |d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b 80 |3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73 90 |96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e a0 |47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b b0 |fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4 c0 |1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f d0 |60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef e0 |a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61 f0 |17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d
Tabel 2.2. Tabel Invers S-Box Rijndael
2.3.2.3. Keamanan Algoritma Rijndael Sejak tahun 2005, belum pernah ada serangan yang berhasil terhadap AES yang bisa ditemui. Dari hasil pemeriksaan National Security Agency (NSA) algoritma AES cukup aman untuk digunakan pada data non-classified pemerintah Amerika Serikat. Pada Juni 2003 pemerintah Amerika serikat menyatakan bahwa AES dapat digunakan untuk informasi classified.
20 2.3.3. Key Key digunakan untuk mengontrol operasi dari cipher sehingga hanya key yang cocok dapat digunakan untuk mengubah teks terenkripsi menjadi teks standar. Keamanan suatu sistem bergantung dari key ini. Karena itulah key ini harus cukup besar ukurannya (key size) sehingga metode serangan brute force akan kesulitan menentukan key yang cocok. 2.3.3.1. Key Schedule Key schedule adalah suatu algoritma untuk menghitung subkey dari setiap round pada produk cipher yang berasal dari enkripsi atau dekripsi key. Beberapa cipher mempunyai key schedule yang sederhana, contohnya block cipher TEA akan membagi empat 128-bit key ke dalam 32-bit key dan menggunakannya secara berulang-ulang pada round yang berkesinambungan. Berdasarkan penelitian oleh Knudsen dan Mathiassen (2004), key schedule mempunyai peran penting dalam menghadapi dekripsi dengan metode linear dan differensial.
2.3.3.2. Key Size dan Block Size Key size atau sering disebut juga key length adalah suatu ukuran dari angka yang mungkin digunakan sebagai key pada cipher. Pada kriptografi modern, panjang ini ditampilkan dalam bentuk bit karena penggunaan key biner. Block size adalah panjang suatu string yang bertipe bit. Block size dari masukan dan keluaran teks yang di cipher sama.
21 2.3.4. Finite Field Arithmetic Aritmetika pada finite field mempunyai perbedaan dengan aritmetika yang biasa. Semua operasi pada finite field mempunyai hasil perhitungan yang berada dalam finite field tersebut. 2.3.4.1. Notasi Walaupun elemen-elemen pada finite field dapat dinyatakan dalam bentuk numerik (desimal, heksadesimal, ataupun biner), seringkali lebih mudah dinyatakan dalam bentuk polinomial, dengan setiap variabel pada polinomialnya mewakili bit-bit pada nilai binernya. Contoh dibawah ini merepresentasikan nilai yang sama pada finite field dengan karakteristik 2: Heksadesimal : {53} Biner
: {01010011}
Polinomial
: x6 + x4 + x + 1
Eksponen pada polinomial digunakan sebagai penanda yang memungkinkan untuk mengetahui nilai setiap bit pada saat terjadi operasi aritmetika. Jika yang digunakan adalah nilai heksadesimal atau biner maka digunakan tanda kurung (’{‘ dan ‘}’) yang menunjukkan bahwa nilai tersebut adalah elemen dari finite field.
2.3.4.2. Penambahan dan Pengurangan Penambahan dan pengurangan dilakukan menggunakan dua polinomial. Setiap variabel pada polinomial hanya boleh memiliki nilai satu atau nol. Pada finite field dengan karakteristik 2, penambahan dan pengurangan sama, dan keduanya dilakukan dengan menggunakan operator XOR. Contohnya:
22 Heksadesimal : {53} + {CA} = {99} Biner
: {01010011} + {11001010} = {10011001}
Polinomial
: (x6 + x4 + x + 1) + (x7 + x6 + x3 + x) = x7 + x4 + x3 + 1
Pada kedua nilai diatas terdapat x6, dan x6 + x6 menjadi 2x6. Tetapi karena setiap koefisien harus dimodulo 2 maka hasilnya akan menjadi 0x6 sehingga nilai tersebut dibuang.
2.3.4.3. Perkalian Perkalian pada finite field ialah perkalian yang dimodulo dengan irreducible polynomial yang digunakan untuk mendefinisikan finite field tersebut. Maksudnya, perkalian tersebut diikuti dengan pembagian yang menggunakan irreducible polynomial sebagai pembagi, sisa hasil bagi tersebut ialah hasilnya. Contoh: jika irreducible polynomial yang digunakan f(x) = x8 + x4 + x3 + x + 1 (irreducable polynomial yang digunakan pada algoritma Rijndael), maka
{53} • {CA} = {01} (x6 + x4 + x + 1)(x7 + x6 + x3 + x) = x13 + x12 + x9 + x7 + x11 + x10 + x7 + x5 + x8 + x7 + x4 + x2 + x7 + x6 + x3 + x = x13 + x12 + x11 + x10 + x9 + x8 + x6 + x5 + x4 + x3 + x2 + x
dan
23 x13 + x12 + x11 + x10 + x9 + x8 + x6 + x5 + x4 + x3 + x2 + x
modulo
x8 + x4 + x3 + x + 1 = ( 11111101111110 mod 100011011) = 1,
yang ditunjukkan dengan pembagian bersusun dibawah ini (menggunakan notasi biner untuk mempermudah):
111101 100011011)11111101111110 100011011 1110000011110 100011011 110110101110 100011011 10101110110 100011011 0100011010 000000000 100011010 100011011 00000001
2.3.5. Metode Serangan Brute Force Metode serangan brute force ini adalah metode yang dapat menemukan key yang digunakan oleh cipher. Metode dilakukan dengan cara mencoba key satu persatu hingga menemukan key yang cocok. Walaupun tidak efisien metode ini dapat memecahkan semua metode cipher. Oleh karena itu key pada cipher menggunakan nilai yang besar sehingga brute force memerlukan waktu yang lebih lama untuk menemukan key yang cocok.
24 2.4.
Perangkat Lunak (Software) Menurut Pressman (2001, p6), perangkat lunak adalah (1) instruksi (program
komputer) yang ketika dieksekusi akan memberikan fungsi dan performa seperti yang diinginkan (2) struktur data yang memungkinkan program memanipulasi informasi secara proporsional, dan (3) dokumen yang menggambarkan operasi dan penggunaan program. Menurut Sommerville (2001, p6), perancangan perangkat lunak adalah disiplin perancangan yang berhubungan dengan semua aspek dari produksi perangkat lunak dari tahap awal spesifikasi sistem sampai dengan pemeliharaan setelah sistem dalam tahap berjalan.
2.4.1. Daur Hidup Perangkat Lunak Salah satu model perancangan perangkat lunak adalah dengan menggunakan model air terjun (waterfall model). Menurut Sommerville (2001, p45), tahap-tahap utama dalam model air terjun yang menggambarkan aktivitas dasar pengembangan perangkat lunak adalah sebagai berikut: -
Analisis dan penentuan kebutuhan Tugas, kendala dan tujuan sistem ditentukan melalui konsultasi dengan pemakai sistem. Kemudian ditentukan cara yang dapat dipahami, baik oleh user maupun pengembang.
-
Desain sistem dan perangkat lunak. Proses desain sistem terbagi dalam kebutuhan perangkat keras dan perangkat lunak. hal ini menentukan arsitektur perangkat lunak secara keseluruhan. Desain perangkat lunak mewakili fungsi sistem perangkat
25 lunak dalam suatu bentuk yang dapat ditransformasikan ke dalam satu atau lebih program yang dapat dieksekusi. -
Implementasi dan pengujian unit. Dalam tahap ini, desain perangkat lunak direalisasikan dalam suatu himpunan program atau unit-unit program. Pengujian unit mencakup kegiatan verifikasi terhadap suatu unit sehingga memenuhi syarat spesifikasinya.
-
Integrasi dan pengujian sistem. Unit program secara individual diintegrasikan dan diuji sebagai satu sistem yang lengkap untuk memastikan bahwa kebutuhan perangkat lunak telah terpenuhi. Setelah pengujian, sistem perangkat lunak disampaikan kepada user.
-
Pengoperasian dan pemeliharaan. Secara normal, walaupun tidak selalu diperlukan, tahap ini merupakan bagian siklus hidup yang terpanjang. Sistem telah terpasang dan sedang dalam penggunaan. Pemeliharaan mencakup perbaikan kesalahan yang tidak
ditemukan
dalam
tahap-tahap
sebelumnya,
meningkatkan
implementasi unit-unit sistem dan mempertinggi pelayanan sistem yang disebabkan oleh ditemukannya kebutuhan baru.
26
Gambar 2.6. Daur Hidup Perangkat Lunak Sumber: Sommerville (2001).
2.5.
Alat Bantu Perancangan 2.5.1. State Transition Diagram State Transition Diagram adalah salah satu cara menggambarkan jalannya
proses. Di dalamnya dapat dilihat input / kondisi, state proses, output / aksi yang terjadi dan perubahan state. Komponen dasar state transition diagram dapat dilihat pada Gambar 2.3.
27
State X
State sekarang
Input Output
State X Gambar 2.7.
State selanjutnya
Komponen Dasar State Transition Diagram Sumber: Kowal (1988).
State, menunjukkan satu atau lebih kegiatan atau keadaan atau atribut yang menjelaskan bagian tertentu dari proses. Anak panah berarah, menunjukkan perubahan state yang disebabkan oleh input tertentu (state X ke state Y). Input / kondisi merupakan suatu kejadian pada lingkungan eksternal yang dapat dideteksi oleh sistem, misal sinyal, interupsi atau data. Hal ini menyebabkan perubahan dari satu state ke state lainnya atau dari satu aktivitas ke aktivitas lainnya. Output / aksi merupakan hal yang dilakukan oleh sistem jika terjadi perubahan state atau merupakan reaksi terhadap kondisi. Aksi dapat menghasilkan output, tampilan pesan pada layar, kalkulasi atau kegiatan lainnya.
2.5.2. Pseudocode Pseudocode adalah suatu bahasa umum yang menggunakan kosa kata dari satu bahasa (misal: bahasa Inggris) dan perintah (syntax) dari bahasa yang lain (misal: bahasa pemrograman terstruktur). (Pressman, 1997, p411)
28 Pseudocode adalah suatu bahasa pemrograman yang informal dan sangat fleksibel, yang tidak dimaksudkan untuk dieksekusi pada mesin, tetapi hanya digunakan untuk mengorganisir cara berpikir pemrogram sebelum melakukan coding. (Pege-Jones, 1980, p11) Pseudocode dapat menjadi alternatif dalam perancangan perangkat lunak di samping alat bantu berupa diagram. Tidak ada standarisasi dalam hal penulisan pseudocode. Pemrogram dapat menulisnya dalam bahasa apa saja yang mereka sukai dan dipadukan dengan bahasa pemrograman tertentu. Pemrogram juga bebas menggunakan teknik dan aturannnya sendiri.