FORTRAN G77
SKRIPSI
JEFRI UMAR 051401042
PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer
JEFRI UMAR 051401042
PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : ANALISIS DAN PERANCANGAN PERANGKAT
LUNAK IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77
Kategori : SKRIPSI
Nama : JEFRI UMAR
Nomor Induk Mahasiswa : 051401042
Program Studi : SARJANA (S1) ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN
ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan, 15 Juli 2009
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Ir. Elviawaty MZ, MT, MM Syahriol Sitorus, S.Si, MIT
NIP 132 306 873 NIP 132 174 687
Diketahui/Disetujui oleh
Departemen Ilmu Komputer FMIPA USU Ketua,
PERNYATAAN
ANALISIS DAN PERANCANGAN PERANGKAT LUNAK IDE (INTEGRATED DEVELOPMENT ENVIRONMENT)
FORTRAN G77
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, 15 Juli 2009
PENGHARGAAN
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpah karunia-Nya, kertas kajian ini berhasil diselesaikan dalam waktu yang telah ditetapkan.
ABSTRAK
IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77 SOFTWARE ANALYSIS AND DESIGN
ABSTRACT
DAFTAR ISI
1.6 Langkah-Langkah Pengerjaan Penelitian 3
1.7 Sistematika Penulisan 4
Bab 2 Landasan Teori 5
2.1 Sejarah Bahasa Pemrograman 5
2.2 Tahapan Proses Penerjemahan Program 6
2.3 Rekayasa Perangkat Lunak 8
2.3.1 Proses Perangkat Lunak 8
2.3.1.1 Spesifikasi Perangkat Lunak 9
2.3.1.2 Perancangan dan Implementasi Perangkat Lunak 9
2.3.1.3 Validasi Perangkat Lunak 10
2.3.1.4 Evolusi Perangkat Lunak 11
2.3.2 Model Proses Perangkat Lunak: Model Proses Air Terjun 11 2.4 Analisis Leksikal, Besaran Leksik, dan Code Highlighting 13 2.5 Algoritma Kriptografi Klasik: Caesar Cipher 14
2.6 Fortran 15
2.6.1 Sejarah Fortran 15
2.6.2 Himpunan Karakter pada Fortran 16
2.6.3 Tipe Data pada Fortran 17
2.6.4 Nama Simbol pada Fortran 18
2.6.5 Pernyataan pada Fortran 18
2.6.6 Struktur Baris pada Fortran 19
2.6.7 Struktur Program pada Fortran 20
2.7 Interaksi Pengguna dengan Fortran 21
Bab 3 Analisis dan Perancangan Perangkat Lunak 23
3.1.1 Kata Tercadang pada Fortran 23
3.1.2 Konstanta pada Fortran 24
3.1.3 Fortran G77 26
3.2 Diagram Aliran Data (Data Flow Diagram) & Kamus Data 30
3.2.1 Diagram Aliran Data Level 0 30
3.2.2 Diagram Aliran Data Level 1 31
3.2.3 Diagram Aliran Data Level 2 34
3.2.4 Diagram Aliran Data Level 3 38
3.2.5 Kamus Data 40
3.3 State Diagram 43
3.4 Perancangan Antarmuka 46
Bab 4 Hasil dan Pembahasan 54
4.1 Antarmuka cryptIDE 54
4.2 Kode Program cryptIDE 70
4.3 Pembahasan cryptIDE 74
4.3.1 Analisis Memory 74
4.3.2 Analisis Storage 77
4.3.3 Analisis Efisiensi 78
Bab 5 Implementasi dan Pengujian 81
5.1 Implementasi 81
5.1.1 Kebutuhan Sistem Minimum (Minimum System Requirement) 81
5.1.2 Pengaturan cryptIDE 81
Lampiran A: Rincian Fungsi getlexeme 89
DAFTAR TABEL
Halaman
Tabel 2.1 Tabel Substitusi dengan Pergeseran Sejauh 3 Huruf 15 Tabel 2.2 Himpunan Karakter Alphabet dan Karakter Angka 17 Tabel 2.3 Himpunan Karakter Khusus dan Karakter Alphabet Tambahan 17
Tabel 3.1 Daftar Kata Tercadang 24
Tabel 3.2 Penanda Baris 25
Tabel 3.3 Daftar Opsi Wrapper 27
Tabel 3.4 Daftar Opsi Compiler 28
Tabel 3.5 Daftar Opsi Assembler 29
Tabel 3.6 Daftar Opsi Linker 29
Tabel 3.7 Kamus Data Diagram Aliran Data 40
DAFTAR GAMBAR
Halaman
Gambar 2.1 Proses Perakitan Program 5
Gambar 2.2 Tahapan Proses Transformasi Kode Sumber 7
Gambar 2.3 Model Air Terjun 12
Gambar 2.4 Struktur Baris pada Fortran 20
Gambar 2.5 Mengolah Kode Sumber Melalui Notepad 21
Gambar 2.6 Memanggil Wrapper 21
Gambar 2.7 Menjalankan Executable 22
Gambar 3.1 Diagram Aliran Data Level 0 30
Gambar 3.2 Diagram Aliran Data Level 1 32
Gambar 3.3 Proses Registrasi 34
Gambar 3.4 Proses Enkripsi / Dekripsi 35
Gambar 3.5 Proses Code Editor 36
Gambar 3.6 Proses Mengolah Opsi-Opsi P/L IDE 37
Gambar 3.7 Proses Compiler Chain 38
Gambar 3.8 Proses Enkriptor 38
Gambar 3.9 Proses Dekriptor 39
Gambar 3.10 Proses Editor 40
Gambar 3.11 State Diagram Bilangan Desimal 43
Gambar 3.12 State Diagram Bilangan Biner 43
Gambar 3.13 State Diagram Bilangan Oktal 44
Gambar 3.14 State Diagram Bilangan Heksadesimal 44
Gambar 3.15 State Diagram Bilangan Pecahan 45
Gambar 3.16 State Diagram Untaian Karakter 45
Gambar 3.17 Jendela Utama Perangkat Lunak IDE 46
Gambar 3.18 Menu File 47
Gambar 3.19 Menu Edit 47
Gambar 3.20 Menu Search 47
Gambar 3.21 Menu Execute 48
Gambar 3.22 Menu Tools 48
Gambar 3.23 Menu Window 49
Gambar 3.24 Jendela Find 49
Gambar 3.25 Jendela Replace 50
Gambar 3.26 Jendela Compiler Options 50
Gambar 3.27 Jendela Environment Options 51
Gambar 3.28 Jendela Editor Options 52
Gambar 3.29 Jendela Register 52
Gambar 3.30 Jendela Compile Progress 53
Gambar 4.1 Jendela Utama cryptIDE 54
Gambar 4.2 Menu File 55
Gambar 4.3 Jendela Open 56
Gambar 4.4 Jendela Save As 56
Gambar 4.6 Jendela Warning (1) 57
Gambar 4.7 Menu Edit 58
Gambar 4.8 Menu Search 58
Gambar 4.9 Jendela Find Text 58
Gambar 4.10 Jendela Replace Text 59
Gambar 4.11 Menu Execute 59
Gambar 4.12 Jendela Compile Progress 60
Gambar 4.13 Jendela Warning (2) 60
Gambar 4.14 Menu Tools 61
Gambar 4.15 Jendela Compiler Options: Dialect 61
Gambar 4.16 Jendela Compiler Options: Optimization 62
Gambar 4.17 Jendela Environment Options: Compiler 64
Gambar 4.18 Jendela Environment Options: Assembler 64
Gambar 4.19 Jendela Environment Options: Linker 65
Gambar 4.20 Jendela Environment Options: Warnings 65
Gambar 4.21 Jendela Environment Options: Directories 66
Gambar 4.22 Jendela Editor Options: General 67
Gambar 4.23 Jendela Editor Options: Syntax 67
Gambar 4.24 Jendela Register 68
Gambar 4.25 Jendela Information (1) 68
Gambar 4.26 Jendela Information (2) 68
Gambar 4.27 Menu Window 69
Gambar 4.28 Menu Popup Toolbar 69
Gambar 4.29 Menu Popup Tab Code Editor 70
Gambar 4.30 Rincian Proses cryptIDE yang Sedang Idle 75 Gambar 4.31 Rincian Proses cryptIDE dengan Satu Berkas Terbuka 75 Gambar 4.32 Rincian Proses Notepad yang Sedang Idle 76
Gambar 4.33 Berkas dan Folder cryptIDE 78
Gambar 4.34 Ilustrasi Perbandingan Lingkungan Kerja 79
Gambar 5.1 Environment Options: Directories 82
Gambar 5.2 Jendela Register Pengguna A 83
Gambar 5.3 Proses Pengolahan Kode Sumber 83
Gambar 5.4 Isi Berkas ‘tes1.4esc’ pada Media Penyimpanan 83
Gambar 5.5 Jendela Register Pengguna B 84
BAB 1
PENDAHULUAN
1.1Latar Belakang
Dewasa ini, pemanfaatan bahasa pemrograman semakin berkembang. Bahkan, bahasa pemrograman digunakan untuk kepentingan akademis, misalnya pengembangan program untuk menyelesaikan suatu persamaan matematik yang kompleks. Satu di antara alasan mengapa pemanfaatan bahasa pemrograman semakin berkembang adalah tersedianya lingkungan pengembangan (development environment) yang mengintegrasikan (integrating) modul-modul yang dibutuhkan sehingga pengembangan program menjadi mudah dan juga kemampuan compiler dapat dimanfaatkan secara maksimal.
Satu di antara bahasa pemrograman yang digunakan adalah Fortran. Fortran merupakan singkatan dari FORmula TRANslator. Fortran merupakan bahasa pemrograman yang dikhususkan untuk melakukan komputasi numerik dan scientific. Compiler Fortran yang umum dipakai di lingkungan akademis adalah Fortran 77.
Tetapi, IDE untuk compiler Fortran 77 masih sangat kurang, sehingga pemanfaatan compiler Fortran 77 tidak maksimal dan diperlukan pengetahuan yang lebih lanjut untuk mengoperasikan compiler Fortran 77.
mengandung modul-modul yang terintegrasi, diantaranya code editor, compiler chain, dan debugger.
Oleh karena itu, maka pada skripsi ini akan dilakukan studi, perancangan, dan pengembangan perangkat lunak IDE untuk Fortran 77. Selain itu, juga akan dilakukan analisis terhadap IDE yang dihasilkan.
1.2Rumusan Masalah
Dari uraian latar belakang, masalah-masalah yang muncul dapat dirumuskan menjadi: 1. Bagaimana merancang dan membangun suatu perangkat lunak IDE yang
mengintegrasikan modul-modul yang dibutuhkan untuk pengembangan program. 2. Apakah pengembangan program dengan perangkat lunak IDE yang akan dibangun
dapat meningkatkan efisiensi dan efektivitas dibandingkan dengan pengembangan program tanpa menggunakan perangkat lunak IDE tersebut.
3. Apakah keotentikan kode sumber dapat dicapai dengan pemanfaatan modul enkripsi/dekripsi yang terintegrasi ke dalam IDE yang akan dibangun.
1.3Batasan Masalah
Supaya pembahasan masalah lebih mendalam dan terperinci, maka pembahasan masalah dibatasi menjadi:
1. IDE yang akan dibangun adalah IDE GNU Fortran G77 versi 2.95 19990728. 2. Tiap pengguna IDE memiliki kode registrasi yang unik.
3. IDE yang akan dibangun terdiri atas modul code editor, compiler chain, enkripsi, dan dekripsi.
4. Code editor hanya melakukan code highlighting.
5. Teknik kriptografi yang digunakan dalam enkripsi dan dekripsi kode sumber adalah Caesar cipher.
1.4Tujuan Penelitian
Adapun tujuan penelitian yang hendak dicapai adalah:
1. Merancang dan membangun perangkat lunak IDE yang mengintegrasikan modul code editor, compiler chain, enkripsi, dan dekripsi.
2. Menganalisis efisiensi dan efektivitas pengembangan program melalui pemanfaatan IDE yang akan dibangun.
3. Menganalisis keaslian (authentication) kode sumber melalui pemanfaatan modul enkripsi/dekripsi yang terintegrasi ke dalam IDE yang akan dibangun.
1.5Manfaat Penelitian
Manfaat penelitian yang hendak dicapai di antaranya:
1. Penelitian dan hasilnya diharapkan dapat digunakan untuk kepentingan akademis dan untuk memperkaya literatur akademis.
2. Efisiensi dan efektivitas pengembangan program serta keotentikan kode sumber dapat dicapai dengan menggunakan perangkat lunak IDE ini.
1.6Langkah-Langkah Pengerjaan Penelitian
Penelitian dikerjakan berdasarkan urutan langkah-langkah berikut: 1. Studi literatur.
2. Analisis dan perancangan perangkat lunak IDE. 3. Implementasi.
4. Pengujian perangkat lunak IDE.
1.7Sistematika Penulisan
Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai berikut:
BAB 1: PENDAHULUAN
Bab ini menjelaskan mengenai latar belakang pemilihan judul skripsi “Analisis dan Perancangan Perangkat Lunak IDE (Integrated Development Environment) Fortran G77”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, langkah-langkah pengerjaan penelitian, dan sistematika penulisan.
BAB 2: LANDASAN TEORI
Bab ini membahas sejarah bahasa pemrograman, tahapan penerjemahan program, rekayasa perangkat lunak, analisis leksikal, algoritma kriptografi klasik, dan Fortran.
BAB 3: ANALISIS DAN PERANCANGAN PERANGKAT LUNAK
Bab ini menguraikan analisis perangkat lunak yang dilakukan serta perancangan perangkat lunak yang sesuai dengan tujuan penelitian.
BAB 4: HASIL DAN PEMBAHASAN
Bab ini digunakan untuk memaparkan perangkat lunak hasil rancangan. Selain itu, bab ini juga menyajikan hasil analisis dari perangkat lunak tersebut.
BAB 5: IMPLEMENTASI DAN PENGUJIAN
Bab ini menjelaskan prasyarat dan syarat yang harus dipenuhi supaya perangkat lunak yang dikembangkan dapat dijalankan secara baik serta pengujian terhadap perangkat lunak tersebut.
BAB 6: KESIMPULAN DAN SARAN
BAB 2
LANDASAN TEORI
2.1Sejarah Bahasa Pemrograman
Pada awal komputer diciptakan, para pemrogram diharuskan untuk memrogram komputer dengan suatu bahasa, dimana tiap instruksi direduksi menjadi serangkaian angka-angka yang dikenal dengan bahasa mesin (machine language). Program yang ditulis dengan bahasa mesin dapat langsung diinputkan kepada komputer, dan dapat dijalankan tanpa perlu diterjemahkan terlebih dahulu. Tetapi, bahasa mesin merupakan bahasa yang sulit dipahami oleh manusia. Oleh karena itu, perekayasa perangkat lunak memilih untuk menulis program dengan menggunakan bahasa sederhana, dimana tiap kata dalam bahasa tersebut mewakili instruksi bahasa mesin. Bahasa ini dikenal dengan bahasa rakitan (assembly language). Kemudian, kode program bahasa rakitan yang ditulis oleh perekayasa perangkat lunak, dirakit (diterjemahkan) oleh pemrogram menjadi kode program bahasa mesin, seperti diilustrasikan pada Gambar 2.1, untuk kemudian diinputkan kepada komputer.
Pada saat itu, proses penerjemahan/translasi 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.2Tahapan Proses Penerjemahan Program
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.
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.3Rekayasa 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.
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.
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.
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).
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.
2.4Analisis 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
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.5Algoritma Kriptografi Klasik: Caesar Cipher
Sebelum komputer ada, kriptografi dilakukan dengan menggunakan pensil dan kertas. Algoritma kriptografi (cipher) yang digunakan saat itu, dinamakan juga algoritma kriptografi klasik dan berbasis karakter, yaitu enkripsi dan dekripsi dilakukan pada setiap karakter informasi. Semua algoritma klasik termasuk ke dalam sistem kriptografi simetri dan digunakan jauh sebelum sistem kriptografi kunci publik ditemukan.
Pada dasarnya, algoritma kriptografi klasik dapat dikelompokkan ke dalam dua macam cipher:
1. Cipher substitusi (substitution cipher) 2. Cipher transposisi (transposition cipher)
Di dalam cipher substitusi, setiap unit plainteks disubstitusikan dengan satu unit cipherteks. Satu “unit” bisa berarti satu huruf, pasangan huruf, atau kelompok lebih dari dua huruf. Algoritma substitusi tertua yang diketahui adalah Caesar cipher yang digunakan oleh kaisar Romawi, Julius Caesar, untuk menyandikan pesan yang ia kirim kepada para gubernurnya.
Tabel 2.1 Tabel Substitusi dengan Pergeseran Sejauh 3 Huruf
Plainteks A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Cipherteks D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Berdasarkan Tabel 2.1, proses enkripsi dan dekripsi dapat dilakukan dengan menggantikan tiap huruf plainteks dengan huruf ciperteks, dan sebaliknya.
Contoh:
Plainteks PROGRAM HELLO
Cipherteks SURJUDP KHOOR
2.6Fortran
Fortran merupakan bahasa yang mendominasi pemrograman pada awal bahasa pemrograman tingkat tinggi diperkenalkan. Fortran telah dipergunakan secara kontinu selama lebih dari setengah abad dalam perhitungan intensif seperti prakiraan cuaca numerik (numerical weather prediction), analisis elemen berhingga (finite element analysis), fluida dinamis komputasional (computational fluid dynamics), fisika
komputasional (computational physics), dan kimia komputasional (computational chemistry). Fortran merupakan satu diantara bahasa pemrograman yang terkenal, yang
digunakan untuk melakukan komputasi dengan unjuk kerja yang tinggi dan program-program untuk mengukur dan meranking superkomputer tercepat di dunia ditulis dengan bahasa Fortran.
2.6.1 Sejarah Fortran
Pada akhir tahun 1953, John W. Backus mengajukan proposal kepada atasannya untuk mengembangkan sebuah alternatif yang lebih efisien dibandingkan dengan bahasa rakitan untuk memrogram mainframe IBM 704. Spesifikasi kasar untuk IBM Mathematical Formula Translating System diselesaikan pada pertengahan tahun 1954.
yang pertama mulai digunakan pada April 1957. Compiler ini merupakan compiler untuk menjanjikan, hal ini dikarenakan pengguna hanya menggunakan bahasa pemrograman tingkat tinggi jika terdapat compiler yang mampu membangkitkan kode dengan unjuk kerja yang setara dengan kode bahasa rakitan yang ditulis secara manual.
Perkembangan berikutnya, FORTRAN diterima secara luas oleh para ilmuwan untuk menulis program yang intensif numerik. Akibatnya pengembang compiler semakin tergerak untuk menghasilkan compiler yang dapat menghasilkan
kode yang lebih cepat dan efisien. Penambahan tipe data complex ke dalam bahasa, membuat FORTRAN secara khusus sesuai dengan pemanfaatan teknik.
Pada tahun 1960, popularitas FORTRAN semakin meluas. Sehingga, perusahaan komputer saingan juga berusaha menyediakan compiler FORTRAN untuk mesin mereka. Pada tahun 1963 terdapat lebih dari 40 compiler FORTRAN. Dikarenakan alasan ini, FORTRAN dianggap sebagai bahasa pemrograman pertama yang digunakan secara luas yang didukung banyak arsitektur komputer.
Perkembangan Fortran sejalan dengan awal evolusi teknologi compiler. Bahkan, banyak diantara perkembangan teori dan rancangan compiler merupakan akibat dari persaingan untuk menghasilkan kode program Fortran yang efisien. Berikutnya, tiap versi Fortran dievolusikan untuk menambah ekstensi bahasa dengan tetap mempertahankan kesesuaian dengan versi-versi sebelumnya. Versi suksesif Fortran diantaranya, menambahkan dukungan terhadap pemrosesan data berbasis karakter (FORTRAN 77), pemrograman larik, pemrograman berbasis modul dan objek (Fortran 90/95), pemrograman berorientasi objek, dan pemrograman generik (Fortran 2003).
2.6.2 Himpunan Karakter pada Fortran
dan karakter alphabet tambahan. Tabel 2.2 dan Tabel 2.3 menampilkan himpunan karakter Fortran secara lengkap.
Tabel 2.2 Himpunan Karakter Alphabet dan Karakter Angka
Huruf A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z
Angka 0 1 2 3 4 5 6 7 8 9
Tabel 2.3 Himpunan Karakter Khusus dan Karakter Alphabet Tambahan
Nama Karakter Karakter variabel, dan fungsi. Tipe data yang dikenali Fortran, diantaranya:
1. INTEGER – bilangan bulat positif dan negatif dan nol.
2. REAL – bilangan pecahan positif dan negatif dan nol.
3. DOUBLE PRECISION – mirip dengan REAL, hanya saja DOUBLE PRECISION
menggunakan memory dua kali lebih banyak dibandingkan REAL, dengan presisi yang lebih baik.
4. COMPLEX – pasangan data REAL dan komponen imajiner.
6. LOGICAL – data Boolean, merepresentasikan true dan false. 7. CHARACTER – untaian karakter.
8. HOLLERITH – tipe data historikal untuk definisi karakter.
2.6.4 Nama Simbol pada Fortran
Nama simbol merupakan deretan karakter yang mengacu pada lokasi memory dan mempunyai arti khusus dalam program Fortran. Sebuah nama simbol dapat terdiri atas karakter alphabet, numerik, dan karakter garis bawah (_). Karakter pertama nama simbol harus merupakan karakter alphabet. Nama simbol pada Fortran dapat mengandung sejumlah karakter, tetapi hanya 32 karakter pertama (standar FORTRAN 77 hanya mengizinkan 6 karakter) yang menentukan dan membedakan antara nama simbol yang satu dan yang lainnya. Nama simbol yang digunakan secara eksternal (nama program, nama subrutin, nama fungsi, dan nama common block) dibatasi sampai 32 karakter penting.
Contoh nama simbol yang benar:
CASH C3PO R2D2 LONG_NAME
Contoh nama simbol yang salah:
X*4 (Mengandung karakter khusus)
3CASH (Tidak diawali dengan karakter alphabet)
2.6.5 Pernyataan pada Fortran
Tipe pernyataan pada Fortran: 1. Pernyataan label (statement labels)
Dengan pernyataan label, dimungkinkan untuk mengacu pada sebuah pernyataan Fortran. Sebuah pernyataan label terdiri atas 1 sampai 5 digit, ditempatkan pada kolom 1 sampai 5 pada baris inisial. Tiap pernyataan label pada program harus unik.
2. Pernyataan yang dapat dieksekusi (executable statements)
Pernyataan executable menspesifikasikan suatu aksi yang dapat dikenali dan merupakan bagian dari sekuens eksekusi dalam sebuah program. Pernyataan executable terdiri atas pernyataan penugasan (assignment statements), pernyataan
kendali (control statements), pernyataan masukan/keluaran (I/O statements). 3. Pernyataan yang tidak dapat dieksekusi (non-executable statements)
Pernyataan yang non-executable merupakan pernyataan yang bukan merupakan bagian dari sekuens eksekusi. Beberapa fungsi yang dilakukan oleh pernyataan yang non-executable, diantaranya mendefinisikan pernyataan fungsi, menspesifikasikan entry points dari subprogram, memuat informasi penyuntingan dan pengaturan, menspesifikasikan unit-unit program, menspesifikasikan penyertaan pernyataan tambahan dari sumber lain, menspesifikasikan karakteristik, pengaturan penyimpanan, dan nilai awal dari data.
2.6.6 Struktur Baris pada Fortran
Pada Fortran dengan format fixed form, tiap baris program sumber mempunyai jenis masing-masing. Jenis baris pada Fortran diantaranya, baris komentar, baris inisial, dan baris sambungan.
maka dapat diorganisasikan menjadi baris sambungan. Baris sambungan ditandai dengan adanya karakter selain spasi dan ‘0’ pada kolom ke-6. Baris sambungan menandakan bahwa baris tersebut adalah sambungan dari baris sebelumnya. Sedangkan, baris inisial adalah baris selain baris komentar dan baris sambungan. Tiap baris inisial pada Fortran dapat mengandung pernyataan label (statement label) pada kolom 1 sampai 5.
Gambar 2.4 Struktur Baris pada Fortran
2.6.7 Struktur Program pada Fortran
Program Fortran dapat mengandung satu atau lebih unit program. Unit program terdiri atas sekuens pernyataan dan baris komentar yang optional. Unit program mendefinisikan lingkup (scope) dari nama simbol dan pernyataan label.
Program Fortran dapat berupa: 1. Program utama
Program utama merupakan unit program yang pertama kali menerima kendali eksekusi. Program utama tidak dapat dipanggil dari subprogram atau dari dirinya sendiri.
2. Subprogram
Subprogram merupakan bagian independen dari kode yang dirancang untuk melakukan suatu tugas tertentu. Subprogram menerima kendali eksekusi ketika direferensikan/dipanggil oleh sebuah pernyataan dari program utama atau
C atau *
pernyataan terletak pada kolom 7-72 kolom 73 dan seterusnya diabaikan
subprogram. Subprogram dapat berupa fungsi (function), subrutin (subroutine), blok data.
2.7Interaksi Pengguna dengan Fortran
Gambaran umum interaksi antara pengguna dengan Fortran tanpa adanya suatu lingkungan pengembangan terpadu (integrated development environment) adalah: 1. Menjalankan aplikasi editor teks, misalnya Notepad.
2. Ide dan atau gagasan pengguna dituangkan menjadi kode sumber melalui aplikasi editor teks tersebut, seperti diperlihatkan pada Gambar 2.5.
Gambar 2.5 Mengolah Kode Sumber Melalui Notepad
3. Menyimpan kode sumber tersebut ke dalam suatu berkas kode sumber dengan ekstensi berkas kode sumber Fortran (*.for, *.f, *.f77. *.f90).
4. Menjalankan Command Prompt untuk memanggil wrapper, seperti diperlihatkan pada Gambar 2.6, atau untuk memanggil compiler, assembler, dan linker.
5. Menjalankan executable hasil kompilasi, seperti diperlihatkan pada Gambar 2.7.
BAB 3
ANALISIS DAN PERANCANGAN PERANGKAT LUNAK
3.1Analisis Bahasa Fortran
Analisis bahasa Fortran mencakup kata tercadang, konstanta, dan opsi-opsi Fortran yang akan disertakan ke dalam perangkat lunak IDE yang akan dibangun.
3.1.1Kata Tercadang pada Fortran
Kata tercadang (reserved word) atau disebut juga dengan kata kunci (keyword), merupakan kata yang mempunyai arti khusus dan digunakan secara eksklusif oleh suatu bahasa. Fortran memiliki 82 kata tercadang, kata tercadang tersebut digunakan secara khusus di dalam Fortran sebagai pernyataan atau bagian pernyataan yang executable maupun yang non-executable. Pada Tabel 3.1, ditampilkan daftar kata
Tabel 3.1 Daftar Kata Tercadang AUTOMATIC BACKSPACE BLOCK BYTE
CALL R CHARACTECLOSE COMMON COMPLEX CONTINUE DATA DECODE
DEFINE DELETE DIMENSION DO
DOUBLE ELSE ELSEIF ENCODE
END LE ENDFIENTRY EQUIVALENCE EXTERNAL FILE FIND FORMAT FUNCTION GO HOLLERITH IF IMPLICIT INCLUDE INQUIRE INTEGER INTRINSIC LOGICAL MAP NAMELIST
OPEN R PARAMETEPAUSE POINTER PRECISION PRINT PROGRAM READ
REAL RECORD RETURN REWIND REWRITE SAVE STATIC STOP
STRUCTURE SUBROUTINE TO TYPE
UNION UNLOCK VIRTUAL VOLATILE
WHILE WRITE
3.1.2Konstanta pada Fortran
Konstanta merupakan nilai data yang tidak dapat diubah selama eksekusi program, konstanta pada Fortran dapat berupa konstanta bilangan bulat, konstanta bilangan pecahan, dan konstanta untai karakter.
Konstanta bilangan bulat pada Fortran, merupakan lexeme yang hanya mengandung karakter angka 0 sampai 9, tidak mengandung bagian pecahan. Konstanta bilangan bulat dapat dinyatakan dengan ekspresi reguler berikut.
{‘+’|’-‘|’’}{
‘0’|’1’|’2’|..|’9’} +
Tabel 3.2 Penanda Basis
Karakter Penanda Basis Basis
‘B’, ’b’ 2 (biner)
‘O’, ’o’ 8 (oktal)
‘X’, ’Z’, ’x’, ’z’ 16 (heksadesimal)
Konstanta bilangan bulat berupa untai karakter dengan karakter penanda basis dapat dinyatakan dengan ekspresi reguler berikut.
{‘+’|’-‘|’’}{
Contoh konstanta bilangan bulat yang valid:
+123
12345
‘12AB’x
B‘01010’
Konstanta pecahan merupakan konstanta yang mengandung titik desimal, bagian pecahan, dan atau eksponen. Konstanta pecahan dapat dinyatakan dengan ekpresi reguler berikut.
{‘+’|’-‘|’’}{
{‘0’|..|’9’}*
Contoh konstanta bilangan pecahan yang valid:
123.45
-.123
123.E45
Konstanta untai karakter merupakan konstanta yang terdiri atas satu atau lebih karakter, yang dapat direpresentasikan oleh prosesor. Tiap karakter dalam konstanta untai karakter dinomori secara terurut dari 1. Konstanta untai karakter diawali dengan karakter ‘”’ atau ‘’’, dan diakhiri dengan karakter yang sama dengan karakter awal. Karakter yang mungkin dikandung pada konstanta untai karakter adalah semua karakter ASCII.
{‘”’}{#0..#25
5} +{‘”’}|
{‘’’}{#0..#25 5}+{‘’’}
Contoh konstanta untai karakter yang valid:
“abcdefghij klmnopq, r’stuvw. Xyz!”
‘1234’’!@#$’
3.1.3Fortran G77
G77 merupakan paket compiler Fortran 77 yang dikembangkan oleh GNU. Versi G77 yang digunakan adalah 2.95. Paket G77 terdiri atas wrapper (g77.exe), compiler (f771.exe), assembler (as.exe), dan linker (ld.exe).
Wrapper dipanggil dengan menyertakan parameter yang terdiri atas opsi
wrapper, opsi compiler, opsi assembler, opsi linker, dan direktori kode sumber
dipanggil dengan suatu parameter yang sesuai, maka wrapper akan memanggil compiler terlebih dahulu untuk mengkompilasi kode sumber Fortran menjadi kode
sumber rakitan. Apabila compiler tidak mengembalikan pesan kesalahan, maka wrapper akan memanggil assembler untuk menerjemahkan kode program rakitan
menjadi kode objek. Apabila assembler juga tidak mengembalikan pesan kesalahan, maka berikutnya linker akan dipanggil. Linker akan menggabungkan kode objek hasil penerjemahan assembler dengan kode objek yang tersimpan pada pustaka (library) Fortran, untuk menghasilkan executable program apabila tidak terdapat kesalahan pada proses penggabungan (linking).
Tabel 3.3 Daftar Opsi Wrapper
Parameter Fungsi
--help Menampilkan dokumentasi bantuan (help) untuk g77. -dumpspecs Menampilkan semua string spesifikasi built-in. -dumpversion Menampilkan versi compiler.
-dumpmachine Menampilkan prosesor tujuan dari compiler. -Wa,<options> Melewatkan <options> kepada assembler. -Wp,<options> Melewatkan <options> kepada preprocessor. -Wl,<options> Melewatkan <options> kepada linker. -Xlinker <arg> Melewatkan <arg> kepada linker.
-save-temps Mempertahankan berkas assembler dan berkas objek. -v Menampilkan program yang dipanggil oleh g77.
-E Hanya melakukan praproses.
-S Hanya melakukan kompilasi.
-c Hanya melakukan kompilasi dan perakitan. -o <file> Menghasilkan keluaran pada <file>.
Proses penerjemahan kode sumber program Fortran menjadi executable program, juga dapat dilakukan secara manual tanpa menggunakan wrapper. Compiler
Parameter yang diberikan pada pemanggilan linker, terdiri atas opsi linker, direktori kode objek, dan daftar pustaka yang digunakan. Beberapa opsi linker yang umum digunakan, ditampilkan pada Tabel 3.6. Jika pemanggilan linker berhasil, maka akan dihasilkan executable yang siap untuk dijalankan.
Tabel 3.4 Daftar Opsi Compiler
Parameter Fungsi
-ffree-form Mengizinkan format program bebas.
-ff90 Menandakan program ditulis dengan dialek
Fortran 90.
-fdollar-ok Mengizinkan ‘$’ untuk digunakan sebagai nama
simbol.
-fno-backslash Memperlakukan ‘\’ sebagai karakter biasa. -fonetrip Menjalankan iteratif DO minimal sekali. -ffixed-line-len
gth-<n> Mengatur panjang maksimum baris menjadi <n>.
-fno-ugly Menolak semua struktur yang ‘buruk’.
-fugly-args Mengizinkan konstanta tidak bertipe dan
konstanta Hollerith dilewatkan sebagai argumen.
-fugly-assign Mengizinkan penugasan biasa terhadap variabel
yang ditugaskan dengan perintah ASSIGN.
-fugly-assumed Mengasumsikan dummy array menjadi array (1). -fugly-comma Menganggap koma pada akhir baris pemanggilan
prosedur sebagai penanda argumen null.
-fugly-complex Mengizinkan struktur kompleks yang buruk. -fugly-init Mengizinkan struktur inisialisasi yang buruk. -fugly-logint Mengizinkan INTEGER dan LOGICAL untuk
dipertukarkan.
-Os Mengoptimasi memory daripada kecepatan.
-ffast-math Meningkatkan kecepatan pemrosesan FP. -fkeep-inline-fu
nctions Mempertahankan kode fungsi walupun telah
tersedia fungsi baris.
-finline-functio
ns Mengintegrasikan fungsi sederhana pada
pemanggil.
-ffunction-cse Mengizinkan alamat fungsi ditempatkan pada
register.
-fgcse Menjalankan Global Common Subexpression
Elimination.
-frerun-cse-afte
r-loop Menjalankan CSE setelah optimisasi perulangan
(loop).
-frerun-loop-opt Menjalankan loop optimiser dua kali.
-msoft-float Menghindari penggunaan perangkat keras FP.
-m80837 Menggunakan perangkat keras FP.
-finit-local-zer
o Menginisialisasi variabel dan array lokal dengan
nilai 0.
Tabel 3.4 Daftar Opsi Compiler (Lanjutan)
Parameter Fungsi
-fcheck-memory-u
sage Memeriksa setiap pengaksesan memory.
-fstack-check Memeriksa stack.
-fverbose-asm Menghasilkan informasi tambahan.
-fxyzzy Menampilkan informasi internal terkait yang
dengan debugging.
-fdebug-kludge Menghasilkan informasi tambahan untuk COMMON
dan EQUIVALENCE .
-fbounds-check Memeriksa batasan subskrip dan substring. -fexceptions Mengizinkan penanganan eksepsi (exception). -fasynchronous-e
xceptions Mendukung eksepsi yang asinkron.
-fnew-exceptions Menggunakan penanganan eksepsi model baru.
-w Mengabaikan peringatan (warning).
-W Memungkinkan peringatan tambahan.
-Winline Memperingati fungsi baris yang tidak valid. -Wuninitialized Memperingati variabel yang tidak diinisialisasi. -Wunused Memperingati variabel yang tidak digunakan.
Tabel 3.5 Daftar Opsi Assembler
Parameter Fungsi
-W Mengabaikan peringatan (warning).
-Z Menghasilkan kode objek walaupun terdapat kesalahan. -o <file> Mengatur nama kode objek keluaran.
--statistics Menampilkan ukuran statistik dari eksekusi. --version Menampilkan versi assembler.
Tabel 3.6 Daftar Opsi Linker
Parameter Fungsi
--noinhibit-e
xec Menghasilkan keluaran walaupun ditemukan kesalahan. -l <libname> Mencari pustaka dengan nama ><libname .
-L <dir> Menambah <dir> ke dalam direktori pencarian pustaka. -o <file> Mengatur nama executable keluaran.
--version Menampilkan informasi versi linker.
--stats Menampilkan statistik penggunaan memory. --verbose Menghasilkan informasi lebih selama linking. --support-old
3.2Diagram Aliran Data (Data Flow Diagram) & Kamus Data
Diagram aliran data merupakan representasi grafis yang mengilustasikan aliran data antar proses. Sedangkan kamus data menspesifikasikan rincian tiap data yang mengalir tersebut.
3.2.1Diagram Aliran Data Level 0
Perangkat lunak IDE (Integrated Development Environment) yang akan dibangun, melakukan interaksi bolak-balik dengan pengguna. Seperti diperlihatkan pada Gambar 3.1, aliran informasi dari pengguna berupa dtKodeSumber, dtReg, dtOpsiCompiler, dtOpsiEditor, dtOpsiEnv, dan dtNamaFile.
Gambar 3.1 Diagram Aliran Data Level 0
Interaksi yang terjadi secara umum adalah, pengguna menuangkan algoritmanya ke dalam perangkat lunak dalam bentuk kode sumber (dtKodeSumber). Pengguna mungkin bekerja dengan berkas kode sumber yang telah ada sebelumnya ataupun pengguna bekerja dengan berkas baru yang kemudian akan disimpan dengan suatu nama, yang dispesifikasikan pada dtNamaFile. Ketika mengeksekusi program yang dikerjakan, pengguna mungkin memiliki preferensi opsi kerja compiler, assembler, dan atau linker, yang direpresentasikan dtOpsiCompiler dan dtOpsiEnv.
(dtOpsiEditor). Untuk memanfaatkan fitur enkripsi dan dekripsi kode sumber, pengguna terlebih dahulu harus meregistrasikan data diri (dtReg).
Setelah menerima masukan informasi dari pengguna, perangkat lunak IDE akan menghasilkan informasi dtInfoDebug, dtKodeObj, dtKodeSumberOut, dtExecutable. Pengguna menerima informasi debugging (dtInfoDebug) seandainya terdapat kesalahan pada kode program pengguna. Apabila tidak ditemukan kesalahan, maka pengguna akan mendapatkan informasi berupa kode objek (dtKodeObj) dan program yang siap untuk dijalankan (dtExecutable). Pengguna juga akan menerima informasi kode sumber keluaran perangkat lunak (dtKodeSumberOut) ketika pengguna melakukan penyimpanan kode sumber.
3.2.2Diagram Aliran Data Level 1
Gambar 3.2 Diagram Aliran Data Level 1
Selain memperlihatkan aliran data dari dan ke pengguna, Gambar 3.2 juga memperlihatkan aliran data antar proses P/L IDE. Data Registrasi (dtReg) dari pengguna ditransformasi oleh proses P1 untuk menghasilkan kunci (dtKunci), yang kemudian diberikan kepada proses Enkripsi/Dekripsi (P2) untuk mengenkripsi dtKodeSumber menjadi dtKodeSumber terenkripsi (dtKodeSumberEnkrip) dan juga untuk mendekripsi dtKodeSumberEnkrip menjadi dtKodeSumber. Proses P2 juga menerima dtOptEnv dari proses P4.
keluaran dari P2 berupa dtKodeSumberEnkrip. Selain itu, proses P3 juga menerima masukan dari P4 berupa data pengaturan editor dan environment, yaitu dtOpsiEditor dan dtOptEnv. Proses P3 menghasilkan FileKodeSumberOut (F1) yang merupakan berkas keluaran ke pengguna. Berkas keluaran tersebut berisi informasi keluaran (dtKodeSumberOut) dan dapat berupa informasi kode sumber biasa atau kode sumber terenkripsi. Ketika akan melakukan kompilasi kode sumber, proses P3 akan menghasilkan nama berkas yang akan dikompilasi (dtNamaFileTemp) kepada proses P5 (Compiler Chain).
Pada Gambar 3.2 juga tampak aliran data dari dan ke proses P4 (Mengolah Opsi-Opsi P/L IDE). Proses P4 menerima aliran data dari pengguna berupa data preferensi opsi-opsi editor, compiler, dan environment. Proses P4 menerjemahkan data preferensi opsi compiler (dtOpsiCompiler) dan environment (dtOpsiEnv) menjadi untai karakter parameter untuk dijalankan oleh compiler (dtOptCompiler) dan environment (dtOptEnv). Proses P4 juga kemudian mendistribusikan data opsi ke
masing-masing proses yang memerlukan, yaitu dtOptEnv ke proses P2, dtOpsiEditor dan dtOptEnv ke proses P3, dtOptCompiler dan dtOptEnv ke proses P5, dan dtOptEnv ke proses P6.
Selain itu, pada Gambar 3.2, proses P5 ketika akan memanggil compiler, assembler, dan linker, proses P5 memerlukan masukan berupa dtNamaFileTemp,
yaitu data nama file yang akan dikompilasi, dtOptCompiler, dan dtOptEnv. Proses P5 akan mengembalikan informasi hasil pemanggilan compiler, assembler, dan linker (dtDebug) ke proses P6 (Menampilkan Info Debug) dan juga dtKodeObj dan dtExcutable ke dalam berkas F2 (FileKodeObj) dan F3 (FileExecutable).
3.2.3Diagram Aliran Data Level 2
Rincian proses P1 (Registrasi) diperlihatkan pada Gambar 3.3. dtReg yang diterima oleh proses P1 diolah oleh proses P1.1 (Mengolah Data Registrasi) untuk disimpan ke dalam berkas F4 (FileRegistrasi). dtKunci yang dihasilkan oleh proses P1 merupakan hasil pengolahan proses P1.2 (Membangkitkan Kunci dari Data Registrasi) dari data registrasi pengguna yang tersimpan di dalam berkas F4.
Gambar 3.3 Proses Registrasi
Gambar 3.4 Proses Enkripsi / Dekripsi
baris-baris kode sumber ke dalam berkas F5 (FileTemp) dan menerima path berkas sementara tersebut (dtNamaFileTemp). dtNamaFileTemp akan diteruskan ke proses P5.
Gambar 3.5 Proses Code Editor
Rincian proses P4 (Mengolah Opsi-Opsi P/L IDE) diperlihatkan pada Gambar 3.6. Informasi preferensi opsi environment pengguna (dtOpsiEnv) menjadi data masukan bagi proses P4.1 (Mengolah & Menerjemahkan Opsi Env) dan kemudian diteruskan ke proses P4.2 (Mengolah File Konfigurasi). Proses P4.1 menerima dtOpsiEnv dan menerjemahkannya menjadi dtOptEnv untuk kemudian didistribusikan ke proses-proses yang membutuhkan. Proses P4.3 (Mengolah & Menerjemahkan Opsi Compiler) menerima masukan informasi preferensi opsi compiler dari pengguna untuk diteruskan ke proses P4.2. Kemudian, Proses 4.3 juga
Selain itu, proses P4.2 juga membaca kembali (retrieve) informasi preferensi opsi dari pengguna yang tersimpan pada berkas-berkas konfigurasi dan mendistribusikan ke proses P4.1, P4.3, dan P4.4.
Gambar 3.6 Proses Mengolah Opsi-Opsi P/L IDE
Gambar 3.7 mengilustrasikan rincian proses Compiler Chain. Proses P5.1 (Initializer) menerima dtOptCompiler, dtOptEnv dan meneruskannya ke proses P5.2 (Memanggil Compiler, Assembler, & Linker). Proses P5.2 memanggil compiler, assembler, dan linker dengan parameter berupa nama berkas yang akan dikompilasi
(dtNamaFileTemp) dan opsi-opsi compiler (dtOptCompiler), dan opsi-opsi environment (dtOptEnv). Apabila pada pemanggilan compiler, assembler, dan linker,
P5.1
3.2.4Diagram Aliran Data Level 3
Gambar 3.8 mengilustrasikan rincian proses Enkriptor. Masukan dtKodeSumber dibaca karakter demi karakter oleh proses P2.2.1 (Membaca Karakter demi Karakter) dan kemudian meneruskan informasi tersebut ke proses P2.2.3 (Substitusi Karakter). Proses P2.2.2 (Membaca Untaian Kunci) menerima masukan dtKunci, membaca untaian kunci satu demi satu, dan meneruskan informasi tersebut ke proses P2.2.2. Proses P2.2.2 menerima masukan karakter-karakter kode sumber (dtKodeSumber) dan mensubstitusikannya dengan tiap untai kunci (dtKunci) dan menghasilkan karakter-karakter terenkripsi (dtKodeSumberEnkrip).
Gambar 3.9 mengilustrasikan rincian proses Dekriptor. Karakter demi karakter dtKodeSumberEnkrip dibaca oleh proses P2.3.1 (Membaca Karakter demi Karakter) dan kemudian meneruskan informasi tersebut ke proses P2.3.3 (Substitusi Karakter). Proses P2.3.2 (Membaca Untaian Kunci) membaca untaian kunci satu demi satu, dan meneruskan informasi tersebut ke proses P2.3.2. Proses P2.3.2 menerima masukan karakter-karakter kode sumber (dtKodeSumberEnkrip) dan mensubstitusikannya dengan tiap untai kunci (dtKunci) dan menghasilkan karakter-karakter semula (dtKodeSumber).
Gambar 3.9 Proses Dekriptor
scanning proses P3.2.2 dan menghasilkan keluaran dtHighlight sesuai dengan jenis
besaran leksik tersebut.
Gambar 3.10 Proses Editor
3.2.5Kamus Data
Tabel 3.7 mendaftarkan rincian data dan berkas yang digunakan pada diagram aliran data yang telah dipaparkan sebelumnya.
Tabel 3.7 Kamus Data Diagram Aliran Data
Nama Data Tipe Data Keterangan
dtKodeSumber TStrings Baris-baris kode sumber
masukan.
dtReg record{firstname,
lastname, company, noReg}
Informasi registrasi.
dtOpsiCompiler set of TOpsiComp Himpunan opsi compiler. dtOpsiEditor set of TOpsiEditor Himpunan opsi editor. dtOpsiEnv set of TOpsiEnv Himpunan opsi environment.
Tabel 3.7 Kamus Data Diagram Aliran Data (Lanjutan)
Nama Data Tipe Data Keterangan
dtInfoDebug TStrings Baris-baris informasi
debugging.
dtKodeObj Binary Kode biner mesin.
dtKodeSumberOut TStrings Baris kode sumber keluaran.
dtExecutable Binary Kode biner yang dapat
dijalankan.
TStrings array of String Baris-baris untai karakter.
firstname String Nama depan pengguna.
lastname String Nama keluarga pengguna.
company String Perusahaan pengguna.
noReg String Nomor registrasi pengguna.
TOpsiComp enum{ffreeform, ff90,
tabsize Integer Ukuran tabulasi dalam hitungan
Tabel 3.7 Kamus Data Diagram Aliran Data (Lanjutan)
Nama Data Tipe Data Keterangan
fontname String Nama font.
fontsize Integer Ukuran font.
ResWrdFont TFont Pengaturan font untuk kata
tercadang.
IntConstFont TFont Pengaturan font untuk konstanta
bilangan bulat.
FloatConstFont TFont Pengaturan font untuk konstanta bilangan pecahan.
CharConstFont TFont Pengaturan font untuk konstanta
untai karakter.
CommentFont TFont Pengaturan font untuk komentar.
TFont record{foreground, bold, italic, underline}
Informasi pengaturan font.
foreground Integer Warna teks.
bold Boolean Status style cetak tebal.
italic Boolean Status style cetak miring.
underline Boolean Status style garis bawah.
dtKunci String Kunci enkripsi/dekripsi berkas
kode sumber.
dtKodeSumberEnkrip TStrings Baris kode sumber terenkripsi. dtOptComp array of String Untai-untai karakter padanan
TOpsiCompiler.
dtOptEnv array of String Untai-untai karakter padanan TOpsiEnv.
dtNamaFileTemp String Path lengkap berkas sementara.
dtDebug TStrings Informasi debugging yang
dikembalikan oleh compiler, assembler, dan linker.
dtNamaFileEXE String Path lengkap executable.
dtHighlight TStrings Baris kode ter-highlight
F1 File Berkas kode sumber keluaran.
F2 File Berkas kode objek.
F3 File Berkas executable.
F4 File Berkas registrasi.
F5 File Berkas kode sumber sementara.
F6 File Berkas konfigurasi compiler.
F7 File Berkas konfigurasi environment.
3.3State Diagram
State diagram (diagram keadaan) merupakan suatu model matematis untuk
merepresentasikan suatu ekspresi reguler yang diterima oleh suatu bahasa. Dari suatu masukan string, dapat diperiksa apakah string tersebut diterima oleh suatu ekspresi reguler atau tidak. Suatu masukan diterima apabila dengan merunut tiap karakter string dari awal sampai akhir, berakhir pada state akhir. Pada Gambar 3.11
diperlihatkan state diagram bilangan desimal. Contoh masukan string yang diterima oleh state diagram bilangan desimal, diantaranya 123 dan +4567.
Gambar 3.11 State Diagram Bilangan Desimal
Gambar 3.12 memodelkan ekspresi reguler bilangan bulat biner ke dalam state diagram. Contoh masukan yang diterima oleh state diagram bilangan biner,
diantaranya “101011”B. Dengan merunut karakter demi karakter dari masukan tersebut, maka dapat dicapai state akhir, yaitu bin.
q2
q2
Gambar 3.13 State Diagram Bilangan Oktal
Ekspresi reguler bilangan bulat oktal dimodelkan pada Gambar 3.13. Contoh masukan yang tidak diterima oleh state diagram bilangan oktal tersebut adalah “1234’O. Dengan merunut tiap karakter pada string masukan tersebut, state terakhir (oct) tidak dapat dicapai. Karakter masukan hanya dapat dirunut sampai karakter kelima (karakter ‘4’), dan state terakhir yang dapat dicapai adalah state q7.
Gambar 3.14 mengilustrasikan state diagram untuk ekspresi reguler bilangan bulat heksadesimal. Contoh masukan yang tidak diterima oleh state diagram tersebut adalah ‘123abc’XZ. Dengan merunut tiap karakter pada string masukan, state akhir dapat dicapai pada karakter kesembilan (karakter ‘X’). Tetapi, string masukan tersebut tidak dapat diterima karena terdapat karakter yang tidak dapat dirunut lagi.
Gambar 3.15 State Diagram Bilangan Pecahan
Gambar 3.15 mengilustrasikan state diagram untuk ekspresi reguler bilangan pecahan. Contoh string masukan yang dapat diterima state diagram tersebut adalah +12.34e56. Urutan state yang dilalui: {q1, q2, q3, q3, q5, q5, q5, q6, q7, q8, q8, float}. Karena, state terakhir yang dilalui adalah float dan tiap karakter dirunut sampai karakter terakhir, maka string masukan tersebut diterima.
Gambar 3.16 State Diagram Untaian Karakter
3.4Perancangan Antarmuka
Antarmuka untuk perangkat lunak IDE yang akan dibangun terdiri atas delapan buah form. Gambar 3.17 mengilustrasikan rancangan antarmuka untuk jendela utama. Pada
rancangan antarmuka jendela utama terdapat menu bar (A), toolbar (B), tab page code editor (C), dan status bar (D).
Status bar
File Edit Search Execute Tools Window
untittled
A
B
C
D
Gambar 3.17 Jendela Utama Perangkat Lunak IDE
Pada Gambar 3.18, menu File terdiri atas submenu New, Open, Recent, Save, Save As, Save All, Close, Close All, Exit. Submenu New digunakan untuk membuka
tab code editor yang baru. Submenu Open digunakan untuk membuka berkas kode
sumber yang telah ada sebelumnya. Submenu Recent digunakan untuk menampilkan daftar nama berkas kode sumber yang diolah sebelumnya. Submenu Save digunakan untuk memutakhirkan berkas kode sumber yang tersimpan. Submenu Save As digunakan untuk menyimpan berkas kode sumber dengan nama lain. Submenu Save All digunakan untuk menyimpan semua berkas kode sumber yang terbuka. Submenu
Close digunakan untuk menutup berkas kode sumber yang sedang aktif. Submenu
Close All digunakan untuk menutup semua berkas kode sumber yang terbuka.
Gambar 3.18 Menu File
Gambar 3.19 memperlihatkan submenu dari menu Edit. Menu Edit terdiri atas submenu Cut, Copy, Paste, dan Select All. Submenu Cut digunakan untuk memindahkan teks terseleksi ke memory. Submenu Copy digunakan untuk menggandakan teks terseleksi ke memory. Sedangkan submenu Paste digunakan untuk memindahkan teks pada memory ke posisi kursor.
Gambar 3.19 Menu Edit
Gambar 3.20 memperlihatkan submenu dari menu Search. Menu Search terdiri atas submenu Find, Replace, dan Search Again. Submenu Find digunakan untuk memanggil jendela Find. Submenu Replace digunakan untuk memanggil jendela Replace. Submenu Search Again digunakan untuk melanjutkan kembali pencarian sebelumnya.
Gambar 3.20 Menu Search
menjalankan compiler, assembler, dan linker. Submenu Run digunakan untuk menjalankan executable hasil kompilasi. Submenu Compile & Run digunakan untuk menjalankan compiler, assembler, linker, dan executable hasil kompilasi. Submenu Compile dan Compile & Run akan memanggil jendela Compile Progress.
Gambar 3.21 Menu Execute
Gambar 3.22 memperlihatkan submenu dari menu Tools. Menu Tools terdiri atas submenu Compiler Options, Environment Options, Editor Options, Configure Toolbar, dan Register. Submenu Compiler Options digunakan untuk memanggil
jendela Compiler Options. Submenu Environment Options digunakan untuk memanggil jendela Environment Options. Submenu Editor Options digunakan untuk memanggil jendela Editor Options. Submenu Configure Toolbar digunakan untuk menampilkan daftar toolbox yang ingin ditampilkan pada toolbar. Submenu Register digunakan untuk memanggil jendela Register.
Gambar 3.22 Menu Tools
Gambar 3.23 Menu Window
Pada Gambar 3.24 diperlihatkan rancangan jendela Find. Jendela Find digunakan untuk merinci pencarian, yaitu teks yang hendak dicari (Text to find) dan opsi-opsi pencarian. Ketika tombol Find ditekan, maka jendela Find akan ditutup dan pencarian dimulai. Teks yang sesuai dengan rincian pencarian akan disorot (Highlighted).
Gambar 3.24 Jendela Find
Case sensitive Whole word
From cursor Entire scope
Replace Text to find
Replace with
Gambar 3.25 Jendela Replace
Pada gambar 3.26 diperlihatkan jendela Compiler Options. Jendela Compiler Options mendaftarkan opsi-opsi compiler yang tersedia dan pilihan opsi compiler
pengguna yang tersimpan sebelumnya. Pengguna dapat memilih opsi compiler sesuai dengan preferensinya, dengan cara memberi tanda centang pada checkbox yang tersedia. Ketika tombol OK ditekan, maka pilihan opsi compiler pengguna akan disimpan ke dalam berkas konfigurasi compiler. Ketika tombol Cancel ditekan, maka jendela Compiler Options akan ditutup dan pilihan pengguna akan diabaikan. Ketika tombol Default ditekan, maka pilihan default akan dimuat.
Gambar 3.26 Jendela Compiler Options
opsi environment pengguna yang tersimpan sebelumnya. Pengguna dapat memilih opsi dengan cara memberi tanda centang. Ketika tombol OK ditekan, maka pilihan opsi pengguna akan disimpan ke dalam berkas konfigurasi. Ketika tombol Cancel ditekan, maka jendela Environment Options akan ditutup dan pilihan pengguna akan diabaikan. Ketika tombol Default ditekan, maka pilihan default akan dimuat.
Gambar 3.27 Jendela Environment Options
Gambar 3.28 memperlihatkan rancangan jendela Editor Options. Jendela Editor Options digunakan untuk mengatur tampilan teks pada editor sesuai dengan