• Tidak ada hasil yang ditemukan

BAB IV PERANCANGAN. 4.1 Autograder Engine IV-1

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV PERANCANGAN. 4.1 Autograder Engine IV-1"

Copied!
16
0
0

Teks penuh

(1)

IV-1

BAB IV

PERANCANGAN

Pada Tugas Akhir ini, akan dijelaskan mengenai perancangan autograder Phobos.

Berdasarkan deksripsi arsitektural pada Subbab 3.3.4, Phobos secara umum terdiri dari

beberapa tingkatan (tier) : presentation tier, logic tier dan data tier. Pada logic tier Phobos

memiliki dua komponen utama, yaitu engine penilai otomatis dan aplikasi front-end. Pada Subbab 4.1 akan dijelaskan mengenai perancangan yang dilakukan pada komponen engine penilai otomatis. Subbab 4.2 akan menjelaskan mengenai aplikasi front-end dan tampilan pada presentation tier. Penyimpanan data persisten (data tier) akan dibahas pada Subbab 4.3.

Modul interpreter pada Phobos akan dibahas secara khusus pada Subbab 4.4.

4.1 Autograder Engine

Pada Subbab ini akan diberikan penjelasan mengenai perancangan komponen autograder

engine pada Phobos. Autograder engine adalah komponen yang bertanggung jawab melakukan penilaian otomatis pada serahan tugas yang diberikan berdasarkan trigger dari aplikasi front-end. Sebagai komponen pada logic tier, komponen ini mengimplementasikan dari seluruh use case sistem : membuat skema penilaian, menilai tugas source code, melihat laporan nilai, dan menghapus hasil penilaian. Rancangan kelas-kelas dalam autograder

engine dapat dilihat pada Gambar 4.1.

Sebagaimana telah dibahas pada Subbab 3.3.5, Phobos akan menggunakan interpreter

sebagai prosesor bahasa pemrograman. Penggunaan interpreter mengakibatkan beberapa perubahan dalam proses perancangan kelas. Dengan adanya interpreter untuk melakukan seluruh pemrosesan source code, maka source code tidak lagi menjadi masukan kepada subsistem Oracle maupun WhiteboxMarkers, melainkan objek interpreter yang telah mengandung pohon sintaks abstrak hasil parsing terhadap source code saja. Dengan demikian, seluruh kelas untuk melakukan penilaian dapat dirancang secara seragam sebagai realisasi sebuah interface. Interface yang merepresentasikan semua jenis penilaian ini dinamai Marker.

Penggunaan interpreter yang dirancang tersendiri juga mengakibatkan penataan subsistem menjadi berubah. Berdasarkan hasil analisis pada Subbab 3.3.4, kelas-kelas dalam autograder

engine akan dibagi ke dalam subsistem-subsistem yaitu Manager, Oracle dan WhiteboxMarkers. Karena semua penilai diseragamkan sebagai realisasi interface Marker,

(2)

maka Oracle dan WhiteboxMarkers tidak lagi menjadi subsistem mandiri melainkan menjadi bagian dari kelompok kelas penilaian yang dinamai Marker. Interpreter diletakkan dalam subsistem khusus Interpreter. Kelas-kelas perancangan untuk Manager akan dijelaskan pada Subbab 4.1.1. Kelas-kelas perancangan untuk Oracle dan WhiteboxMarkers akan dijelaskan pada 4.1.2, dan 4.1.3. Perancangan interaksi antara kelas-kelas untuk melakukan penilaian akan dijelaskan pada Subbab 4.1.4. Kelas perancangan untuk Interpreter akan dibahas terpisah secara lebih mendetil pada Subbab 4.4.

Gambar IV-1 Diagram Kelas Perancangan Autograder Engine Phobos

Manager

Marker

Oracle

WhiteboxMarkers

(3)

Daftar kelas dalam autograder engine beserta deskripsi dan lapisannya dijabarkan pada Tabel IV-1.

Tabel IV-1. Daftar Kelas Perancangan untuk Autograder Engine

No Nama Kelas Deskripsi

:: Lapisan Manager

1. SchemaManager Kelas contoller ini bertanggung jawab untuk menyimpan,

mengambil dan mendaftar definisi skema penilaian dari penyimpanan persisten.

2. MarkingSchemaDef Kelas model ini merepresentasikan skema penilaian yang

secara tidak langsung menentukan jalannya proses penilaian.

3. MarkType Kelas model ini merepresentasikan jenis-jenis penilaian yang

terdapat dalam definisi skema penilaian yang dapat dilakukan oleh Phobos.

4. Marker Interface ini merupakan kelas abstrak yang merupakan

parent dari seluruh kelas penilai.

5. MarkingManager Kelas controller ini bertanggung jawab mengendalikan

proses penilaian secara keseluruhan

6. ReportManager Kelas controller ini bertanggung jawab untuk

membangkitkan laporan nilai individu dan kolektif, serta penghapusan laporan penilaian yang tidak digunakan lagi.

7. IndividualReport Kelas model untuk laporan nilai serahan tugas tunggal.

8. CollectiveReport Kelas model untuk laporan nilai kolektif untuk satu batch

serahan tugas yang dinilai (sekumpulan source code untuk penugasan yang sama).

9. MarkingResult Kelas model untuk hasil penilaian dari satu penilai (Marker)

untuk satu serahan tugas.

:: Lapisan Marker / Oracle

4.1 Oracle Kelas pengontrol yang bertanggung jawab untuk

mengendalikan jalannya proses penilaian eksekusi dan menyusun laporan hasil pengujian.

10. OracleException Kelas ini dibangkitkan pada saat timbul kesalahan-kesalahan

pada proses pengujian dinamis.

3.1 BlackboxMarking Kelas model untuk data uji ini berisi semua butir uji yang terkandung dalam definisi skema penilaian.

11. TestItem Kelas model yang merepresentasikan butir uji pada proses

pengujian dinamis.

:: Lapisan Marker / WhiteboxMarkers

4.2 GraderSLOC Kelas implementasi Marker yang merealisasikan penilaian

Source Lines of Code

4.3 GraderCyclomatic Kelas implementasi Marker yang merealisasikan penilaian Kompleksitas Siklomatik

4.4 GraderIdentity Kelas implementasi Marker yang merealisasikan penilaian kelengkapan identitas submisi tugas

4.5 GraderIndentation Kelas implementasi Marker yang merealisasikan penilaian ketepatan indentasi source code

4.6 GraderCommentLines Kelas implementasi Marker yang merealisasikan penilaian jumlah baris komentar

4.7 GraderCommentLength Kelas implementasi Marker yang merealisasikan penilaian rata-rata panjang komentar

4.8 GraderIdenfitierLength Kelas controller turunan dari WhiteboxGrader yang merealisasikan penilaian rata-rata panjang nama identifier

(4)

No Nama Kelas Deskripsi :: Lapisan Interpreter

12. Interpreter Kelas abstrak ini merupakan kelas parent untuk tiap

interpreter prosesor bahasa pemrograman,

diimplementasikan oleh satu kelas turunan untuk setiap bahasa pemrograman yang ditangani.

12.1 PascalInterpreter Kelas implementasi Interpreter ini bertindak sebagai

interpreter untuk source code dalam bahasa Pascal

12.2 LispInterpreter Kelas implementasi Interpreter ini bertindak sebagai

interpreter untuk source code dalam bahasa Lisp

13. InterpreterException Kelas ini dibangkitkan pada saat timbul kesalahan-kesalahan

pada proses interpretasi kode.

4.1.1 Manager

Subsistem Manager bertanggung jawab untuk mengendalikan jalannya proses oleh Phobos

secara keseluruhan, dalam pembuatan skema penilaian, proses penilaian maupun pembangkitan laporan nilai. Kelas-kelas yang berada pada subsistem Manager adalah kelas

MarkingManager, SchemaManager, ReportManager, SourceManager, MarkType,

MarkingSchemaDef, MarkingResult, IndividualReport, dan CollectiveReport.

Kelas SchemaManager bertanggungjawab untuk mengatur seluruh proses yang berkaitan dengan skema penilaian – pembuatan skema penilaian baru, pengubahan dan penghapusan skema penilaian yang sudah ada, penyimpanan dan pengambilan dari penyimpanan data persisten. Skema penilaian di dalam sistem Phobos direpresentasikan dalam kelas

MarkingSchemaDef. Kelas MarkingSchemaDef memiliki atribut daftar jenis penilaian

yang harus dilakukan. Tiap jenis penilaian didefinisikan dalam kelas MarkType. Kelas MarkType menyimpan definisi kelas untuk jenis penilaian tertentu, bobot penilaian, aturan penilaian dan keterangan.

Kelas SourceManager bertugas menghasilkan daftar file berisi source code yang akan dinilai, serta menghasilkan daftar semua direktori tugas yang tersedia.

Kelas MarkingManager bertanggungjawab untuk mengendalikan jalannya penilaian. MarkingManager menerima skema penilaian dan daftar file tugas source code yang hendak dinilai, dan mengeksekusi proses penilaian sesuai dengan masukan yang diberikan. Interface Marker merupakan definisi penilai yang menjadi parent untuk seluruh kelas penilai. Kelas realisasi Marker menerima interpreter yang sudah selesai membangun pohon sintaks abstrak dari source code dan menghasilkan nilai sesuai dengan jenis penilaian masing-masing.

(5)

Diagram kelas yang diperbesar untuk subsistem Manager bagian manajemen skema dan penilaian dapat dilihat pada Gambar IV-2.

MarkingManager -markers: Marker[1..*] +loadMarkers(schema: MarkingSchemaDef) +executeMarking() MarkingSchemaDef -idSchema: int -assignmentName: String -assignmentDesc: String -sourceLang: String -markPoints: MarkType[1..*] +MarkingSchema(id: int) +MarkingSchema(name: String, lang: String) +getId(): int +getName(): String +getDescription(): String +getSourceLanguage(): String +addMarkType(point: MarkType) +removeMarkPoint(point: MarkType) +setName(name: String) +setDescription(desc: String) +toXmlString(): String MarkType -pointName: String -pointDesc: String -weight: float +MarkPoint(name: String)

+MarkPoint(name: String, desc: String, weight: float) +getName(): String +getDescription(): String +getWeight(): float +setDescription(desc: String) +setWeight(weight: float) +toXmlString(): String SchemaManager +generateMetaschema()

+loadSchemaDef(idSchema: int): MarkingSchemaDef +storeSchemaDef(schema: MarkingSchemaDef) +deleteSchema(schema: MarkingSchemaDef) +listAllSchema(): MarkingSchemaDef[0..*]

SourceManager

+listAllDir(): String [0..*] +listAllSource(dirPath: String): String[0..*]

Marker Interpreter MarkingResult -markPoint: MarkingPoint -numericMark: float -explanation: String +MarkingResult(point: MarkingPoint) +getMarkingPoint(): MarkingPoint +getNumericMark(): float +getExplanation(): String +setNumericMark(mark: float) +setExplanation(explanation: String) +toXmlString(): String

Gambar IV-2 Diagram Kelas Perancangan Subsistem Manager bagian manajemen skema dan penilaian

Kelas MarkingResult merupakan kelas yang merepresentasikan hasil penilaian dari satu jenis penilaian. MarkingResult memiliki atribut berupa nilai, hasil pengukuran besaran yang sesungguhnya, beserta penjelasan dari proses penilaian yang dilakukan.

Kelas ReportManager bertanggungjawab untuk menghasilkan laporan penilaian untuk satu source code dari semua hasil penilaian yang dijalankan terhadap source code tersebut. ReportManager juga bertanggung jawab menyimpan laporan nilai individu serta menyusun laporan nilai kolektif dari sekumpulan source code untuk tugas yang sama. Laporan nilai individu direpresentasikan dalam kelas IndividualReport, dan laporan nilai kolektif ini direpresentasikan dalam kelas CollectiveReport. Diagram kelas yang diperbesar untuk sbsistem manager bagian penanganan laporan dapat dilihat pada Gambar IV-3.

(6)

MarkingResult -markPoint: MarkingPoint -numericMark: float -explanation: String +MarkingResult(point: MarkingPoint) +getMarkingPoint(): MarkingPoint +getNumericMark(): float +getExplanation(): String +setNumericMark(mark: float) +setExplanation(explanation: String) +toXmlString(): String ReportManager

+generateReport(schema: MarkingSchemaDef, source: String) +generateCollectiveReport(schema: MarkingSchemaDef) +deleteReport(schema: MarkingSchemaDef) IndividualReport -markingSchema: MarkingSchemaDef -sourceFile: String -results: MarkingResult[1..*] -finalMark: float

+MarkingReport(schema: MarkingSchemaDef, source: String) +getResults(): MarkingResult[1..*]

+setResults(MarkingResult[1..*]) +getFinalMark(): float +toXmlString(): String

+toXmlString(complete: boolean): String

CollectiveReport

-reports: IndividualReport[1..*]

+CollectiveReport(schema: MarkingSchemaDef, sourceDir: String) +getReports(): MarkingReport[1..*]

+setReports(MarkingReport[1..*]) +toXmlString(): String

+toXmlString(complete: boolean): String

Gambar IV-3 Diagram kelas Subsistem Manager bagian manajemen laporan nilai

4.1.2 Oracle

Subsistem Oracle bertindak sebagai penilai blackbox, sebagaimana telah dijelaskan pada

Subbab 2.2.1.3. Kelas Oracle merupakan penilai yang merupakan salah satu implementasi

Marker yang bertugas menghasilkan nilai eksekusi program menggunakan interpreter siap

eksekusi. Kelas OracleException merupakan kelas exception yang merepresentasikan

kesalahan dalam proses eksekusi program. Kelas BlackboxMark merupakan turunan dari

kelas MarkType. Kelas BlackboxMark bertanggungjawab membangkitkan data uji untuk

proses penilaian eksekusi. BlackboxMark memiliki atribut khusus berupa koleksi data uji.

Data uji dalam proses eksekusi direpresentasikan sebagai kelas TestItem. TestItem

memiliki atribut berupa input untuk program dan output yang diharapkan untuk input yang terkait. Diagram kelas untuk subsistem Oracle dapat dilihat pada Gambar IV-4.

(7)

Oracle TestItem -itemId: int -testInput: String -correctOutput: String -mandatory: boolean +TestItem(id: int)

+TestItem(input: String, output: String) +getId(): int +getTestInput(): String +getCorrectOutput(): String +isMandatory(): boolean +setTestInput(input: String) +setCorrectOutput(output: String) +setMandatory(mandatory: boolean) +toXmlString(): String +getMetaschema(): String BlackboxMark -testPool: TestItem[1..*] +getTestPool(): TestItem[1..*] +generateTestSet(): TestItem[1..*] +addTestItem(item: TestItem) +removeTestItem(item: TestItem) OracleException +getMessage(): String Marker

Gambar IV-4 Diagram Kelas subsistem Oracle

4.1.3 WhiteboxMarkers

Subsistem WhiteboxMarkers melakukan penilaian besaran kualitatif source code, sebagaimana telah dibahas dalam Subbab 2.2.1.2. Di dalam Subsistem WhiteboxMarker terdapat kelas-kelas realisasi penilai Marker. Setiap kelas merepresentasikan suatu jenis penilaian tertentu. Diagram kelas untuk subsistem WhiteboxMarkers dapat dilihat pada Gambar IV-5.

GraderSloc bertanggungjawab untuk menghitung Source Lines of Code (SLoC) dari

source code dan melakukan penilaian berdasarkan hasil pengukuran tersebut.

GraderCommentLines melakukan menghitung jumlah baris komentar dalam source

code dan melakukan penilaian berdasarkan hasil pengukuran tersebut.

GraderIndentation bertanggungjawab untuk mengukur gradien indentasi dalam source

code terhadap pohon sintaks abstrak yang dibuat dan melakukan penilaian berdasarkan hasil

pengukuran tersebut. GraderCyclomatic mengukur kompleksitas siklomatik dari source

code dan menghasilkan nilai berdasarkan pengukuran yang telah dilakukan.

GraderIdentity bertanggungjawab untuk memeriksa keberadaan identitas pada suatu

source code dan melakukan penilaian berdasarkan pemeriksaan tersebut.

GraderCommentLength bertanggungjawab mengukur rata-rata panjang baris komentar dan melakukan penilaian berdasarkan pengukuran tersebut. GraderIdentifierLength

(8)

bertanggungjawab menghitung rata-rata panjang identifier dan melakukan penilaian berdasarkan penilaian tersebut.

Marker GraderSLoC GraderCyclomatic GraderIdentity GraderIndentation GraderCommentLines GraderIdentifierLength GraderCommentLength

Gambar IV-5 Diagram Kelas subsistem WhiteboxMarkers

4.1.4 Perancangan Interaksi Kelas untuk Proses Penilaian

Proses penilaian dalam Phobos akan dilakukan dengan menggunakan kelas-kelas yang telah

dirancang. Detil proses penilaian akan dijelaskan menggunakan diagram kolaborasi pada

Gambar IV-6. Proses penilaian dimulai dengan objek MarkingManager menginvokasi

executeMarking pada dirinya sendiri. MarkingManager akan kemudian mengirim pesan

kepada SchemaManager untuk memulai proses pembangkitan definisi skema penilaian dari

penyimpanan persisten.

Kemudian, MarkingManager akan memicu penciptaan objek Interpreter sesuai dengan

spesifikasi bahasa yang terkandung dalam definisi skema penilaian MarkingSchemaDef.

MarkingManager juga akan memicu penciptaan objek implementasi interface Marker

untuk setiap objek MarkType yang terdapat dalam definisi skema penilaian.

Setelah itu, MarkingManager akan mengirim pesan listAllSource untuk meminta daftar

seluruh source code yang hendak dinilai kepada SourceManager. Untuk setiap source code

dalam daftar yang diberikan, MarkingManager akan :

1. mengirim pesan kepada interpreter agar mengolah source code ke dalam bentuk pohon AST agar siap menjalani proses penilaian.

(9)

2. mengirim pesan kepada setiap kelas Marker agar melakukan penilaian menggunakan interpreter yang sudah berisi pohon sintaks abstrak dan menghasilkan objek

MarkingResult

3. membangkitkan IndividualReport yang berisi kumpulan MarkingResult

4. menyimpan IndividualReport ke dalam penyimpanan persisten

Gambar IV-6 Diagram Kolaborasi untuk Proses Penilaian dalam Phobos

Proses penilaian oleh objek Oracle atau objek-objek WhiteboxMarkers akan dijelaskan

sebagai berikut. Sebagaimana telah dibahas pada Subbab 4.1, interface Marker adalah kelas

parent pada seluruh kelas penilai. Interface Marker memiliki satu fungsi yaitu

executeMarking yang menerima objek Interpreter dan menghasilkan objek

MarkingResult. Objek Interpreter yang digunakan sebagai masukan penilaian mempunyai prasyarat khusus yaitu telah selesai melakukan proses parsing sehingga memiliki pohon sintaks abstrak representasi source code.

Oracle akan memerintahkan Interpreter untuk melakukan eksekusi program berdasarkan

proses penelusuran terhadap pohon sintaks abstrak. Implementasi Marker lainnya, yang akan

melakukan penilaian whitebox, akan menggunakan pohon sintaks abstrak dalam

Interpreter dan menggunakannya untuk melakukan penilaian analitik terhadap source

(10)

4.2 Aplikasi

Front-End

Aplikasi front-end, dirancang sebagai antarmuka Phobos melalui protokol HTTP.

Berdasarkan analisis pada Subbab 3.3.4, aplikasi front-end memiliki tanggung jawab untuk meneruskan instruksi dari pengguna, menerima masukan, dan memberikan tampilan dalam bentuk HTML dari respon aplikasi berupa XML. Aplikasi front-end tidak memiliki kelas khusus, karena aplikasi ini hanya berfungsi sebagai user interface dan dibuat sebagai web

script menggunakan bahasa pemrograman PHP.

Pada Subbab ini akan dibahas mengenai rancangan tampilan antarmuka halaman web pada Phobos. Tampilan setiap halaman web akan mengikuti rancangan antarmuka generik yang dapat dilihat pada Gambar IV-7. Detil perancangan antarmuka akan dibahas pada Subbab 4.2.1 hingga Subbab 4.2.5.

Gambar IV-7 Rancangan generik antarmuka web Phobos

4.2.1 Halaman Utama

Halaman utama berisi menu untuk memilih fungsionalitas Phobos. Tampilan halaman utama

dapat dilihat pada Gambar IV-8.

(11)

4.2.2 Halaman Formulir Skema Penilaian

Halaman formulir skema penilaian menampilkan sebuah formulir yang dapat digunakan untuk membuat skema penilaian baru, mengedit skema penilaian yang sudah ada dan menghapus skema penilaian yang tidak digunakan. Untuk membuat skema penilaian baru, pengguna dapat memasukkan jenis-jenis penilaian beserta bobotnya. Jika terdapat penilaian pengujian dinamis, maka formulir akan secara otomatis menambahkan field untuk data uji. Untuk mengedit skema penilaian, pengguna dapat memilih dari daftar skema penilaian yang sudah ada dan menekan tombol edit. Formulir skema penilaian akan menampilkan jenis, bobot dan data uji yang telah tersimpan pada skema penilaian. Untuk menyimpan skema baru atau skema yang telah diedit, pengguna dapat menekan tombol simpan pada bagian bawah formulir. Untuk menghapus skema penilaian, pengguna dapat memilih dari daftar skema penilaian yang sudah ada dan menekan tombol hapus. Antarmuka form ini dapat dilihat pada Gambar IV-9.

Gambar IV-9 Rancangan Halaman Formulir Skema Penilaian Phobos

4.2.3 Halaman Nilai Source Code

Halaman Nilai Source Code ditampilkan apabila pengguna hendak menjalankan proses

penilaian otomatis pada Phobos. Pengguna hanya perlu memilih skema penilaian dan

direktori tempat source code untuk menjalankan proses penilaian. Rancangan antarmuka untuk halaman ini dapat dilihat pada Gambar IV-10.

(12)

Gambar IV-10 Rancangan Halaman Nilai Source Code Phobos

4.2.4 Halaman Laporan Nilai

Laporan nilai dalam Phobos ada dua jenis, yaitu laporan nilai kolektif dan laporan nilai

individu. Pada laporan kolektif, hasil penilaian dari keseluruhan tugas yang telah diserahkan ditampilkan bersamaan, dengan hanya menampilkan nilai akhir dari masing-masing serahan

tugas. Rancangan tampilan antarmuka laporan nilai kolektif Phobos dapat dilihat pada

Gambar IV-11.

Gambar IV-11 Rancangan Halaman Laporan Nilai Kolektif Phobos

Dari laporan kolektif, tersedia link untuk membuka laporan nilai individu secara detil. Pada laporan individu, hasil nilai dan pengukuran untuk tiap jenis penilaian disertai penjelasan dari sistem, bila ada. Rancangan antarmuka laporan nilai individu dapat dilihat pada Gambar IV-12.

(13)

Gambar IV-12 Rancangan Halaman Laporan Nilai Phobos

4.2.5 Halaman Hapus Data Penilaian

Pada form menghapus hasil data penilaian terdapat daftar hasil penilaian sehingga pengguna dapat memilih hasil penilaian yang ingin dihapusnya. Rancangan antarmuka halaman dapat dilihat pada Gambar IV-13.

(14)

4.3 Penyimpanan Data Persisten

Penyimpanan data persisten pada Phobos sebagaimana telah dibahas pada Subbab 3.3.4,

akan dilakukan menggunakan file XML. Hal ini dimaksudkan agar Phobos di masa yang

akan datang dapat dikembangkan untuk digunakan dalam konteks deployment yang berbeda. Format XML juga dipilih karena dapat digunakan sebagai masukan untuk berbagai basis data, mudah dibaca dan divalidasi. Pada Subbab ini akan dibahas mengenai penyimpanan skema penilaian dan laporan nilai dalam format XML.

Untuk mendefinisikan XML definisi skema penilaian, digunakan sebuah Document Type

Definition (DTD) yang diberi nama metaschema.dtd. Di dalam metaschema terdapat

definisi struktur tiap elemen dari skema penilaian.Untuk mendefinisikan XML definisi hasil

penilaian, juga digunakan sebuah DTD yang diberi nama indivreport.dtd. Spesifikasi

metaschema dan DTD lainnya, beserta contoh file XML untuk definisi skema penilaian dan

laporan hasil penilaian dapat dilihat pada Lampiran G.

4.4 Interpreter

Generik

Phobos

Sebagaimana telah dibahas pada bab 3.3.6, pemroses bahasa pemrograman dalam Phobos

akan mencakup pengembangan interpreter. Untuk tiap bahasa pemrograman yang ditangani, akan diimplementasikan suatu modul interpreter terpisah. Agar proses penilaian dapat dibuat seragam, maka perlu dibuat rancangan untuk interpreter generik terlebih dahulu.

Pemrosesan source code Phobos secara generik dapat dilihat pada Gambar IV-14. Source

code akan dibaca dan kemudian disusun menjadi suatu pohon sintaks abstrak. Pohon sintaks

abstrak akan menjadi masukan untuk baik proses eksekusi maupun proses analisis pohon. Dengan demikian, proses parsing terhadap source code hanya perlu dilakukan satu kali saja,

karena objek pohon sintaks abstrak akan disimpan oleh Interpreter.

Source code harus dieksekusi pada proses penilaian blackbox. Untuk kepentingan penilaian blackbox ini, pohon sintaks abstrak akan mengalami proses penelusuran pohon untuk memicu

instansiasi objek-objek eksekusi. Objek eksekusi ini merupakan representasi program yang siap dijalankan. Setelah instansiasi objek-objek eksekusi selesai, barulah proses eksekusi program dapat dilakukan. Pada proses penilaian whitebox, penilaian dilakukan melalui analisis terhadap pohon sintaks abstrak secara langsung.

(15)

Gambar IV-14 Flowchart Pemrosesan Source Code pada Phobos

Berdasarkan proses yang dilakukan terhadap source code tersebut, maka dapat dirancang

sebuah kelas abstrak Interpreter. Kelas ini akan memiliki beberapa metode, yaitu

loadSource untuk melakukan parsing terhadap source code, execute untuk menjalankan

eksekusi terhadap program, getAST untuk mendapatkan pohon sintaks abstrak dari

interpreter dan unloadSource untuk menghapus hasil parsing dari interpreter. Diagram

kelas perancangan untuk interpreter dapat dilihat pada Gambar IV-15.

(16)

Pohon sintaks abstrak yang dibangkitkan bersifat generik untuk semua bahasa pemrograman.

Dalam sistem Phobos, pohon sintaks abstrak direpresentasikan oleh kelas DetailAST.

Meskipun pohon tersebut bersifat generik, proses penyusunan pohon dan semantik susunan pohon berbeda-beda karena bergantung pada grammar masing-masing bahasa pemrograman. Dengan demikian, grammar, lexer, parser dan treewalker (beserta kelas-kelas eksekusi) harus dirancangkan secara terpisah untuk setiap bahasa pemrograman.

Pengembangan interpreter Phobos dilakukan dengan bantuan generator parser Antlr. Antlr

dapat menghasilkan parser dan lexer secara otomatis dari grammar bahasa pemrograman

tertentu. Antlr juga dapat menghasilkan treeparser, suatu parser khusus yang menerima

pohon sintaks abstrak dan melakukan penelusuran terhadap pohon tersebut. Kelas implementasi Interpreter akan menggunakan parser dan lexer untuk menghasilkan pohon sintaks abstrak dalam bentuk kelas DetailAST. Kelas Interpreter akan kemudian menggunakan treeparser untuk mengeksekusi pohon sintaks abstrak yang telah

Gambar

Gambar IV-1 Diagram Kelas Perancangan Autograder Engine  PhobosManager
Tabel IV-1. Daftar Kelas Perancangan untuk Autograder Engine
Diagram kelas yang diperbesar untuk subsistem Manager bagian manajemen skema dan  penilaian dapat dilihat pada Gambar IV-2
Gambar IV-3 Diagram kelas Subsistem Manager bagian manajemen laporan nilai
+7

Referensi

Dokumen terkait