• Tidak ada hasil yang ditemukan

Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77

N/A
N/A
Protected

Academic year: 2016

Membagikan "Analisis Perancangan Perangkat Lunak Ide (Integrated Development Environment) Fortran G77"

Copied!
110
0
0

Teks penuh

(1)

FORTRAN G77

SKRIPSI

JEFRI UMAR 051401042

PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

(2)

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

(3)

PERSETUJUAN

Judul : ANALISIS DAN PERANCANGAN PERANGKAT

LUNAK IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77

Kategori : SKRIPSI

Nama : JEFRI UMAR

Nomor Induk Mahasiswa : 051401042

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, 15 Juli 2009

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Ir. Elviawaty MZ, MT, MM Syahriol Sitorus, S.Si, MIT

NIP 132 306 873 NIP 132 174 687

Diketahui/Disetujui oleh

Departemen Ilmu Komputer FMIPA USU Ketua,

(4)

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

(5)

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.

(6)

ABSTRAK

(7)

IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) FORTRAN G77 SOFTWARE ANALYSIS AND DESIGN

ABSTRACT

(8)

DAFTAR ISI

1.6 Langkah-Langkah Pengerjaan Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori 5

2.1 Sejarah Bahasa Pemrograman 5

2.2 Tahapan Proses Penerjemahan Program 6

2.3 Rekayasa Perangkat Lunak 8

2.3.1 Proses Perangkat Lunak 8

2.3.1.1 Spesifikasi Perangkat Lunak 9

2.3.1.2 Perancangan dan Implementasi Perangkat Lunak 9

2.3.1.3 Validasi Perangkat Lunak 10

2.3.1.4 Evolusi Perangkat Lunak 11

2.3.2 Model Proses Perangkat Lunak: Model Proses Air Terjun 11 2.4 Analisis Leksikal, Besaran Leksik, dan Code Highlighting 13 2.5 Algoritma Kriptografi Klasik: Caesar Cipher 14

2.6 Fortran 15

2.6.1 Sejarah Fortran 15

2.6.2 Himpunan Karakter pada Fortran 16

2.6.3 Tipe Data pada Fortran 17

2.6.4 Nama Simbol pada Fortran 18

2.6.5 Pernyataan pada Fortran 18

2.6.6 Struktur Baris pada Fortran 19

2.6.7 Struktur Program pada Fortran 20

2.7 Interaksi Pengguna dengan Fortran 21

Bab 3 Analisis dan Perancangan Perangkat Lunak 23

(9)

3.1.1 Kata Tercadang pada Fortran 23

3.1.2 Konstanta pada Fortran 24

3.1.3 Fortran G77 26

3.2 Diagram Aliran Data (Data Flow Diagram) & Kamus Data 30

3.2.1 Diagram Aliran Data Level 0 30

3.2.2 Diagram Aliran Data Level 1 31

3.2.3 Diagram Aliran Data Level 2 34

3.2.4 Diagram Aliran Data Level 3 38

3.2.5 Kamus Data 40

3.3 State Diagram 43

3.4 Perancangan Antarmuka 46

Bab 4 Hasil dan Pembahasan 54

4.1 Antarmuka cryptIDE 54

4.2 Kode Program cryptIDE 70

4.3 Pembahasan cryptIDE 74

4.3.1 Analisis Memory 74

4.3.2 Analisis Storage 77

4.3.3 Analisis Efisiensi 78

Bab 5 Implementasi dan Pengujian 81

5.1 Implementasi 81

5.1.1 Kebutuhan Sistem Minimum (Minimum System Requirement) 81

5.1.2 Pengaturan cryptIDE 81

Lampiran A: Rincian Fungsi getlexeme 89

(10)

DAFTAR TABEL

Halaman

Tabel 2.1 Tabel Substitusi dengan Pergeseran Sejauh 3 Huruf 15 Tabel 2.2 Himpunan Karakter Alphabet dan Karakter Angka 17 Tabel 2.3 Himpunan Karakter Khusus dan Karakter Alphabet Tambahan 17

Tabel 3.1 Daftar Kata Tercadang 24

Tabel 3.2 Penanda Baris 25

Tabel 3.3 Daftar Opsi Wrapper 27

Tabel 3.4 Daftar Opsi Compiler 28

Tabel 3.5 Daftar Opsi Assembler 29

Tabel 3.6 Daftar Opsi Linker 29

Tabel 3.7 Kamus Data Diagram Aliran Data 40

(11)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Proses Perakitan Program 5

Gambar 2.2 Tahapan Proses Transformasi Kode Sumber 7

Gambar 2.3 Model Air Terjun 12

Gambar 2.4 Struktur Baris pada Fortran 20

Gambar 2.5 Mengolah Kode Sumber Melalui Notepad 21

Gambar 2.6 Memanggil Wrapper 21

Gambar 2.7 Menjalankan Executable 22

Gambar 3.1 Diagram Aliran Data Level 0 30

Gambar 3.2 Diagram Aliran Data Level 1 32

Gambar 3.3 Proses Registrasi 34

Gambar 3.4 Proses Enkripsi / Dekripsi 35

Gambar 3.5 Proses Code Editor 36

Gambar 3.6 Proses Mengolah Opsi-Opsi P/L IDE 37

Gambar 3.7 Proses Compiler Chain 38

Gambar 3.8 Proses Enkriptor 38

Gambar 3.9 Proses Dekriptor 39

Gambar 3.10 Proses Editor 40

Gambar 3.11 State Diagram Bilangan Desimal 43

Gambar 3.12 State Diagram Bilangan Biner 43

Gambar 3.13 State Diagram Bilangan Oktal 44

Gambar 3.14 State Diagram Bilangan Heksadesimal 44

Gambar 3.15 State Diagram Bilangan Pecahan 45

Gambar 3.16 State Diagram Untaian Karakter 45

Gambar 3.17 Jendela Utama Perangkat Lunak IDE 46

Gambar 3.18 Menu File 47

Gambar 3.19 Menu Edit 47

Gambar 3.20 Menu Search 47

Gambar 3.21 Menu Execute 48

Gambar 3.22 Menu Tools 48

Gambar 3.23 Menu Window 49

Gambar 3.24 Jendela Find 49

Gambar 3.25 Jendela Replace 50

Gambar 3.26 Jendela Compiler Options 50

Gambar 3.27 Jendela Environment Options 51

Gambar 3.28 Jendela Editor Options 52

Gambar 3.29 Jendela Register 52

Gambar 3.30 Jendela Compile Progress 53

Gambar 4.1 Jendela Utama cryptIDE 54

Gambar 4.2 Menu File 55

Gambar 4.3 Jendela Open 56

Gambar 4.4 Jendela Save As 56

(12)

Gambar 4.6 Jendela Warning (1) 57

Gambar 4.7 Menu Edit 58

Gambar 4.8 Menu Search 58

Gambar 4.9 Jendela Find Text 58

Gambar 4.10 Jendela Replace Text 59

Gambar 4.11 Menu Execute 59

Gambar 4.12 Jendela Compile Progress 60

Gambar 4.13 Jendela Warning (2) 60

Gambar 4.14 Menu Tools 61

Gambar 4.15 Jendela Compiler Options: Dialect 61

Gambar 4.16 Jendela Compiler Options: Optimization 62

Gambar 4.17 Jendela Environment Options: Compiler 64

Gambar 4.18 Jendela Environment Options: Assembler 64

Gambar 4.19 Jendela Environment Options: Linker 65

Gambar 4.20 Jendela Environment Options: Warnings 65

Gambar 4.21 Jendela Environment Options: Directories 66

Gambar 4.22 Jendela Editor Options: General 67

Gambar 4.23 Jendela Editor Options: Syntax 67

Gambar 4.24 Jendela Register 68

Gambar 4.25 Jendela Information (1) 68

Gambar 4.26 Jendela Information (2) 68

Gambar 4.27 Menu Window 69

Gambar 4.28 Menu Popup Toolbar 69

Gambar 4.29 Menu Popup Tab Code Editor 70

Gambar 4.30 Rincian Proses cryptIDE yang Sedang Idle 75 Gambar 4.31 Rincian Proses cryptIDE dengan Satu Berkas Terbuka 75 Gambar 4.32 Rincian Proses Notepad yang Sedang Idle 76

Gambar 4.33 Berkas dan Folder cryptIDE 78

Gambar 4.34 Ilustrasi Perbandingan Lingkungan Kerja 79

Gambar 5.1 Environment Options: Directories 82

Gambar 5.2 Jendela Register Pengguna A 83

Gambar 5.3 Proses Pengolahan Kode Sumber 83

Gambar 5.4 Isi Berkas ‘tes1.4esc’ pada Media Penyimpanan 83

Gambar 5.5 Jendela Register Pengguna B 84

(13)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Dewasa ini, pemanfaatan bahasa pemrograman semakin berkembang. Bahkan, bahasa pemrograman digunakan untuk kepentingan akademis, misalnya pengembangan program untuk menyelesaikan suatu persamaan matematik yang kompleks. Satu di antara alasan mengapa pemanfaatan bahasa pemrograman semakin berkembang adalah tersedianya lingkungan pengembangan (development environment) yang mengintegrasikan (integrating) modul-modul yang dibutuhkan sehingga pengembangan program menjadi mudah dan juga kemampuan compiler dapat dimanfaatkan secara maksimal.

Satu di antara bahasa pemrograman yang digunakan adalah Fortran. Fortran merupakan singkatan dari FORmula TRANslator. Fortran merupakan bahasa pemrograman yang dikhususkan untuk melakukan komputasi numerik dan scientific. Compiler Fortran yang umum dipakai di lingkungan akademis adalah Fortran 77.

Tetapi, IDE untuk compiler Fortran 77 masih sangat kurang, sehingga pemanfaatan compiler Fortran 77 tidak maksimal dan diperlukan pengetahuan yang lebih lanjut untuk mengoperasikan compiler Fortran 77.

(14)

mengandung modul-modul yang terintegrasi, diantaranya code editor, compiler chain, dan debugger.

Oleh karena itu, maka pada skripsi ini akan dilakukan studi, perancangan, dan pengembangan perangkat lunak IDE untuk Fortran 77. Selain itu, juga akan dilakukan analisis terhadap IDE yang dihasilkan.

1.2Rumusan Masalah

Dari uraian latar belakang, masalah-masalah yang muncul dapat dirumuskan menjadi: 1. Bagaimana merancang dan membangun suatu perangkat lunak IDE yang

mengintegrasikan modul-modul yang dibutuhkan untuk pengembangan program. 2. Apakah pengembangan program dengan perangkat lunak IDE yang akan dibangun

dapat meningkatkan efisiensi dan efektivitas dibandingkan dengan pengembangan program tanpa menggunakan perangkat lunak IDE tersebut.

3. Apakah keotentikan kode sumber dapat dicapai dengan pemanfaatan modul enkripsi/dekripsi yang terintegrasi ke dalam IDE yang akan dibangun.

1.3Batasan Masalah

Supaya pembahasan masalah lebih mendalam dan terperinci, maka pembahasan masalah dibatasi menjadi:

1. IDE yang akan dibangun adalah IDE GNU Fortran G77 versi 2.95 19990728. 2. Tiap pengguna IDE memiliki kode registrasi yang unik.

3. IDE yang akan dibangun terdiri atas modul code editor, compiler chain, enkripsi, dan dekripsi.

4. Code editor hanya melakukan code highlighting.

5. Teknik kriptografi yang digunakan dalam enkripsi dan dekripsi kode sumber adalah Caesar cipher.

(15)

1.4Tujuan Penelitian

Adapun tujuan penelitian yang hendak dicapai adalah:

1. Merancang dan membangun perangkat lunak IDE yang mengintegrasikan modul code editor, compiler chain, enkripsi, dan dekripsi.

2. Menganalisis efisiensi dan efektivitas pengembangan program melalui pemanfaatan IDE yang akan dibangun.

3. Menganalisis keaslian (authentication) kode sumber melalui pemanfaatan modul enkripsi/dekripsi yang terintegrasi ke dalam IDE yang akan dibangun.

1.5Manfaat Penelitian

Manfaat penelitian yang hendak dicapai di antaranya:

1. Penelitian dan hasilnya diharapkan dapat digunakan untuk kepentingan akademis dan untuk memperkaya literatur akademis.

2. Efisiensi dan efektivitas pengembangan program serta keotentikan kode sumber dapat dicapai dengan menggunakan perangkat lunak IDE ini.

1.6Langkah-Langkah Pengerjaan Penelitian

Penelitian dikerjakan berdasarkan urutan langkah-langkah berikut: 1. Studi literatur.

2. Analisis dan perancangan perangkat lunak IDE. 3. Implementasi.

4. Pengujian perangkat lunak IDE.

(16)

1.7Sistematika Penulisan

Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai berikut:

BAB 1: PENDAHULUAN

Bab ini menjelaskan mengenai latar belakang pemilihan judul skripsi “Analisis dan Perancangan Perangkat Lunak IDE (Integrated Development Environment) Fortran G77”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, langkah-langkah pengerjaan penelitian, dan sistematika penulisan.

BAB 2: LANDASAN TEORI

Bab ini membahas sejarah bahasa pemrograman, tahapan penerjemahan program, rekayasa perangkat lunak, analisis leksikal, algoritma kriptografi klasik, dan Fortran.

BAB 3: ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

Bab ini menguraikan analisis perangkat lunak yang dilakukan serta perancangan perangkat lunak yang sesuai dengan tujuan penelitian.

BAB 4: HASIL DAN PEMBAHASAN

Bab ini digunakan untuk memaparkan perangkat lunak hasil rancangan. Selain itu, bab ini juga menyajikan hasil analisis dari perangkat lunak tersebut.

BAB 5: IMPLEMENTASI DAN PENGUJIAN

Bab ini menjelaskan prasyarat dan syarat yang harus dipenuhi supaya perangkat lunak yang dikembangkan dapat dijalankan secara baik serta pengujian terhadap perangkat lunak tersebut.

BAB 6: KESIMPULAN DAN SARAN

(17)

BAB 2

LANDASAN TEORI

2.1Sejarah Bahasa Pemrograman

Pada awal komputer diciptakan, para pemrogram diharuskan untuk memrogram komputer dengan suatu bahasa, dimana tiap instruksi direduksi menjadi serangkaian angka-angka yang dikenal dengan bahasa mesin (machine language). Program yang ditulis dengan bahasa mesin dapat langsung diinputkan kepada komputer, dan dapat dijalankan tanpa perlu diterjemahkan terlebih dahulu. Tetapi, bahasa mesin merupakan bahasa yang sulit dipahami oleh manusia. Oleh karena itu, perekayasa perangkat lunak memilih untuk menulis program dengan menggunakan bahasa sederhana, dimana tiap kata dalam bahasa tersebut mewakili instruksi bahasa mesin. Bahasa ini dikenal dengan bahasa rakitan (assembly language). Kemudian, kode program bahasa rakitan yang ditulis oleh perekayasa perangkat lunak, dirakit (diterjemahkan) oleh pemrogram menjadi kode program bahasa mesin, seperti diilustrasikan pada Gambar 2.1, untuk kemudian diinputkan kepada komputer.

(18)

Pada saat itu, proses penerjemahan/translasi merupakan pekerjaan yang sulit serta memerlukan ketelitian dan ketepatan. Sehingga dibangun suatu program yang disebut assembler untuk melakukan pekerjaan tersebut. Namun, pada saat tersebut biaya pengoperasian komputer jauh lebih tinggi dibandingkan dengan biaya untuk menggaji pemrogram.

Seiring berkembangnya komputer, proses penerjemahan bahasa rakitan dengan menggunakan assembler menjadi lebih efektif. Dengan pemanfaatan bahasa rakitan, program menjadi lebih terstruktur dan lebih mudah untuk dipahami. Tetapi, program yang ditulis dengan bahasa rakitan menjadi lebih rumit untuk dipahami dan dijalankan oleh komputer; Program terlebih dahulu harus diterjemahkan menjadi bahasa mesin sebelum dapat dijalankan.

Kemudian, untuk memperluas pemanfaatan bahasa pemrograman, maka pengembang perangkat lunak mengembangkan bahasa pemrograman yang lebih baik. Bahasa pemrograman ini digolongkan sebagai bahasa pemrograman tingkat tinggi (high level language). Bahasa pemrograman berkembang menjadi semakin mudah untuk digunakan oleh para pemrogram.

Bahasa pemrograman tingkat tinggi memerlukan tambahan tahapan proses untuk penerjemahan sebelum dapat dijalankan oleh komputer. Tetapi, waktu yang diperlukan untuk melakukan penerjemahan tidak menjadi masalah yang signifikan. Sejalan dengan perkembangan kecepatan komputasi, waktu yang diperlukan untuk menerjemahkan kode program bahasa tingkat tinggi menjadi bahasa mesin menjadi semakin singkat. Serangkaian bahasa pemrograman tingkat tinggi yang telah dikembangkan, diantaranya: COBOL, Fortran, Pascal, C.

2.2Tahapan Proses Penerjemahan Program

(19)

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.

(20)

memanggil compiler, assembler, dan linker secara runtun. Bahkan beberapa sistem pemrograman menyediakan lingkungan pengembangan terpadu (Integrated Development Environment). Sebuah paket IDE dapat terdiri atas editor, compiler,

assembler, linker, debugger, dan sebagainya.

2.3Rekayasa Perangkat Lunak

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

2.3.1 Proses Perangkat Lunak

Proses perangkat lunak merupakan proses yang sangat rumit dan bergantung pada penilaian manusia. Karena dibutuhkan penilaian dan kreativitas, keberhasilan usaha untuk mengotomasi proses perangkat lunak menjadi terbatas. Satu alasan mengapa otomasi proses memiliki cakupan yang terbatas adalah adanya keragaman proses perangkat lunak. Proses telah berkembang untuk mengeksploitasi kemampuan manusia dan karakteristik spesifik sistem yang dikembangkan. Maka, bisa jadi terdapat banyak proses yang digunakan untuk pengembangan perangkat lunak.

Walaupun terdapat banyak proses perangkat lunak, terdapat kegiatan-kegiatan mendasar yang umum bagi semua proses perangkat lunak adalah:

1. Penspesifikasian perangkat lunak. Mendefinisikan fungsionalitas perangkat lunak dan batasan operasinya.

2. Perancangan dan implementasi perangkat lunak. Merancang dan membangun perangkat lunak yang memenuhi persyaratan.

3. Pemvalidasian perangkat lunak. Menjamin bahwa perangkat lunak bekerja sesuai dengan apa yang diinginkan.

(21)

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.

(22)

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.

(23)

antar subsistem. Pengujian sistem berhubungan dengan validasi sistem, yaitu apakah sistem telah memenuhi persyaratan.

5. Pengujian penerimaan, yaitu menguji sistem dengan data riil.

2.3.1.4 Evolusi Perangkat Lunak

Fleksibilitas sistem perangkat lunak merupakan satu di antara alasan utama makin banyaknya perangkat lunak yang digunakan pada sistem besar dan kompleks. Pada perangkat lunak, perubahan dapat dibuat kapan saja pada saat pengembangan sistem ataupun setelah pengembangan sistem.

Secara historis, terdapat pembatas antara proses pengembangan perangkat lunak dan proses evolusi perangkat lunak (pemeliharaan perangkat lunak). Pengembangan perangkat lunak dianggap merupakan kegiatan kreatif di mana sistem perangkat lunak dikembangkan dari konsep awal menjadi sistem yang dapat berjalan. Pemeliharaan perangkat lunak merupakan proses perubahan sistem tersebut setelah digunakan.

2.3.2 Model Proses Perangkat Lunak: Model Proses Air Terjun

Model proses perangkat lunak merupakan representasi abstrak dari proses perangkat lunak. Model proses hanya memberikan informasi parsial mengenai proses perangkat lunak. Model proses perangkat lunak dapat digunakan untuk menjelaskan pendekatan-pendekatan dalam pengembangan perangkat lunak. Satu diantara model proses yang digunakan secara luas adalah model proses air terjun (waterfall).

(24)

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.

(25)

2.4Analisis Leksikal, Besaran Leksik, dan Code Highlighting

Analisis leksikal merupakan tahapan dalam teknik kompilasi untuk mengidentifikasi semua besaran yang membangun suatu bahasa yang terdapat pada suatu masukan. Rutin program yang melakukan tahap analisis leksikal disebut dengan scanner. Scanner menerima masukan berupa untaian karakter, kemudian memilah masukan

menjadi besaran leksik (lexeme) sebelum ditransformasikan menjadi token. Scanner bekerja berdasarkan mesin finite state automata yang ada pada ekspresi regular.

Tugas scanner diantaranya:

1. Membaca kode sumber dengan merunut karakter demi karakter. 2. Memisahkan lexeme.

3. Mengenali jenis besaran leksik dan mentransformasi lexeme menjadi token. 4. Mengirimkan token untuk digunakan tahapan analisis berikutnya.

5. Membuang karakter whitespace dan komentar dalam program. 6. Menangani kesalahan.

7. Menangani tabel simbol.

Besaran leksik merupakan besaran pembangun suatu bahasa, meliputi: 1. Identifier

Dapat berupa keyword atau name. Keyword adalah kata kunci yang telah didefinisikan dan dicadangkan untuk digunakan secara ekslusif oleh suatu bahasa. Sedangkan, name adalah besaran leksik yang didefinisikan oleh pemakai sesuai dengan ekspresi regular yang diterima oleh bahasa tersebut.

2. Nilai konstanta

Merupakan konstanta yang terdapat pada suatu bahasa, sesuai ekspresi regular bahasa tersebut. Dapat berupa konstanta bilangan bulat, bilangan pecahan, boolean, karakter, untaian karakter, dan sebagainya.

3. Operator dan delimiter

Operator yang diterima bahasa tersebut, misalnya operator aritmatik, operator relasional, dan sebagainya.

Delimiter merupakan pemisah besaran leksik dan mempunyai arti khusus

(26)

Code highlighting merupakan suatu proses pada teks editor untuk

memunculkan (highlight) tiap lexeme sesuai dengan jenis besaran leksiknya. Tugas yang dilakukan pada Code highlighting:

1. Membaca masukan dengan merunut karakter demi karakter. 2. Memisahkan lexeme.

3. Mengenali jenis besaran leksik, karakter whitespace, dan komentar. 4. Mengubah font style dari lexeme sesuai dengan jenisnya.

2.5Algoritma Kriptografi Klasik: Caesar Cipher

Sebelum komputer ada, kriptografi dilakukan dengan menggunakan pensil dan kertas. Algoritma kriptografi (cipher) yang digunakan saat itu, dinamakan juga algoritma kriptografi klasik dan berbasis karakter, yaitu enkripsi dan dekripsi dilakukan pada setiap karakter informasi. Semua algoritma klasik termasuk ke dalam sistem kriptografi simetri dan digunakan jauh sebelum sistem kriptografi kunci publik ditemukan.

Pada dasarnya, algoritma kriptografi klasik dapat dikelompokkan ke dalam dua macam cipher:

1. Cipher substitusi (substitution cipher) 2. Cipher transposisi (transposition cipher)

Di dalam cipher substitusi, setiap unit plainteks disubstitusikan dengan satu unit cipherteks. Satu “unit” bisa berarti satu huruf, pasangan huruf, atau kelompok lebih dari dua huruf. Algoritma substitusi tertua yang diketahui adalah Caesar cipher yang digunakan oleh kaisar Romawi, Julius Caesar, untuk menyandikan pesan yang ia kirim kepada para gubernurnya.

(27)

Tabel 2.1 Tabel Substitusi dengan Pergeseran Sejauh 3 Huruf

Plainteks A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Cipherteks D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Berdasarkan Tabel 2.1, proses enkripsi dan dekripsi dapat dilakukan dengan menggantikan tiap huruf plainteks dengan huruf ciperteks, dan sebaliknya.

Contoh:

Plainteks PROGRAM HELLO

Cipherteks SURJUDP KHOOR

2.6Fortran

Fortran merupakan bahasa yang mendominasi pemrograman pada awal bahasa pemrograman tingkat tinggi diperkenalkan. Fortran telah dipergunakan secara kontinu selama lebih dari setengah abad dalam perhitungan intensif seperti prakiraan cuaca numerik (numerical weather prediction), analisis elemen berhingga (finite element analysis), fluida dinamis komputasional (computational fluid dynamics), fisika

komputasional (computational physics), dan kimia komputasional (computational chemistry). Fortran merupakan satu diantara bahasa pemrograman yang terkenal, yang

digunakan untuk melakukan komputasi dengan unjuk kerja yang tinggi dan program-program untuk mengukur dan meranking superkomputer tercepat di dunia ditulis dengan bahasa Fortran.

2.6.1 Sejarah Fortran

Pada akhir tahun 1953, John W. Backus mengajukan proposal kepada atasannya untuk mengembangkan sebuah alternatif yang lebih efisien dibandingkan dengan bahasa rakitan untuk memrogram mainframe IBM 704. Spesifikasi kasar untuk IBM Mathematical Formula Translating System diselesaikan pada pertengahan tahun 1954.

(28)

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

(29)

dan karakter alphabet tambahan. Tabel 2.2 dan Tabel 2.3 menampilkan himpunan karakter Fortran secara lengkap.

Tabel 2.2 Himpunan Karakter Alphabet dan Karakter Angka

Huruf A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z

Angka 0 1 2 3 4 5 6 7 8 9

Tabel 2.3 Himpunan Karakter Khusus dan Karakter Alphabet Tambahan

Nama Karakter Karakter variabel, dan fungsi. Tipe data yang dikenali Fortran, diantaranya:

1. INTEGER – bilangan bulat positif dan negatif dan nol.

2. REAL – bilangan pecahan positif dan negatif dan nol.

3. DOUBLE PRECISION – mirip dengan REAL, hanya saja DOUBLE PRECISION

menggunakan memory dua kali lebih banyak dibandingkan REAL, dengan presisi yang lebih baik.

4. COMPLEX – pasangan data REAL dan komponen imajiner.

(30)

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

(31)

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.

(32)

maka dapat diorganisasikan menjadi baris sambungan. Baris sambungan ditandai dengan adanya karakter selain spasi dan ‘0’ pada kolom ke-6. Baris sambungan menandakan bahwa baris tersebut adalah sambungan dari baris sebelumnya. Sedangkan, baris inisial adalah baris selain baris komentar dan baris sambungan. Tiap baris inisial pada Fortran dapat mengandung pernyataan label (statement label) pada kolom 1 sampai 5.

Gambar 2.4 Struktur Baris pada Fortran

2.6.7 Struktur Program pada Fortran

Program Fortran dapat mengandung satu atau lebih unit program. Unit program terdiri atas sekuens pernyataan dan baris komentar yang optional. Unit program mendefinisikan lingkup (scope) dari nama simbol dan pernyataan label.

Program Fortran dapat berupa: 1. Program utama

Program utama merupakan unit program yang pertama kali menerima kendali eksekusi. Program utama tidak dapat dipanggil dari subprogram atau dari dirinya sendiri.

2. Subprogram

Subprogram merupakan bagian independen dari kode yang dirancang untuk melakukan suatu tugas tertentu. Subprogram menerima kendali eksekusi ketika direferensikan/dipanggil oleh sebuah pernyataan dari program utama atau

C atau *

pernyataan terletak pada kolom 7-72 kolom 73 dan seterusnya diabaikan

(33)

subprogram. Subprogram dapat berupa fungsi (function), subrutin (subroutine), blok data.

2.7Interaksi Pengguna dengan Fortran

Gambaran umum interaksi antara pengguna dengan Fortran tanpa adanya suatu lingkungan pengembangan terpadu (integrated development environment) adalah: 1. Menjalankan aplikasi editor teks, misalnya Notepad.

2. Ide dan atau gagasan pengguna dituangkan menjadi kode sumber melalui aplikasi editor teks tersebut, seperti diperlihatkan pada Gambar 2.5.

Gambar 2.5 Mengolah Kode Sumber Melalui Notepad

3. Menyimpan kode sumber tersebut ke dalam suatu berkas kode sumber dengan ekstensi berkas kode sumber Fortran (*.for, *.f, *.f77. *.f90).

4. Menjalankan Command Prompt untuk memanggil wrapper, seperti diperlihatkan pada Gambar 2.6, atau untuk memanggil compiler, assembler, dan linker.

(34)

5. Menjalankan executable hasil kompilasi, seperti diperlihatkan pada Gambar 2.7.

(35)

BAB 3

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

3.1Analisis Bahasa Fortran

Analisis bahasa Fortran mencakup kata tercadang, konstanta, dan opsi-opsi Fortran yang akan disertakan ke dalam perangkat lunak IDE yang akan dibangun.

3.1.1Kata Tercadang pada Fortran

Kata tercadang (reserved word) atau disebut juga dengan kata kunci (keyword), merupakan kata yang mempunyai arti khusus dan digunakan secara eksklusif oleh suatu bahasa. Fortran memiliki 82 kata tercadang, kata tercadang tersebut digunakan secara khusus di dalam Fortran sebagai pernyataan atau bagian pernyataan yang executable maupun yang non-executable. Pada Tabel 3.1, ditampilkan daftar kata

(36)

Tabel 3.1 Daftar Kata Tercadang AUTOMATIC BACKSPACE BLOCK BYTE

CALL R CHARACTECLOSE COMMON COMPLEX CONTINUE DATA DECODE

DEFINE DELETE DIMENSION DO

DOUBLE ELSE ELSEIF ENCODE

END LE ENDFIENTRY EQUIVALENCE EXTERNAL FILE FIND FORMAT FUNCTION GO HOLLERITH IF IMPLICIT INCLUDE INQUIRE INTEGER INTRINSIC LOGICAL MAP NAMELIST

OPEN R PARAMETEPAUSE POINTER PRECISION PRINT PROGRAM READ

REAL RECORD RETURN REWIND REWRITE SAVE STATIC STOP

STRUCTURE SUBROUTINE TO TYPE

UNION UNLOCK VIRTUAL VOLATILE

WHILE WRITE

3.1.2Konstanta pada Fortran

Konstanta merupakan nilai data yang tidak dapat diubah selama eksekusi program, konstanta pada Fortran dapat berupa konstanta bilangan bulat, konstanta bilangan pecahan, dan konstanta untai karakter.

Konstanta bilangan bulat pada Fortran, merupakan lexeme yang hanya mengandung karakter angka 0 sampai 9, tidak mengandung bagian pecahan. Konstanta bilangan bulat dapat dinyatakan dengan ekspresi reguler berikut.

{‘+’|’-‘|’’}{

‘0’|’1’|’2’|..|’9’} +

(37)

Tabel 3.2 Penanda Basis

Karakter Penanda Basis Basis

‘B’, ’b’ 2 (biner)

‘O’, ’o’ 8 (oktal)

‘X’, ’Z’, ’x’, ’z’ 16 (heksadesimal)

Konstanta bilangan bulat berupa untai karakter dengan karakter penanda basis dapat dinyatakan dengan ekspresi reguler berikut.

{‘+’|’-‘|’’}{

Contoh konstanta bilangan bulat yang valid:

+123

12345

‘12AB’x

B‘01010’

Konstanta pecahan merupakan konstanta yang mengandung titik desimal, bagian pecahan, dan atau eksponen. Konstanta pecahan dapat dinyatakan dengan ekpresi reguler berikut.

{‘+’|’-‘|’’}{

(38)

{‘0’|..|’9’}*

Contoh konstanta bilangan pecahan yang valid:

123.45

-.123

123.E45

Konstanta untai karakter merupakan konstanta yang terdiri atas satu atau lebih karakter, yang dapat direpresentasikan oleh prosesor. Tiap karakter dalam konstanta untai karakter dinomori secara terurut dari 1. Konstanta untai karakter diawali dengan karakter ‘”’ atau ‘’’, dan diakhiri dengan karakter yang sama dengan karakter awal. Karakter yang mungkin dikandung pada konstanta untai karakter adalah semua karakter ASCII.

{‘”’}{#0..#25

5} +{‘”’}|

{‘’’}{#0..#25 5}+{‘’’}

Contoh konstanta untai karakter yang valid:

“abcdefghij klmnopq, r’stuvw. Xyz!”

‘1234’’!@#$’

3.1.3Fortran G77

G77 merupakan paket compiler Fortran 77 yang dikembangkan oleh GNU. Versi G77 yang digunakan adalah 2.95. Paket G77 terdiri atas wrapper (g77.exe), compiler (f771.exe), assembler (as.exe), dan linker (ld.exe).

Wrapper dipanggil dengan menyertakan parameter yang terdiri atas opsi

wrapper, opsi compiler, opsi assembler, opsi linker, dan direktori kode sumber

(39)

dipanggil dengan suatu parameter yang sesuai, maka wrapper akan memanggil compiler terlebih dahulu untuk mengkompilasi kode sumber Fortran menjadi kode

sumber rakitan. Apabila compiler tidak mengembalikan pesan kesalahan, maka wrapper akan memanggil assembler untuk menerjemahkan kode program rakitan

menjadi kode objek. Apabila assembler juga tidak mengembalikan pesan kesalahan, maka berikutnya linker akan dipanggil. Linker akan menggabungkan kode objek hasil penerjemahan assembler dengan kode objek yang tersimpan pada pustaka (library) Fortran, untuk menghasilkan executable program apabila tidak terdapat kesalahan pada proses penggabungan (linking).

Tabel 3.3 Daftar Opsi Wrapper

Parameter Fungsi

--help Menampilkan dokumentasi bantuan (help) untuk g77. -dumpspecs Menampilkan semua string spesifikasi built-in. -dumpversion Menampilkan versi compiler.

-dumpmachine Menampilkan prosesor tujuan dari compiler. -Wa,<options> Melewatkan <options> kepada assembler. -Wp,<options> Melewatkan <options> kepada preprocessor. -Wl,<options> Melewatkan <options> kepada linker. -Xlinker <arg> Melewatkan <arg> kepada linker.

-save-temps Mempertahankan berkas assembler dan berkas objek. -v Menampilkan program yang dipanggil oleh g77.

-E Hanya melakukan praproses.

-S Hanya melakukan kompilasi.

-c Hanya melakukan kompilasi dan perakitan. -o <file> Menghasilkan keluaran pada <file>.

Proses penerjemahan kode sumber program Fortran menjadi executable program, juga dapat dilakukan secara manual tanpa menggunakan wrapper. Compiler

(40)

Parameter yang diberikan pada pemanggilan linker, terdiri atas opsi linker, direktori kode objek, dan daftar pustaka yang digunakan. Beberapa opsi linker yang umum digunakan, ditampilkan pada Tabel 3.6. Jika pemanggilan linker berhasil, maka akan dihasilkan executable yang siap untuk dijalankan.

Tabel 3.4 Daftar Opsi Compiler

Parameter Fungsi

-ffree-form Mengizinkan format program bebas.

-ff90 Menandakan program ditulis dengan dialek

Fortran 90.

-fdollar-ok Mengizinkan ‘$’ untuk digunakan sebagai nama

simbol.

-fno-backslash Memperlakukan ‘\’ sebagai karakter biasa. -fonetrip Menjalankan iteratif DO minimal sekali. -ffixed-line-len

gth-<n> Mengatur panjang maksimum baris menjadi <n>.

-fno-ugly Menolak semua struktur yang ‘buruk’.

-fugly-args Mengizinkan konstanta tidak bertipe dan

konstanta Hollerith dilewatkan sebagai argumen.

-fugly-assign Mengizinkan penugasan biasa terhadap variabel

yang ditugaskan dengan perintah ASSIGN.

-fugly-assumed Mengasumsikan dummy array menjadi array (1). -fugly-comma Menganggap koma pada akhir baris pemanggilan

prosedur sebagai penanda argumen null.

-fugly-complex Mengizinkan struktur kompleks yang buruk. -fugly-init Mengizinkan struktur inisialisasi yang buruk. -fugly-logint Mengizinkan INTEGER dan LOGICAL untuk

dipertukarkan.

-Os Mengoptimasi memory daripada kecepatan.

-ffast-math Meningkatkan kecepatan pemrosesan FP. -fkeep-inline-fu

nctions Mempertahankan kode fungsi walupun telah

tersedia fungsi baris.

-finline-functio

ns Mengintegrasikan fungsi sederhana pada

pemanggil.

-ffunction-cse Mengizinkan alamat fungsi ditempatkan pada

register.

-fgcse Menjalankan Global Common Subexpression

Elimination.

-frerun-cse-afte

r-loop Menjalankan CSE setelah optimisasi perulangan

(loop).

-frerun-loop-opt Menjalankan loop optimiser dua kali.

-msoft-float Menghindari penggunaan perangkat keras FP.

-m80837 Menggunakan perangkat keras FP.

-finit-local-zer

o Menginisialisasi variabel dan array lokal dengan

nilai 0.

(41)

Tabel 3.4 Daftar Opsi Compiler (Lanjutan)

Parameter Fungsi

-fcheck-memory-u

sage Memeriksa setiap pengaksesan memory.

-fstack-check Memeriksa stack.

-fverbose-asm Menghasilkan informasi tambahan.

-fxyzzy Menampilkan informasi internal terkait yang

dengan debugging.

-fdebug-kludge Menghasilkan informasi tambahan untuk COMMON

dan EQUIVALENCE .

-fbounds-check Memeriksa batasan subskrip dan substring. -fexceptions Mengizinkan penanganan eksepsi (exception). -fasynchronous-e

xceptions Mendukung eksepsi yang asinkron.

-fnew-exceptions Menggunakan penanganan eksepsi model baru.

-w Mengabaikan peringatan (warning).

-W Memungkinkan peringatan tambahan.

-Winline Memperingati fungsi baris yang tidak valid. -Wuninitialized Memperingati variabel yang tidak diinisialisasi. -Wunused Memperingati variabel yang tidak digunakan.

Tabel 3.5 Daftar Opsi Assembler

Parameter Fungsi

-W Mengabaikan peringatan (warning).

-Z Menghasilkan kode objek walaupun terdapat kesalahan. -o <file> Mengatur nama kode objek keluaran.

--statistics Menampilkan ukuran statistik dari eksekusi. --version Menampilkan versi assembler.

Tabel 3.6 Daftar Opsi Linker

Parameter Fungsi

--noinhibit-e

xec Menghasilkan keluaran walaupun ditemukan kesalahan. -l <libname> Mencari pustaka dengan nama ><libname .

-L <dir> Menambah <dir> ke dalam direktori pencarian pustaka. -o <file> Mengatur nama executable keluaran.

--version Menampilkan informasi versi linker.

--stats Menampilkan statistik penggunaan memory. --verbose Menghasilkan informasi lebih selama linking. --support-old

(42)

3.2Diagram Aliran Data (Data Flow Diagram) & Kamus Data

Diagram aliran data merupakan representasi grafis yang mengilustasikan aliran data antar proses. Sedangkan kamus data menspesifikasikan rincian tiap data yang mengalir tersebut.

3.2.1Diagram Aliran Data Level 0

Perangkat lunak IDE (Integrated Development Environment) yang akan dibangun, melakukan interaksi bolak-balik dengan pengguna. Seperti diperlihatkan pada Gambar 3.1, aliran informasi dari pengguna berupa dtKodeSumber, dtReg, dtOpsiCompiler, dtOpsiEditor, dtOpsiEnv, dan dtNamaFile.

Gambar 3.1 Diagram Aliran Data Level 0

Interaksi yang terjadi secara umum adalah, pengguna menuangkan algoritmanya ke dalam perangkat lunak dalam bentuk kode sumber (dtKodeSumber). Pengguna mungkin bekerja dengan berkas kode sumber yang telah ada sebelumnya ataupun pengguna bekerja dengan berkas baru yang kemudian akan disimpan dengan suatu nama, yang dispesifikasikan pada dtNamaFile. Ketika mengeksekusi program yang dikerjakan, pengguna mungkin memiliki preferensi opsi kerja compiler, assembler, dan atau linker, yang direpresentasikan dtOpsiCompiler dan dtOpsiEnv.

(43)

(dtOpsiEditor). Untuk memanfaatkan fitur enkripsi dan dekripsi kode sumber, pengguna terlebih dahulu harus meregistrasikan data diri (dtReg).

Setelah menerima masukan informasi dari pengguna, perangkat lunak IDE akan menghasilkan informasi dtInfoDebug, dtKodeObj, dtKodeSumberOut, dtExecutable. Pengguna menerima informasi debugging (dtInfoDebug) seandainya terdapat kesalahan pada kode program pengguna. Apabila tidak ditemukan kesalahan, maka pengguna akan mendapatkan informasi berupa kode objek (dtKodeObj) dan program yang siap untuk dijalankan (dtExecutable). Pengguna juga akan menerima informasi kode sumber keluaran perangkat lunak (dtKodeSumberOut) ketika pengguna melakukan penyimpanan kode sumber.

3.2.2Diagram Aliran Data Level 1

(44)

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.

(45)

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).

(46)

3.2.3Diagram Aliran Data Level 2

Rincian proses P1 (Registrasi) diperlihatkan pada Gambar 3.3. dtReg yang diterima oleh proses P1 diolah oleh proses P1.1 (Mengolah Data Registrasi) untuk disimpan ke dalam berkas F4 (FileRegistrasi). dtKunci yang dihasilkan oleh proses P1 merupakan hasil pengolahan proses P1.2 (Membangkitkan Kunci dari Data Registrasi) dari data registrasi pengguna yang tersimpan di dalam berkas F4.

Gambar 3.3 Proses Registrasi

(47)

Gambar 3.4 Proses Enkripsi / Dekripsi

(48)

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

(49)

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,

(50)

P5.1

3.2.4Diagram Aliran Data Level 3

Gambar 3.8 mengilustrasikan rincian proses Enkriptor. Masukan dtKodeSumber dibaca karakter demi karakter oleh proses P2.2.1 (Membaca Karakter demi Karakter) dan kemudian meneruskan informasi tersebut ke proses P2.2.3 (Substitusi Karakter). Proses P2.2.2 (Membaca Untaian Kunci) menerima masukan dtKunci, membaca untaian kunci satu demi satu, dan meneruskan informasi tersebut ke proses P2.2.2. Proses P2.2.2 menerima masukan karakter-karakter kode sumber (dtKodeSumber) dan mensubstitusikannya dengan tiap untai kunci (dtKunci) dan menghasilkan karakter-karakter terenkripsi (dtKodeSumberEnkrip).

(51)

Gambar 3.9 mengilustrasikan rincian proses Dekriptor. Karakter demi karakter dtKodeSumberEnkrip dibaca oleh proses P2.3.1 (Membaca Karakter demi Karakter) dan kemudian meneruskan informasi tersebut ke proses P2.3.3 (Substitusi Karakter). Proses P2.3.2 (Membaca Untaian Kunci) membaca untaian kunci satu demi satu, dan meneruskan informasi tersebut ke proses P2.3.2. Proses P2.3.2 menerima masukan karakter-karakter kode sumber (dtKodeSumberEnkrip) dan mensubstitusikannya dengan tiap untai kunci (dtKunci) dan menghasilkan karakter-karakter semula (dtKodeSumber).

Gambar 3.9 Proses Dekriptor

(52)

scanning proses P3.2.2 dan menghasilkan keluaran dtHighlight sesuai dengan jenis

besaran leksik tersebut.

Gambar 3.10 Proses Editor

3.2.5Kamus Data

Tabel 3.7 mendaftarkan rincian data dan berkas yang digunakan pada diagram aliran data yang telah dipaparkan sebelumnya.

Tabel 3.7 Kamus Data Diagram Aliran Data

Nama Data Tipe Data Keterangan

dtKodeSumber TStrings Baris-baris kode sumber

masukan.

dtReg record{firstname,

lastname, company, noReg}

Informasi registrasi.

dtOpsiCompiler set of TOpsiComp Himpunan opsi compiler. dtOpsiEditor set of TOpsiEditor Himpunan opsi editor. dtOpsiEnv set of TOpsiEnv Himpunan opsi environment.

(53)

Tabel 3.7 Kamus Data Diagram Aliran Data (Lanjutan)

Nama Data Tipe Data Keterangan

dtInfoDebug TStrings Baris-baris informasi

debugging.

dtKodeObj Binary Kode biner mesin.

dtKodeSumberOut TStrings Baris kode sumber keluaran.

dtExecutable Binary Kode biner yang dapat

dijalankan.

TStrings array of String Baris-baris untai karakter.

firstname String Nama depan pengguna.

lastname String Nama keluarga pengguna.

company String Perusahaan pengguna.

noReg String Nomor registrasi pengguna.

TOpsiComp enum{ffreeform, ff90,

tabsize Integer Ukuran tabulasi dalam hitungan

(54)

Tabel 3.7 Kamus Data Diagram Aliran Data (Lanjutan)

Nama Data Tipe Data Keterangan

fontname String Nama font.

fontsize Integer Ukuran font.

ResWrdFont TFont Pengaturan font untuk kata

tercadang.

IntConstFont TFont Pengaturan font untuk konstanta

bilangan bulat.

FloatConstFont TFont Pengaturan font untuk konstanta bilangan pecahan.

CharConstFont TFont Pengaturan font untuk konstanta

untai karakter.

CommentFont TFont Pengaturan font untuk komentar.

TFont record{foreground, bold, italic, underline}

Informasi pengaturan font.

foreground Integer Warna teks.

bold Boolean Status style cetak tebal.

italic Boolean Status style cetak miring.

underline Boolean Status style garis bawah.

dtKunci String Kunci enkripsi/dekripsi berkas

kode sumber.

dtKodeSumberEnkrip TStrings Baris kode sumber terenkripsi. dtOptComp array of String Untai-untai karakter padanan

TOpsiCompiler.

dtOptEnv array of String Untai-untai karakter padanan TOpsiEnv.

dtNamaFileTemp String Path lengkap berkas sementara.

dtDebug TStrings Informasi debugging yang

dikembalikan oleh compiler, assembler, dan linker.

dtNamaFileEXE String Path lengkap executable.

dtHighlight TStrings Baris kode ter-highlight

F1 File Berkas kode sumber keluaran.

F2 File Berkas kode objek.

F3 File Berkas executable.

F4 File Berkas registrasi.

F5 File Berkas kode sumber sementara.

F6 File Berkas konfigurasi compiler.

F7 File Berkas konfigurasi environment.

(55)

3.3State Diagram

State diagram (diagram keadaan) merupakan suatu model matematis untuk

merepresentasikan suatu ekspresi reguler yang diterima oleh suatu bahasa. Dari suatu masukan string, dapat diperiksa apakah string tersebut diterima oleh suatu ekspresi reguler atau tidak. Suatu masukan diterima apabila dengan merunut tiap karakter string dari awal sampai akhir, berakhir pada state akhir. Pada Gambar 3.11

diperlihatkan state diagram bilangan desimal. Contoh masukan string yang diterima oleh state diagram bilangan desimal, diantaranya 123 dan +4567.

Gambar 3.11 State Diagram Bilangan Desimal

Gambar 3.12 memodelkan ekspresi reguler bilangan bulat biner ke dalam state diagram. Contoh masukan yang diterima oleh state diagram bilangan biner,

diantaranya “101011”B. Dengan merunut karakter demi karakter dari masukan tersebut, maka dapat dicapai state akhir, yaitu bin.

q2

(56)

q2

Gambar 3.13 State Diagram Bilangan Oktal

Ekspresi reguler bilangan bulat oktal dimodelkan pada Gambar 3.13. Contoh masukan yang tidak diterima oleh state diagram bilangan oktal tersebut adalah “1234’O. Dengan merunut tiap karakter pada string masukan tersebut, state terakhir (oct) tidak dapat dicapai. Karakter masukan hanya dapat dirunut sampai karakter kelima (karakter ‘4’), dan state terakhir yang dapat dicapai adalah state q7.

(57)

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

(58)

3.4Perancangan Antarmuka

Antarmuka untuk perangkat lunak IDE yang akan dibangun terdiri atas delapan buah form. Gambar 3.17 mengilustrasikan rancangan antarmuka untuk jendela utama. Pada

rancangan antarmuka jendela utama terdapat menu bar (A), toolbar (B), tab page code editor (C), dan status bar (D).

Status bar

File Edit Search Execute Tools Window

untittled

A

B

C

D

Gambar 3.17 Jendela Utama Perangkat Lunak IDE

Pada Gambar 3.18, menu File terdiri atas submenu New, Open, Recent, Save, Save As, Save All, Close, Close All, Exit. Submenu New digunakan untuk membuka

tab code editor yang baru. Submenu Open digunakan untuk membuka berkas kode

sumber yang telah ada sebelumnya. Submenu Recent digunakan untuk menampilkan daftar nama berkas kode sumber yang diolah sebelumnya. Submenu Save digunakan untuk memutakhirkan berkas kode sumber yang tersimpan. Submenu Save As digunakan untuk menyimpan berkas kode sumber dengan nama lain. Submenu Save All digunakan untuk menyimpan semua berkas kode sumber yang terbuka. Submenu

Close digunakan untuk menutup berkas kode sumber yang sedang aktif. Submenu

Close All digunakan untuk menutup semua berkas kode sumber yang terbuka.

(59)

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

(60)

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

(61)

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

(62)

Case sensitive Whole word

From cursor Entire scope

Replace Text to find

Replace with

Gambar 3.25 Jendela Replace

Pada gambar 3.26 diperlihatkan jendela Compiler Options. Jendela Compiler Options mendaftarkan opsi-opsi compiler yang tersedia dan pilihan opsi compiler

pengguna yang tersimpan sebelumnya. Pengguna dapat memilih opsi compiler sesuai dengan preferensinya, dengan cara memberi tanda centang pada checkbox yang tersedia. Ketika tombol OK ditekan, maka pilihan opsi compiler pengguna akan disimpan ke dalam berkas konfigurasi compiler. Ketika tombol Cancel ditekan, maka jendela Compiler Options akan ditutup dan pilihan pengguna akan diabaikan. Ketika tombol Default ditekan, maka pilihan default akan dimuat.

Gambar 3.26 Jendela Compiler Options

(63)

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

Gambar

Gambar 2.4 Struktur Baris pada Fortran
Gambar 2.5 Mengolah Kode Sumber Melalui Notepad
Gambar 2.7 Menjalankan Executable
Tabel 3.1 Daftar Kata Tercadang
+7

Referensi

Dokumen terkait

Indikator Kinerja Kegiatan 001 Jumlah Penyelesaian Administrasi Perkara di tingkat Pertama dan banding di Lingkungan Peradilan Umum yang tepat waktu. 002 Jumlah Penyelesaian

Uraian di atas merupakan dasar dari penelitian ini, namun dari seluruh penelitian mengenai analgesia preemptif dan preventif yang dipublikasikan dengan pendekatan

Krisma Pradana [11], dalam penelitiannya merancang sebuah aplikasi encoder dan decoder yang ditujukan untuk melakukan obfuscation terhadap sebuah perangkat lunak

Tanaman berproduksi sedang memiliki kadar Magnesium tanah yang rendah, tanaman berproduksi Tinggi memiliki kadar Fosfor dan Magnesium tanah yang rendah .Hasil Analisis

Pada hari ini, Minggu, 13 Maret 2016, setelah Kebaktian Umum I dan II, Saudara/i diundang ikut serta dalam persekutuan tea - time untuk kita lebih saling mengenal dan bersekutu di

2) memberikan informasi tentang pelaksanaan kemitraan kepada Menteri Teknis dan Menteri; 3) meningkatkan efisiensi usaha dalam kemitraan. Dalam konsep kemitraan semua pihak

Tujuan yang sedang dibangun adalah membuat iklan yang di luar kebiasaan iklan medium billboard dengan pemanfaatan teknologi canggih agar sasaran khalayak

Berdasarkan uraian tersebut dapat disimpulkan bahwa peningkatan hasil belajar pada aspek literasi sains (konten, proses dan sikap sains) antara kelas yang