BAB III ANALISIS Bab ini berisi analisis mengenai aplikasi web target code generator, analisis penggunaan framework CodeIgniter dan analisis perangkat lunak code generator. 3.1
APLIKASI YANG DITANGANI OLEH CODE GENERATOR
Telah dijelaskan pada Subbab 2.2 bahwa aplikasi web dilihat dari sisi fungsionalitasnya dapat dibagi menjadi 9 jenis yaitu: Informasional, interaktif, transaksional, workflow-oriented, lingkungan kerja kolaboratif, komunitas online, portal, semantic web,dan ubiquitous. Dari 9 jenis aplikasi tersebut, aplikasi web tipe informasional, interaktif dan transaksional merupakan aplikasi web yang paling umum digunakan. Model dari ketiga jenis aplikasi web tersebut tidak ditujukan spesifik terhadap suatu masalah tertentu. Misalnya model aplikasi informasional dapat diterapkan sebagai aplikasi web yang menampilkan sebuah situs katalog, apapun jenis katalognya. Pada contoh ini, aplikasi web hanya bertugas menampilkan apa yang dimiliki, tanpa harus memperhatikan business rule dari sebuah perusahaan. Hal ini yang membuat aplikasi web tipe informasional, transaksional, dan interaktif. menjadi model yang lebih umum. Apabila dibandingkan dengan aplikasi yang lain, misalnya aplikasi web tipe workflow-oriented yang harus bergantung pada cara kerja dari suatu pengguna yang spesifik, maka aplikasi web informasional, transaksional dan interaktif bersifat lebih umum. Hal lain yang membuat ketiga tipe aplikasi web tersebut bersifat lebih umum adalah penggunaannya dalam bagian dari tipe aplikasi lain. Contoh dari kasus ini adalah implementasi ketiga model aplikasi ini pada aplikasi web portal. Dalam aplikasi web jenis portal, model informasional diterapkan pada bagian yang menampilkan informasi tentang portal tersebut. Selain itu informasi mengenai pengguna lain yang terdaftar menjadi member dari portal tersebut juga ditampilkan dengan model informasional. Penerapan model transaksional pada III-1
III-2
aplikasi portal dapat dilihat pada bagian registrasi anggota. Pada bagian registrasi tersebut, pengguna diminta untuk mengisi form-form yang bersifat interaktif. Penerapan model transaksional pada aplikasi portal bisa dilihat pada beberapa contoh aplikasi portal, misalnya pada online shopping mall yang menyediakan transaksi untuk berbelanja secara online dan mungkin menyediakan layanan yang bisa berkoneksi dengan bank sebagai cara pembayaran transaksi. Dalam
ditunjukkan secara lengkap penggunaan tipe informasional, interaktif, dan transaksional dalam jenis aplikasi yang lain. Tabel III-1 Penggunaan Tipe Informasional, Interaktif, dan Transaksional pada Tipe Aplikasi Lain No. 1. 2. 3. 4. 5. 6.
Tipe Aplikasi Workflow-oriented Linkungan kerja kolaboratif Komunitas Online Portal Semantic Web Application Alikasi Ubiquitous
Informasional Ada Ada Ada Ada Ada Ada
Interaktif Ada Ada Ada Ada Ada Ada
Transaksional Optional Optional Optional Optional Ada Ada
Dari pembahasan tersebut, dapat ditarik kesimpulan bahwa ketiga model aplikasi ini dapat dianggap sebagai model yang umum dari sebuah aplikasi web. Atas dasar ini, maka ketiga jenis aplikasi web tersebut dijadikan aplikasi web yang dipilih sebagai aplikasi web yang akan ditangani oleh code generator. Dalam subbab ini akan dijelaskan mekanisme dari masing-masing tipe aplikasi web dan bagaimana skema aplikasi-aplikasi web tersebut apabila diimplementasi dalam konsep objek menggunakan skema Model-View-Controller. 3.1.1
Aplikasi Web Informasional
Web aplikasi yang bersifat informasional berfungsi untuk menampilkan informasi yang diminta oleh pengguna. Pengguna tidak perlu banyak memasukan perintah untuk menampilkan sesuatu. Yang dilakukan oleh pengguna hanyalah meminta sebuah informasi melalui sebuah link web dari program client, lalu server akan memberikan halaman web yang berisi informasi yang diminta. Pengguna tidak memasukkan data apapun untuk diproses lebih lanjut oleh aplikasi web.
III-3
Gambar III-1 Mekanisme aplikasi web informasional
Gambar III-1 menunjukkan mekanisme aplikasi web informasional. Request yang dikirim oleh pengguna melalui program client. Server web akan menerima request informasi tersebut dan mengambil data mentah dari server basis data. Setelah itu, data yang sudah diambil dari basis data ditampilkan sesuai dengan keinginan penggguna melalui sebuah halaman web.
Gambar III-2 Skema objek aplikasi web informasional
Gambar III-2 menunjukkan skema objek dari aplikasi web informasional. Dalam aplikasi web informasional, terdapat 3 komponen penting. Bagian Controller menerima request dari pengguna dan meneruskan request tersebut ke Model. Model bertugas untuk mengambil data yang diminta oleh pengguna dari basis data. Data tersebut kemudian diolah oleh controller dan ditampilkan oleh view dengan format sebuah halaman web. 3.1.2
Aplikasi Web Interaktif
Gambar III-3 Mekanisme aplikasi web interaktif
Aplikasi web interaktif berfungsi untuk menerima masukan dari pengguna dan mengolah data masukan tersebut untuk keperluan tertentu. Dalam aplikasi web interaktif, biasanya pengguna diminta untuk memasukkan data dalam berbagai
III-4
form. Data yang dimasukkan oleh pengguna diolah oleh aplikasi dan pengguna bisa melihat hasil dari pengolahan data tersebut. Hasil pengolahannya bisa ditampilkan dalam bentuk halaman web. Pada Gambar III-3 ditunjukkan mekanisme kerja dari aplikasi web interaktif.
Gambar III-4 Skema objek aplikasi web interaktif
Gambar III-4 menunjukkan skema objek dari aplikasi web interaktif. Komponen penting dalam aplikasi web interaktif terdiri atas 4 bagian. Fungsi model dan controller dalam aplikasi ini mirip dengan model pada aplikasi web informasional. Kemampuan yang ditambahkan pada model dalam aplikasi interaktif adalah kemampuan untuk menyimpan data ke basis data. Sedangkan fungsi tambahan dalam controller-nya adalah kemampuan untuk mengolah data yang dikirimkan oleh pengguna. Aplikasi ini memiliki 2 komponen view. Fungsi dari komponen view pertama adalah untuk menerima input dari pengguna. Komponen view ini biasanya akan berbentuk form input. Komponen view yang lain serupa dengan view pada aplikasi web informasional, yaitu komponen view yang bertanggung jawab atas tampilan hasil pengolahan data. 3.1.3
Aplikasi Web Transaksional
Aplikasi web transaksional berfungsi untuk mengakomodasi transaksi secara online. Secara garis besar, aplikasi ini merupakan gabungan dari aplikasi web informasional dan interaktif, ditambah dengan kemampuan untuk berkomunikasi dengan aplikasi lain yang berhubungan dengan transaksi yang dilakukan. Pengguna memasukkan data melalui form, lalu data tersebut disimpan ke dalam basis data. Apabila pengguna memutuskan untuk melakukan transaksi, maka data
III-5
transaksi ini akan disimpan dalam basis data dan kemudian dikirimkan juga ke aplikasi lain yang menangani pembayaran untuk diproses lebih lanjut. Komunikasi dengan aplikasi lain ini sangat bergantung pada kasus dan layanan yang disediakan oleh aplikasi luar tersebut. Pada umumnya, komunikasi ini dilakukan dengan web service. Gambar III-5 menunjukkan cara kerja aplikasi web transaksional.
Gambar III-5 Mekanisme aplikasi web transaksional
Gambar III-6 Skema objek aplikasi web transaksional
Pada Gambar III-6 ditunjukkan skema objek dari aplikasi web transaksional. Skema tersebut merupakan pengembangan dari aplikasi interaktif dengan tambahan satu komponen model. Komponen model tambahan ini berfungsi untuk melakukan komunikasi dengan aplikasi lain. Selain itu, pengembangan dilakukan juga terhadap komponen controller. Controller pada aplikasi transaksional juga berfungsi untuk melakukan request terhadap aplikasi luar.
III-6
3.2
ANALISIS PEMANFAATAN FRAMEWORK CODEIGNITER
Dalam pengembangan aplikasi Code Generator akan digunakan framework CodeIgniter, baik sebagai dasar pembangkitan kode aplikasi target maupun sebagai framework pembantu pembangunan CodeGenerator. 3.2.1
CodeIgniter Sebagai Framework Aplikasi yang Dibangkitkan
Kode aplikasi yang dibangkitkan akan menggunakan CodeIgniter sebagai dasar dari strukturnya. Kelas-kelas yang akan dibangkitkan akan sesuai dengan kaidah dalam CodeIgniter yang telah disebutkan dalam Subbab 2.3.5. Kode hasil pembangkitan harus diintegrasikan ke dalam CodeIgniter agar dapat dijalankan dan diakses melalui web. Dalam Gambar III-7 ditunjukkan bagaimana kode hasil pembangkitan dapat dimanfaatkan oleh pengguna.
Gambar III-7 Pemanfaatan Kode Hasil Pembangkitan
Dalam Gambar III-7, dijelaskan bahwa kode kelas Controller, Model, dan View hasil pembangkitan CodeGenerator masing-masing dimasukkan ke dalam direktori sesuai dengan jenis kodenya seperti yang telah dijelaskan dalam Subbab 2.3.5.2.
III-7
3.2.2
CodeIgniter Sebagai Framework Aplikasi Code Generator
Pembangunan aplikasi Code Generator sendiri akan menggunakan CodeIgniter sebagai framework-nya. Setiap kelas akan diimplementasikan sesuai dengan struktur kelas CodeIgniter. Oleh karena CodeIgniter menggunakan konsep objek dan model MVC, maka analisis dan perancangan perangkat lunak Code Generator akan didasarkan pada framework CodeIgniter. Pembuatan rancangan kelas-kelas dalam aplikasi Code Generator akan dibuat sesuai dengan aturan-aturan yang dipakai dalam CodeIgniter. Selain itu, ada beberapa library yang disediakan oleh CodeIgniter yang akan digunakan dalam pengembangan Code Generator seperti library yang berhubungan dengan File ZIP, library pembuatan HTML, library akses basis data, dan lain-lain. Detail skema arsitektur Code Generator dan posisi CodeIgniter dalam Code Generator dapat dilihat pada <nomor gambar>.
Models
Controllers
Pengguna
Library
Views
CodeIgniter Code Generator
Gambar III-8 Arsitektur Code Generator
3.3
ANALISIS APLIKASI CODE GENERATOR
Code generator yang akan dibuat dalam Tugas Akhir ini adalah sebuah code generator untuk membangkitkan kode aplikasi web. Pada subbab ini akan dijelaskan gambaran umum aplikasi code generator, analisis mengenai metode
III-8
code generator, analisis kebutuhan aplikasi code generator serta model use-case dan model analisis perangkat lunak dari aplikasi code generator. 3.3.1
Gambaran Umum Aplikasi Code Generator
Gambar III-9 Gambaran umum code generator
Aplikasi Code Generator ini adalah aplikasi yang dapat membangkitkan kode aplikasi web dari masukan template dan konfigurasi basis data yang diberikan oleh pengguna. Pengguna mengakses Code Generator melalui web browser mereka secara online. Aplikasi ini menerima input dari pengguna berupa konfigurasi basis data dan file template rancangan program yang akan menjadi acuan pembangkitan. Setelah itu, proses pembangkitan kode akan dilakukan secara otomatis dan pengguna bisa men-download hasilnya. Gambaran umum cara kerja Code Generator ditunjukkan pada Gambar III-9. Kode yang diproses oleh code generator menggunakan konsep objek dengan pola MVC. Dengan konsep MVC, pengguna bisa mengganti salah satu bagian dari template tanpa harus mengubah keseluruhan kode aplikasi. Pengguna masih bisa melakukan penyuntingan pada kode yang dibangkitkan, dengan syarat tidak mengubah
bagain-bagian
pembangkitan.
khusus
yang
akan
mengganggu
kode
hasil
III-9
Konfigurasi basis data yang dimasukan dapat berupa file definisi basis data berformat SQL atau bisa juga berupa konfigurasi koneksi ke basis data yang sudah pernah dibuat dan dapat diakses secara langsung tabel-tabelnya. Konfigurasi dan definisi basis data ini akan ditangani oleh bagian Database Processor pada aplikasi. Untuk template rancangan kode program, digunakan file template yang berformat JavaScript Object Notation (JSON). Template ini akan diproses oleh bagian Template Processor pada aplikasi. Setelah semua informasi sudah dari pengguna sudah dimasukkan ke dalam program, maka pengguna bisa melakukan pembangkitan kode sesuai dengan apa yang telah mereka berikan pada Code Generator. Kedua informasi penting mengenai basis data dan template akan diolah oleh bagian Generator dalam aplikasi yang akan menghasilkan kode program yang telah dimasukkan ke dalam file arsip berformat ZIP. 3.3.2
Analisis Metode Code Generation yang Digunakan
Aplikasi code generator ini akan memanfaatkan beberapa metode code generation yang sudah dijelaskan pada Subbab 2.1.2. Metode code generation yang digunakan adalah Tier Generator dan Inline-Code Expander. Karena aplikasi code generator menggunakan kedua metode tersebut, maka aplikasi Code Generator dapat dikategorikan sebagai generator aktif. Berikut penjelasan dari pemanfaatan kedua model generator tersebut. 3.3.2.1 Tier Generator Dalam aplikasi code generator, model tier generator digunakan untuk membangkitkan masing-masing tier dari aplikasi web yang ingin dibangkitkan. Mulai dari pembangkitan kode model secara otomatis sesuai dengan rancangan basis data yang digunakan, pembangkitan kode controller sesuai dengan jenis aplikasi web yang dibuat, baik informasional, interaktif, atau transaksional. Serta pembangkitan kode view yang disesuaikan dengan desain milik pengguna.
III-10
Aplikasi code generator memanfaatkan struktur framework CodeIgniter yang menggunakan model MVC dan memisahkan ketiga layer sesuai dengan aturan yang digunakan, yaitu kelas model sebagai layer basis data, kelas controller sebagai layer control, dan kelas view atau dalam codeingiter dibuat dengan bentuk file berformat html sebagai presentation layer. Sumber meta-data yang dipakai berasal dari file template masukan pengguna dan skema basis data yang digunakan. Meta-data tersebut kemudian diolah oleh aplikasi code generator kemudian akan digabungkan dengan template kode standar yang dipakai oleh aplikasi. Hasil penggabungan tersebut menjadi suatu kode kelas yang dapat diimplementasi langsung ataupun dapat dimodifikasi oleh pengembang. 3.3.2.2 Inline-Code Expander Kode yang dibangkitkan oleh aplikasi code generator berasal dari file-file template yang berisi keyword-keyword yang bisa di-expand oleh code generator. Metode ini mengikuti model inline-code expander. Hasil kode yang dibangkitkan dapat ditambah kembali oleh programmer, selama tidak mengubah kode yang sudah ada. Beberapa template sudah disediakan oleh aplikasi ini sesuai dengan aplikasi web yang akan dibangkitkan. Untuk mengimplementasikan metode ini, dalam file template terdapat keywordkeyword khusus yang hanya dikenali oleh aplikasi code generator. Keywordkeyword ini nantinya akan digantikan oleh kode program yang telah dibangkitkan, sesuai dengan aturan yang dipakai oleh aplikasi code generator. 3.3.3
Analisis Kode Modul Aplikasi Target
Aplikasi Code Generator membutuhkan informasi yang cukup untuk melakukan pembangkitan kode aplikasi milik pengguna. Informasi yang dibutuhkan tersebut bergantung pada tipe aplikasi yang akan dibangkitkan, apakah tipe informasional, interaktif, atau transaksional.
III-11
Seperti yang telah dijelaskan pada Subbab 3.1, pada Tabel III-2, Tabel III-3, dan Tabel III-4 ditunjukkan tanggung jawab dari masing-masing kelas (Model-ViewController) dalam aplikasi web informasional, interaktif, dan transaksional. Tabel III-2 Tanggung Jawab Kelas Pada Aplikasi Web Informatif No. 1. 2. 3.
Kelas Model Control View
Tanggung Jawab Mengakses data dari basis data Menerima request halaman yang ditampilkan Menampilkan data
Tabel III-3 Tanggung Jawab Kelas pada Aplikasi Web Interaktif No. 1.
Kelas Model
2.
Control
3.
View
Tanggung Jawab Mengakses data dari basis data 1. Menerima request halaman yang ditampilkan, 2. Mengolah data yang diberikan oleh pengguna 1. Menerima masikan data dari pengguna 2. Menampilkan data
Tabel III-4 Tanggung Jawab Kelas pada Aplikasi Web Transaksional No. 1.
Kelas Model
2.
Control
3.
View
Tanggung Jawab 1. Mengakses data dari basis data 2. Berkomunikasi dengan aplikasi lain melalui web-service 1. Menerima request halaman yang ditampilkan, 2. Mengolah data yang diberikan oleh pengguna 1. Menampilkan data 2. Menampilkan data
3.3.3.1 Kelas-Kelas Bertipe Model Sebuah kelas Model biasanya merupakan sebuah kelas yang memetakan tabel dalam basis data ke dalam program yang dijalankan. Dari ketiga tabel tersebut dapat dilihat bahwa Kelas Model merupakan kelas yang memiliki banyak kode akses ke basis data. Kode-kode ini memiliki pattern yang mirip satu sama lain sehingga bisa digeneralisasikan sebagai 4 jenis fungsi, yaitu: 1. Select atau find, yaitu fungsi untuk mengambil data dari basis data. 2. Insert atau add, yaitu fungsi untuk menambah data ke dalam basis data 3. Update, yaitu fungsi untuk mengubah data dalam basis data. 4. Delete, yaitu fungsi untuk menghapus data dari basis data.
III-12
Keempat jenis fungsi tersebut dapat dijadikan sebagai fungsi default dari kelas model yang dibangkitkan oleh aplikasi code generator. Apabila pengguna ingin memasukkan fungsi tambahan dengan query yang lebih kompleks, maka pengguna dapat mendefinisikannya ke dalam template yang diberikan. Adapun fungsi kelas model sebagai penyedia dan penerima web-service tidak akan ditangani oleh aplikasi Code Generator karena sifat web-service yang bermacam-macam dan tidak bisa diambil benang merah kesamaan dari setiap service. Dari fungsi-fungsi tersebut, maka informasi yang dibutuhkan oleh code generator untuk membuat sebuah Kelas Model yang akan dibangkitkan adalah: 1. Nama tabel basis data yang berkaitan dengan kelas model yang dimaksud. 2. Struktur dari tabel basis data. 3. Definisi fungsi tambahan apabila pengembang ingin menambah fungsi lain, yang meliputi: nama fungsi, parameter fungsi, dan query yang akan dijalankan oleh fungsi. Code Generator mendapatkan informasi-informasi tersebut langsung dari basis data dengan cara mengakses meta-data dari field-field tabel, atau dari file template yang diberikan oleh pengguna. Dengan informasi tersebut, kode dari kelas model dapat dibangkitkan. Pengembangan kelas model oleh pengguna masih dimungkinkan. Pengguna dapat membuat fungsi lain selain fungsi standar dan query tambahan yang didefinisikan dalam file template dengan langsung menambahkan kode dalam file hasil pembangkitan. 3.3.3.2 Kelas-Kelas Bertipe Controller Kelas-kelas controller akan dibangkitkan dengan layout default dari Code Generator. Selain itu, fungsi dalam kelas controller dapat dibangkitkan dengan menggunakan informasi dari pengguna. Sesuai tanggung jawab dari masing-
III-13
masing controller, seperti yang telah ditunjukkan dalam Tabel III-2, Tabel III-3, dan Tabel III-4, fungsi standar yang akan dibangkitkan oleh Code Generator adalah sebagai berikut: 1. Fungsi index, yaitu fungsi yang akan memanggil halaman utama dari aplikasi yang dibangkitkan. 2. Fungsi yang menampilkan semua data yang ada dalam tabel basis data. 3. Fungsi yang menampilkan detail dari salah satu entry dalam basis data. 4. Khusus untuk aplikasi tipe interaktif dan transaksional, akan ditambahkan fungsi untuk menampilkan form untuk menambah dan mengubah data yang sudah ada dalam basis data. Selain fungsi tersebut, kana dibuat juga fungsi untuk memroses form penambahan dan pengubahan data. Pengembangan lebih lanjut kelas-kelas controller ini masih dapat dilakukan oleh pengguna. Pengguna dapat menambahkan fungsi-fungsi lain yang akan memroses data secara berbeda dengan fungsi standar dan menampilkan halaman web yang telah dibuat sendiri oleh pengguna, tentunya tetap memperhatikan kaidah yang digunakan dalam pengembangan aplikasi yang menggunakan framework CodeIgniter sebagai dasar dari aplikasi yang dibangkitkan. 3.3.3.3 Kelas-Kelas Bertipe View Kelas bertipe view merupakan kelas yang paling kompleks karena akan melibatkan desain antarmuka yang sifatnya sangat bebas untuk dimodifikasi oleh pengembang. Oleh karena itu, aplikasi Code Generator tidak menangani kelas bagian view secara detail. Kelas bertipe view akan menggunakan layout standar yang telah dibuat sebelumnya dalam Code Generator. Ada 2 jenis layout antarmuka yang bisa dibangkitkan oleh aplikasi Code Generator, yaitu: 1. Layout untuk menampilkan data Layout ini menggunakan tabel HTML untuk menampilkan data yang didapat dari dari basis data dengan isi data sesuai dari apa yang telah diolah oleh kelas controller.
III-14
2. Layout form input data Layout ini menggunakan form HTML untuk menerima masukan data dari pengguna aplikasi target. Data masukan kemudian diolah oleh kelas controller. Pengembangan dari kelas view oleh pengguna masih dimungkinkan. Apabila pengguna ingin mengubah tampilan hasil pembangkitan, maka pengguna dapat membuat sebuah rancangan halaman web yang disisipi kode PHP untuk menampilkan data yang dimaksud sesuai dengan standar yang digunakan oleh framework CodeIgniter. 3.3.4
Analisis Kebutuhan Aplikasi Code Generator
Seperti disebutkan dalam Subbab 3.3.1, aplikasi code generator dapat membangkitkan kode modul aplikasi target dari informasi yang diberikan pengguna berupa skema basis data dan file template masukan. File template masukan berisi rancangan modul perangkat lunak yang akan dibangkitkan. Skema basis data yang digunakan diambil langsung dari server basis data milik pengguna. Pengguna bisa menggunakan basis data yang sudah ada, ataupun membuat basis data baru melalui aplikasi code generator ini. Dari penjelasan tersebut, dapat diambil beberapa spesifikasi kebutuhan untuk aplikasi code generator. Spesifikasi kebutuhan tersebut adalah: 1. Pengisian konfigurasi basis data untuk koneksi ke basis data. 2. Pemilihan basis data di server pengguna apabila basis data yang berhubungan dengan aplikasi target sudah ada. 3. Pembuatan basis data baru beserta upload definisi basis datanya apabila basis data yang berhubungan dengan aplikasi target belum ada. 4. Upload file template masukan sebagai rancangan aplikasi 5. Pembangkitan kode aplikasi target, dengan kemampuan untuk menambah fungsi custom ke dalam template.
III-15
3.3.5
Model Use-case Aplikasi Code Generator System
Mengisi konfigurasi basis data <<extend>> DBMS Mengupload file definisi basis data
Mengupload file template Pengguna Membangkitkan kode aplikasi
Gambar III-10 Diagram use-case code generator
Dari analisis kebutuhan yang dibahas pada Subbab 3.3.4, dibuat sebuah model use-case untuk aplikasi code generator. Aktivitas yang dapat dilakukan pengguna terhadap aplikasi Code Generator ini dapat dibagi menjadi 4 bagian, yaitu: 1. Mengisi konfigurasi basis data 2. Meng-upload file definisi basis data 3. Meng-upload file template 4. Membangkitkan kode aplikasi Diagram use-case dari aplikasi Code Generator ini ditunjukkan pada Gambar III-10. 3.3.5.1 Mengisi konfigurasi basis data Aktivitas ini merupakan aktivitas pertama yang dapat dilakukan oleh pengguna terhadap aplikasi Code Generator. Dalam aktivitas ini, pengguna dapat mengisi konfigurasi basis data yang akan digunakan oleh apliaksi yang akan dibangkitkan. Pengguna juga dapat memilih untuk menggunakan data dari basis data yang sudah ada ataupun membuat definisi data yang baru.
III-16
Ada 2 skenario dari aktivitas mengisi konfigurasi basis data, yaitu: 1. Skenario Normal – Pengguna memilih untuk membuat basis data baru dari file definisi 2. Skenario Alternatif – Pengguna memilih untuk menggunakan skema basis data yang sudah ada Kedua skenario tersebut dapat dilihat pada Tabel III-5 dan Tabel III-6. Tabel III-5 Konfigurasi basis data - Membuat basis data baru 1. 2. 3.
Aksi Pengguna Mengisi konfigurasi awal basis data Memilih untuk membuat basis data baru Menekan tombol submit
Reaksi Sistem
4. 5. 6.
7.
Melakukan validasi pada konfigurasi yang dimasukkan Mencoba melakukan koneksi ke basis data (Koneksi gagal) Menampilkan pesan gagal dan meminta user untuk mengisi kembali koneksi (kembali ke langkah 1) (Koneksi berhasil) Menyimpan konfigurasi basis data Menampilkan pesan sukses
Tabel III-6 Konfigurasi basis data - Memakai basis data yang sudah ada 1. 2. 3.
Aksi Pengguna Mengisi konfigurasi awal basis data Memilih menggunakan basis data yang sudah ada Menekan tombol submit
Reaksi Sistem
4. 5. 6.
7. 8.
Melakukan validasi pada konfigurasi yang dimasukkan Mencoba melakukan koneksi ke basis data (Koneksi gagal) Menampilkan pesan gagal dan meminta pengguna untuk mengisi kembali koneksi (kembali ke langkah 1) (Koneksi berhasil) Menyimpan konfigurasi basis data Menampilkan basis data yang sudah terdefinisi
Memilih salah satu basis data 9.
Menyimpan informasi tentang basis data yang terpilih.
III-17
3.3.5.2 Meng-upload file definisi basis data Dalam fitur ini, pengguna dapat meng-upload definisi basis data yang akan digunakan apabila pengguna belum mempunyai skema basis data yang sudah terdefinisi. Aktivitas ini bisa dilakukan apabila pengguna sudah mengisi konfigurasi basis data dan memilih untuk membuat basis data yang baru. File definisi basis data yang di-upload menggunakan format SQL. Skenario dari aktivitas ini dapat dilihat pada Tabel III-7. Tabel III-7 Meng-upload file definisi basis data 1. 2.
Aksi Pengguna Mengisi path ke file definisi basis data Menekan tombol upload
Reaksi Sistem
3. 4. 5.
Mencoba melakukan koneksi ke basis data dengan konfigurasi yang telah disimpan Membuat basis data baru berdasarkan definisi dari file yang telah di-upload (Pembuatan basis data gagal) Menampilkan pesan kesalahan (Pembuatan basis data berhasil) Menampilkan pesan sukses
3.3.5.3 Meng-upload file template Dalam aktivitas ini, pengguna dapat meng-upload file template yang akan menjadi dasar dari pembangkitan kode aplikasinya. Pengguna meng-upload file template yang berformat JSON. Dalam file template tersebut, terdapat rancangan dari aplikasi yang akan dibangkitkan. Rancangan yang dimaksud adalah kerangka dari kelas-kelas
yang akan dibangkitkan dan algoritma generik
yang
diimplementasi dalam kelas-kelas tersebut. Skenario dari aktivitas ini dapat dilihat pada Tabel III-8. Tabel III-8 Meng-upload file template 1. 2.
Aksi Pengguna Mengisi path ke file template Menekan tombol upload
Reaksi Sistem
3.
Melakukan validasi terhadap file template
III-18
Aksi Pengguna 4.
Reaksi Sistem (File template tidak valid) Menampilkan pesan kesalahan dan meminta user memperbaiki file template (File template valid) menyimpan file template di server
3.3.5.4 Membangkitkan kode aplikasi Aktivitas ini akan membangkitkan kode aplikasi berdasarkan template dan konfigurasi yang diberikan oleh pengguna. Semua file source code akan dimasukkan ke dalam satu file arsip berformat ZIP. File ZIP ini dapat didownload oleh pengguna ke komputernya masing-masing. Skenario dari aktivitas ini dapat dilihat pada Tabel III-9. Tabel III-9 Membangkitkan kode aplikasi 1.
Aksi Pengguna Memilih menu generate source code
Reaksi Sistem 2. 3. 4. 5. 6. 7. 8.
9.
Membaca file template Melakukan parsing file template Mencoba melakukan koneksi ke basis data dengan konfigurasi yang telah disimpan Mengambil skema basis data untuk dimasukkan ke dalam source code Membuat file yang berisi kode kelas. Memasukkan file-file kode kelas ke dalam file ZIP Menampilkan link ke file ZIP agar user bisa mendownloadnya.
Men-download file ZIP 10. Mengambil file ZIP 11. Mentransfer file ke komputer pengguna
3.3.6
Model Analisis Aplikasi Code Generator
Dalam model analisis ini akan dijelaskan skema kelas dan urutan pengerjaan aktivitas dari code generator. Kelas-kelas merupakan dasar pengembangan untuk implementasi aplikasi code generator. 3.3.6.1 Mengisi konfigurasi basis data Aktivitas ini memanfaatkan 3 kelas dalam aplikasi code generator, yaitu kelas PanelKonfigurasi sebagai kelas antarmuka, ControlKonfigurasi sebagai kelas
III-19
kontrol, dan kelas-kelas model yaitu KonfigurasiDB sebagai kelas yang memodelkan konfigurasi dan definisi basis data. Diagram hubungan ketiga kelas dan sequence diagram dari aktivitas ini dapat dilihat pada Gambar III-11, Gambar III-12, dan Gambar III-13.
PanelKonfigurasi
ControlKonfigurasi
KonfigurasiDB
Gambar III-11 Diagram kelas use-case mengisi konfigurasi basis data
<> : PanelKonfigurasi
: Pengguna 1 : Isi form()
<> : ControlKonfigurasi
<<entity>> : KonfigurasiDB
2 : Mengirim data form() 3 : Cek konfigurasi()
4 : Hasil pengujian konfigurasi 5 : Simpan konfigurasi()
6 : Tampilkan pesan sukses()
Gambar III-12 Sequence diagram - Pengguna memilih untuk membuat basis data baru dari file definisi
III-20
<> : PanelKonfigurasi
<> : ControlKonfigurasi
<<entity>> : KonfigurasiDB
: Pengguna 1 : Isi form() 2 : Memilih menggunakan basis data yang ada() 3 : Mengirim data form() 4 : Cek konfigurasi() 5 : Hasil pengujian konfigurasi 6 : Simpan Konfigurasi()
7 : Ambil daftar basis data yang sudah ada() 9 : Perlihatkan daftar basis data()
10 : Pilih basis data()
8 : Daftar basis data
11 : Mengirim data form() 12 : Simpan basis data terpilih()
Gambar III-13 Sequence diagram - Pengguna memilih untuk menggunakan skema basis data yang sudah ada
3.3.6.2 Meng-upload file definisi basis data
ControlUploadDB
KonfigurasiDB
PanelUpload
Gambar III-14 Diagram kelas use-case meng-upload file definisi basis data
Aktivitas ini memanfaatkan 3 kelas dalam aplikasi code generator, yaitu kelas PanelUpload sebagai kelas antarmuka, ControlUploadDB sebagai kelas control,
III-21
dan kelas KonfigurasiDB sebagai kelas model dari definisi database. Diagram hubungan ketiga kelas dan sequence diagram dari aktivitas ini dapat dilihat pada Gambar III-14 dan Gambar III-15.
<> : PanelUpload
<> : ControlUploadDB
: Pengguna 1 : Mengisi path file definisi() 2 : Request Upload file definisi() 3 : File Definisi Basis data
4 : Tampilkan pesan berhasil()
Gambar III-15 Sequence diagram – Meng-upload file definisi basis data
3.3.6.3 Meng-upload file template Aktivitas ini memanfaatkan 3 kelas dalam aplikasi code generator, yaitu kelas PanelUpload sebagai kelas antarmuka, ControlUploadTemplate sebagai kelas control, dan kelas Template sebagai kelas model dari template rancangan yang diproses. Diagram hubungan ketiga kelas dan sequence diagram dari aktivitas ini dapat dilihat pada Gambar III-16 dan Gambar III-17.
ControlUploadTemplate
Template
PanelUpload
Gambar III-16 Diagram kelas use-case meng-upload file template
III-22
<> : PanelUpload
<> : ControlUploadTemplate
<<entity>> : Template
: Pengguna 1 : Isi path file template() 2 : Request upload file template() 3 : File template 4 : Validasi file template()
5 : Hasil validasi 6 : Simpan Template()
Gambar III-17 Sequence diagram – Meng-upload file template
3.3.6.4 Membangkitkan kode aplikasi
KonfigurasiDB
PanelGenerator
ControlGenerator
Template
Gambar III-18 Diagram kelas use-case membangkitkan kode aplikasi
Aktivitas ini memanfaatkan 5 kelas dalam aplikasi code generator, yaitu kelas PanelGenerate sebagai kelas antarmuka, ControlGenerator sebagai kelas control, dan kelas yang berfungsi sebagai model yang meliputi kelas KonfigurasiDB, kelas Template, dan kelas Outputsebagai kelas model dari konfigurasi, template rancangan, definisi basis data yang diproses, dan hasil keluaran aplikasi. Diagram hubungan keempat kelas dan Sequence diagram dari aktivitas ini dapat dilihat pada Gambar III-18 dan Gambar III-19
III-23
<> : PanelGenerator
<> : ControlGenerator
<<entity>> : KonfigurasiDB
<<entity>> : Template
: Pengguna 1 : Memilih generate() 2 : Request generate() 3 : Ambil konfigurasi()
4 : Konfigurasi 5 : Koneksi ke basis data() 6 : Ambil definisi basis data()
7 : definisi basis data 8 : Ambil Template() 9 : Template 10 : Generate Code() 11 : Create ZIP() 12 : Tampilkan link file ZIP() 13 : Download File() 14 : Request download file ZIP()
15 : File ZIP
Gambar III-19 Sequence diagram - Membangkitkan kode aplikasi
3.3.6.5 Diagram Kelas Keseluruhan Gambar III-20 menunjukkan keseluruhan diagram kelas dari aplikasi Code Generator. Dapat dilihat pada gambar tersebut, aplikasi Code Generator memiliki total 10 kelas. Setiap kelas terbagi menjadi 3 jenis kelas, yaitu model, view, dan controller. Deskripsi singkat tipe dan tanggung jawab masing-masing kelas dapat dilihat pada Tabel III-10. Tabel III-10 Rincian kelas dalam aplikasi Code Generator No. 1.
Nama Kelas PanelKonfigurasi
Tipe View
Tanggung Jawab Menampilkan halaman yang berhubungan dengan konfigurasi basis data
III-24
No. 2.
Nama Kelas PanelUpload
Tipe View
3.
PanelGenerator
View
4. 5. 6. 7. 8. 9.
ControlKonfigurasi ControlUploadDB ControlUploadTemplate ControlGenerator KonfigurasiDB Template
Controller Controller Controller Controller Model Model
Tanggung Jawab Menampilkan halaman yang berhubungan dengan upload file Menampilkan halaman yang berhubungan dengan kegiatan pembangkitan kode Mengatur kegiatan konfigurasi Mengelola dan mengolah definisi basis data Mengelola dan mengolah template Mengatur kegiatan pembangkitan kode Model dari konfigurasi dan definisi basis data Model dari template rancangan perangkat lunak
PanelGenerator
ControlKonfigurasi
ControlGenerator
KonfigurasiDB
Template
PanelKonfigurasi
ControlUploadDB
ControlUploadTemplate PanelUpload
Gambar III-20 Diagram kelas keseluruhan aplikasi Code Generator