Implementasi Box Structure Specification (BSS) pada Neuronworks Financial (NEUFIS) di PT. Neuronworks Indonesia Sevi Hara Etikawati1 - 113098032, Handoko Purwo Saputro2 - 113098034, Abdul Azis3 - 113098036, Angelina Prima Kurniati4 Fakultas Informatika Institut Teknologi Telkom, Bandung
[email protected],
[email protected],
[email protected],
[email protected] ABSTRAK Box Structure Specification (BSS) menyediakan metode perbaikan dan verifikasi secara bertahap dalam merancang dan menganalisis sebuah sistem informasi. Teknik ini sangat berguna untuk mendokumentasikan dan mendekomposisi requirement specification. Beberapa keuntungan dari metode ini adalah user dapat dengan mudah memahami requirement yang dibutuhkan, dapat melihat detail dari spesifikasi yang diinginkan dan menyediakan fasilitas yang lebih baik dalam penelusuran sebuah requirement. Makalah ini akan membahas mengenai implementasi dari BSS jika diterapkan pada aplikasi Neuron Financial (NEUFIS) di PT. Neuronworks Indonesia. Gambar 1. Cleanroom Software Engineering (CSE)
Kata kunci : Box Structure Specification (BSS), Neuron Financial (NEUFIS). 1.
PENDAHULUAN Cleanroom Software Engineering (CSE) adalah suatu pendekatan yang menitik beratkan pada ketepatan dalam proses pengembangan software. Filosofi dari CSE yaitu menghindari cost untuk memperbaiki bugs dengan membuat code yang tepat pada saat pertama kali coding dan diverifikasi ketepatannya sebelum tahap testing. Maka dari itu setiap tahapan dalam CSE terdapat test plan. Pendekatan CSE menggunakan pipeline of software increments dimana setiap proses (increment) dikerjakan oleh tim yang berbeda-beda. Setiap proses tersebut mempunyai task yang terdiri dari increment planning, requirements gathering, box structure speci fication, f ormal design, correctness veri fication, c ode generation, inspection, and verification, statistical test planning, dan certification. Dalam paper ini bertujuan untuk menganalisis functional specification menggunakan Box Structure Specification (BSS) dalam CSE yang ada pada pengembangan software NEUFIS di PT Neuronworks Indonesia
CSE mengikuti prinsip analisis operasional dengan metode BSS. Sebuah “box” mengenkapsulasi sistem atau beberapa aspek sistem pada beberapa detail rincian. Melalui beberapa proses, box dibentuk menjadi sebuah hierarki dimana setiap box memiliki referential transparency. Tiga jenis box dalam BSS yaitu: a. Black Box b. State Box c. Clear Box 2.
DASAR TEORI
Gambar 2. Box Structure Specifications Gambar 2. mengilustrasikan Box Structure Specifications. Black Box (BB1) mendefinisikan respon dari sistem secara lengkap ketika sistem
menerima sebuah event tertentu. kemudian BB1 dibagi menjadi beberapa black boxes yang lebih spesifik BB1.1 sampai BB1.n dimana black box tersebut menggambarkan class of behavior. Kemudian dipecah lagi menjadi satuan yang lebih kecil sampai pada cohesive class of behavior (BB1.1.1). Sedangkan sebuah state box (SB1.1.1) didefinisikan untuk black box (BB1.1.1). Dalam kasus ini SB1.1.1 berisi data dan services yang dibutuhkan untuk mengimplementasikan behavior yang dimiliki oleh BB1.1.1. Kemudian SB1.1.1 akan dibagi menjadi beberapa clear box CB1.1.1.n dan detail design procedural dijabarkan.
Gambar 4. State Box
Pada setiap tahapan di atas dilakukan verifikasi. State box diverifikasi untuk memastikan bahwa setiap state box sesuai seperti behavior yang telah didefinisikan pada parent black boxnya. Begitu juga dengan clear box terhadap parent state box.
2.3 Clear Box
3 tipe box yang digunakan yaitu: 2.1 Black Box BSS terdiri dari sebuah abstraksi, event dan respon dengan menggunakan notasi seperti gambar diatas. Dari gambar diatas fungsi f adalah sebuah sequence S*, yang terdiri dari inputan (stimuli) yang dilambangkan dengan S, yang menghasilkan sebuah output (respon) yang dilambangkan dengan R.
Gambar 5. Clear Box Clear box specification memecah sub fungsi dari black box menjadi deskripsi yang menyerupai pemrograman yang terstruktur. Clear box juga menunjukkan yang sangat detail ke struktur logic dari kode program. Pada tahap ini spesifikasinya dapat dibuktikan kebenarannya secara matematis.
Gambar 3. Black Box Beberapa konsep yang terdapat pada OO juga bisa diaplikasikan pada black box seperti pada class hierarki, black box specification dapat menunjukkan bahwa hierarki dari box dengan tingkat yang lebih rendah dapat mewarisi properties dari box yang lebih tinggi 2.2 State Box State box dapat dilihat sebagai state machine termasuk state data dan operation yang menggabungkan black box. State box bereaksi pada event yang menyebabkan sebuah transition state (current state ke suatu new state) dan menghasilkan respon. State box menunjukkan behavior dari sebuah sistem bagaimana dia bereaksi dan bertransisi berdasar input dari user.
3.
METODOLOGI PENELITIAN 3.1. Studi Literatur Dalam pembuatan paper ini mengambil dari beberapa sumber yaitu buku dan sumber online yang ada yang berkaitan dengan cleanroom software engineering terutama box structure specification. 3.2. Riset Melakukan penelitian langsung ke PT. Neuronworks Indonesia
4.
Implementasi dan Analisis Seperti yang telah dijelaskan sebelumnya, metode BSS sangat berguna untuk mendokumentasikan dan mendekomposisi requirement specification. Untuk menggambarkan fungsi dari BSS dengan lebih jelas lagi, maka dilakukan analisis di PT Neuronworks Indonesia pada aplikasi NEUFIS. Neuronworks Financial (NEUFIS) merupakan suatu aplikasi web finansial yang mengatur tentang manajemen transaksi finansial yang terjadi pada PT Neuronworks Indonesia. Berikut ini adalah fungsionalitas pada NEUFIS. Fungsionalitas (Neuronworks berikut: a.
b.
c.
d.
dari web NEUFIS Financial) yaitu sebagai
Manajemen Transaksi Manajemen transaksi berfungsi untuk mengolah transaksi yang terjadi di Neuronworks. Menu ini berisikan menu input transaksi dan input kwitansi. Masing-masing menu tersebut terdapat fungsi input, edit, dan delete. Input transaksi untuk menambahkan transaksi baru. Ketika selesai input transaksi sistem akan meminta bukti kwitansi yang ada. Jika kwitansi belum ada, maka harus menginputkan kwitasnsi. Jika kwitansi sudah diinputkan, maka pilih kwitansi yang sudah ada. Input kwitansi untuk menambahkan kwitansi baru. Relasi yang terjadi yaitu dalam satu kwitansi terdapat banyak transaksi. Manajemen Data Manajemen data berfungsi untuk menambahkan informasi-informasi yang diperlukan dalam web NEUFIS ini. Menu ini berisikan menu kategori transaksi, account, mapping account. Pada setiap menu terdapat fungsi input, edit, dan delete. Kategori transaksi untuk menambahkan kategori-kategori transaksi baru, account untuk menambahkan kategori account baru, sedangkan mapping account untuk memetakan antara account dan kategori transaksi. Manajemen User Manajemen User berfungsi untuk mengatur user yang bisa mengakses web NEUFIS. Menu ini terdapat input, edit dan delete. User yang ditambahkan ada dua tipe yaitu admin dan operator. Reporting Menu Reporting berfungsi untuk menampilkan report transaksi keuangan yang terjadi di Neuronworks berdasarkan bulan tertentu. Pada menu ini terdapat 3
sub menu yaitu Transaction, PL, dan BS. Submenu transaction untuk menampilkan transaksi yang telah masuk berdasarkan filter tiap bulan, default-nya tampilkan semua transaksi yang masuk. PL (Profit and Loss) untuk menampilkan rugi laba berdasarkan filter tiap bulan. Sedangkan BS (Balanced Sheet) untuk menampilkan neraca keuangan berdasarkan filter tiap bulan 4.1 Black Box Penerapan black box sesuai dengan fungsionalitas pada NEUFIS adalah seperti gambar berikut : Add BB1.1.1 Report Transaction BB1.1
Edit BB1.1.2 Delete BB1.1.3
Transaction Management BB1 Receipt Manipulation BB1.2
Management Account BB2.2
* * *
Management Mapping Account BB2.3
*
Management Transaction Category BB2.1
NEUFIS
Data Management BB2
User Management BB3
Reporting BB4
* Transaction BB4.1
By Month BB4.1.1
Profit and Lost BB4.2
By Month BB4.2.1
Balance Sheet BB4.3
By Month BB4.3.1
Gambar 6. Black Box NEUFIS
fungsionalitas
* = Add, Edit, Delete
4.2 State Box dan Clear Box 4.2.1. State Box dan Clear Box Add Transaction Fill Add Transaction Form SB1.1.1.1
transactionName ← value receiptId ← value transactionId ← value transactionCategoryId ← value transactionDate ← value transactionDescription ← value debet ← value credit ← value
Langkah selanjutnya adalah validasi terhadap inputan user. Data yang telah valid kemudian disimpan dalam database. Lalu sistem akan menampilkan data yang telah diinputkan dalam database. 4.2.2. State Box dan Clear Box Edit Transaction Select Record SB1.1.2.1
CB1.1.1.1.1
transactionId ← value
Check For Receipt SB1.1.1.2
CB1.1.2.1.1 Fill the new transaction data SB1.1.2.2
If receipt == true then Choose avalailable receipt else Create_New_Receipt(); Add Transaction BB1.1.1
transactionName ← new_value receiptId ← new_value transactionId ← new_value transactionCategoryId ← new_value transactionDate ← new_value transactionDescription ← new_value debet ← new_value credit ← new_value
CB1.1.1.2.1
Validate Input SB1.1.1.3
If value.validate() then Process else Alert(error_message); CB1.1.1.3.1
Store to Database SB1.1.1.4 $sql1 = ”Insert into transaction values(transactionName, receiptId, transactionId, transactionCategoryId, transactionDate, transactionDescription)” $sql2 = ”Insert into transactionDetail values(transactionId, debet, credit)” $result = $conn>execute($sql1) $result2 = $conn>execute($sql2) CB1.1.1..4.1 Display SB1.1.1.5
$result = $conn>execute(“select a.*, b.* from transaction a, transactionDetail b where receiptId = value”); While(!$result->EOF){ showData(); } CB1.1.1.5.1
Gambar 7. State Box dan Clear Box Add Transaction
Edit Transaction BB1.1.2
CB1.1.2.2.1 Validate Input SB1.1.2.3 If value.validate() then Process else Alert(error_message); CB1.1.2.3.1 Process to Database SB1.1.2.4 $sql1 = ”Update transaction set(transactionName = new_value, receiptId = new_value, transactionId = new_value, transactionCategoryId = new_value, transactionDate = new_value, transactionDescription = new_value where transactionId = value)” $sql2 = ”Update transactionDetail set(transactionId = new_value, debet = new_value, credit = new_value where transactionId = value)” $result = $conn->execute($sql1) $result2 = $conn->execute($sql2) CB1.1.2.4.1 Display SB1.1.2.5
$result = $conn->execute(“select a.*, b.* from transaction a, transactionDetail b where transactionId = value”); While(!$result->EOF){ showData(); } CB1.1.2.5.1
Pada Add Transaction, yang dilakukan sistem pertama kali adalah menyediakan sebuah form baru untuk menambahkan transaksi, kemudian akan dilakukan pengecekan receipt pada database.
Gambar 8. State Box dan Clear Box Edit Transaction
Pada Edit Transaction, yang dilakukan sistem pertama kali adalah memilih transaksi yang akan diubah, kemudian menginputkan data-data yang baru. Langkah selanjutnya adalah validasi terhadap inputan user. Data yang telah valid kemudian disimpan dalam database. Lalu sistem akan menampilkan data yang telah diinputkan dalam database. 4.2.3. State Box dan Clear Box Delete Transaction Select Record SB1.1.3.1 transactionId ← value
CB1.1.3.1.1
Confirmation SB1.1.3.2
akan menghapus transaksi tersebut. Transaksi dipilih tadi selanjutnya akan terhapus dari database dan akan muncul suatu alert bahwa proses penghapusan sukses. Jika proses penghapusan gagal, maka dilakukan proses penghapusan dari awal. Pada dasarnya proses add,edit,dan delete pada semua fungsionalitas mempunyai statebox dan clearbox yang hampir sama. Perbedaannya hanya terletak pada data yang diproses dari clearbox dimana setiap fungsionalitas mempunyai pseudo code yang berbeda, misalnya pada add receipt dengan add transaction mempunyai statebox yang sama tetapi pada masing-masing clearbox keduanya berbeda. Perbedaan terletak pada data yang diproses didalamnya, pada transaction yang diproses adalah data yang berkaitan dengan transaksi sedangkan pada receipt data yang diproses adalah tentang receipt. 4.2.4. State Box dan Clear Box Reporting-Transaction
a = confirm (“Are you sure want to delete?”) If a then deleteTransaction(); else /*do nothing*/ CB1.1.3.2.1
Delete Transaction BB1.1.3
Delete Database SB1.1.3.3 $sql1 = ”Delete from transaction where transactionId = value” $sql2 = ”Delete from transactionDetail where transactionId = value” $result = $conn->execute($sql1) $result2 = $conn->execute($sql2) CB1.1.3.3.1 Alert SB1.1.3.4
If ($result) then alert (“delete success”); else alert (“delete failed, please try again in a moment”); CB1.1.3.4.1
Gambar 9. State Box dan Clear Box Delete Transaction Pada Delete Transaction, yang dilakukan sistem adalah memilih transaksi yang akan dihapus, kemudian akan muncul konfirmasi apakah yakin
Fill the filter SB4.1.1.1
month ← value Transaction BB4.1 By Month BB4.1.1
CB4.1.1.1.1
Query to Database SB4.1.1.2 $result = $conn->execute(“select a.transactionID, a.transactionName, a.transactionDate, b.Debet, b.Credit from transaction A join transactionDetail B on a.transactionID = b.transactionID where a.transactionDate = month”); CB4.1.1.2.1
Display SB4.1.1.3
While(!$result->EOF){ showData(); } CB4.1.1.3.1
Gambar 10. State Box dan Clear Box ReportingTransaction Pada Reporting Transaction ini diproses berdasarkan transaksi yang terjadi tiap bulannya. Langkah yang dilakukan yaitu memasukkan bulan. Dari inputan bulan selanjutnya akan diproses di database, kemudian ditampilkan laporan transaksi yang ada pada bulan tersebut.
4.2.5. State Box dan Clear Box Reporting-Profit and Loss
4.2.6. State Box dan Clear Box Reporting-Balance Sheet Fill the filter SB4.3.1.1
Fill the filter SB4.2.1.1 month ← value Profit and Loss BB4.2 By Month BB4.2.1
CB4.2.1.1.1
Query to Database SB4,2.1.2 $result = $conn->execute(“select a.transactionID, a.transactionName, a.transactionDate, b.Debet, b.Credit, b.Saldo from transaction A join transactionDetail B on a.transactionID = b.transactionID where a.transactionDate = month”); CB4.2.1.2.1 Display SB4.2.1.3 While(!$result->EOF){ showData(); } CB4.2.1.3.1
Gambar 11. State Box dan Clear Box ReportingProfit and Loss Pada Reporting Profit and Loss terjadi proses pelaporan keuntungan dan kerugian tiap bulannya. Langkah yang dilakukan yaitu memasukkan bulan. Dari inputan bulan selanjutnya akan diproses di database, kemudian ditampilkan laporan keuntungan dan kerugiannya yang ada pada bulan tersebut.
month ← value Balance Sheet BB4.3 By Month BB4.3.1
CB4.3.1.1.1
Query to Database SB4,3.1.2 $result = $conn->execute(“select a.transactionID, a.transactionName, a.transactionDate, b.Debet, b.Credit, b.Saldo from transaction A join transactionDetail B on a.transactionID = b.transactionID where a.transactionDate = month and b.Debet-b.Credit=b.Saldo”); CB4.3.1.2.1
Display SB4.3.1.3
While(!$result->EOF){ showData(); } CB4.3.1.3.1
Gambar 12. State Box dan Clear Box ReportingBalance Sheet Pada Reporting Balance Sheet proses yang terjadi adalah keseimbangan antara debet dan kredit dengan saldo yang ada tiap bulannya. Langkah yang dilakukan yaitu memasukkan bulan. Dari inputan bulan selanjutnya akan diproses di database, kemudian ditampilkan laporan yang ada pada bulan tersebut. Dengan penerapan BSS pada pengembangan aplikasi NEUFIS yang telah dijabarkan menjadi black box, state box dan clear box diatas, maka requirement yang dibutuhkan user dapat tergambar dengan jelas, serta sebagai salah satu keunggulan BSS implementasinya akan lebih mudah karena acuan pengembangannya telah terdefinisi. Selain itu, proses monitoring dan tracking dapat dilakukan dengan mudah. Serta jika dilihat pada proses design-nya, BSS sendiri sudah cukup detail dalam pendefinisian requirement sehingga dapat dijadikan dasar dari dokumentasi. Implementasi yang dilakukan tersebut telah diujikan ke PT. Neuronworks Indonesia. Implementasi BSS kurang tepat jika diterapkan pada sebagian besar proyek yang terdapat di PT. Neuronworks Indonesia. PT. Neuronworks Indonesia lebih sering menggunakan Extreme Programming pada sebagian besar proyeknya
dengan pendekatan Object Oriented. Hal tersebut tidak terlepas karena tuntutan client yang memang cenderung cepat sekali melakukan change request. Sedangkan BSS di dalam Cleanroom Software Engineering lebih ke arah terstruktur. Tetapi jika sudut pandang yang dilihat dari sisi tujuan BSS yang benar-benar menggambarkan functional specification secara detail, BSS ini cocok untuk diterapkan. 5.
Kesimpulan dan Saran 5.1 Kesimpulan Dari analisis yang telah dilakukan sebelumnya dapat ditarik kesimpulan bahwa BSS dapat menggambarkan dengan baik secara visual dan sangat detail fungsionalitas requirement dari user, sehingga bisa menghindari misinterpretasi antara developer dan user. Selain itu BSS juga dapat menyediakan proses pemantauan dan pelacakan pada setiap detail fungsionalitas yang terdapat pada requirement. 5.2 Saran Dahulu Cleanroom Software Engineering digunakan dalam industri manufaktur kemudian diadopsi untuk pengembangan perangkat lunak. Metode pengembangan perangkat lunak yang sedang tren saat ini adalah Object Oriented Method dan Agile Method. Alangkah baiknya jika metode yang sekarang sering digunakan ini menerapkan filosofi-filosofi yang terdapat dalam CSE. Sehingga hasil dari pengembangan perangkat lunak menjadi lebih baik dan cost yang dikeluarkan juga bisa ditekan. Namun masih jarang ada penelitian tentang CSE yang dikaitkan dengan Object Oriented Method ataupun Agile Method. Bagaimana setiap tahapan-tahapan dalam CSE jika diadopsi kedalam Object Oriented Method ataupun Agile Method? khususnya untuk functional specification yang menggunakan Box Structure Specification Method.
Daftar Pustaka [1] Roger S. Pressman. 2001. Software Engineering: A Practitioner's Approach 5th Edition. New York : Mc GrawHill. [2] Richard C. Linger and Richard C. Linger and Carmen J. Trammell and Carmen J. Trammell and Thomas R. Miller and Lt Col. 1996. Cleanroom Software Engineering - Reference Model Version 1.0. CMU/SEI-96-TR-022 [3] Wiharja, Kemas R. 2010. “Cleanroom Software Engineering” Slide kuliah terpublikasi. Bandung : IT Telkom.