• Tidak ada hasil yang ditemukan

BAB II. LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II. LANDASAN TEORI"

Copied!
15
0
0

Teks penuh

(1)

BAB II. LANDASAN TEORI

2.1. RPG

RPG adalah bahasa pemrogamman yang dikembangkan oleh IBM untuk platform iSeries dan OS/400 (IBM, 1994). RPG merupakan bahasa pemrogamman terstruktur, tidak free-format. Setiap penulisan keyword (kecuali comments) harus disesuaikan dengan posisinya masing-masing, baik itu secara baris maupun kolom. Urutan spesifikasi (baris) dalam bahasa pemrogamman RPG meliputi :

• Control Specification (H) menjelaskan informasi mengenai program • File Description Specification (F) menjelaskan semua file yang digunakan

pada program

• Extension Specification (E) menjelaskan arrays dan tabel

• Line Counter Specification (L) mengindikasikan panjang overflow lines • Input specification (I) menjelaskan data struktur, konstan variabel, records

dan fields pada input files, dan mengindikasikan bagaimana records dan fields digunakan

• Calculation Specification (C) menjelaskan komputasi atau fungsi yang dijalankan oleh program secara sekuensial, termasuk mengontrol operasi input dan output

• Output Specification (O) menjelaskan records dan fields, serta mengindikasikan kapan keduanya ditulis oleh program

(2)

Untuk posisi kolom sendiri juga berbeda-beda tergantung posisi baris. Sebagai contoh posisi kolom untuk Calculation Specification bisa dilihat pada tabel 2.1

Tabel 2.1. Posisi Kolom untuk Calculation Specification

Position Argument Type Description

6 Form Type Harus diisi dengan ‘C’

7 Comment Jika ini berupa comments, harus diberi tanda ‘*’

9-17 Indicator

Mendandakan indikator apakah kalkulasi akan dijalankan atau tidak

18-27 Factor 1 Variabel 1 yang akan dikenakan suatu operasi

28-32 Operation Code

Operasi yang akan berefek pada factor 1, factor2, dan result

field

33-42 Factor 2 Variabel 2 yang akan dikenakan suatu operasi

43-48 Result Field Variabel 3 yang akan dikenakan suatu operasi

49-51 Field Length

Digunakan untuk mendefinisikan panjang dari variabel yang dibuat

52 Decimal Position Jika ada angka 0, maka variabel dianggap numerik

53 Operation Extender Memberikan atribut tambahan terhadap sebuah operasi

54-59 Resulting Indicators Indikator yang menandakan hasil suatu operasi

60-74 Comment Komentar akan baris kode 75-80 Comment Komentar akan baris kode

Kemudian, posisi kolom untuk file specification :

Tabel 2.2. Posisi Kolom untuk File Specification

Position Argument Type Description

6 Form Type Harus diisi dengan ‘F’

(3)

15 File Type

Diisi ‘I’ untuk input, ‘U’ untuk update, ‘O’ untuk output, dan ‘C’ untuk kombinasi input

dan output

16 File Designation

Diisi ‘P’ untuk primary file , ‘S’ untuk

secondary file, ‘R’ untuk record address file,

‘T’ untuk array atau table file, ‘F’ untuk

procedural file

17 End of File

Diisi blank atau ‘E’ jika semua record harus diproses sampai selesai sebelum program

selesai dijalankan

18 Sequence

Diisi ‘A’ atau blank untuk ascending, ‘D’ untuk descending

19 File Format

Diisi ‘F’ untuk program described file, atau ‘E’ untuk externally described file

20 - 23 Kosong Kosong

24 – 27 Record Length Diisi angka 1 - 9999

28 Limit Processing Terisi blank, atau ‘L’ jika ada batasan pada file

29 - 30

Length of key field or record address field

Diisi angka 1 – 99 atau blank

31 Record address type

Diisi blank , atau ‘A’ untuk character keys, ‘P’ untuk numeric keys, atau ‘K’ untuk key yang

dideklarasikan di program

32 File Organization

Terisi blank, atau ‘I’ jika file memiliki indeks, atau ‘T’ jika file memiliki relative record

number

33 – 34 Overflow Indicator Terisi jika menggunakan file bertipe report

35 – 38 Key Field Starting Location Terisi blank atau angka 1 – 9999

(4)

baris tipe E dan L

40 – 46 Device

Terisi ‘PRINTER’ apabila file yang dideklarasikan adalah report, ‘DISK’ jika file

yang dideklarasikan adalah disk file, ‘WORKSTN’ jika file merupakan layar

program

47 – 52 Kosong Kosong

53 Continuation Lines Terisi ‘K’ jika ada continuation lines

54 – 59 Routine

Hanya digunakan jika kolom device terisi

special

60 – 65 Kosong Kosong

66 File Addition Diisi ‘A’ jika ada operasi penulisan ke file

67 – 70 Kosong Kosong

71 – 72 File Condition

Diisi ‘UC’ jika file harus di-open dan di-close secara manual oleh program

73 - 74 Kosong Kosong

75 - 80 Comments Berisi komentar jika ada

Contoh untuk program RPG bisa dilihat pada gambar 2.1

Columns . . . : 1 71 Edit RANDI4/QRPGSRC SEU==> EGTPLN FMT * ... *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 *************** Beginning of data ************************************* 0001.00 00100 ***************************************************************** 0002.00 00200 ** PROPRIETARY PROGRAM MATERIAL ** 0003.00 00300 ** ** 0004.00 00400 ** THIS MATERIAL IS PROPRIETARY TO PT. MULTIPOLAR CORP. AND IS ** 0005.00 00500 ** NOT TO BE REPRODUCED, DISCLOSED, OR USED EXCEPT IN ACCORD - ** 0006.00 00600 ** ANCE WITH PROGRAM LICENSE OR OTHER WRITTEN AUTHORIZATION OF ** 0007.00 00700 ** PT. MULTIPOLAR CORP. ** 0008.00 00800 ** **

(5)

0009.00 00900 ** BANKVISION VERSION 4.3 ** 0010.00 01000 ** COPYRIGHT (C) 1999 BY PT. MULTIPOLAR CORP. ** 0011.00 01100 ***************************************************************** 0012.00 01200H/TITLE EGTPLN - Program to get field DXCU10 from EPLANX 0013.00 01300H* Created by : Randi Flac 0013.01 H* Creation Date : Jan, 5th 2015 0015.00 01500FEPLANXL0IF E K DISK 0016.00 01600 * 0017.00 C PLNKEY KLIST 0018.00 C KFLD DXAPCD 0019.00 C KFLD DXPLCD 0020.00 C KFLD DXCCYC 0021.00 01600 * 0022.00 01700C *ENTRY PLIST 0023.00 01800C PARM DXAPCD Account Nmbr 0024.00 01900C PARM DXPLCD Participatio 0025.00 01900C PARM DXCCYC Currency 0026.00 01900C PARM INFO 5 Return Var 0027.00 02300 * 0028.00 02400C PLNKEY CHAINEPLANXL0 N90 0029.00 02500C N90 MOVELDXCU10 INFO 0030.00 02600C RETRN ****************** End of data **************************************** F3=Exit F4=Prompt F5=Refresh F9=Retrieve F10=Cursor F11=Toggle F16=Repeat find F17=Repeat change F24=More keys

Gambar 2.1. Contoh Sumber Kode RPG

Salah satu fitur yang dimiliki RPG adalah penggunaan indikator. Setiap operasi yang dilakukan di baris program bisa saling terkait dengan penggunaan indikator, walaupun hal ini tidak mutlak. Indikator adalah sekumpulan variabel yang memiliki dua state, yaitu ON dan OFF. Indikator ini bisa merupakan pemicu apakah sebuah operasi akan berjalan, atau merupakan hasil yang ditimbulkan

(6)

akibat jalannya sebuah operasi. Sebagai contoh, pada program diatas, ada operasi CHAIN yang mencari apakah record dengan key yang didefinisikan pada PLNKEY ada atau tidak. Jika record tersebut ada, maka indikator 90 akan bernilai OFF dan operasi memindahkan isi dari field DXCU10 ke variabel INFO akan berjalan. Indikator 90 pada kolom posisi 54-59 merupakan indikator yang menjadi hasil operasi CHAIN, sedangkan indikator 90 pada posisi 9-17 adalah pemicu jalannya operasi MOVEL.

2.2. Software Testing

Software testing adalah kegiatan eksplorasi sistemik dari sistem atau komponen sistem untuk mengurangi resiko dan meningkatkan kualitas dari sebuah perangkat lunak dengan menemukan cacat yang ada pada perangkat lunak (Hambling dan Morgan, 2010). Testing tidak bertujuan untuk memperbaiki cacat, namun cacat yang ditemukan akan diberikan kembali ke programmer untuk diperbaiki. Oleh karena itu, testing menjamin bahwa perubahan dan koreksi yang dilakukan terhadap sistem atau komponen sistem dicek secara komperehensif. Tanpa adanya testing, maka error yang ada pada sebuah program akan berubah menjadi defects yang bisa menyebabkan failure. Menurut Hambling, failure ini bisa menyebabkan beberapa hal yang diantaranya :

1. Kehilangan uang 2. Kehilangan waktu

3. Kehilangan reputasi bisnis 4. Injury

(7)

Namun, perlu diperhatikan bahwa exhaustive testing adalah hal yang tidak mungkin. Jika semua kemungkinan test case telah dilakukan, maka sudah pasti program bebas dari cacat. Namun, jika semua test case telah dilakukan, maka proses testing tidak akan pernah selesai, bahkan hingga saat ini (Hambling dan Morgan, 2010).

2.3. Test Case Design Technique

Menurut Hambling (2010), teknik untuk mendesain test case dikategorikan menjadi tiga kategori :

1. Mendesain test case secara langsung dari spesifikasi yang ada. Hal ini juga dikenal dengan nama black box testing. Teknik ini dilakukan berdasarkan dokumentasi yang ada, baik aspek fungsional maupun non fungsional. Namun, teknik ini tidak dibuat berdasarkan informasi struktur internal dari komponen dan sistem yang akan dites.

2. Mendesain test case berdasarkan struktur komponen sistem, atau biasa disebut dengan white box test. Hal ini adalah fokus yang akan dilakukan dalam penelitian ini.

3. Mendesain test case berdasarkan pengalaman tester dalam menangani sistem yang serupa. Hal ini biasa disebut dengan experience based techniques.

Lebih lanjut mengenai ketiga teknik ini akan dijelaskan pada poin dibawah.

(8)

2.3.1 Black Box Testing

Black box testing merupakan sebuah teknik testing yang dikembangkan berdasarkan spesifikasi ataupun model lain yang menggambarkan apa yang dijalankan sistem, bukan apa yang seharusnya dijalankan sistem (Hambling dan Morgan, 2010). Teknik ini dibagi menjadi lima macam, yaitu :

1. Equivalence Partitioning

Teknik dengan mengelompokkan input yang sejenis untuk mempermudah pengetesan. Contoh :

Valid Input : Nama dengan panjang hingga dua puluh karakter alfabetik dan tidak boleh kosong.

Maka, valid partition-nya adalah karakter alfabetik dengan panjang dari satu hingga dua puluh karakter, sedangkan invalid partition-nya adalah kosong, karakter alfabetik dengan panjang lebih dari dua puluh karakter, dan kumpulan karakter yang mengandung unsur non alfabetis (angka, special characters).

2. Boundary Value Analysis

Teknik analisa dimana input yang diberikan dalam test case merupakan nilai-nilai batas (atas dan bawah) dari nilai yang diperbolehkan. Contoh pada kasus equivalence partitioning diatas, maka valid boundaries-nya adalah satu hingga dua puluh karakter, dan invalid boundaries-nya adalah karakter yang panjangnya kurang dari satu (kosong) dan karakter yang panjangnya lebih dari

(9)

dua puluh karakter. Biasanya teknik ini digunakan bersama-sama dengan equivalence partitioning.

3. Decision Table Testing

Teknik ini dilakukan dengan membuat serangkaian kombinasi kondisi yang ada, dan tindakan apa yang akan dipicu untuk setiap kondisi. Contoh teknik ini bisa dilihat pada tabel berikut :

Tabel 2.3 Contoh Decision Table Testing

Contoh Test Case 1 Test Case 2 Test Case 3 Test Case 4

Kondisi 1 T T F F

Kondisi 2 T F T F

Tindakan Y N N N

4. State Transition Testing

Teknik ini dilakukan dengan membuat sebuah state diagram yang menggambarkan setiap perpindahan kondisi (state) yang bisa terjadi pada sistem. Kemudian, disimulasikan perpindahan dari state ke state lain berdasarkan input yang diberikan.

5. Use Case Testing

Teknik ini menggunakan use case sebagai input dalam pembuatan test case.

2.3.2 White Box Testing

White box testing merupakan sebuah teknik pembuatan test case yang dilakukan dengan melihat struktur internal sistem, dalam hal ini

(10)

berupa sumber kode. Teknik ini timbul dikarenakan tidak penting seberapa lengkap dan kompleks black box testing yang dilakukan, mustahil bahwa semua perilaku dan kebutuhan yang ada di dalam sistem bisa terlihat oleh tester. Selain itu, apabila ada malicious code, yang jelas diluar ruang lingkup spesifikasi, tidak dapat dideteksi oleh black box testing (Black, 2014). Hampir sebagian besar dari kegiatan white box testing akan berkaitan dengan coverage, yaitu tingkat kedetilan ruang lingkup testing agar sesuai dengan fungsionalitas sistem yang diharapkan. Diagram alir bisa digunakan untuk menggambarkan struktur internal sebuah program, mulai dari setiap executable statements hingga setiap kondisi (true dan false) pemicu jalannya statements yang ada pada program, sehingga bisa menjadi input pembuatan test case (Hambling, 2010).

2.3.2.1. Statement Coverage

Statement Coverage merupakan teknik white box testing yang memastikan setiap executable statements dijalankan satu kali, sehingga yang perlu dilakukan adalah membuat semua kemungkinan test case dimana masing-masing executable statement dipastikan akan berjalan. Satu statement yang dijalankan hanya merupakan bagian dari satu test case, sehingga tidak mungkin ada test case lain yang menjalankan statement yang sama. Untuk lebih jelas mengenai hal ini, sebagai ilustrasi ada program seperti berikut :

(11)

READ A READ B

IF A < 0 THEN PRINT “A Negative” END IF

IF B < 0 THEN PRINT “B Negative” END IF

Berdasarkan definisi statement coverage, maka setiap executable statement harus dijalankan satu kali. Oleh karena itu, test case untuk mencapai statement coverage hanya ada satu, yaitu dengan memberikan input A negatif dan input B negatif.

2.3.2.2. Branch Coverage

Berbeda dengan statement coverage, branch coverage dilakukan dengan membuat semua test case yang mungkin dimana setiap kondisi akan dieksekusi, baik apabila terpenuhi maupun tidak, namun kondisi true dan false dari masing-masing kondisi hanya perlu dijalankan satu kali. Sebagai contoh, berdasarkan program yang digunakan sebagai ilustrasi diatas, maka jumlah test case untuk mencapai branch coverage ada dua, yaitu :

1. Memberikan input A negatif dan B negatif 2. Memberikan input A positif dan B positif

Pilihan selain test case diatas adalah :

(12)

2. Memberikan input A negatif dan B positif

2.4. Cyclomatic Complexity

Cyclomatic complexity adalah sebuah metriks yang dikemukakan oleh Thomas McCabe yang mengukur secara kuantitatif tingkat kompleksitas sebuah program (Nidhra dan Dondeti, 2012). Metriks ini merupakan salah satu metriks paling populer di dalam bidang rekayasa piranti lunak untuk mengukur kompleksitas program (Madi, 2013). McCabe menjelaskan bahwa setiap struktur dalam kode dapat dites hanya dengan memperhatikan independent basis paths, dan semua kemungkinan path lain yang tak terhingga jumlahnya adalah merupakan penggunaan basis path ini secara berulang-ulang. Basis path dalam hal ini merupakan sebuah path linear yang independen. Dalam jalur ini, tidak dikenal adanya iterasi. Iterasi dianggap sama seperti kondisi biasa, dimana secara umum hanya akan dieksekusi dua kali, yaitu true (masuk ke dalam statement di dalam perulangan) dan false (keluar dari perulangan). Cyclomatic Complexity ini tidak tergantung pada ukuran (size) sebuah program, namun bergantung pada jumlah kondisi yang menjadi struktur program tersebut. Menurut McCabe, semakin tinggi nilai cyclomatic complexity sebuah program, maka akan semakin banyak jumlah cacat yang ada, dan juga semakin banyak test case yang dibutuhkan untuk melakukan pengujian kualitas sistem.

Rumus untuk menghitung cyclomatic complexity sebuah program adalah : Cylomatic Complexity (CC) = E – N + P + 1, dimana :

E = Jumlah edge yang ada pada graph N = Jumlah node yang ada pada graph

(13)

P = Jumlah connected component yang ada pada graph, atau dengan kata lain jumlah fungsi atau modul lain yang dipanggil pada graph

Berdasarkan pendapat McCabe, idealnya, sebuah program (atau modul) hanya boleh memiliki nilai cylomatic complexity di bawah 10. Lebih dari itu berarti program diasumsikan memiliki resiko kesalahan lebih tinggi (Hambling dan Morgan, 2010). Faktor yang menentukan tingginya nilai cyclomatic complexity pada sebuah program adalah jumlah kondisi dan percabangan pada program tersebut, dimana nilai cyclomatic complexity akan tinggi untuk program dengan jumlah percabangan dan perulangan yang banyak (Madi, 2013).

Terkait diagram alir, node merupakan statement yang dieksekusi dan edge adalah panah yang menghubungkan semua statement yang ada.

Langkah-langkah untuk menghasilkan test case dengan menggunakan metode ini adalah (Madi, 2013) :

1. Gambarkan diagram alir berdasarkan sumber kode yang ada 2. Hitung cyclomatic complexity dari diagram yang dihasilkan

3. Membuat test case yang akan mengeksekusi setiap path yang ada pada graph

2.5. DOT Language

DOT language adalah sebuah markup language yang menggambarkan tiga macam objek, yaitu graphs, nodes, dan edge, dan relasi diantaranya (Gansner, 2006). Bahasa ini adalah hasil akhir transformasi dari sumber kode bahasa RPG dalam penelitian ini. Bahasa ini akan diproses menggunakan perangkat lunak open source Graphviz untuk diolah menjadi diagram alir.

(14)

Contoh penulisan bahasa ini dan penerapannya dalam pembuatan diagram alir akan dijelaskan lebih detil di bagian selanjutnya.

2.6. Flowchart

Flowchart mendeskripsikan pola visual yang menggambarkan detil prosedural, antara lain urutan, kondisi, dan pengulangan, dimana semua ini merupakan elemen dari pemrogamman struktural (Pressman, 2010). Di dalam flowchart, simbol kotak menggambarkan proses, simbol berlian menggambarkan kondisi dan repetisi, serta panah menunjukkan alur dari program. Gambar di bawah ini menjelaskan ketiga elemen tersebut.

Proses 1 Proses 2 Kondisi 1 Proses 1 Proses 2 F T Kondisi 1 T Proses 1 F Contoh Sequence Contoh Condition Contoh Repetition

(15)

2.7. Legacy Systems

Legacy systems adalah sistem yang sudah lama sekali dibuat dan telah secara terus menerus dimodifikasi untuk memenuhi kebutuhan bisnis dan platform komputasi, dimana bagi organisasi, biaya untuk maintenance-nya sangat tinggi dan resiko untuk melakukan evolusi sistem juga tinggi (Pressman, 2010). Namun, legacy systems tetap memberikan dukungan penting dalam fungsi utama bisnis dan tidak tergantikan. Sisi negatif legacy systems adalah kualitasnya yang rendah, antara lain desain yang sulit dikembangkan lebih maju, sumber kode yang berbelit-belit, dokumentasi yang tidak lengkap, test cases dan hasil yang tidak pernah tercapai, kurangnya dokumentasi perubahan program, dan masih banyak lagi daftar yang tidak bisa disebutkan (Pressman, 2010). Menurut Pressman, seiring berkembangnya waktu, legacy systems berubah karena alasan-alasan berikut :

1. Sistem harus beradaptasi untuk menghadapi lingkungan teknologi dan komputasi yang terus berkembang

2. Sistem harus diperbaharui untuk mengimplementasi kebutuhan bisnis baru

3. Sistem harus diekstensifikasi agar bisa beroperasi dengan sistem yang lebih modern

4. Sistem harus di-rearchitected agar dapat berjalan di dalam jaringan lingkungan yang ada

Gambar

Tabel 2.1. Posisi Kolom untuk Calculation Specification
Gambar 2.1. Contoh Sumber Kode RPG
Tabel 2.3 Contoh Decision Table Testing  Contoh  Test Case 1  Test Case 2  Test Case 3  Test Case 4
Gambar 2.2 Elemen pada flowchart

Referensi

Dokumen terkait

(2) Melakukan analisa terhadap peraturan perundang-undangan yang berlaku dan sumber hukum lain baik secara vertikal maupun secara horizontal, serta hubungan satu dengan lainnya

Pertama-tama penulis panjatkan puji dan syukur kehadirat Allah SWT atas segala limpahan rahmad dan karunia-Nya sehingga tesis yang berjudul “ Pemanfaatan Karet Ban Bekas

Berdasarkan latar belakang penelitian di atas, maka dirumuskan masalah sebagai berikut “Komponen kesadaran linguistik (fonem, morfem, sematik, sintaksis) manakah

Data yang diperlukan untuk analisis ketersediaan air adalah data debit sungai bulanan atau harian dengan periode waktu lebih besar dari 10 tahun, dimana data ini

Dalam merancang sebuah produk meja dan kursi belajar yang inovatif dan unik, perlu adanya pemahaman terhadap desain-desain meja dan kursi belajar yang ada di

Tim Gabungan terus melakukan evakuasi pencarian korban longsor di dusun Dusun Jemblung Desa Sampang Kecamatan Karangkobar Kabupaten Banjarnegara.. Dari hasil pencarian

Uji beda rata-rata digunakan untuk membandingkan antara hasil produksi dan pendapatan usahatani cabai merah yang diperoleh petani sebelum perubahan iklim dengan

(1) Setiap Tenaga Kesehatan Hewan bukan Dokter Hewan sebagaimana dimaksud dalam pasal 2 ayat (2) huruf b yang terlibat dalam Pelayanan Jasa Medik Veteriner praktik wajib