ANALISIS DAN PERANCANGAN PERANGKAT LUNAK IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77 SKRIPSI JEFRI UMAR 051401042 PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA MEDAN 2009 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. ANALISIS DAN PERANCANGAN PERANGKAT LUNAK IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77 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 MEDAN 2009 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. ii PERSETUJUAN Judul Kategori Nama Nomor Induk Mahasiswa Program Studi Departemen Fakultas : ANALISIS DAN PERANCANGAN PERANGKAT LUNAK IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77 : SKRIPSI : JEFRI UMAR : 051401042 : SARJANA (S1) ILMU KOMPUTER : ILMU KOMPUTER : 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 NIP 132 306 873 Syahriol Sitorus, S.Si, MIT NIP 132 174 687 Diketahui/Disetujui oleh Departemen Ilmu Komputer FMIPA USU Ketua, Prof. Dr. Muhammad Zarlis NIP 131 570 434 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. iii 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 JEFRI UMAR 051401042 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. iv 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. Ucapan terima kasih penulis sampaikan kepada Syahriol Sitorus, S.Si, MIT dan Ir. Elviawaty MZ, MT, MM selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada penulis untuk menyempurnakan kajian ini. Panduan ringkas, padat, dan profesional telah diberikan kepada penulis agar dapat menyelesaikan tugas ini. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Ilmu Komputer, Prof. Dr. Muhammad Zarlis dan Syahriol Sitorus, S.Si, M.I.T, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen pada Departemen Ilmu Komputer FMIPA USU, pegawai di Ilmu Komputer FMIPA USU, dan rekan-rekan kuliah. Tidak lupa juga penulis menyampaikan terima kasih kepada Ayahanda Salim dan Ibunda Herlinah yang memberikan dukungan, doa, dan semangat tanpa henti. Terakhir, kepada Yuli dan Yudi yang selalu memberikan inspirasi, kepada Johnny yang selalu memberikan semangat, dan juga kepada Sherly yang selalu mendukung dan memotivasi penulis. Semoga Tuhan Yang Maha Esa memberikan limpahan karunia kepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. v ABSTRAK Fortran merupakan bahasa pemrograman yang dikhususkan untuk melakukan komputasi numerik, sehingga bahasa Fortran sesuai untuk kepentingan akademis. Tetapi bahasa Fortran tidak umum digunakan oleh mahasiswa, hal ini dikarenakan kurang tersedianya lingkungan pengembangan Fortran; Lingkungan pengembangan mengintegrasikan modul-modul yang dibutuhkan untuk pengembangan program. Isu berikutnya yang perlu diperhatikan adalah otentikasi kode sumber. Diperlukan modul tambahan yang terintegrasi ke dalam lingkungan pengembangan untuk melakukan otentikasi kode sumber. Objektif utama dari kajian ini adalah untuk merancang dan membangun IDE Fortran G77 yang mengintegrasikan modul code editor, compiler chain, dan enkripsi/dekripsi. Menganalisis efisiensi dan efektivitas pengembangan program, serta menganalisis otentikasi kode sumber melalui pemanfaatan IDE tersebut. IDE yang dihasilkan, dinamakan dengan cryptIDE. cryptIDE kemudian dianalisis dan diperoleh, bahwa otentikasi kode sumber lebih terjamin serta efisiensi dan efektivitas pengembangan program menjadi lebih baik dengan pemanfaatan cryptIDE. cryptIDE dikembangkan dengan menggunakan Borland Delphi 7 Enterprise. Paket compiler yang digunakan adalah GNU Fortran G77 versi 2.95. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. vi IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77 SOFTWARE ANALYSIS AND DESIGN ABSTRACT Fortran is a programming language that is specialized to do numerical computation, and so, Fortran is suitable for academical use. But Fortran is not popular among the student. This is caused by there are not much Fortran development environment; Development environment integrates modules which are needed in program development. Next concerning issue is source code authentication. Extra module that is integrated to the development environment to authenticate source code is needed. Main objectives of this study is to design and build IDE Fortran G77 that integrates code editor, compiler chain, and encryption/decryption modules. Analyze the efficiency and effectivity of developing program, and also, analyze source code authentication by using the IDE. The IDE is named after cryptIDE. Next, cryptIDE is being analyzed, henced, source code authentication is more safe, and also, the efficiency and effectivity of developing program by using cryptIDE is better. cryptIDE is developed with Borland Delphi 7 Enterprise. Compiler package that is used is GNU Fortran G77 version 2.95. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. vii DAFTAR ISI Halaman Persetujuan Pernyataan Penghargaan Abstrak Abstract Daftar Isi Daftar Tabel Daftar Gambar Bab 1 Pendahuluan 1.1 Latar Belakang 1.2 Rumusan Masalah 1.3 Batasan Masalah 1.4 Tujuan Penelitian 1.5 Manfaat Penelitian 1.6 Langkah-Langkah Pengerjaan Penelitian 1.7 Sistematika Penulisan ii iii iv v vi vii ix x 1 1 2 2 3 3 3 4 Bab 2 Landasan Teori 2.1 Sejarah Bahasa Pemrograman 2.2 Tahapan Proses Penerjemahan Program 2.3 Rekayasa Perangkat Lunak 2.3.1 Proses Perangkat Lunak 2.3.1.1 Spesifikasi Perangkat Lunak 2.3.1.2 Perancangan dan Implementasi Perangkat Lunak 2.3.1.3 Validasi Perangkat Lunak 2.3.1.4 Evolusi Perangkat Lunak 2.3.2 Model Proses Perangkat Lunak: Model Proses Air Terjun 2.4 Analisis Leksikal, Besaran Leksik, dan Code Highlighting 2.5 Algoritma Kriptografi Klasik: Caesar Cipher 2.6 Fortran 2.6.1 Sejarah Fortran 2.6.2 Himpunan Karakter pada Fortran 2.6.3 Tipe Data pada Fortran 2.6.4 Nama Simbol pada Fortran 2.6.5 Pernyataan pada Fortran 2.6.6 Struktur Baris pada Fortran 2.6.7 Struktur Program pada Fortran 2.7 Interaksi Pengguna dengan Fortran 5 5 6 8 8 9 9 10 11 11 13 14 15 15 16 17 18 18 19 20 21 Bab 3 Analisis dan Perancangan Perangkat Lunak 3.1 Analisis Bahasa Fortran 23 23 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. viii 3.1.1 Kata Tercadang pada Fortran 3.1.2 Konstanta pada Fortran 3.1.3 Fortran G77 3.2 Diagram Aliran Data (Data Flow Diagram) & Kamus Data 3.2.1 Diagram Aliran Data Level 0 3.2.2 Diagram Aliran Data Level 1 3.2.3 Diagram Aliran Data Level 2 3.2.4 Diagram Aliran Data Level 3 3.2.5 Kamus Data 3.3 State Diagram 3.4 Perancangan Antarmuka 23 24 26 30 30 31 34 38 40 43 46 Bab 4 Hasil dan Pembahasan 4.1 Antarmuka cryptIDE 4.2 Kode Program cryptIDE 4.3 Pembahasan cryptIDE 4.3.1 Analisis Memory 4.3.2 Analisis Storage 4.3.3 Analisis Efisiensi 54 54 70 74 74 77 78 Bab 5 Implementasi dan Pengujian 5.1 Implementasi 5.1.1 Kebutuhan Sistem Minimum (Minimum System Requirement) 5.1.2 Pengaturan cryptIDE 5.2 Pengujian cryptIDE 81 81 81 81 82 Bab 6 Kesimpulan dan Saran 6.1 Kesimpulan 6.2 Saran 86 86 87 Daftar Pustaka 88 Lampiran A: Rincian Fungsi getlexeme Lampiran B: Rincian Prosedur thighligh 89 91 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. ix DAFTAR TABEL Halaman Tabel 2.1 Tabel Substitusi dengan Pergeseran Sejauh 3 Huruf Tabel 2.2 Himpunan Karakter Alphabet dan Karakter Angka Tabel 2.3 Himpunan Karakter Khusus dan Karakter Alphabet Tambahan Tabel 3.1 Daftar Kata Tercadang Tabel 3.2 Penanda Baris Tabel 3.3 Daftar Opsi Wrapper Tabel 3.4 Daftar Opsi Compiler Tabel 3.5 Daftar Opsi Assembler Tabel 3.6 Daftar Opsi Linker Tabel 3.7 Kamus Data Diagram Aliran Data Tabel 4.1 Daftar Opsi Compiler pada Jendela Compiler Options Tabel 4.2 Opsi Environment pada Jendela Environment Options Tabel 4.3 Alokasi Memory Proses cryptIDE untuk n Buah Berkas Tabel 4.4 Memory yang Digunakan untuk Memuat Sebuah Berkas Tabel 4.5 Rincian Ukuran Berkas dan Folder cryptIDE Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 15 17 17 24 25 27 28 29 29 40 62 66 76 77 78 x DAFTAR GAMBAR Halaman Gambar 2.1 Proses Perakitan Program Gambar 2.2 Tahapan Proses Transformasi Kode Sumber Gambar 2.3 Model Air Terjun Gambar 2.4 Struktur Baris pada Fortran Gambar 2.5 Mengolah Kode Sumber Melalui Notepad Gambar 2.6 Memanggil Wrapper Gambar 2.7 Menjalankan Executable Gambar 3.1 Diagram Aliran Data Level 0 Gambar 3.2 Diagram Aliran Data Level 1 Gambar 3.3 Proses Registrasi Gambar 3.4 Proses Enkripsi / Dekripsi Gambar 3.5 Proses Code Editor Gambar 3.6 Proses Mengolah Opsi-Opsi P/L IDE Gambar 3.7 Proses Compiler Chain Gambar 3.8 Proses Enkriptor Gambar 3.9 Proses Dekriptor Gambar 3.10 Proses Editor Gambar 3.11 State Diagram Bilangan Desimal Gambar 3.12 State Diagram Bilangan Biner Gambar 3.13 State Diagram Bilangan Oktal Gambar 3.14 State Diagram Bilangan Heksadesimal Gambar 3.15 State Diagram Bilangan Pecahan Gambar 3.16 State Diagram Untaian Karakter Gambar 3.17 Jendela Utama Perangkat Lunak IDE Gambar 3.18 Menu File Gambar 3.19 Menu Edit Gambar 3.20 Menu Search Gambar 3.21 Menu Execute Gambar 3.22 Menu Tools Gambar 3.23 Menu Window Gambar 3.24 Jendela Find Gambar 3.25 Jendela Replace Gambar 3.26 Jendela Compiler Options Gambar 3.27 Jendela Environment Options Gambar 3.28 Jendela Editor Options Gambar 3.29 Jendela Register Gambar 3.30 Jendela Compile Progress Gambar 4.1 Jendela Utama cryptIDE Gambar 4.2 Menu File Gambar 4.3 Jendela Open Gambar 4.4 Jendela Save As Gambar 4.5 Jendela Confirm Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 5 7 12 20 21 21 22 30 32 34 35 36 37 38 38 39 40 43 43 44 44 45 45 46 47 47 47 48 48 49 49 50 50 51 52 52 53 54 55 56 56 57 xi Gambar 4.6 Jendela Warning (1) Gambar 4.7 Menu Edit Gambar 4.8 Menu Search Gambar 4.9 Jendela Find Text Gambar 4.10 Jendela Replace Text Gambar 4.11 Menu Execute Gambar 4.12 Jendela Compile Progress Gambar 4.13 Jendela Warning (2) Gambar 4.14 Menu Tools Gambar 4.15 Jendela Compiler Options: Dialect Gambar 4.16 Jendela Compiler Options: Optimization Gambar 4.17 Jendela Environment Options: Compiler Gambar 4.18 Jendela Environment Options: Assembler Gambar 4.19 Jendela Environment Options: Linker Gambar 4.20 Jendela Environment Options: Warnings Gambar 4.21 Jendela Environment Options: Directories Gambar 4.22 Jendela Editor Options: General Gambar 4.23 Jendela Editor Options: Syntax Gambar 4.24 Jendela Register Gambar 4.25 Jendela Information (1) Gambar 4.26 Jendela Information (2) Gambar 4.27 Menu Window Gambar 4.28 Menu Popup Toolbar Gambar 4.29 Menu Popup Tab Code Editor Gambar 4.30 Rincian Proses cryptIDE yang Sedang Idle Gambar 4.31 Rincian Proses cryptIDE dengan Satu Berkas Terbuka Gambar 4.32 Rincian Proses Notepad yang Sedang Idle Gambar 4.33 Berkas dan Folder cryptIDE Gambar 4.34 Ilustrasi Perbandingan Lingkungan Kerja Gambar 5.1 Environment Options: Directories Gambar 5.2 Jendela Register Pengguna A Gambar 5.3 Proses Pengolahan Kode Sumber Gambar 5.4 Isi Berkas ‘tes1.4esc’ pada Media Penyimpanan Gambar 5.5 Jendela Register Pengguna B Gambar 5.6 Berkas ‘tes1.4esc’ pada cryptIDE pengguna B Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 57 58 58 58 59 59 60 60 61 61 62 64 64 65 65 66 67 67 68 68 68 69 69 70 75 75 76 78 79 82 83 83 83 84 84 BAB 1 PENDAHULUAN 1.1 Latar 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. Isu berikutnya yang harus diperhatikan adalah otentikasi kode sumber, yaitu kepemilikan kode sumber. Diperlukan suatu modul untuk mengamankan kode sumber, sehingga kode sumber tersebut dapat diotentikasi, yaitu dapat ditentukan siapa pemilik dari kode sumber tersebut. Idealnya modul tersebut harus terintegrasi ke dalam IDE, tetapi arsitektur IDE yang ada sekarang ini tidak menyediakan fitur seperti yang diharapkan. Menurut Wong dalam IDEs of Change, IDE yang beredar pada umumnya Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 2 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.2 Rumusan 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.3 Batasan 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. 6. IDE yang akan dibangun adalah IDE yang berjalan pada sistem operasi Windows. 7. Perangkat Lunak IDE dibangun dengan Borland Delphi 7. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 3 1.4 Tujuan 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.5 Manfaat 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.6 Langkah-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. 5. Menyusun laporan dan menarik kesimpulan akhir. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 4 1.7 Sistematika 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 ini memuat kesimpulan dari uraian bab-bab sebelumnya dan hasil penelitian yang diperoleh. Bab ini juga memuat saran yang diharapkan dapat bermanfaat untuk pengembangan selanjutnya. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. BAB 2 LANDASAN TEORI 2.1 Sejarah 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. Bahasa Rakitan (Assembly Language) . . 7 A, 4 MOV ADD A, B HALT . . Proses Perakitan (Assembly) Bahasa Mesin (Machine Language) Programmer . . 11 11 1010 0011 0111 0111 0110 . . Gambar 2.1 Proses Perakitan Program Sumber: Practical C Programming Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 6 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.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. 7 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. 8 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 kegiatankegiatan 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. 9 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. 10 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. 11 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 pendekatanpendekatan 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. 12 Definisi Persyaratan Perancangan Sistem dan Perangkat Lunak Implementasi dan Pengujian Unit Integrasi dan Pengujian Sistem Operasi dan Pemeliharaan 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. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 13 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. 14 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 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. Pada Caesar cipher, tiap huruf disubstitusi dengan huruf ke-k berikutnya dari susunan alfabet yang sama. Dalam hal ini, kunci k adalah jumlah pergeseran huruf. Pada Tabel 2.1 diperlihatkan susunan alfabet setelah digeser sejauh 3 huruf (k=3). Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 15 Tabel 2.1 Tabel Substitusi dengan Pergeseran Sejauh 3 Huruf Plainteks Cipherteks A B CFDGEH I J K L M N O P Q R S T U V W X Y Z D E FIGJHK 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.6 Fortran 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 programprogram 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. Manual untuk FORTRAN diterbitkan pada Oktober 1956, dan compiler FORTRAN Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 16 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 Himpunan karakter pada Fortran terdiri dari terdiri atas 26 karakter huruf besar, 26 karakter huruf kecil (karakter alphabet), karakter angka 0 sampai 9, karakter khusus, Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 17 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 Angka A B CFDGEH 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 0 1 253647 8 9 Tabel 2.3 Himpunan Karakter Khusus dan Karakter Alphabet Tambahan Nama Karakter Blank Equal Plus Minus Asterisk Slash Left parenthesis Right parenthesis Comma Decimal point Currency symbol Apostrophe Colon Exclamation point Quotation Mark Underscore Karakter = + * / ( ) , . $ ‘ : ! “ _ 2.6.3 Tipe Data pada Fortran Secara umum, terdapat tiga jenis entitas yang memiliki tipe data, yaitu: konstanta, 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. MPLEX CO 5. DOUBLE – pasangan data DOUBLE PRECISION dan komponen imajiner. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 18 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 Semua pernyataan (statement) pada Fortran dimulai dengan sebuah kata kunci (keyword), kecuali pernyataan penugasan, pernyataan fungsi, dan pernyataan label. Kata kunci merupakan sederetan karakter yang mempunyai arti khusus dan digunakan untuk mengidentifikasi tipe pernyataan. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 19 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. Baris komentar adalah baris yang digunakan secara utuh untuk kegunaan dokumentasi dan baris komentar tidak mempengaruhi eksekusi program. Seperti tampak pada Gambar 2.4, baris komentar mempunyai karakteristik yaitu karakter pada kolom ke-1 adalah ‘C’ atau ‘*’. Tiap baris pada program Fortran dibatasi 72 karakter secara default, artinya karakter pada kolom ke 73 sampai akhir baris akan diabaikan. Jika panjang baris (termasuk karakter dari kolom 1 sampai 6) melebihi 72 karakter, Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 20 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. pernyataan terletak pada kolom 7-72 kolom 73 dan seterusnya diabaikan C atau * pada kolom 1 menandakan pernyataan komentar label terletak pada kolom Karakter selain 0 dan spasi pada kolom 6 menandakan sambungan 1-5 dari baris sebelumnya 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 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 21 subprogram. Subprogram dapat berupa fungsi (function), subrutin (subroutine), blok data. 2.7 Interaksi 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. Gambar 2.6 Memanggil Wrapper Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 22 5. Menjalankan executable hasil kompilasi, seperti diperlihatkan pada Gambar 2.7. Gambar 2.7 Menjalankan Executable Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. BAB 3 ANALISIS DAN PERANCANGAN PERANGKAT LUNAK 3.1 Analisis 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.1 Kata 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 tercadang pada Fortran. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 24 Tabel 3.1 Daftar Kata Tercadang Kata Tercadang .EQV. .FALSE. .AND. .EQ. .GE. .GT..LE. .LT. .NE. .NEQV. .NOT. .OR. .TRUE. .XOR. ACCEPT ASSIGN BACKSPACE BLOCK BYTE AUTOMATIC CALL R CHARACTE CLOSE COMMON CONTINUE DATA DECODE COMPLEX DIMENSION DO DEFINEDELETE ELSEIF ENCODE DOUBLE ELSE LE ENDFIENTRY EQUIVALENCE END FILE FIND FORMAT EXTERNAL FUNCTION GO HOLLERITH IF INCLUDE INQUIRE INTEGER IMPLICIT LOGICAL MAP NAMELIST INTRINSIC OPEN R PARAMETE PAUSE POINTER PRINT PROGRAM READ PRECISION REAL RECORD RETURN REWIND STATIC STOP REWRITESAVE STRUCTURE TO TYPE SUBROUTINE VIRTUAL VOLATILE UNION UNLOCK WHILE WRITE 3.1.2 Konstanta 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’} {‘+’|’-‘|’’}{ + Konstanta bilangan bulat pada Fortran juga dapat berupa untai karakter dengan penanda basis diawal atau diakhir. Penanda basis pada Fortran ditunjukkan pada Tabel 3.2. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 25 Tabel 3.2 Penanda Basis Karakter Penanda Basis Basis 2 (biner) 8 (oktal) 16 (heksadesimal) ‘B’, ’b’ ‘O’, ’o’ ‘X’, ’, ’z’ ’Z’, ’x Konstanta bilangan bulat berupa untai karakter dengan karakter penanda basis dapat dinyatakan dengan ekspresi reguler berikut. {‘+’|’-‘|’’}{ {‘B’|’b’}{‘”’}{‘0’|’1’}+{‘”’}| + }{‘0’|’1’} {‘B’|’b’}{‘’’ {‘’’}| + } {‘”’}{‘B’|’b’ {‘”’}{‘0’|’1’ }| {‘’’}{‘B’|’b’ {‘’’}{‘0’|’1’}+}| {‘O’|’o’}{‘”’}{‘0’|’1’|..|’7’}+{‘”’}| ’o’}{‘’’}{‘0’|’1’|..|’7’} {‘O’| {‘0’|’1’|..|’7’} {‘”’} + {‘’’} {‘0’|’1’|..|’7’} + + {‘’’}| {‘”’}{‘O’|’o’}| {‘’’}{‘O’|’o’}| ’Z’|’x’|’z’}{‘”’}{‘0’|..|’9’|’A’|..|’F’|’a’|..|’f’} {‘X’| + {‘”’} | {‘X’|’Z’|’x’| ’z’}{‘’’}{‘0’|..|’9’|’A’|..|’F’|’a’|..|’f’} + {‘’’} | ’9’|’A’|..|’F’|’a’|..|’f’} {‘”’}{‘0’|..| + ’|’z’} {‘”’}{‘X’|’Z’|’x | {‘’’}{‘0’|..|’9’|’A’|..|’F’|’a’|..|’f’}+’|’z’}} {‘’’}{‘X’|’Z’|’x 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’}*{‘.’}{‘0’|..|’9’}+| Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 26 {‘.’}{‘0’|..|’9’} {‘0’|..|’9’}* + ’e’}{‘+’|’-‘|’’} {’D’|’E’|’d’| + {‘0’|.. |’9’} | {‘0’|..|’9’}+’9’}*| {‘.’}{‘0’|..| {‘0’|..|’9’}+’9’}*{’D’|’E’|’d’|’e’}{‘+’|’-‘|’’} {‘.’}{‘0’|..| {‘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. 5} {‘”’}{#0..#25 + {‘”’}| 5}+{‘’’} {‘’’}{#0..#25 Contoh konstanta untai karakter yang valid: lmnopq, r’stuvw. Xyz!” “abcdefghij k ‘1234’’!@#$’ 3.1.3 Fortran 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 program. Daftar beberapa opsi wrapper ditampilkan pada Tabel 3.3. Ketika wrapper Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 27 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 --help -dumpspecs -dumpversion -dumpmachine -Wa,<options> -Wp,<options> -Wl,<options> <arg> -Xlinker -save-temps -v -E -S -c -o <file> Fungsi Menampilkan dokumentasi bantuan (help) untuk g77. Menampilkan semua string spesifikasi built-in. Menampilkan versi compiler. Menampilkan prosesor tujuan dari compiler. Melewatkan <options> kepada assembler. Melewatkan <options> kepada preprocessor. Melewatkan <options> kepada linker. Melewatkan <arg> kepada linker. Mempertahankan berkas assembler dan berkas objek. Menampilkan program yang dipanggil oleh g77. Hanya melakukan praproses. Hanya melakukan kompilasi. Hanya melakukan kompilasi dan perakitan. Menghasilkan keluaran pada <file>. Proses penerjemahan kode sumber program Fortran menjadi executable program, juga dapat dilakukan secara manual tanpa menggunakan wrapper. Compiler mula-mula dipanggil dengan menyertakan parameter berupa opsi compiler dan direktori kode sumber program. Beberapa opsi compiler yang umum digunakan, ditampilkan pada Tabel 3.4. Apabila pemanggilan compiler berhasil (tidak mengembalikan pesan kesalahan), maka akan dihasilkan kode sumber rakitan. Selanjutnya, assembler dengan menyertakan parameter berupa opsi assembler dan direktori kode sumber rakitan. Beberapa opsi assembler yang umum digunakan, ditampilkan Tabel 3.5. Apabila pemanggilan assembler berhasil, maka akan dihasilkan kode objek dan proses dapat dilanjutkan dengan pemanggilan linker. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 28 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 -ffree-form -ff90 -fdollar-ok -fno-backslash -fonetrip -ffixed-line-len gth-<n> -fno-ugly -fugly-args -fugly-assign -fugly-assumed -fugly-comma -fugly-complex -fugly-init -fugly-logint -Os -ffast-math -fkeep-inline-fu nctions ns -finline-functio -ffunction-cse -fgcse r-loop -frerun-cse-afte -frerun-loop-opt -msoft-float -m80837 -finit-local-zer o -fsyntax-only Fungsi Mengizinkan format program bebas. Menandakan program ditulis dengan dialek Fortran 90. Mengizinkan ‘$’ untuk digunakan sebagai nama simbol. Memperlakukan ‘\’ sebagai karakter biasa. Menjalankan iteratif DO minimal sekali. Mengatur panjang maksimum baris menjadi <n>. Menolak semua struktur yang ‘buruk’. Mengizinkan konstanta tidak bertipe dan konstanta Hollerith dilewatkan sebagai argumen. Mengizinkan penugasan biasa terhadap variabel yang ditugaskan dengan perintah ASSIGN. Mengasumsikan dummy array menjadi array (1). Menganggap koma pada akhir baris pemanggilan prosedur sebagai penanda argumen null. Mengizinkan struktur kompleks yang buruk. Mengizinkan struktur inisialisasi yang buruk. Mengizinkan INTEGER dan LOGICAL untuk dipertukarkan. Mengoptimasi memory daripada kecepatan. Meningkatkan kecepatan pemrosesan FP. Mempertahankan kode fungsi walupun telah tersedia fungsi baris. Mengintegrasikan fungsi sederhana pada pemanggil. Mengizinkan alamat fungsi ditempatkan pada register. Menjalankan Global Common Subexpression Elimination. Menjalankan CSE setelah optimisasi perulangan (loop). Menjalankan loop optimiser dua kali. Menghindari penggunaan perangkat keras FP. Menggunakan perangkat keras FP. Menginisialisasi variabel dan array lokal dengan nilai 0. Memeriksa hanya sintaks. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 29 Tabel 3.4 Daftar Opsi Compiler (Lanjutan) Parameter sage -fcheck-memory-u -fstack-check -fverbose-asm -fxyzzy -fdebug-kludge -fbounds-check -fexceptions -fasynchronous-e xceptions -fnew-exceptions -w -W -Winline -Wuninitialized -Wunused Fungsi Memeriksa setiap pengaksesan memory. Memeriksa stack. Menghasilkan informasi tambahan. Menampilkan informasi internal terkait yang dengan debugging. Menghasilkan informasi tambahan untuk COMMON EQUIVALENC . dan E Memeriksa batasan subskrip dan substring. Mengizinkan penanganan eksepsi (exception). Mendukung eksepsi yang asinkron. Menggunakan penanganan eksepsi model baru. Mengabaikan peringatan (warning). Memungkinkan peringatan tambahan. Memperingati fungsi baris yang tidak valid. Memperingati variabel yang tidak diinisialisasi. Memperingati variabel yang tidak digunakan. Tabel 3.5 Daftar Opsi Assembler Parameter -W -Z -o <file> --statistics --version Fungsi Mengabaikan peringatan (warning). Menghasilkan kode objek walaupun terdapat kesalahan. Mengatur nama kode objek keluaran. Menampilkan ukuran statistik dari eksekusi. Menampilkan versi assembler. Tabel 3.6 Daftar Opsi Linker Parameter xec --noinhibit-e -l <libname> -L <dir> -o <file> --version --stats --verbose -code --support-old Fungsi Menghasilkan keluaran walaupun ditemukan kesalahan. <libname . Mencari pustaka dengan nama > Menambah <dir> ke dalam direktori pencarian pustaka. Mengatur nama executable keluaran. Menampilkan informasi versi linker. Menampilkan statistik penggunaan memory. Menghasilkan informasi lebih selama linking. Mendukung kode lama. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 30 3.2 Diagram 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.1 Diagram 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. Pengguna juga dapat mengatur tampilan editor sesuai dengan preferensinya Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 31 (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.2 Diagram Aliran Data Level 1 Pada Gambar 3.2 diperlihatkan aliran data dari dan ke pengguna melalui proses-proses utama dari perangkat lunak IDE. dtKodeSumber dan dtNamaFile yang berasal dari pengguna ditangani oleh proses P3 (Code Editor). Selain menerima informasi dari pengguna, proses P3 juga menghasilkan informasi ke pengguna, yaitu dtKodeSumberOut. dtReg ditangani oleh proses P1 (Registrasi). Proses P4 (Mengolah Opsi-Opsi P/L IDE) menangani dtOpsiCompiler, dtOpsiEditor, dtOpsiEnv. Proses P6 (Menampilkan Info Debugging) menghasilkan informasi debugging (dtInfoDebug) bagi pengguna. Proses P5 (Compiler Chain) menghasilkan dtKodeObj dan dtExecutable ke pengguna. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 32 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. Pengguna dapat bekerja dengan berkas baru atau berkas yang telah ada sebelumnya. Ketika pengguna bekerja dengan berkas yang telah ada sebelumnya, maka proses P3 memeriksa berkas tersebut, apabila berkas tersebut merupakan berkas kode sumber terenkripsi, maka proses P3 akan memanggil proses P2 untuk melakukan dekripsi. Kemudian apabila pengguna akan menyimpan berkas kode sumber yang dikerjakannya menjadi berkas kode sumber terenkripsi, maka proses P3 akan memanggil proses P2 dengan dtKodeSumber sebagai masukan dan menerima Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 33 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). Proses P6 menerima masukan dtDebug dari P5 dan dtOptEnv dari P4. Kemudian proses P6 mengolah dtDebug menjadi informasi yang dapat dimengerti oleh pengguna (dtInfoDebug). Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 34 3.2.3 Diagram 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 Rincian proses P2 (Enkripsi/Dekripsi) diperlihatkan pada Gambar 3.4. Proses P2.1 (Initializer) menerima masukan dtOptEnv untuk menginisialisasi proses P2, dan dtKunci untuk kemudian didistribusikan ke proses P2.2 (Enkriptor) dan proses P2.3 (Dekriptor). Ketika Proses P2 menerima masukan berupa dtKodeSumberEnkrip, maka proses P2.3 akan melakukan proses dekripsi untuk menghasilkan dtKodeSumber. Sedangkan, ketika proses P2 menerima masukan dtKodeSumber, maka proses P2.2 akan melakukan proses dekripsi untuk menghasilkan dtKodeSumberEnkrip. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 35 Gambar 3.4 Proses Enkripsi / Dekripsi Pada Gambar 3.5 diperlihatkan rincian proses Code Editor. Mula-mula, proses P3 diawali dengan proses inisialisasi oleh proses P3.1 (Initializer). Proses P3.1 mengolah dtOptEnv dan meneruskan dtOpsiEditor ke proses P3.2 (Editor). Proses P3.2 mengolah baris-baris kode sumber yang berasal dari pengguna (dtKodeSumber) dan atau dari berkas sebelumnya (dtKodeSumber). Ketika pengguna akan menyimpan pekerjaannya, maka proses P3.2 akan menghasilkan keluaran baris-baris kode sumber (dtKodeSumber) ke proses P3.4 (Menyimpan Kode Sumber). Ketika pengguna akan mengkompilasi pekerjaannya, maka proses P3.2 terlebih dahulu akan meneruskan baris kode program (dtKodeSumber) ke proses P3.5 (Menulis Kode Sumber Temp). Ketika pengguna memulai dengan berkas yang telah ada sebelumnya, maka proses P3.3 (Loader) akan membaca baris masukan dari berkas (dtNamaFile). Jika berkas merupakan berkas kode sumber terenkripsi, maka proses P3.3 akan membaca baris kode terenkripsi (dtKodeSumberEnkrip) dan mengirimkan ke proses P2 untuk didekripsi menjadi baris kode biasa (dtKodeSumber). Proses P3.3 akan memuatkan baris-baris kode yang tidak terenkripsi (dtKodeSumber) ke proses P3.2 dan juga nama berkas (dtNamaFile) untuk proses P3.4 (Menyimpan Kode Sumber). Ketika pengguna memilih untuk menyimpan pekerjaannya (dtKodeSumber) ke dalam baris kode terenkripsi (dtKodeSumberEnkrip), maka proses P3.4 akan mengirimkan dtKodeSumber ke proses P2 untuk dienkripsi. Proses P3.4 akan menghasilkan dtKodeSumberOut yang dapat merupakan baris kode sumber biasa atau baris kode sumber terenkripsi. Proses P3.5 menerima masukan baris kode (dtKodeSumber), ketika pengguna bermaksud untuk melakukan kompilasi. Proses P3.5 akan menulis Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 36 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 menerima masukan dtOpsiCompiler dari P4.2 untuk diterjemahkan (dtOptCompiler) dan didistribusikan ke proses P5. Proses 4.4 menerima informasi preferensi opsi editor dari pengguna (dtOpsiEditor), meneruskannya ke proses 4.2. Berikutnya proses 4.4 menerima dtOpsiEditor dari proses 4.2 dan mendidtribusikannya tanpa menerjemahkan dtOpsiEditor ke proses P3. Proses 4.2 menerima masukan informasi preferensi compiler (dtOpsiCompiler), environment (dtOpsiEnv), dan editor (dtOpsiEditor) masing-masing dan menyimpan ke berkas F6 (FileKonfigurasiCompiler), F7 (FileKonfigurasiEnv), dan F8 (FileKonfigurasiEditor). Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 37 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, terdapat kesalahan, maka proses P5.2 akan mengembalikan informasi debugging (dtDebug). Tetapi, apabila tidak terdapat kesalahan, maka proses P5.2 akan mengembalikan dtKodeObj, dan dtExecutable. Selain itu, proses P5.2 juga mengirimkan informasi dtNamaFileEXE kepada proses P5.3 (Memanggil Loader). Proses P5.3 menerima informasi nama berkas yang akan dijalankan (dtNamaFileEXE) dan kemudian menjalankan berkas tersebut. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 38 dtOptCompiler dtOptEnv P5.1 dtOptCompiler dtNamaFileTemp dtOptEnv P5.2 P5.3 dtNamaFileEXE Memanggil dtKodeObj dtDebug & Memanggil Loader dtExecutable Gambar 3.7 Proses Compiler Chain 3.2.4 Diagram 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 karakterkarakter terenkripsi (dtKodeSumberEnkrip). Gambar 3.8 Proses Enkriptor Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 39 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 karakterkarakter semula (dtKodeSumber). Gambar 3.9 Proses Dekriptor Rincian proses Editor diilustrasikan pada Gambar 3.10. Proses P3.2.1 (Mengolah dan Menampilkan Kode Sumber) menerima masukan dtKodeSumber dan kemudian meneruskan dtKodeSumber tersebut ke proses P3.2.2 (Scanning Kode Sumber) dan proses P3.2.4 (Melakukan Kompilasi/Eksekusi). Selain itu, proses P3.2.1 juga menerima masukan baris kode sumber terformat (dtHighlight) dari proses P3.2.5 (Highlight Kode Sumber) dan informasi preferensi opsi editor dari proses P3.2.3 (Pengaturan Komponen). Proses P3.2.2 melakukan scanning terhadap masukan kode sumber dari proses P3.2.1 dan kemudian meneruskan hasil scan kepada proses P3.2.5. P3.2.3 menerima informasi preferensi opsi editor, mengatur komponen sesuai dengan preferensi tersebut, dan kemudian meneruskannya ke proses P3.2.1 dan proses P3.2.5. Proses 3.2.4 dipanggil ketika pengguna akan mengkompilasi dan atau mengeksekusi kode sumber. Proses 3.2.4 menerima masukan dtKodeSumber, dan meneruskannya ke proses P3.5. Proses 3.2.5 menentukan jenis besaran leksik dari masukan hasil Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 40 scanning proses P3.2.2 dan menghasilkan keluaran dtHighlight sesuai dengan jenis besaran leksik tersebut. Gambar 3.10 Proses Editor 3.2.5 Kamus 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 dtKodeSumber Tipe Data TStrings dtReg record{firstname, lastname, company, noReg} set of TOpsiComp set of TOpsiEditor set of TOpsiEnv String dtOpsiCompiler dtOpsiEditor dtOpsiEnv dtNamaFile Keterangan Baris-baris kode sumber masukan. Informasi registrasi. Himpunan opsi compiler. Himpunan opsi editor. Himpunan opsi environment. Path lengkap berkas. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 41 Tabel 3.7 Kamus Data Diagram Aliran Data (Lanjutan) Nama Data dtInfoDebug Tipe Data TStrings dtKodeObj dtKodeSumberOut dtExecutable Binary TStrings Binary TStrings firstname lastname company noReg TOpsiComp array of String String String String String enum{ffreeform, ff90, fdollarok, fnobackslash, fonetrip, ffixedlinelength, fnougly, fuglyargs, fuglyassign, fuglyassumed, fuglycomma, fuglycomplex, fuglyinit, fuglylogint, Os, ffastmath, fkeepinlinefunctions, finlinefunctions, ffunctioncse, fgcse, freruncseafterloop, frerunloopopt, msoftfloat, m80837} record{tabsize, fontname, fontsize, ResWrdFont, IntConstFont, FloatConstFont, CharConstFont, CommentFont} enum{finitlocalzero, fsyntaxonly, fcheckmemoryusage, fstackcheck, fverboseasm, fxyzzy, fdebugkludge, fboundscheck, fexceptions, fasynchronousexceptions, fnewexceptions, w, WW, Winline, Wuninitialized, Wunused, W, Z, noinhibitexec} Integer TOpsiEditor TOpsiEnv tabsize Keterangan Baris-baris informasi debugging. Kode biner mesin. Baris kode sumber keluaran. Kode biner yang dapat dijalankan. Baris-baris untai karakter. Nama depan pengguna. Nama keluarga pengguna. Perusahaan pengguna. Nomor registrasi pengguna. Opsi compiler yang tersedia. Pengaturan tampilan editor. Opsi environment yang tersedia. Ukuran tabulasi dalam hitungan spasi. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 42 Tabel 3.7 Kamus Data Diagram Aliran Data (Lanjutan) Nama Data fontname fontsize ResWrdFont String Integer TFont IntConstFont TFont FloatConstFont TFont CharConstFont TFont CommentFont TFont TFont record{foreground, bold, italic, underline} Integer Boolean Boolean Boolean String foreground bold italic underline dtKunci Tipe Data dtKodeSumberEnkrip TStrings dtOptComp array of String dtOptEnv array of String dtNamaFileTemp dtDebug String TStrings dtNamaFileEXE dtHighlight F1 F2 F3 F4 F5 F6 F7 F8 String TStrings File File File File File File File File Keterangan Nama font. Ukuran font. Pengaturan font untuk kata tercadang. Pengaturan font untuk konstanta bilangan bulat. Pengaturan font untuk konstanta bilangan pecahan. Pengaturan font untuk konstanta untai karakter. Pengaturan font untuk komentar. Informasi pengaturan font. Warna teks. Status style cetak tebal. Status style cetak miring. Status style garis bawah. Kunci enkripsi/dekripsi berkas kode sumber. Baris kode sumber terenkripsi. Untai-untai karakter padanan TOpsiCompiler. Untai-untai karakter padanan TOpsiEnv. Path lengkap berkas sementara. Informasi debugging yang dikembalikan oleh compiler, assembler, dan linker. Path lengkap executable. Baris kode ter-highlight Berkas kode sumber keluaran. Berkas kode objek. Berkas executable. Berkas registrasi. Berkas kode sumber sementara. Berkas konfigurasi compiler. Berkas konfigurasi environment. Berkas konfigurasi editor. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 43 3.3 State 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. 0, 1 0, 1 q6 q3 0, 1 ‘ q1 +, -, Ø ‘’ ‘ 0, 1 q7 q4 ‘’ q13 0, 1 q2 B, b B, b q10 q5 ‘’ q8 0, 1 q11 ‘’ q14 Ø bin Ø 0, 1 ‘ q9 ‘ 0, 1 q12 Gambar 3.12 State Diagram Bilangan Biner Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 44 0..7 0..7 q6 q3 0..7 ‘ q1 +, -, Ø ‘’ ‘ 0..7 q7 q4 ‘’ q13 0..7 q2 O, o O, o q10 q5 ‘’ q8 0..7 q11 ‘’ q14 Ø oct Ø 0..7 ‘ q9 ‘ 0..7 q12 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 State Diagram Bilangan Heksadesimal Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 45 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 Gambar 3.16 mengilustrasikan state diagram untuk ekspresi reguler untaian karakter. Contoh masukan yang dapat diterima adalah “sedang belajar”. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 46 3.4 Perancangan 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). File Edit Search Execute Tools Window A untittled B C D Status bar 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. Submenu Exit digunakan untuk menutup perangkat lunak IDE. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 47 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 Gambar 3.21 memperlihatkan submenu dari menu Execute. Menu Execute terdiri atas submenu Compile, Run, dan Compile & Run. Submenu Compile akan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 48 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 memperlihatkan submenu dari menu Window. Menu Window terdiri atas submenu Previous dan Next. Submenu Previous digunakan untuk berpindah ke tab page code editor yang berada di sebelah kiri tab page code editor aktif. Sedangkan, submenu Next digunakan untuk berpindah ke tab page code editor yang berada di sebelah kanan. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 49 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 Pada Gambar 3.25 diperlihatkan rancangan jendela Replace. Rancangan jendela Replace mirip dengan rancangan jendela Find, kecuali pada jendela Replace ditambahkan isian teks pengganti (Replace with) untuk mengganti teks yang ditemukan dan tombol Replace. Ketika tombol Replace ditekan, maka jendela Replace akan ditutup dan pencarian dimulai. Teks yang sesuai dengan rincian pencarian akan diganti dengan teks pengganti. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 50 Text to find Replace with Case sensitive From cursor Whole word Entire scope Replace 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 Pada gambar 3.27 diperlihatkan jendela Environment Options. Jendela Environment Options mendaftarkan opsi-opsi environment yang tersedia dan pilihan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 51 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 opsi yang tersedia. Melalui jendela Editor Options, pengguna dapat menentukan ukuran tab (Tab size), font, ukuran font, dan warna dan gaya dari tiap besaran leksik. Ketika tombol OK ditekan, maka pilihan pengguna akan disimpan pada berkas konfigurasi. Ketika tombol Cancel ditekan, maka pilihan pengguna akan diabaikan. Ketika tombol Default ditekan, maka opsi default akan dimuat. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 52 Gambar 3.28 Jendela Editor Options Gambar 3.29 memperlihatkan rancangan jendela Register. Jendela Register digunakan untuk registrasi pengguna. Dengan melakukan registrasi, maka pengguna dapat menggunakan fasilitas enkripsi/dekripsi kode program. Registrasi pengguna hanya merupakan formalitas, pengguna dapat memasukkan nomor registrasi (Registration Number) sesuai dengan kehendaknya. Registrasi ditujukan untuk mendapatkan nomor registrasi, untuk membangkitkan kunci enkripsi/dekripsi. Ketika tombol OK ditekan, maka informasi registrasi pengguna akan disimpan. Gambar 3.29 Jendela Register Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 53 Gambar 3.30 Jendela Compile Progress Gambar 3.30 memperlihatkan rancangan jendela Compile Progress. Jendela Compile Progress digunakan untuk menampilkan informasi kompilasi, yaitu compiler yang digunakan (Compiler), tahapan kompilasi (Status), dan berkas yang dikompilasi (File). Tombol Cancel digunakan untuk menghentikan kompilasi. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. BAB 4 HASIL DAN PEMBAHASAN 4.1 Antarmuka cryptIDE Pada Gambar 4.1 diperlihatkan jendela utama cryptIDE. Jendela utama terdiri atas menu bar, toolbar, tab page code editor, dan status bar. Gambar 4.1 Jendela Utama cryptIDE Menu bar jendela utama terdiri atas tujuh menu, yaitu: File, Edit, Search, Execute, Tools, Window, Help. Shortcut perintah-perintah dapat berupa kombinasi kunci pada papan kunci (keyboard) dan atau berupa tombol (button), dimana setiap tombol dikelompokkan ke dalam toolbox pada toolbar. Pada cryptIDE, berkas kode Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 55 sumber yang terbuka diorganisasikan ke dalam tab page. Status bar cryptIDE terdiri atas 4 bagian, yaitu: 1. Status posisi baris dan kolom dari kursor. 2. Status penyimpanan berkas kode sumber. 3. Status penyisipan. 4. Status banyak baris berkas kode sumber. Gambar 4.2 Menu File Gambar 4.2 mengilustrasikan daftar submenu File. Menu File terdiri atas submenu New, Open, Recent, Save, Save As, Save All, Close, Close All, dan Exit. Submenu New digunakan untuk membuka berkas kode sumber yang baru pada tab page code editor. Submenu Open digunakan untuk memanggil jendela Open. Gambar 4.3 menampilkan jendela Open. Melalui jendela Open, pengguna dapat menelusuri direktori, kemudian memilih berkas kode sumber yang hendak dibuka. Berkas kode sumber yang dibuka akan dimuat pada tab page code editor yang baru. Submenu Recent digunakan untuk membuka kembali berkas kode sumber yang pernah dibuka sebelumnya. Submenu Save digunakan untuk memutakhirkan berkas kode sumber pada media penyimpanan dengan berkas kode sumber aktif pada tab page. Jika berkas pada tab page belum pernah disimpan ke berkas media penyimpanan, maka jendela Save As akan dipanggil. Jendela Save As ditampilkan pada Gambar 4.4. Submenu Save As digunakan untuk menyimpan berkas kode sumber aktif pada tab page ke berkas lain Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 56 pada media penyimpanan. Submenu Save All digunakan untuk menyimpan semua berkas kode sumber pada tab page. Gambar 4.3 Jendela Open Gambar 4.4 Jendela Save As Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 57 Submenu Close digunakan untuk menutup berkas kode sumber aktif pada tab page. Jika berkas yang akan ditutup belum disimpan, maka akan ditampilkan jendela Confirm, seperti pada Gambar 4.5, untuk melakukan konfirmasi penutupan berkas kode sumber pada tab page. Jika pengguna memilih ‘Yes’, maka berkas tab page akan ditutup dan berkas pada media penyimpanan tidak akan dimutakhirkan. Jika pengguna memilih ‘No’, maka penutupan berkas kode sumber tab page akan dibatalkan. Submenu Close All digunakan untuk menutup semua berkas kode sumber pada tab page. Jika terdapat berkas yang belum disimpan, maka akan muncul jendela konfirmasi untuk tiap berkas yang belum disimpan. Gambar 4.5 Jendela Confirm Submenu Exit digunakan untuk menutup cryptIDE. Jika terdapat berkas pada tab page yang belum disimpan, maka akan muncul jendela Warning, seperti tampak pada Gambar 4.6, untuk memperingatkan pengguna. Jika pengguna memilih ‘Yes’, maka cryptIDE akan ditutup dan perubahan berkas kode sumber yang belum disimpan akan diabaikan. Jika pengguna memilih ‘No’, maka penutupan cryptIDE akan dibatalkan. Gambar 4.6 Jendela Warning (1) Gambar 4.7 mengilustrasikan daftar submen Edit. Menu Edit terdiri atas submenu Cut, Copy, Paste, dan Select All. Submenu Cut digunakan untuk memindahkan teks terseleksi ke clipboard. Submenu Copy digunakan untuk Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 58 menggandakan teks terseleksi ke clipboard. Submenu Paste digunakan untuk menyisipkan teks pada clipboard ke berkas kode sumber aktif tab page pada posisi kursor. Submenu Select All digunakan untuk menyeleksi semua isi dari berkas kode sumber aktif tab page. Gambar 4.7 Menu Edit Pada Gambar 4.8 diperlihatkan daftar submenu dari menu Search. Menu Search terdiri atas submenu Find, Replace, dan Search Again. Submenu Find digunakan untuk memanggil jendela Find Text. Gambar 4.8 Menu Search Gambar 4.9 Jendela Find Text Gambar 4.9 mengilustrasikan jendela Find Text. Pada jendela Find Text, pengguna dapat merinci teks yang hendak ditemukan pada berkas aktif tab page (Text to Find) dan opsi pencarian. Opsi Case Sensitive menentukan teks yang dicari adalah persis sama dengan Text to Find. Opsi Whole Words Only menentukan teks yang Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 59 dicari adalah teks utuh yang sama dengan Text to Find. Opsi From Cursor menentukan posisi pencarian adalah dari posisi kursor sampai akhir berkas. Opsi Entire Scope menentukan posisi pencarian adalah dari awal sampai akhir berkas. Tombol ‘Find’ digunakan untuk memulai pencarian. Submenu Replace digunakan untuk memanggil jendela Replace Text, seperti terlihat pada Gambar 4.10. Pada jendela Replace Text, pengguna dapat merinci teks yang hendak diganti pada berkas aktif tab page (Text to Find), teks pengganti (Replace with), dan opsi pencarian. Opsi pencarian jendela Replace Text sama dengan Opsi pencarian jendela Find Text. Tombol ‘Replace’ digunakan untuk memulai pencarian teks (Text to Find) dan mengganti teks yang ditemukan dengan teks pengganti (Replace with). Gambar 4.10 Jendela Replace Text Submenu Search Again digunakan untuk melanjutkan pencarian (Find atau Replace) sebelumnya. Gambar 4.11 Menu Execute Gambar 4.11 memperlihatkan submenu dari menu Execute. Menu Execute terdiri atas submenu Compile, Run, dan Compile Run. Submenu Compile digunakan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 60 untuk memanggil jendela Compile Progress, seperti yang diperlihatkan pada Gambar 4.12. Ketika jendela Compile Progress dipanggil, maka jendela Compile Progress akan memanggil compiler, assembler, dan linker, untuk menghasilkan executable. Jika tombol ‘Cancel’ ditekan, maka proses kompilasi akan dihentikan. Submenu Run digunakan untuk memanggil executable yang dihasilkan pada proses kompilasi. Submenu Compile Run digunakan untuk memanggil jendela Compile Progress, kemudian memanggil executable hasil kompilasi. Gambar 4.12 Jendela Compile Progress Jika direktori dari compiler, assembler, dan atau linker tidak dispesifikasikan dengan benar, maka proses kompilasi akan dibatalkan dan jendela Warning, seperti tampak pada Gambar 4.13, akan ditampilkan. Solusi terhadap masalah ini adalah dengan menspesifikasikan direktori compiler, assembler, dan linker dengan benar. Gambar 4.13 Jendela Warning (2) Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 61 Gambar 4.14 Menu Tools Gambar 4.14 memperlihatkan submenu dari menu Tools. Menu Tools terdiri atas submenu Compiler Options, Environment Options, Editor Options, Configure Toolbars, dan Register. Submenu Compiler Options digunakan untuk memanggil jendela Compiler Options. Pada jendela Compiler Options opsi-opsi compiler diorganisasikan ke dalam tab page Dialect (tampak pada Gambar 4.15) dan tab page Optimization (tampak pada Gambar 4.16). Jika tombol ‘OK’ ditekan, maka pilihan opsi-opsi tersebut akan disimpan ke dalam berkas konfigurasi compiler (CompOpt.cfg). Jika tombol ‘Cancel’ ditekan, maka pilihan opsi-opsi tersebut akan diabaikan. Jika tombol ‘Default’ ditekan, maka pilihan opsi-opsi dari berkas konfigurasi default compiler (CompOpt.dft) akan dimuat ke jendela Compiler Options. Gambar 4.15 Jendela Compiler Options: Dialect Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 62 Gambar 4.16 Jendela Compiler Options: Optimization Daftar Opsi compiler pada jendela Compiler Options ditampilkan pada Tabel 4.1. Tabel 4.1 Daftar Opsi Compiler pada Jendela Compiler Options Opsi Compiler Program is written in Fortran-90-ish free form Program is written in Fortran-90-ish dialect Allow ‘$’ in symbol names Backslashes ‘\’ in character/hollerith constants not special Take at least one trip through each iterative DO loops Set the maximum line length to Reject all ‘ugly’ construct Allow ‘ugly’ passing arguments Allow ‘ugly’ assignments Allow ‘ugly’ assumed array dimension Allow ‘ugly’ comma Allow ‘ugly’ complex expressions Allow ‘ugly’ initialization Allow ‘ugly’ LOGICAL and INTEGER as potential stand-in Optimize for space rather than speed Improve FP speed by violating ANSI & IEEE rules Ekivalensi -ffree-form -ff90 -fdollar-ok -fno-backslash -fonetrip -ffixed-line-len gth-<n> -fno-ugly -fugly-args -fugly-assign -fugly-assumed -fugly-comma -fugly-complex -fugly-init -fugly-logint -Os -ffast-math Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 63 Tabel 4.1 Daftar Opsi Compiler pada Jendela Compiler Options (Lanjutan) Opsi Compiler Generate code for functions even if they are fully inlined Integrater simple function into their callers Allow function addresses to be held in registers Perform the Global Common Subexpression Elimination Run CSE pass after loop optimizations Run the loop optimizer twice Do not use hardware FP Use hardware FP Ekivalensi nctions -fkeep-inline-fu ns -finline-functio -ffunction-cse -fgcse r-loop -frerun-cse-afte -frerun-loop-opt -msoft-float -m80837 Submenu Environment Options digunakan untuk memanggil jendela Environment Options. Jendela Environment Options mengorganisasikan opsi-opsi yang tersedia ke dalam tab page Compiler (tampak pada Gambar 4.17), Assembler (tampak pada Gambar 4.18), Linker (tampak pada Gambar 4.19), Warning (tampak pada Gambar 4.20), dan Directories (tampak pada Gambar 4.21). Jika tombol ‘OK’ ditekan, maka pilihan opsi-opsi pada tab page Compiler dan Warning akan disimpan ke dalam berkas konfigurasi compiler (CompOpt.cfg), opsi-opsi pada tab page Assembler akan disimpan ke dalam berkas konfigurasi assembler (AssOpt.cfg), opsiopsi pada tab page Linker akan disimpan ke dalam berkas konfigurasi linker (LinkOpt.cfg), dan opsi-opsi tab page Directories akan disimpan ke dalam berkas konfigurasi direktori (DirOpt.cfg). Jika tombol ‘Cancel’ ditekan, maka pilihan opsiopsi tersebut akan diabaikan. Jika tombol ‘Default’ ditekan, maka pilihan opsi-opsi dari berkas-berkas konfigurasi default (*.dft) akan dimuat ke jendela Environment Options. Daftar Opsi environment pada jendela Environment Options ditampilkan pada Tabel 4.2. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 64 Gambar 4.17 Jendela Environment Options: Compiler Gambar 4.18 Jendela Environment Options: Assembler Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 65 Gambar 4.19 Jendela Environment Options: Linker Gambar 4.20 Jendela Environment Options: Warnings Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 66 Gambar 4.21 Jendela Environment Options: Directories Tabel 4.2 Opsi Environment pada Jendela Environment Options Opsi Environment Initialize local variables and arrays to zero Check for syntax errors, then stop Generate code to check every memory access Insert stack checking code into the program Add extra commentary to assembler output Print internal debugging-related info Emit special debugging information for COMMON and EQUIVALENCE Generate code to check subscript and substring bounds Enable exception handling Support asynchronous exceptions Use the new model for exception handling Suppress warnings Generate object file even after errors Create an output file even if errors occur Suppress warnings Enable extra warnings Warn when an inlined function cannot be inlined Warn about uninitialized automatic variables Warn when a variable is unused Ekivalensi zero -finit-local-fsyntax-only y-usage -fcheck-memor -fstack-check -fverbose-asm -fxyzzy e -fdebug-kludg -fbounds-chec k -fexceptions s-exceptions -fasynchronou ons -fnew-excepti -W -Z xec --noinhibit-e -w -W -Winline -Wuninitializ ed -Wunused Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 67 Submenu Editor Options digunakan untuk memanggil jendela Editor Options. Opsi-opsi pada jendela Editor Options diorganisasikan ke dalam tab page General (tampak pada Gambar 4.22) dan tab page Syntax (tampak pada Gambar 4.23). Jika tombol ‘OK’ ditekan, maka pilihan opsi-opsi tersebut akan disimpan ke dalam berkas konfigurasi editor (EdtOpt.cfg). Jika tombol ‘Cancel’ ditekan, maka pilihan opsi-opsi tersebut akan diabaikan. Jika tombol ‘Default’ ditekan, maka pilihan opsiopsi dari berkas konfigurasi default editor (EdtOpt.dft) akan dimuat ke jendela Editor Options. Gambar 4.22 Jendela Editor Options: General Gambar 4.23 Jendela Editor Options: Syntax Submenu Register digunakan untuk memanggil jendela Register, seperti diperlihatkan pada Gambar 4.24. Setelah pengguna melakukan registrasi, maka akan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 68 muncul jendela Information, seperti tampak pada Gambar 4.25, dan informasi registrasi pengguna akan disimpan ke dalam berkas konfigurasi registrasi (reg.cfg). Gambar 4.24 Jendela Register Gambar 4.25 Jendela Information (1) Jika pengguna belum melakukan registrasi, maka pengguna tidak dapat menggunakan fasilitas cryptIDE, yaitu membuka dan menyimpan berkas kode sumber terenkripsi (Fortran Encrypted Source Code). Selain itu, pengguna akan mendapatkan jendela Information, seperti tampak pada Gambar 4.26, ketika akan membuka dan memyimpan berkas kode sumber terenkripsi (*.4esc). Gambar 4.26 Jendela Information (2) Gambar 4.27 memperlihatkan submenu dari menu Window. Menu Window terdiri atas submenu Previous dan Next. Submenu Previous digunakan untuk berpindah ke tab page sebelah kiri tab page berkas kode sumber aktif. Submenu Next Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 69 digunakan untuk berpindah ke tab page sebelah kanan tab page berkas kode sumber aktif. Gambar 4.27 Menu Window Ketika toolbar cryptIDE di-klik kanan, maka akan muncul menu popup, seperti diperlihatkan Gambar 4.28. Menu popup tersebut terdiri atas submenu Main, Edit, Search, Execute, dan Window. Pada menu popup tersebut didaftarkan toolbox yang ditampilkan. Pengguna dapat memilih untuk menampilkan atau tidak menampilkan toolbox tertentu dengan cara memberi atau menghilangkan tanda centang pada submenu tersebut. Gambar 4.28 Menu Popup Toolbar Ketika tab page code editor cryptIDE di-klik kanan, maka akan muncul menu popup, seperti diperlihatkan Gambar 4.29. Menu popup tersebut terdiri atas Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 70 submenu Save, Save As, Save All, Close, Close All, Close All Except This, Cut, Copy, Paste, dan Select All. Gambar 4.29 Menu Popup Tab Code Editor 4.2 Kode Program cryptIDE Code editor pada cryptIDE memanfaatkan komponen TCodeEditor. TCodeEditor diturunkan dari kelas TRichEdit, dengan penambahan beberapa metode dan properti. Beberapa diantaranya memegang peranan penting pada proses code highlighting. deEditor.getlexeme(str: string; var pos: TPoint; function TCo checkonly: boolean): string; Fungsi getlexeme merupakan metode pada kelas TCodeEditor yang bertanggung jawab untuk mengembalikan satu buah lexeme berikutnya dari string masukan str dimulai dari posisi pos. Selama proses getlexeme, posisi pos akan ‘digeser’ ke posisi berikutnya sampai dicapai akhir string str atau sampai ditemukan akhir dari lexeme. Rincian fungsi getlexeme diperlihatkan pada Lampiran A. Proses yang digunakan untuk perolehan lexeme pada code highlighting sedikit berbeda Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 71 dengan proses pada analisis leksikal. Pada proses perolehan lexeme pada code highlighting, karakter whitespace, karakter khusus, dan komentar tidak dibuang, melainkan dikembalikan sebagai lexeme. odeEditor.highlight(var pos: TPoint; str: string); procedure TC Prosedur highlight juga merupakan satu diantara metode kelas TCodeEditor. Prosedur highlight melakukan code highlighting satu baris masukan, dengan cara memanggil fungsi getlexeme dan melakukan analisis tiap lexeme sampai tidak terdapat lexeme yang bisa dikembalikan oleh fungsi getlexeme. Rincian prosedur highlight diperlihatkan pada Lampiran B. Cara kerja metode highlight adalah mula-mula memeriksa apakah baris masukan str merupakan komentar. Jika baris str merupakan komentar, maka baris tersebut akan di-highlight dengan font style komentar. Jika bukan, maka proses dilanjutkan dengan memeriksa lexeme yang dikembalikan dari pemanggilan fungsi me getlexe , dan ditentukan jenis lexeme tersebut, apakah merupakan karakter biasa, komentar, kata tercadang, konstanta bilangan bulat desimal, konstanta bilangan pecahan, konstanta bilangan bulat biner, konstanta bilangan bulat oktal, konstanta bilangan bulat heksadesimal, konstanta untaian karakter, atau kata biasa. erateKey(regNo: Shortstring): Shortstring; function Gen var i: integer; begin result := ''; for i := Length(regNo) downto 1 do result := result + regNo[i]; end; Fungsi GenerateKey merupakan fungsi yang terdapat pada berkas Pcrypt.dll. Fungsi GenerateKey digunakan untuk membangkitkan kunci dari data nomor registrasi pengguna. Algoritma kriptografi yang digunakan adalah algoritma kriptografi klasik Caesar Cipher, dengan pergeseran karakter untuk tiap karakter masukan adalah sebanyak urutan karakter kunci pada tabel ASCII. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 72 ript(cipher, function dec key: Shortstring): Shortstring; var i: integer; begin result := ''; for i := 1 to length(cipher) do begin if ord(cipher[i]) < ord(key[(i mod length(key))+1]) then result := result + chr(256-(ord(key[(i mod length(key))+1])ord(cipher[i]))) else result := result + chr(ord(cipher[i])ord(key[((i-1) mod length(key))+1])); end; end; Fungsi decript merupakan fungsi yang terdapat pada berkas Pcrypt.dll. Fungsi decript digunakan untuk melakukan dekripsi tiap karakter masukan cipher dengan kunci key. ript(plain, function enc key: Shortstring): Shortstring; var i: integer; begin result := ''; for i := 1 to length(plain) do result := result + chr((ord(plain[i])+ ord(key[((i-1) mod length(key))+1])) mod 256); end; Fungsi encript merupakan fungsi yang terdapat pada berkas Pcrypt.dll. Fungsi encript digunakan untuk melakukan enkripsi tiap karakter masukan plain dengan kunci key. Ketika pengguna memilih berkas kode sumber yang akan dibuka, maka cryptIDE akan memeriksa ekstensi berkas kode sumber tersebut. Jika berkas kode sumber tersebut berekstensi *.4esc, maka berkas tersebut merupakan berkas kode sumber terenkripsi. Kemudian cryptIDE akan memeriksa status registrasi pengguna. Jika pengguna telah melakukan registrasi, maka proses berikutnya adalah membaca dan melakukan dekripsi tiap baris berkas kode sumber terenkripsi tersebut dengan kunci yang dibangkitkan dari nomor registrasi, dan menampilkannya ke tab page code editor sampai dicapai akhir dari berkas (end of file) tersebut. Cuplikan kode program berikut merupakan cuplikan kode program untuk membaca, mendekripsi tiap baris Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 73 berkas kode sumber terenkripsi dan kemudian menampilkannya ke tab page code editor. ... AssignFile(f, Ta b.path); reset(f); while (not(eof(f))) do begin readln(f, temp); if (reged) then Tab.codeedtr.Lines.Add(decript(temp, GenKey(regNo))) else Tab.codeedtr.Lines.Add(temp); end; ... Ketika pengguna akan menyimpan suatu berkas kode sumber tab page dengan suatu nama berkas, maka cryptIDE akan memeriksa ekstensi nama berkas kode sumber tersebut untuk menentukan jenis berkas kode sumber tersebut. Jika nama berkas kode sumber tersebut berekstensi *.4esc, maka berkas tersebut merupakan berkas kode sumber terenkripsi. Kemudian cryptIDE akan memeriksa status registrasi pengguna. Jika pengguna telah melakukan registrasi, maka proses berikutnya adalah membaca dan melakukan enkripsi tiap baris berkas kode sumber tab page tersebut dengan kunci yang dibangkitkan dari nomor registrasi, dan kemudian menuliskannya ke berkas sampai dicapai akhir baris berkas tab page tersebut. Cuplikan kode program berikut merupakan cuplikan kode program untuk membaca, mengenkripsi tiap baris berkas kode sumber tab page dan kemudian menuliskannya ke dalam berkas kode sumber. ... veDialogSource.FileName); AssignFile(f, Sa rewrite(f); temp := GenKey(regNo); for i := 0 to (TCodeEditor(PgCtrlSource.Pages[ix].Components[0]).Lines.Count-1) do writeln(f, encript(TCodeEditor(PgCtrlSource.Pages[ix].Components[0]).Lines[i], temp)); CloseFile(f); ... Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 74 4.3 Pembahasan cryptIDE Pembahasan meliputi analisis memory, analisis storage, dan analisis efisiensi pengembangan program dengan menggunakan cryptIDE dibandingkan dengan pengembangan program tanpa menggunakan cryptIDE. 4.3.1 Analisis Memory Memory mengacu pada memory primer sistem komputer. Analisis memory yang akan dibahas meliputi alokasi memory sistem yang dibutuhkan untuk menjalankan cryptIDE dibandingkan dengan tanpa menggunakan cryptIDE. Pengguna dapat memilih untuk melakukan tugas pemrogramannya (programming task) dengan memanfaatkan teks editor biasa ataupun dengan memanfaatkan cryptIDE. Untuk mengukur memory yang dialokasikan untuk mengoperasikan cryptIDE digunakan aplikasi Process Explorer (penelusur proses sistem komputer) yang dikembangkan oleh Sysinternals. Gambar 4.30 memperlihatkan hasil penelusuran proses cryptIDE. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 75 Gambar 4.30 Rincian Proses cryptIDE yang Sedang Idle Pada Gambar 4.30 tampak set kerja (Working Set) memory fisik (Physical Memory) yang dialokasikan untuk proses cryptIDE pada saat idle (tidak terdapat berkas tab page yang terbuka) adalah sebesar 4.684 KiloByte. Sedangkan pada Gambar 4.31, diperlihatkan memory yang dialokasikan untuk proses cryptIDE dengan satu berkas tab page yang terbuka adalah 5.128 KiloByte. Pada Tabel 4.3 diperlihatkan alokasi memory proses cryptIDE untuk n buah berkas tab page yang terbuka. Gambar 4.31 Rincian Proses cryptIDE dengan Satu Berkas Terbuka Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 76 Tabel 4.3 Alokasi Memory Proses cryptIDE untuk n Buah Berkas Banyak berkas Working Set (KB) WS Private (KB) 0 1 2 3 4 5 4.684 5.128 5.148 5.156 5.164 5.180 1.908 1.968 1.972 1.976 1.984 1.996 WS Shareable (KB) 2.776 3.160 3.176 3.180 3.180 3.184 WS Shared (KB) Peak Working Set (KB) 2.688 2.768 2.784 2.788 2.788 2.792 4.696 5.192 5.212 5.216 5.228 5.244 Sebagai perbandingan, pada Gambar 4.32 diperlihatkan proses Notepad. Notepad merupakan satu diantara aplikasi teks editor yang dapat digunakan pengguna untuk mengolah kode sumber. Sebuah proses Notepad hanya dapat membuka satu buah berkas pada suatu saat. Sehingga, untuk mengolah beberapa berkas sekaligus, maka pengguna harus menjalankan beberapa buah proses Notepad sekaligus. Akibatnya, akan terdapat beberapa buah proses Notepad pada memory, dan untuk masing-masing proses akan dialokasikan sejumlah memory dengan ukuran yang kurang lebih sama. Gambar 4.32 Rincian Proses Notepad yang Sedang Idle Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 77 Pada saat pengolahan kode sumber, masing-masing proses akan menggunakan memory lebih besar dari pada saat idle. Pada Tabel 4.4 diperlihatkan perbandingan memory yang digunakan oleh proses cryptIDE dan proses Notepad untuk memuat (open) sebuah berkas kode sumber yang sama. Tabel 4.4 Memory yang Digunakan untuk Memuat Sebuah Berkas Nama Proses Working Set (KB) WS Private (KB) WS Shareable (KB) WS Shared (KB) criptIDE notepad 7.480 6.304 2.636 1.476 4.844 4.828 4.164 4.388 Peak Working Set (KB) 8.704 7.732 Ketika bekerja dengan satu buah berkas, satu proses cryptIDE memanfaatkan memory yang lebih besar dibandingkan dengan satu proses aplikasi teks editor (seperti notepad). Tetapi ketika bekerja dengan beberapa buah berkas, pengguna hanya memerlukan satu proses cryptIDE, maka alokasi memory proses cryptIDE tidak akan meningkat signifikan. Sedangkan, ketika akan mengerjakan beberapa buah berkas dengan aplikasi teks editor, pengguna memerlukan proses aplikasi teks editor sebanyak berkas yang hendak dikerjakan, dimana alokasi memory tiap proses aplikasi teks editor adalah terpisah, maka proses-proses aplikasi teks editor secara keseluruhan akan lebih besar dibandingkan dengan proses cryptIDE. 4.3.2 Analisis Storage Storage mengacu pada memory sekunder sistem komputer, yaitu media penyimpanan data. Storage pada sistem komputer dapat berupa hard disk, optical disk, floppy disk, dan media penyimpanan lainnya. Analisis storage yang akan dibahas meliputi besarnya ruang pada media penyimpanan yang dibutuhkan oleh cryptIDE supaya dapat dijalankan. Pada Gambar 4.33 diperlihatkan berkas dan folder cryptIDE. cryptIDE menggabungkan aplikasi IDE dan aplikasi kompilasi Fortran G77. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 78 Gambar 4.33 Berkas dan Folder cryptIDE Pada Tabel 4.5 diperlihatkan daftar rincian ukuran tiap berkas dan folder beserta fungsinya pada cryptIDE. cryptIDE terdiri atas paket Fortran G77 (folder bin, doc, saved files, dan lib) dan aplikasi cryptIDE sebesar 562 KB (cryptIDE.exe, icon.dll, Pcrypt.dll, dan folder config) ke dalam paket. Tabel 4.5 Rincian Ukuran Berkas dan Folder cryptIDE Nama Berkas / Folder cryptIDE.exe icon.dll Pcrypt.dll bin config doc lib saved files Ukuran (KB) 347 123 87 3389 5 1174 2257 ~ Fungsi Memulai cryptIDE. Ekstensi aplikasi yang berisi icon cryptIDE. Ekstensi aplikasi yang berisi fungsi GenerateKey, encript, dan decript. Folder yang berisi paket kompilator Fortran G77. Folder yang berisi berkas konfigurasi cryptIDE. Folder yang berisi dokumentasi Fortran G77. Folder yang berisi berkas pustaka Fortran G77. Folder yang digunakan untuk sebagai folder default untuk menampung berkas kode sumber pengguna. 4.3.3 Analisis Efisiensi Efisiensi mengacu pada suatu pencapaian dengan tepat guna, yaitu pemanfaatan sumber daya dengan baik untuk mencapai suatu hasil. cryptIDE menggabungkan modul-modul pengembangan program, sehingga pengguna dapat mengembangkan program tanpa harus membuka dan memanggil secara manual beberapa buah aplikasi mandiri yang terpisah. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 79 Pada Gambar 4.34 diilustrasikan perbandingan antara pengembangan program dengan menggunakan cryptIDE dengan pengembangan program tanpa menggunakan cryptIDE. Pada pengembangan program dengan cryptIDE, pengguna dapat melakukan editing, memanggil compiler, memanggil assembler, memanggil linker, dan menjalankan executable melalui cryptIDE. Sedangkan, ketika pengguna mengembangkan program tanpa cryptIDE, pengguna harus melakukan editing kode sumber melalui aplikasi teks editor, untuk memanggil compiler, assembler, linker, atau executable, maka pengguna harus menggunakan aplikasi command prompt untuk melakukannya. Gambar 4.34 Ilustrasi Perbandingan Lingkungan Kerja Ketika sebuah aplikasi dijalankan, maka aplikasi tersebut akan menggunakan sejumlah sumber daya sistem komputer. Apabila pemanfaatan aplikasi tersebut tidak sesuai dengan pekerjaan, misalnya mengandung rutin yang tidak diperlukan, dan atau tidak mengandung rutin yang diperlukan, maka sumber daya tersebut akan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 80 dialokasikan dengan sia-sia. Kemudian, apabila pemanfaatan aplikasi tersebut sesuai dengan pekerjaan tetapi tidak digunakan dengan baik, maka sumber daya yang dialokasikan juga akan menjadi sia-sia. cryptIDE merupakan aplikasi untuk mengembangkan program, cryptIDE memiliki rutin-rutin khusus untuk pengembangan program, dibandingkan dengan aplikasi-aplikasi general purpose seperti teks editor, command prompt, dan lain sebagainya. cryptIDE merupakan aplikasi IDE untuk Fortran G77. Untuk menjalankan cryptIDE, diperlukan sumber daya yang lebih besar dibandingkan dengan aplikasi teks editor dan command prompt. Tetapi, cryptIDE memiliki rutin-rutin yang diperlukan untuk pengembangan program dan sumber daya yang dialokasikan untuk cryptIDE digunakan untuk proses-proses rutin tersebut. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. BAB 5 IMPLEMENTASI DAN PENGUJIAN 5.1 Implementasi Implementasi cryptIDE meliputi kebutuhan minimum sistem dan pengaturan (setting) cryptIDE untuk dapat menjalankan cryptIDE dengan optimal. 5.1.1 Kebutuhan Sistem Minimum (Minimum System Requirement) cryptIDE dapat dijalankan pada komputer dengan sistem operasi Windows 98 ke atas, prosesor dengan kecepatan pemrosesan minimal 833 MHz, 32 MegaByte memory primer, dan ruang pada media penyimpanan sekunder sebesar 8 MegaByte. Berdasarkan uraian kebutuhan minimum cryptIDE tersebut, maka kebutuhan minimum sistem komputer supaya cryptIDE dapat berjalan maksimal adalah: 1. Sistem Operasi Microsoft Windows 98 atau versi yang lebih baik, 2. Prosesor dengan kecepatan pemrosesan 1000 MHz, 3. 64 MegaByte memory primer (RAM), dan 4. 8 MegaByte ruang media penyimpanan sekunder. 5.1.2 Pengaturan cryptIDE cryptIDE dapat dijalankan pada sistem komputer target tanpa perlu diinstalasi terlebih dahulu, hal ini ditujukan supaya cryptIDE dapat digunakan pada sistem komputer mana saja yang memenuhi kebutuhan minimum dan oleh siapa saja yang berminat untuk menggunakannya. Supaya fitur enkripsi/dekripsi kode sumber cryptIDE dapat Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 82 dimanfaatkan, pengguna diharuskan melakukan registrasi terlebih dahulu melalui menu Tools | Register. Registrasi ditujukan untuk memperoleh nomor registrasi pengguna, yang kemudian akan digunakan untuk membangkitkan kunci untuk melakukan enkripsi dan dekripsi kode sumber. Pengaturan yang harus dilakukan sebelum cryptIDE dapat digunakan adalah memperbaharui path aplikasi compiler, assembler, linker, dan folder default pengguna, melalui menu Tools | Environment Options | Directories, seperti yang diperlihatkan pada Gambar 5.1. Gambar 5.1 Environment Options: Directories 5.2 Pengujian cryptIDE Tahap pengujian yang akan dibahas adalah tahap pengujian penerimaan (pengujian alpha) dengan metode blackbox. Pengujian penerimaan merupakan pengujian dimana kesesuaian antara perangkat lunak yang dikembangkan dengan persyaratan sistem akan dibandingkan. Metode pengujian blackbox merupakan metode pengujian perangkat lunak tanpa memperhatikan perincian detil dari perangkat lunak tersebut. Pengguna A melakukan registrasi cryptIDE melalui jendela Register dengan data seperti diperlihatkan pada Gambar 5.2, yaitu First Name ‘J’, Last Name ‘U’, Company ‘USU’, dan Registration Number ’123456789’. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 83 Gambar 5.2 Jendela Register Pengguna A Pada Gambar 5.3, tampak cryptIDE pengguna A dengan sebuah tab page ‘tes1.4esc’. Selama proses penyimpanan kode sumber tersebut, cryptIDE akan melakukan enkripsi berkas tab page tersebut dengan kunci yang dibangkitkan dari nomor registrasi pengguna A (‘123456789’), untuk menghasilkan berkas ‘tes1.4esc’ pada media penyimpanan. Gambar 5.4 memperlihatkan isi dari berkas ‘tes1.4esc’ yang terdapat pada media penyimpanan. Gambar 5.3 Proses Pengolahan Kode Sumber Gambar 5.4 Isi Berkas ‘tes1.4esc’ pada Media Penyimpanan Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 84 Pengguna A dapat membuka kembali berkas ‘tes1.4esc’ yang tersimpan pada media penyimpanannya dengan menggunakan cryptIDE. Selama proses pembukaan kembali berkas kode sumber tersebut, cryptIDE melakukan dekripsi terhadap barisbaris pada berkas tersebut dengan kunci yang dibangkitkan dari nomor registrasi (‘123456789’), kemudian menampilkannya ke dalam code editor pada tab page ‘tes1.4esc’. Sehingga pengguna A memperoleh kembali baris-baris kode sumbernya. Jika pengguna lain dengan nomor registrasi yang berbeda membuka berkas ‘tes1.4esc’ tersebut, maka pengguna tersebut akan memperoleh baris-baris kode sumber yang salah. Pengguna B melakukan registrasi dengan data First Name ‘U’, Last Name ‘J’, Company ‘USU’, dan Registration Number (‘123456’), seperti diperlihatkan pada Gambar 5.5. Gambar 5.5 Jendela Register Pengguna B Ketika pengguna B membuka berkas ‘tes1.4esc’, maka cryptIDE-nya akan mendekripsi tiap baris pada berkas tersebut dengan kunci yang dibangkitkan dengan nomor registrasi (‘123456’). Pada Gambar 5.6 diperlihatkan tab page berkas ‘tes1.4esc’ yang diperoleh pengguna B. Gambar 5.6 Berkas ‘tes1.4esc’ pada cryptIDE pengguna B Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 85 cryptIDE menyediakan fitur enkripsi dan dekripsi sebagai modul yang terintegrasi ke dalamnya. Sehingga efisiensi dan efektivitas proses pengembangan program dapat ditingkatkan. Dengan menggunakan enkripsi dan dekripsi terhadap kode sumber, maka keamanan dan keotentikan kode sumber pengguna dapat lebih terjamin. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. BAB 6 KESIMPULAN DAN SARAN 6.1 Kesimpulan Setelah melakukan studi literatur, analisis dan perancangan, pengkodean, implementasi, dan pengujian perangkat lunak cryptIDE, maka dapat disimpulkan: 1. Dengan cryptIDE, pengguna dapat memanggil compiler chain dengan opsi-opsi yang tersedia sesuai dengan preferensinya tanpa perlu mengingat dan mengetik command option masing-masing executable compiler chain; Hanya dengan memberi tanda centang pada checkbox opsi pada jendela-jendela options. 2. Kedip (flicking) pada code editor terjadi dikarenakan proses seleksi, mengubah font style, dan deseleksi lexeme oleh proses cryptIDE untuk tiap penekanan tombol penting (tombol karakter yang dapat mengubah konten dari code editor). 3. cryptIDE menggunakan sumber daya memory yang relatif lebih besar dibandingkan dengan Notepad. Ketika bekerja dengan sebuah berkas, maka sumber daya memory yang dialokasikan untuk cryptIDE adalah lebih besar ± 20 persen dibandingkan dengan Notepad. Kelebihan alokasi memory ini digunakan untuk memuatkan informasi format warna dan font style untuk tiap baris pada code editor. Sedangkan ketika bekerja dengan beberapa berkas sekaligus, maka sumber daya memory yang dialokasikan untuk cryptIDE akan lebih kecil dibandingkan dengan total alokasi beberapa buah proses Notepad. 4. cryptIDE menempati ruang pada storage yang lebih besar ± 10 persen dibandingkan dengan tanpa menggunakan cryptIDE. Kelebihan ruang storage digunakan untuk menyimpan launcher, ekstensi-ekstensi aplikasi, dan berkasberkas konfigurasi perangkat lunak cryptIDE. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 87 6.2 Saran Analisis dan perancangan perangkat lunak cryptIDE dirasa masih jauh dari sempurna. Beberapa saran untuk pengembangan dan perbaikan diantaranya: 1. Mengembangkan kelas untuk code editor dari kelas pendahulu (ancesstor) TRichEdit atau bahkan dari kelas TObject (pendahulu dari semua kelas, kelas yang paling dasar). 2. Menambahkan modul debugger ke dalam cryptIDE. 3. Menggunakan algoritma pembangkitan kunci dan kriptografi yang lebih baik. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 88 DAFTAR PUSTAKA Executing and Running Applications and Files from Delphi Code. 20 Juni 2009. http://www.about.com/snf.htm?u=http://delphi.about.com/od/windowsshella pi/a/executeprogram.htm%3Frd%3D1. FORTRAN 77. 25 Maret 2009. FORTRAN_77&redirect=no. http://en.wikipedia.org/w/index.php?title= Graves, D dan Hogue, C. 1994. Fortran 77 Language Reference Manual. California, US: Silicon Graphics, Inc. Munir, R. 2006. Kriptografi. Bandung: Penerbit Informatika. Oualline, S. 2001.Practical C Programming. Third Edition. USA: O’Reilly Media. Pranata, A. 2000. Pemrograman Borland Delphi 6. Edisi 4. Yogyakarta, Indonesia: Penerbit Andi Yogyakarta. Setiawan, Y.C. 2003. Trik & Tip Delphi. Yogyakarta, Indonesia: Penerbit Andi Yogyakarta. Sommerville, I. 2003. Software Engineering (Rekayasa Perangkat Lunak). Jilid 1. Edisi 6. Terjemahan Dra. Yuhilza Hanum M.Eng. Jakarta, Indonesia: Penerbit Erlangga. Susilo, D. 2002. Komponen Visual: Perancangan dan Implementasinya pada Delphi 6. Yogyakarta, Indonesia: J&J Learning. Utdirartatmo, F. 2005. Teknik Kompilasi. Yogyakarta, Indonesia: Penerbit Graha Ilmu. Wong, W. 2006. 20 Maret 2009. IDEs of Change. http://electronicdesign.com/ Articles/Index.cfm?ArticleID=12381&pg=1. Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 89 getle LAMPIRAN A : Rincian Fungsi xeme deEditor.getlexeme(str: string; var pos: TPoint; function TCo checkonly: boolean): string; var i: Integer; foundNxtLxm: Boolean; begin result := ''; i := pos.X + 1; foundNxtLxm := false; while ((i <= length(str)) and not(foundNxtLxm)) do begin if (str[i] in [' ', '=', '+', '-', '*', '/', '(', ')', ',', '$', ':', '!', '_', #9, #10, #13, ';', '\', '?', '#', '&', '%', '>', '<']) then begin if (result <> '') then begin foundNxtLxm := true; end else begin foundNxtLxm := true; result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; end; end else if (str[i] = '''') then begin if (result = '') then begin repeat result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; until ((i > length(str)) or (str[i] = '''')); if (str[i] = '''') then begin result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; end; end; foundNxtLxm := true; end else if (str[i] = '"') then begin if (result = '') then begin repeat result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; until ((i > length(str)) or (str[i] = '"')); Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 90 if (str[i] = '"') then begin result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; end; end; foundNxtLxm := true; end else if (str[i] = '.') then begin if (result = '') then begin repeat result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; until ((i > length(str)) or (str[i] in [' ','=','+','-', '*','/','(',')', ',','$',':','!', '_','.',#9,#10, #13,';','\','?', '#','&','%','>', '<'])); if (str[i] = '.') then begin result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; end; end; foundNxtLxm := true; end else begin result := result + str[i]; if (not(checkonly)) then pos.X := pos.X + 1; i := i + 1; end; end; end; Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 91 highligh LAMPIRAN B : Rincian Prosedur t odeEditor.highlight(var pos: TPoint; str: string); procedure TC var lxm, temp: string; begin repeat if ((Length(Self.Lines[pos.Y]) > 0) and (Self.Lines[pos.Y][1] in ['C', 'c', '*'])) then begin pos.X := 0; Self.SelStart := getcurval(pos); Self.SelLength := Length(Self.Lines[pos.Y]); pos.X := Length(Self.Lines[pos.Y]); changeatt(Comment); end else begin lxm := getlexeme(str, pos, false); Self.SelStart := getcurval(pos) - Length(lxm); Self.SelLength := Length(lxm); if ((Length(lxm) = 1) and (lxm[1] in [' ','=','*','/','(', ')',',','$',':','_', #9,#10,#13,';','\', '?','#','&','%','>', '<'])) then begin while (getlexeme(str, pos, true) = ' ') do lxm := lxm + getlexeme(str, pos, false); end else if (lxm = '!') then begin Self.SelStart := getcurval(pos) - Length(lxm); Self.SelLength := Length(Self.Lines[pos.Y]) - pos.X + 1; pos.X := Length(Self.Lines[pos.Y]); changeatt(Comment); end else if (isKeyWord(lxm)) then changeatt(ResWrd) else if (isIntConst(lxm)) then begin if (Self.Lines[pos.Y][pos.X + 1] = '.') then begin temp := getlexeme(str, pos, true); if (fracIsValid(temp)) then begin if (UpCase(temp[Length(temp)]) in ['D', 'E']) then begin lxm := lxm + getlexeme(str, pos, false); temp := getlexeme(str, pos, true); if ((temp = '+') or (temp = '-')) then begin lxm := lxm + getlexeme(str, pos, false); if (isIntConst(getlexeme(str,pos,true))) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(FloatConst); Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 92 end; end else begin Self.SelLength := Length(lxm); changeatt(default); end; end else begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(FloatConst); end; end else changeatt(IntConst); end else changeatt(IntConst); end else if (isFloatConst(lxm)) then begin if (UpCase(lxm[Length(lxm)]) in ['D', 'E']) then begin temp := getlexeme(str, pos, true); if (temp = '+') or (temp = '-') then begin lxm := lxm + getlexeme(str, pos, false); if (isIntConst(getlexeme(str, pos, true))) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(FloatConst); end; end else changeatt(default); end else changeatt(FloatConst); end else if (BaseLeading(lxm) <> 0) then begin case BaseLeading(lxm) of 1 : begin temp := getlexeme(str, pos, true); if (isCharConst(temp) and (temp[1] = temp[Length(temp)]) and isBinConst(temp)) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(IntConst); end else changeatt(default); end; 2 : begin temp := getlexeme(str, pos, true); Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 93 if (isCharConst(temp) and (temp[1] = temp[Length(temp)]) and isOctConst(temp)) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(IntConst); end else changeatt(default); end; 3 : begin temp := getlexeme(str, pos, true); if (isCharConst(temp) and (temp[1] = temp[Length(temp)]) and isHexConst(temp)) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(IntConst); end else changeatt(default); end; end; end else if (isCharConst(lxm)) then begin if (UpCase(Self.Lines[Pos.Y][Pos.X + 1]) in ['B', 'O', 'X', 'Z']) then begin temp := getlexeme(str, pos, true); case BaseLeading(temp) of 1 : begin if (isBinConst(lxm)) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(IntConst); end else begin Self.SelLength := Length(lxm); changeatt(CharConst); end; end; 2 : begin if (isOctConst(lxm)) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(IntConst); end else begin Self.SelLength := Length(lxm); changeatt(CharConst); end; end; 3 : begin Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 94 if (isHexConst(lxm)) then begin lxm := lxm + getlexeme(str, pos, false); Self.SelLength := Length(lxm); changeatt(IntConst); end else begin Self.SelLength := Length(lxm); changeatt(CharConst); end; end; else begin Self.SelLength := Length(lxm); changeatt(CharConst); end; end; end else changeatt(CharConst); end else changeatt(default); Self.SelLength := 0; changeatt(default); end; until lxm = ''; end; Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 95 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 96 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 97 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009. 98 Jefri Umar : Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77, 2009.