Tahapan Proses Penerjemahan Program Analisis Leksikal, Besaran Leksik, dan Code Highlighting

Pada saat itu, proses penerjemahantranslasi merupakan pekerjaan yang sulit serta memerlukan ketelitian dan ketepatan. Sehingga dibangun suatu program yang disebut assembler untuk melakukan pekerjaan tersebut. Namun, pada saat tersebut biaya pengoperasian komputer jauh lebih tinggi dibandingkan dengan biaya untuk menggaji pemrogram. Seiring berkembangnya komputer, proses penerjemahan bahasa rakitan dengan menggunakan assembler menjadi lebih efektif. Dengan pemanfaatan bahasa rakitan, program menjadi lebih terstruktur dan lebih mudah untuk dipahami. Tetapi, program yang ditulis dengan bahasa rakitan menjadi lebih rumit untuk dipahami dan dijalankan oleh komputer; Program terlebih dahulu harus diterjemahkan menjadi bahasa mesin sebelum dapat dijalankan. Kemudian, untuk memperluas pemanfaatan bahasa pemrograman, maka pengembang perangkat lunak mengembangkan bahasa pemrograman yang lebih baik. Bahasa pemrograman ini digolongkan sebagai bahasa pemrograman tingkat tinggi high level language. Bahasa pemrograman berkembang menjadi semakin mudah untuk digunakan oleh para pemrogram. Bahasa pemrograman tingkat tinggi memerlukan tambahan tahapan proses untuk penerjemahan sebelum dapat dijalankan oleh komputer. Tetapi, waktu yang diperlukan untuk melakukan penerjemahan tidak menjadi masalah yang signifikan. Sejalan dengan perkembangan kecepatan komputasi, waktu yang diperlukan untuk menerjemahkan kode program bahasa tingkat tinggi menjadi bahasa mesin menjadi semakin singkat. Serangkaian bahasa pemrograman tingkat tinggi yang telah dikembangkan, diantaranya: COBOL, Fortran, Pascal, C.

2.2 Tahapan Proses Penerjemahan Program

Program yang ditulis dengan menggunakan bahasa pemrograman tingkat tinggi terdiri atas huruf, angka, dan simbol-simbol. Sedangkan, komputer dijalankan berdasarkan bahasa tingkat rendah low level language yang disebut kode mesin, yang merupakan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009. serangkaian angka-angka. Sehingga, sebelum dapat dijalankan, kode sumber harus melalui serangkaian tahapan proses transformasi, seperti tampak pada Gambar 2.2. Gambar 2.2 Tahapan Proses Transformasi Kode Sumber Sumber: Practical C Programming Program berasal dari ide dan gagasan pemrogram. Melalui teks editor, ide dan gagasan tersebut direalisasikan menjadi kode sumber source code. Seperti tampak pada Gambar 2.2, kode sumber akan diterjemahkan oleh compiler menjadi kode rakitan assembly code. Berikutnya, kode rakitan diterjemahkan menjadi berkas kode objek object code oleh assembler. Kemudian, linker menggabungkan berkas kode objek dengan rutin-rutin yang telah didefinisikan terlebih dahulu predefined routines yang berada di dalam pustaka standar standard library dan menghasilkan program yang dapat dijalankan executable program yang merupakan sekumpulan instruksi dalam bahasa mesin. Dewasa ini, kebanyakan sistem pemrograman programming system juga menyediakan program pembungkus wrapper, yaitu program yang digunakan untuk Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009. memanggil compiler, assembler, dan linker secara runtun. Bahkan beberapa sistem pemrograman menyediakan lingkungan pengembangan terpadu Integrated Development Environment. Sebuah paket IDE dapat terdiri atas editor, compiler, assembler, linker, debugger, dan sebagainya.

2.3 Rekayasa Perangkat Lunak

Rekayasa perangkat lunak merupakan kegiatan penspesifikasian, perancangan, pengimplementasian, pemvalidasian, penyebaran, dan pemeliharaan sistem sebagai satu kesatuan.

2.3.1 Proses Perangkat Lunak

Proses perangkat lunak merupakan proses yang sangat rumit dan bergantung pada penilaian manusia. Karena dibutuhkan penilaian dan kreativitas, keberhasilan usaha untuk mengotomasi proses perangkat lunak menjadi terbatas. Satu alasan mengapa otomasi proses memiliki cakupan yang terbatas adalah adanya keragaman proses perangkat lunak. Proses telah berkembang untuk mengeksploitasi kemampuan manusia dan karakteristik spesifik sistem yang dikembangkan. Maka, bisa jadi terdapat banyak proses yang digunakan untuk pengembangan perangkat lunak. Walaupun terdapat banyak proses perangkat lunak, terdapat kegiatan- kegiatan mendasar yang umum bagi semua proses perangkat lunak adalah: 1. Penspesifikasian perangkat lunak. Mendefinisikan fungsionalitas perangkat lunak dan batasan operasinya. 2. Perancangan dan implementasi perangkat lunak. Merancang dan membangun perangkat lunak yang memenuhi persyaratan. 3. Pemvalidasian perangkat lunak. Menjamin bahwa perangkat lunak bekerja sesuai dengan apa yang diinginkan. 4. Pengevolusian perangkat lunak. Perangkat lunak harus dapat dikembangkan untuk menghadapi kebutuhan yang berubah. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009. Walaupun tidak terdapat proses perangkat lunak yang ideal, terdapat banyak cakupan untuk memperbaiki proses perangkat lunak. Perbaikan proses perangkat lunak dapat diimplementasikan dengan sejumlah cara. Hal ini bisa dilakukan melalui standarisasi proses, sehingga keragaman proses perangkat lunak dapat diperkecil.

2.3.1.1 Spesifikasi Perangkat Lunak

Spesifikasi perangkat lunak ditujukan untuk menetapkan layanan apa yang dituntut dari sistem dan batasan pada operasi dan pengembangan perangkat lunak IDE. Disebut juga dengan rekayasa persyaratan. Rekayasa persyaratan merupakan tahap yang sangat kritis dari proses perangkat lunak karena kesalahan pada tahap ini akan menimbulkan kesalahan pada perancangan dan implementasi sistem. Pada proses spesifikasi perangkat lunak akan dihasilkan dokumen persyaratan yang merupakan spesifikasi sistem. Persyaratan direpresentasikan pada dua tingkat perincian, yaitu persyaratan tingkat tinggi dan persyaratan tingkat rendah.

2.3.1.2 Perancangan dan Implementasi Perangkat Lunak

Perancangan perangkat lunak merupakan deskripsi struktur perangkat lunak yang akan diimplementasikan. Kegiatan-kegiatan pada proses perancangan di antaranya adalah perancangan arsitektural, spesifikasi abstrak, perancangan interface, perancangan komponen, perancangan struktur data, perancangan algoritma. Rancangan dikembangkan secara iteratif melalui versi demi versi yang berbeda. Proses perancangan melibatkan penambahan formalitas dan perincian ke dalam rancangan sementara, dan penelusuran balik untuk memperbaiki rancangan yang terdahulu. Pada perancangan perangkat lunak dapat dilakukan pendekatan dengan metode terstruktur. Pendekatan metode terstruktur merupakan serangkaian notasi dan panduan perancangan perangkat lunak. Penggunaan metode terstruktur melibatkan produksi model sistem grafis dan menghasilkan dokumentasi perancangan dalam Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009. jumlah besar. Metode terstruktur mendukung beberapa model sistem, satu diantaranya adalah model aliran data data flow model. Pada model aliran data, sistem dimodelkan dengan menggunakan transformasi data yang terjadi pada saat pemrosesannya. Tahap implementasi pengembangan perangkat lunak merupakan proses transformasi spesifikasi perangkat lunak menjadi perangkat lunak yang dapat dijalankan. Tahap ini mencakup perancangan dan pemrograman perangkat lunak. Pemrograman merupakan kegiatan yang subjektif dan tidak terdapat proses umum untuk diikuti. Pemrograman juga meliputi kegiatan pengujian kode program yang dikembangkan. Ketika ditemukan kesalahan error, maka pemrogram harus mencari letak kesalahan dan memperbaiki kesalahan debugging.

2.3.1.3 Validasi Perangkat Lunak

Validasi atau disebut juga dengan verifikasi dan validasi V V, ditujukan untuk menunjukkan bahwa perangkat lunak sesuai dengan spesifikasinya, validasi melibatkan proses pemeriksaan pada setiap tahap proses perangkat lunak dari definisi persyaratan sampai pengembangan program. Proses validasi meliputi tahapan: 1. Pengujian unit, yaitu menguji komponen individual untuk menjamin operasi yang benar. Setiap komponen diuji secara independen, tanpa komponen sistem yang lain. 2. Pengujian modul, yaitu menguji modul tanpa modul sistem yang lain. Modul merupakan sekumpulan komponen yang berhubungan seperti kelas, tipe data, prosedur, dan fungsi yang berhubungan. 3. Pengujian subsistem, yaitu melibatkan pengujian sekumpulan modul yang telah dintegrasikan menjadi subsistem. 4. Pengujian sistem, yaitu menguji sistem yang terdiri atas subsistem-subsistem. Proses ini berkenaan dengan penemuan kesalahan yang diakibatkan dari interaksi Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009. antar subsistem. Pengujian sistem berhubungan dengan validasi sistem, yaitu apakah sistem telah memenuhi persyaratan. 5. Pengujian penerimaan, yaitu menguji sistem dengan data riil.

2.3.1.4 Evolusi Perangkat Lunak

Fleksibilitas sistem perangkat lunak merupakan satu di antara alasan utama makin banyaknya perangkat lunak yang digunakan pada sistem besar dan kompleks. Pada perangkat lunak, perubahan dapat dibuat kapan saja pada saat pengembangan sistem ataupun setelah pengembangan sistem. Secara historis, terdapat pembatas antara proses pengembangan perangkat lunak dan proses evolusi perangkat lunak pemeliharaan perangkat lunak. Pengembangan perangkat lunak dianggap merupakan kegiatan kreatif di mana sistem perangkat lunak dikembangkan dari konsep awal menjadi sistem yang dapat berjalan. Pemeliharaan perangkat lunak merupakan proses perubahan sistem tersebut setelah digunakan.

2.3.2 Model Proses Perangkat Lunak: Model Proses Air Terjun

Model proses perangkat lunak merupakan representasi abstrak dari proses perangkat lunak. Model proses hanya memberikan informasi parsial mengenai proses perangkat lunak. Model proses perangkat lunak dapat digunakan untuk menjelaskan pendekatan- pendekatan dalam pengembangan perangkat lunak. Satu diantara model proses yang digunakan secara luas adalah model proses air terjun waterfall. Model proses air terjun diilustrasikan pada Gambar 2.3. Model proses air terjun mengambil kegiatan proses dasar seperti spesifikasi, pengembangan, validasi, dan evolusi. Dan merepresentasikannya sebagai fase-fase proses yang berbeda seperti spesifikasi persyaratan, perancangan perangkat lunak, implementasi, pengujian, dan pemeliharaan. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009. Gambar 2.3 Model Air Terjun Seperti tampak pada Gambar 2.3, model proses air terjun dimulai dari fase Definisi Persyaratan, pada fase ini akan dihasilkan dokumen spesifikasi persyaratan. Rancangan perangkat keras dan perangkat lunak pada fase Perancangan Sistem dan Perangkat Lunak disesuaikan dengan dokumen spesifikasi persyaratan. Fase ini akan menghasilkan dokumen spesifikasi sistem dan perangkat lunak. Pada fase Implementasi dan Pengujian Unit, dokumen spesifikasi sistem dan perangkat lunak diimplementasikan ke dalam modul-modul yang terpisah, untuk kemudian diuji secara mandiri. Berikutnya, pada fase Integrasi dan Pengujian Sistem, modul-modul yang dihasilkan pada fase sebelumnya, diintegrasikan dan diuji sebagai suatu sistem perangkat lunak yang utuh. Kemudian pada fase Operasi dan Pemeliharaan Sistem, sistem dan perangkat lunak dioperasikan dan dipelihara, apabila ditemukan cacat bug pada perangkat lunak atau terjadi perubahan kebutuhan sistem, maka model proses air terjun dapat kembali ke fase-fase sebelumnya. Keuntungan model proses air terjun dibandingkan dengan model proses lainnya yaitu, manajemen model proses air terjun sederhana, pemisahan tahapan perancangan sehingga dapat dihasilkan sistem yang lebih berbobot. Walaupun demikian, model proses air terjun memiliki kelemahan yaitu, fase berikutnya tidak boleh dimulai sebelum fase sebelumnya selesai. Definisi Persyaratan Perancangan Sistem dan Perangkat Lunak Implementasi dan Pengujian Unit Integrasi dan Pengujian Sistem Operasi dan Pemeliharaan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009.

2.4 Analisis Leksikal, Besaran Leksik, dan Code Highlighting

Analisis leksikal merupakan tahapan dalam teknik kompilasi untuk mengidentifikasi semua besaran yang membangun suatu bahasa yang terdapat pada suatu masukan. Rutin program yang melakukan tahap analisis leksikal disebut dengan scanner. Scanner menerima masukan berupa untaian karakter, kemudian memilah masukan menjadi besaran leksik lexeme sebelum ditransformasikan menjadi token. Scanner bekerja berdasarkan mesin finite state automata yang ada pada ekspresi regular. Tugas scanner diantaranya: 1. Membaca kode sumber dengan merunut karakter demi karakter. 2. Memisahkan lexeme. 3. Mengenali jenis besaran leksik dan mentransformasi lexeme menjadi token. 4. Mengirimkan token untuk digunakan tahapan analisis berikutnya. 5. Membuang karakter whitespace dan komentar dalam program. 6. Menangani kesalahan. 7. Menangani tabel simbol. Besaran leksik merupakan besaran pembangun suatu bahasa, meliputi: 1. Identifier Dapat berupa keyword atau name. Keyword adalah kata kunci yang telah didefinisikan dan dicadangkan untuk digunakan secara ekslusif oleh suatu bahasa. Sedangkan, name adalah besaran leksik yang didefinisikan oleh pemakai sesuai dengan ekspresi regular yang diterima oleh bahasa tersebut. 2. Nilai konstanta Merupakan konstanta yang terdapat pada suatu bahasa, sesuai ekspresi regular bahasa tersebut. Dapat berupa konstanta bilangan bulat, bilangan pecahan, boolean, karakter, untaian karakter, dan sebagainya. 3. Operator dan delimiter Operator yang diterima bahasa tersebut, misalnya operator aritmatik, operator relasional, dan sebagainya. Delimiter merupakan pemisah besaran leksik dan mempunyai arti khusus didefinisikan di dalam ekspresi regular bahasa tersebut. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide Integrated Development Environment Fortran G77, 2009. Code highlighting merupakan suatu proses pada teks editor untuk memunculkan highlight tiap lexeme sesuai dengan jenis besaran leksiknya. Tugas yang dilakukan pada Code highlighting: 1. Membaca masukan dengan merunut karakter demi karakter. 2. Memisahkan lexeme. 3. Mengenali jenis besaran leksik, karakter whitespace, dan komentar. 4. Mengubah font style dari lexeme sesuai dengan jenisnya.

2.5 Algoritma Kriptografi Klasik: Caesar Cipher