Peran teknologi informasi dalam membantu proses akuntansi dalam
perusahaan/organisasi telah lama berlangsung. Alasan utama penggunaan
IT dalam akuntansi ialah efisiensi, penghematan waktu dan biaya. Alasan
lain termasuk peningkatan efektifitas, mencapai hasil/output laporan
keuangan dengan benar. Alasan lainnya yaitu ditambah dengan perlindungan
atas aset perusahaan.
Jika kita gunakan ilustrasi piramida organisasi, tugas akuntansi akan
berada pada level paling bawah yaitu level operasional dan
transaksional. Level ini punya ciri khas yaitu teknis, repetitive,
prosedural, standar dan juga dapat membuat bosan. Contohnya, akuntansi
yang menangani transaksi pembelian, penjualan, pengiriman barang,
pembayaran transaksi, penerimaan hasil penjualan, penyusunan laporan.
Ciri khas ini yang menjadi alasan utama mengapa teknologi informasi
sangat berkaitan erat dengan akuntansi. Bahkan, kisah hubungan ini telah
terjadi jauh-jauh hari pada saat komputer masih berbadan besar dan
boros tenaga (mainframe).
Bagaimana dengan sekarang? saya kira masih sama. Peran TI dalam
akuntansi masih penting bahkan makin semakin penting! Kemajuan pesat TI
sangat berpengaruh terhadap perkembangan dan aplikasi ilmu akuntansi.
Munculnya istilah enterprise systems, e-business, business intelligence,
conforming to assurance and compliance standards, IT governance,
business continuity management, privacy management, business process
improvement, mobile and remote computing, XBRL, dan knowledge management
menunjukkan bahwa dunia akuntansi akan semakin kompleks, tidak hanya
berkutat pada jurnal dan penyusunan laporan keuangan saja. Ini membuat
dunia akuntansi lebih menarik! Peran akuntan dapat meliputi tiga bidang:
perancang, pengguna dan pemeriksa (auditor). Dalam ketiga peran ini,
TI akan sangat berperan dalam kesuksesan kerja akuntan.
Bagi mahasiswa akuntansi di Indonesia, patut disadari bahwa kurikulum
yang ada belum mendukung terciptanya seorang akuntan yang juga handal
dibidang TI. Tentu yang saya maksud bukan handal secara teknis (walaupun
ini juga baik sekali jika dapat disiapkan) tapi handal dalam artian
paham dan mampu menggunakan TI dalam menunjang peran seorang akuntan.
Tentu saja pengetahuan tentang TI bukan segalanya dalam konteks ilmu
sistem informasi akuntansi. Diperlukan pemahaman lainnnya seperti
database, pelaporan yang baik, pengendalian, business operation,
pemrosesan transaksi, pengambilan keputusan manajemen, pengembangan dan
penggunaan sistem, komunikasi, dan pemahaman prinsip akuntansi dan
audit.
Monday, May 21, 2012
Tuesday, May 8, 2012
Algoritma Games Tebak Kata
Anagram yang dalam bahasa Yunani disebut anagrammatismos mempunyai
arti ana-(up, again, back, new) dan gram (letter). Dalam bahasa
Inggris, anagram sebagai kata benda mempunyai makna yaitu
sebuah kata atau frase baru yang dibentuk dengan menyusun kembali huruf-huruf
dari kata atau frase tersebut. Sebagai contoh dari kata Elvis menjadi
Lives. Sedangkan anagram sebagai kata kerja bermakna yaitu untuk menyusun
kembali huruf-huruf sedemikian rupa.
Anagram adalah salah satu jenis
permainan tebak kata. Objektif permainan anagram adalah menebak kata dengan
huruf-huruf yang telah diacak. Huruf yang tersedia harus dipakai sebanyak jumlahnya.
Contoh yang sederhana, pemain diberikan empat huruf ”upla”, maka pemain harus
menebak kata menggunakan huruf ’u’, ’p’, ’l’, ’a’; dengan tiap huruf tepat
sebanyak jumlahnya. Sehingga kata-kata yang bisa dibentuk adalah ”lupa”,
”palu”, ”pula”, ”luap”, dan seterusnya. Kata yang ditebak harus valid, valid
dalam arti kata tersebut termasuk dalam suatu database yang ditentukan.
Semakin banyak tebakan kata yang benar nilainya semakin baik (Assaat, 2007, hal:1).
Dalam
penelitian yang dilakukan Assaat, 2007 algoritma backtracking dapat
digunakan dalam mencari anagram dari sebuah kata. Pada penelitian tersebut
algoritma backtracking dipakai untuk membangun list kata yang merupakan
kumpulan kata yang dapat disusun oleh huruf-huruf yang telah diacak dan
terdapat di database. Program permainan anagram yang di rancang oleh
Assaat, 2007 melibatkan tiga elemen utama. Pertama adalah pemain, kedua
adalah komputer dalam arti program itu sendiri, dan ketiga adalah database
kata, dimana database tersebut telah terurut secara alfabet.
Secara umum
kerja dari program yang di rancang oleh Assaat, 2007 adalah program melakukan
tiga hal utama, yaitu memilih kata dari database secara acak, membangun
list kata valid dari huruf-huruf kata yang terpilih, dan terakhir mencocokan
string masukan pemain dengan list yang telah dibuat serta dibutuhkan beberapa
data-data tambahan dan fungsi khusus untuk membantu menyelesaikan permasalahan
yang ada.
Data dan fungsi tambahan yang diperlukan
adalah data indeks huruf. Dalam melakukan pencarian apakah string ada atau
tidak dalam database, akan sulit bila setiap pencarian dilakukan dari
awal. Sama seperti halnya menandai halaman awal tiap huruf buku tebal
ensiklopedi dengan jelas agar mudah dicari. Sehingga tiap huruf mempunyai
indeks jumlah kata yang diawalinya. Sebagai contoh, indeks kata yang diawali
huruf ‘d’ yang pertama dalam database adalah 3.325, sehingga pencarian
dimulai dari indeks angka tersebut.
Fungsi tambahan berikutnya adalah fungsi
pembatas indeks, dengan masukan array of karakter, maka fungsi akan
mengembalikan indeks terendah dan tertinggi kata yang masih bisa diawali oleh
masukan karakter tersebut. Sebagai contoh, bila masukan fungsi tersebut adalah
“da” maka fungsi akan mengembalikan indeks pertama dan terakhir kata yang
diawali “da”. Bila tidak ada kata yang bisa dibentuk maka fungsi mengembalikan
angka -99 untuk kedua keluaran. Untuk efektifitas pencarian,angka indeks,
algoritma pencarian yang digunakan adalah binary search agar waktu pencarian
setara untuk setiap huruf.
Skema umum langkah-langkah program
adalah sebagai berikut :
1. Pencarian Kata dan Pengacakan
Program membangun bilangan acak dari angka 1 hingga
[JumlahKataDatabase]. Program akan mengacak indeks huruf dari kata tersebut.
Program mengacak kata dari database, sehingga solusi yang dapat dibentuk
minimal satu buah. Contoh, bila kata yang terpilih adalah “siang”, maka
kata yang bisa dibentuk adalah “siang” itu sendiri, dan “asing”.
2 .
Pembangunan List dari Kata yang Valid
Program akan membangun list kata yang mungkin dan mencocokannya
dengan database. Persoalan telah disederhanakan dengan membatasi jumlah
huruf dalam kata yaitu minimal 4 huruf dan maksimal 8 huruf. (4 <
JumlahHuruf < 8). Kemudian algoritma backtracking dipakai untuk
membangun list kata yang valid, seandainya digunakan algoritma brute force
untuk kasus terburuk dapat kita hitung berapa waktu yang dibutuhkan untuk
membangun list kata yang valid. Misalkan jumlah huruf dari kata yang terpilih
dari database sebanyak delapan, jumlah kata dalam database.
100.000, huruf-huruf dari
kata tersebut hanya dapat membangun kata itu sendiri. Maka kata yang dibangun
sebanyak 8! dan tiap kata harus dicocokkan satu per satu. Bila proses
pencocokan string memakan waktu 1 detik maka, untuk membangun list kata
diperlukan waktu selama 8! x 100.000 = 4.032.000.000 detik. Sedangkan list
hanya akan berisi satu kata, yaitu kata yang diambil dari database.
Sungguh waktu yang lama untuk memulai permainan. Untuk itu di gunakan algoritma
backtracking sebagai penyempurnaan algoritma brute force. Kita
sudah mempunyai data dan fungsi tambahan, yaitu data indeks huruf dan fungsi
batas minimum maksimum. Maka kita akan membangun pohon solusi untuk membangun
kata-kata yang valid. Sebagai contoh kasus, bila kata yang terpilih dari database
adalah “LUPA”. Maka kata yang dapat dibangun melalui pohon adalah seperti
gambar berikut.
Langkah-langkah dalam
pembangunan pohon adalah sebagai berikut :
1. Simpul dihidupkan sesuai alfabet. Dimulai dari huruf ‘A’. Maka
pencarian langsung dimulai dari indeks huruf A, yaitu 1. Simpul yang dihidupkan
pertama kali oleh simpul ‘A’ adalah simpul ’L’. Maka fungsi pembatas dipanggil
dengan masukkan string “AL”. Karena masih ada kata yang diawali oleh “AL” maka
pencarian diteruskan dengan menghidupkan simpul ‘P’.
2. Fungsi pembatas dipanggil kembali dengan masukan string “ALP”.
Namun fungsi mengembalikan -99 karena tidak ditemukan kata yang diawali “ALP”.
Simpul dibunuh, lalu backtrack ke simpul ‘L’.
Algoritma Backtracking
Salah satu algoritma yang
dapat dipakai untuk mempermudah pencarian anagram suatu kata adalah algoritma backtracking.
Selain algoritma bactracking, pembuatan anagram juga membutuhkan
algoritma string matching yang tepat, karena kata-kata dalam sebuah
anagram harus memiliki makna, dalam hal ini algoritma string matching
yang tepat dapat membantu untuk mencari kata yang dibuat dalam database
kamus yang tersedia, sehingga anagram dapat dibuat dengan lebih cepat dan
efektif.
Algoritma backtracking
pertama kali diperkenalkan oleh D.H. Lehmer pada tahun 1950. Dalam
perkembangannya beberapa ahli seperti RJ Walker, Golomb, dan Baumert menyajikan
uraian umum tentang backtracking dan penerapannya dalam berbagai
persoalan dan aplikasi. Algoritma backtracking (runut balik) merupakan
salah satu metode pemecahan masalah yang termasuk dalam strategi yang berbasis
pencarian pada ruang status. Algoritma backtracking bekerja secara
rekursif dan melakukan pencarian solusi persoalan secara sistematis pada semua
kemungkinan solusi yang ada (Aho, Hopcroft, dan Ullman, 1983, hal:327).
Oleh karena
algoritma ini berbasis pada algoritma Depth-First Search (DFS), maka
pencarian solusi dilakukan dengan menelusuri suatu struktur berbentuk pohon
berakar secara preorder. Proses ini dicirikan dengan ekspansi simpul
terdalam lebih
Algoritma backtracking mempunyai
prinsip dasar kemungkinan solusi. Perbedaan utamanya adalah pada ide dasarnya,
semua solusi dibuat dalam bentuk pohon solusi (pohon ini tentunya berbentuk
abstrak) dan algoritma akan menelusuri pohon tersebut secara DFS sampai
ditemukan solusi yang layak. Nama backtrack didapatkan dari sifat
algoritma ini yang memanfaat karakteristik himpunan solusinya yang sudah disusun
menjadi suatu pohon solusi. Agar lebih jelas bisa dilihat pada pohon solusi
seperti gambar berikut:
Misalkan
pohon diatas menggambarkan solusi dari suatu permasalahan. Untuk mecapai solusi
(5), maka jalan yang ditempuh adalah (1,2,5), demikian juga dengan
solusi-solusi yang lain. Algoritma backtrack akan memeriksa mulai dari
solusi yang pertama yaitu solusi (5). Jika ternyata solusi (5) bukan solusi
yang layak maka algoritma akan melanjutkan ke solusi (6). Jalan yang ditempuh
ke solusi (5) adalah (1,2,5) dan jalan untuk ke solusi (6) adalah (1,2,6).
Kedua solusi ini memiliki jalan awal yang sama yaitu (1,2). Jadi daripada
memeriksa ulang dari (1) kemudian (2) maka hasil (1,2) disimpan dan langsung
memeriksa solusi (6). Pada pohon yang lebih rumit, cara ini akan jauh lebih
efisien daripada brute-force. Pada beberapa kasus, hasil perhitungan
sebelumnya harus disimpan, sedangkan pada kasus yang lainnya tidak perlu.
Penggunaan
terbesar backtrack adalah untuk membuat AI (Artificial Intelligence)
pada board games. Dengan algoritma ini program dapat menghasilkan
pohon sampai dengan kedalaman tertentu dari current status dan
memilih solusi yang akan membuat langkah-langkah yang dapat dilakukan oleh user
akan menghasilkan pohon solusi baru dengan jumlah pilihan langkah terbanyak.
Cara ini dipakai sebagai
AI yang
digunakan untuk dynamic problem solving.
Beberapa kegunaan yang cukup terkenal
dari algoritma backtrack dari suatu masalah “statik” adalah untuk
memecahkan masalah N-Queen problem dan maze solver. N-Queen
problem adalah bagaimana cara meletakkan bidak Queen catur sebanyak N
buah pada papan catur atau pada papan ukuran NxN sedemikian rupa sehingga tidak
ada satu bidakpun yang dapat memangsa bidak lainnya dengan 1 gerakan. Meskipun
mungkin terdapat lebih dari satu solusi untuk masalah ini, tetapi pencarian
semua solusi biasanya tidak terlalu diperlukan, tetapi untuk beberapa kasus
tertentu diperlukan pencarian semua solusi sehingga didapatkan solusi yang
optimal.
Maze
solver adalah bagaimana cara mencari jalan
keluar dari suatu maze (labirin) yang diberikan. Pada maze yang
sederhana dimana field yang dibentuk dapat direpresentasikan dalam bentuk biner
dan pada setiap petak maksimal terdapat 4 kemungkinan: atas, kanan, bawah, dan
kiri. Untuk masalah ini biasanya solusi pertama yang ditemukan bukanlah solusi
yang paling optimal sehingga untuk mendapatkan hasil yang optimal dibutuhkan
pencarian terhadap seluruh kemungkinan solusi. Hal ini disebabkan oleh urutan
pencarian yang telah ditetapkan dalam program apakah menyelidiki kemungkinan ke
arah atas dahulu atau ke arah lainnya dahulu (Putra, Sardjito, Lawrence, 2006,
hal:1).
Algoritma String Matching (Pencocokan String)
Algoritma string matching adalah sebuah algoritma yang
digunakan dalam pencocokkan suatu pola kata tertentu terhadap suatu kalimat
atau teks panjang. Algoritma string matching sendiri dapat dilakukan
dengan beberapa cara tertentu, antara lain cara Brute Force dan cara
Knuth-Morris-Pratt (KMP) (Brassard dan Bratley, 1988, hal:211).
Algoritma-algoritma pencocokan string
dapat diklasifikasikan menjadi tiga bagian menurut arah pencariannya, yaitu :
1) Dari arah yang paling alami, dari kiri ke kanan, yang merupakan
arah untuk membaca, algoritma yang termasuk kategori ini adalah:
a)
Algoritma Brute Force
Cara Brute Force
dilakukan dengan membandingkan seluruh elemen karakter pada pola dengan kalimat
atau teks panjang, dimulai pada elemen karakter pertama pada kalimat tersebut.
Jika tidak sesuai maka pembandingan dimulai dengan elemen kedua dari kalimat
tersebut.
b) Algoritma dari Morris dan Pratt, yang kemudian dikembangkan oleh
Knuth, Morris, dan Pratt
Cara KMP dilakukan dengan
menghitung fungsi pinggiran dari pola terlebih dulu dan kemudian akan dilakukan
perbandingan antara pola dan elemen pertama dari kalimat, jika tidak sesuai,
maka perbandingan tidak dilakukan pada elemen kedua, namun tergantung dari
nilai yang akan dikeluarkan oleh fungsi pinggiran tersebut (Baase, 1988,
hal:213).
2) Dari kanan ke kiri, arah yang biasanya menghasilkan hasil terbaik
secara praktikal, contohnya adalah:
a) Algoritma dari Boyer dan Moore, yang kemudian banyak dikembangkan,
menjadi Algoritma turbo Boyer-Moore, Algoritma tuned Boyer-Moore, dan Algoritma
Zhu-Takaoka
3) Dari arah yang ditentukan secara spesifik oleh algoritma tersebut,
arah ini menghasilkan hasil terbaik secara teoritis, algoritma yang termasuk
kategori ini adalah:
a)
Algoritma Colussi
b)
Algoritma Crochemore-Perrin
sumber : repository.usu.ac.id/bitstream/123456789/20874/.../Chapter%20II.pdf
Sunday, January 8, 2012
Contoh dari Diagram Use Case dan Activity Diagram
Diagram Use Case
Use Case Diagram menggambarkan sebuah fungsionalitas yang diharapkan dari sebuah sistem dan bagaimana sistem berinteraksi dengan dunia luar. Yang ditekankan dalam Use Case Diagram adalah ”apa” yang diperbuat sistem, dan bukan “bagaimana” sistem itu melakukannya.
Sebuah Use Case mempresentasikan sebuah interaksi antara actor dengan sistem. Use Case Diagram juga menjelaskan manfaat sistem jika dilihat menurut pandangan orang yang berada diluar sistem (actor). Use Case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, meng - create sebuah daftar daftar belanja dan sebagainya.
Contoh Use Case Diagram
Membuat use case calon nasabah bank. Di sini terdapat dua aktor yaitu calon nasabah dan CS (customer service), pertama – tama kita tentukan apa saja prosedur yang harus calon nasabah lalui untuk menjadi seorang nasabah pada suatu bank.
Dalam kasus ini, prosedur yang dilalui oleh calon nasabah bank kita menggunakan use case adalah mengisi data pribadi, setelah itu customer service akan meminta KTP calon nasabah untuk difotocopy sebagai berkas, setelah serangkaian proses lalu calon nasabah harus menabung pertama kali sesuai dengan nominal yang telah ditentukan oleh bank tersebut. Jika calon nasabah telah melalui semua prosedur itu maka customer service akan memberikan buku tabungan dan kartu ATM kepada nasabah baru mereka, ini sama halnya seperti percabangan maka kita menggunakan <>. Maka jadilah use case diagram untuk calon nasabah bank.
Berikut ini hasil use case diagram system pembukaan rekening di Bank.
Diagram Activity
Activity diagrams menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi.
Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum.
Sebuah aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas menggambarkan proses yang berjalan, sementara use case menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas.
Contoh Activity Diagram
Pengunjung ingin meminjam buku A yang ada pada perpustakaan. Pengunjung meminta petugas perpustakaan untuk meminjam buku yang diinginkan. Petugas melakukan identifikasi apakah pengunjung tersebut merupakan member atau bukan. Apabila member maka petugas melakukan pencatatan peminjaman. Jika tidak maka pengunjung diminta untuk melakukan pendaftaran lalu melakukan pembayaran atas pendaftaran tersebut kepada petugas administrasi.
Subscribe to:
Posts (Atom)




