6 BAB 2 LANDASAN TEORI
2.1 Object Oriented Programming Object Oriented Programming adalah paradigma pemrograman yang memandang perangkat lunak sebagai kumpulan objek yang saling berinteraksi di dalam suatu sistem. (Azis, 2005, p. 2) Beberapa objek berinteraksi dengan saling memberikan informasi satu terhadap yang lainnya. Masing-masing objek harus berisikan informasi mengenai dirinya sendiri (encapsulation) dan objek yang dapat dikaitkan (inheritance). (Febrian, 2004) Dalam OOP, Class merupakan sekumpulan objek yang memiliki atributatribut dan method. (Lethbridge & Laganiere, 2002, pp. 29-31) Class merupakan deskripsi dari satu atau lebih objek yang memiliki kesamaan atribut, layanan, metode, hubungan, dan semantik, termasuk deskripsi cara membuat objek baru dalam class. Ada juga yang disebut dengan super class, sebuah class induk yang nantinya mempunyai class-class yang terdiri dari class dan subclass. (Lethbridge & Laganiere, 2002, p. 50) Objek dalam OOP adalah sebuah benda atau unit atau sifat kerja yang memiliki atribut-atribut. (Lethbridge & Laganiere, 2002, p. 30) Objek adalah sebuah abstraksi dari sesuatu pada domain masalah, menggambarkan kemampuan untuk menyimpan informasi mengenai hal tersebut, berinteraksi dengan hal tersebut atau keduanya. Abtraksi prosedural dalam OOP disebut dengan operasi, yang menspesifikasi tipe dari perilaku dan terdiri dari fungsi-fungsi. (Lethbridge & Laganiere, 2002, p. 28)
7 Istilah lain terdapat encapsulation/pengkapsulan, yang merupakan pembatasan ruang lingkup program terhadap data yang diproses supaya data terlindungi oleh prosedur atau objek lain, kecuali prosedur yang berada di objek itu sendiri. (Lethbridge & Laganiere, 2002, p. 50) Polymorphism adalah konsep yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku yang berbeda, bahwa operasi yang sama mungkin memiliki perbedaan dalam class yang berbeda. (Lethbridge & Laganiere, 2002, p. 36) Pada OOP, terdapat juga yang disebut dengan inheritance (pewarisan), yaitu kepemilikan yang bersifat implicit dari fitur subclass yang didefinisikan dalam superclass. Fitur tersebut mencakup variables dan method. (Lethbridge & Laganiere, 2002, p. 37)
2.2 Waterfall Model Waterfall Model merupakan dasar dari aktivitas proses yang terdiri dari spesifikasi, pengembangan, validasi, evolusi dan semua direpresentasikan dalam tahapan proses yang terpisah seperti spesifikasi kebutuhan, perancangan perangkat lunak, implementasi, pengujian, dan sebagainya. (Sommerville, 2011, p. 29) Model dari software development process ini adalah model yang pertama kali dipublikasikan yang diperoleh dari system engineering process yang umum (Royce, 1970). Karena satu tahap ke tahap lainnya mengalir ke bawah, model ini disebut sebagai Waterfall Model. Waterfall Model ini adalah contoh dari sebuah proses yang bersifat plan-driven - secara prinsip, semua aktivitas proses harus
8 direncanakan dan diproses terlebih dahulu sebelum mulai mengerjakannya. (Sommerville, 2011, p. 30)
Gambar 2.1 The Waterfall Model (Sommerville, 2011, p. 30)
Tahapan dari Waterfall Model merefleksikan pokok-pokok dari aktivitas pengembangan: (Sommerville, 2011, p. 31) 1. Requirements Analysis and Definition Layanan yang diberikan oleh sistem, batasan sistem, dan tujuan ditetapkan setelah melakukan konsultasi dengan pengguna sistem. Semua didefinisikan secara rinci dan dibuat sebagai spesifikasi dari sistem. 2. System and Software Design Proses perancangan sistem menyediakan kebutuhan hardware atau software dengan menyediakan arsitektur dari keseluruhan sistem. Perancangan sistem melibatkan pengidentifikasian dan penjelasan dari abstraksi sistem dan hubungannya. 3. Implementation and Unit Testing Pada tahap ini, perancangan sistem direalisasikan menjadi sebuah program atau unit program. Pengujian unit melibatkan verifikasi untuk
9 memastikan apakah setiap unit memenuhi spesifikasi sistem. 4. Integration and System Testing Setiap unit program dan program-program yang sudah ada diintegrasikan dan diuji sebagai satu keutuhan sistem untuk memastikan apakah kebutuhan sistem sudah terpenuhi. Setelah melakukan pengujian, sistem baru disebarkan ke pengguna. 5. Operation and Maintenance Dilakukan instalasi terhadap sistem dan digunakan dalam prakteknya. Maintenance melibatkan koreksi terhadap error yang tidak ditemukan pada tahap sebelumnya, memperbaiki implementasi dari unit sistem dan meningkatkan layanan yang diberikan oleh sistem sebagai kebutuhan baru yang ditemukan. Waterfall model digunakan hanya jika semua kebutuhan sudah dimengerti dan tidak berubah secara radikal pada tahap pengembangan. (Sommerville, 2011, p. 32)
2.3 Unified Modeling Language (UML) UML adalah bahasa standar pemodelan untuk perangkat lunak dan pengembangan sistem. (Miles & Hamilton, 2006, p. 1) Merancang sebuah desain untuk sistem yang besar merupakan hal yang sulit. Dari aplikasi desktop yang sederhana sampai sistem multi-tier dapat dibangun dari ratusan, bahkan ribuan, komponen perangkat lunak dan perangkat keras. Untuk melacak komponen apa yang dibutuhkan, apa yang dikerjakan, bagaimana mencapai kebutuhan pelanggan, dan bagaimana menjelaskan sistem
10 ke tim kerja lainnya dibutuhkan sebuah pemodelan, ini adalah dimana UML dibutuhkan. Dalam merancang sebuah sistem, mengatur kompleksitas adalah salah satu alasan utama mengapa harus membuat model. Pemodelan membantu para pengembang untuk dapat fokus, dapat mendokumentasikan, menangkap keseluruhan sistem dan mengkomunikasikan aspek-aspek penting dalam sistem yang sedang dirancang. UML tepat digunakan untuk memodelkan sistem dari mulai memodelkan informasi sistem untuk perusahaan hingga aplikasi web, bahkan untuk sistem yang rumit sekalipun. UML menggunakan class dan operation dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam bahasabahasa berorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun demikian, UML tetap dapat digunakan untuk perancangan aplikasi prosedural dalam VB atau C. (Dharwiyanti & Wahono, 2003) UML mendefinisikan diagram-diagram, antara lain: • Use case diagram • Class diagram • Sequence diagram
2.3.1
Use Case Diagram Use Case diagram menunjukkan bagaimana sistem yang sedang
dibangun digunakan untuk memenuhi kebutuhan pengguna. Sebuah use case menampilkan sebuah fungsionalitas yang diberikan oleh sistem. (Miles & Hamilton, 2006, p. 20) Yang ditekankan pada use case adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. (Dharwiyanti &
11 Wahono, 2003) Diluar sistem terdapat aktor yang digambarkan dengan istilah “stick man” atau sebuah box. Seperti yang terdapat pada Gambar 2.1, dimana terdapat dua pilihan untuk menggambarkan seorang aktor.
Gambar 2.2 Notasi Aktor Pada Use Case (Miles & Hamilton, 2006, pp. 22-23)
Selain aktor, terdapat sebuah use case, communication line, dan system boundaries untuk menggambarkan use case diagram secara utuh. Sebuah use case menampilkan bagaimana sistem digunakan untuk menyelesaikan pekerjaan aktor. Communication line menghubungkan aktor dan use case untuk menunjukkan bahwa aktor tersebut berpartisipasi di dalam use case. Sedangkan system boundaries digunakan untuk menandakan pemisahan antara eksternal sistem (aktor) dan internal sistem (use cases). Berikut ini adalah gambar dari gabungan antara aktor, use case, communication line dan system boundaries. (Miles & Hamilton, 2006, pp. 25-27)
Gambar 2.3 Contoh Sebuah Use Case (Miles & Hamilton, 2006, p. 27)
12 Use case diagram yang menunjukan use cases dan aktor merupakan awalan yang baik, namun diagram tersebut tidak menampilkan rincian yang cukup untuk mengerti sistem. Cara yang paling baik untuk mengekspresikan informasi tersebut adalah dalam bentuk tulisan yang disebut dengan Use Case Description. Gambargambar
berikut
mencontohkan
sebuah
Use
Case
berdasarkan contoh use case sebelumnya :
Gambar 2.4 Contoh Sebuah Use Case Description (Miles & Hamilton, 2006, p. 28)
Gambar 2.5 Contoh Sebuah Use Case Description (Lanjutan) (Miles & Hamilton, 2006, p. 29)
Description
13 Hubungan antar use case dapat diekspresikan menggunakan <
> dan <<extend>>. Relasi <> digunakan untuk memecahkan sistem menjadi bagian-bagian yang lebih mudah untuk diatur. Sedangkan relasi <<extend>> adalah sebuah cara untuk menunjukkan bahwa sebuah use case mungkin dapat sepenuhnya menggunakan behavior dari use case lain. Selain itu use case diagram juga dapat menggunakan generalisasi untuk beberapa kasus yang berbeda, misalnya terdapat beberapa tipe dalam membangun sebuah blog. Use case “Create a new Blog Account” bisa digeneralisasi menjadi dua tipe, yaitu “Regular Blog Account” atau “Editorial Blog Account”. (Miles & Hamilton, 2006, pp. 30-40) Berikut adalah contoh use case diagram secara utuh:
Gambar 2.6 Diagram Use Case (Miles & Hamilton, 2006, p. 40)
2.3.2
Class Diagram Class bisa disebut sebagai bagan yang digunakan untuk
14 membangun dan mendefinisikan objek-objek. Sehingga setiap hal yang dibangun dari sebuah class disebut sebagai objek atau instances. Deskripsi dari sebuah class mencakup dua bagian: informasi yang akan dimiliki oleh objek dan behaviour yang akan didukung objek tersebut. Ini yang membedakan object-oriented dengan yang lainnya, bahwa state information dan behaviour digabungkan dalam satu definisi class, dimana objek-objek dapat terbentuk dari class tersebut.
(Miles &
Hamilton, 2006, pp. 64-65) Class dalam UML digambarkan sebagai persegi panjang dibagi menjadi tiga bagian. Bagian paling atas berisi nama class, bagian tengah berisi atribut atau informasi yang dimiliki oleh class tersebut, dan bagian akhir berisi operasi yang menunjukkan behaviour dari class. (Miles & Hamilton, 2006, p. 67)
Gambar 2.7 Class Diagram (Miles & Hamilton, 2006, p. 67)
15 Gambar 2.8 Class State: Attributes (Miles & Hamilton, 2006, p. 72)
Gambar 2.9 Class Behaviour: Operations (Miles & Hamilton, 2006, p. 77)
Class mempunyai sifat visibility, sebuah sifat yang dapat digunakan untuk mengatur akses ke atribut dan metode atau operation, yaitu : •
Private, hanya dapat digunakan oleh metode pada class tersebut, tidak dapat dipanggil dari luar class yang bersangkutan.
•
Protected, hanya dapat dipanggil oleh class yang bersangkutan (metode) dan anak-anak yang mewarisinya (generalization).
•
Public, dapat dipanggil oleh siapa saja.
•
Package, dapat dipanggil oleh class yang bersangkutan (metode) dan class lain yang berada di dalam package yang sama.
2.3.3
Sequence Diagram Sequence diagram memodelkan bagaimana sistem yang sedang
dibangun mendatangi tugasnya. Diagram ini menangkap semua urutan interaksi pada bagian-bagian dari sistem. Dengan menggunakan sequence diagram, pengembang bisa menjelaskan interaksi apa yang akan dipanggil ketika sebuah use case dieksekusi dan dalam urutan
16 seperti apa interaksi-interaksi tersebut akan terjadi. (Miles & Hamilton, 2006, pp. 108-109) Dalam sequence diagram terdapat bagian-bagian yang disebut dengan participant, time, message, dan activation bars. Participant adalah bagian-bagian dari sistem yang berinteraksi dengan satu sama lain selama sequence berjalan. Time menunjukkan urutan dimana semua interaksi berlangsung sesuai dengan waktu. Time pada sequence diagram ditunjukkan dengan garis titik-titik vertikal. Message dalam sequence ditunjukkan menggunakan panah dari participant yang ingin mengirimkan pesan ke participant lain. Message Caller adalah sebutan untuk participant yang mengirim message dan Message Receiver untuk participant yang menerima message. Actiovation bars menunjukkan bahwa sebuah participant sedang melakukan sesuatu untuk jangka waktu tertentu. Activation bars dapat ditampilkan pada awal pengiriman message dan ujung dari penerimaan message. Hal ini menunjukkan bahwa Message Caller sibuk pada saat mengirim message dan Message Receiver sibuk pada saat message sudah diterima. (Miles & Hamilton, 2006, pp. 109-114)
17 Gambar 2.10 Contoh Interaksi Pada Sequence Diagram (Miles & Hamilton, 2006, p. 112)
Dan berikut ini adalah bentuk-bentuk dari panah pada sequence diagram, setiap bentuk panah mempunyai arti yang berbeda.
Gambar 2.11 Bentuk-bentuk Panah Pada Sequence Diagram (Miles & Hamilton, 2006, p. 115)
2.4 Diagram Aliran Dokumen (DAD) Menurut (Mulyadi, 2001, pp. 58-63) diagram aliran dokumen adalah suatu model yang menggambarkan aliran dokumen dan proses untuk mengolah dokumen dalam suatu proses. Berikut ini adalah tabel yang menjelaskan komponen-komponen dari diagram aliran dokumen : Tabel 2.1 Tabel Simbol-simbol Diagram Aliran Dokumen
Simbol
Keterangan Dokumen Simbol ini digunakan untuk menggambarkan semua jenis dokumen, yang merupakan formulir untuk merekam data terjadinya suatu transaksi. Keputusan Simbol ini menggambarkan keputusan yang harus dibuat dalam proses pengolahan data. Keputusan yang dibuat ditulis
18 Simbol
Keterangan dalam simbol. Ya
Tidak
Garis Alir Simbol ini menggambarkan arah proses pengolahan data.
Persimpangan Garis Alir Jika dua garis alir bersimpangan, untuk menunjukkan arah masing-masing
garis,
salah
satu
garis
dibuat
sedikit
melengkung tepat pada persimpangan kedua garis tersebut. Pertemuan Garis Alir Simbol ini digunakan jika dua garis alir bertemu dan salah satu garis mengikuti garis lainnya. Proses Simbol ini untuk menunjukkan tempat-tempat dalam sistem informasi yang mengolah atau mengubah data yang diterima menjadi data yang mengalir keluar. Nama pengolahan data ditulis didalam simbol. Mulai / Berakhir (terminal) Simbol ini untuk menggambarkan awal dan akhir suatu sistem akuntansi
2.5 Smartphone Smartphone adalah sebuah device yang memungkinkan untuk melakukan komunikasi (seperti telepon atau SMS) juga di dalamnya terdapat fungsi PDA (Personal Digital Assistant) dan berkemampuan seperti layaknya komputer. (Rikez, 2010)
19 Kemampuan yang dimiliki sebuah smartphone adalah: 1.
Memiliki sistem operasi didalamnya yang memungkinkan seseorang menjalankan berbagai aplikasi, misalnya iOS, Windows Mobile, Android, Symbian, ataupun Sistem Operasi Blackberry.
2.
Bisa digunakan mengakses web atau internet dan konten yang disajikan pada browser, sudah hampir mendekati seperti layaknya seseorang mengakses web lewat komputer.
3.
Kemampuan mengolah pesan pada smartphone juga telah dilengkapi kemampuan mengirim email dan bahkan proses sinkronisasi dengan komputer lokal ataupun server internet, sehingga dengan mudah dapat mengakses pesan yang sama, baik melewati smartphone maupun komputer.
Orang-orang menggunakan mobile phone mereka dimanapun, bahkan mereka tetap membawanya sampai ke kamar kecil. Bukan hanya membawa smartphone mereka ke mana pun mereka berada, tetapi juga menggunakan smartphone untuk segala hal. Dari mulai memainkan games, menonton film, memeriksa laporan cuaca, browsing internet, berinteraksi dengan teman-teman di jejaring sosial, mendapatkan berita terbaru, dan bahkan untuk kebutuhan perbankan. (Kaki, 2011)
2.6 Mobile Application Mobile application juga biasa disebut denga mobile apps, yaitu istilah yang digunakan untuk mendeskripsikan aplikasi internet yang berjalan pada smartphone atau piranti mobile lainnya. Aplikasi mobile biasanya membantu para penggunanya untuk bisa terkoneksi dengan layanan internet yang biasa
20 diakses pada PC atau mempermudah mereka untuk menggunakan aplikasi internet pada piranti yang bisa dibawa. (Webopedia, 2011)
2.7 Perencanaan Keuangan Perencanaan keuangan pribadi merupakan proses mengatur keuangan untuk mencapai kepuasan ekonomi setiap individu. Proses perencanaan ini memungkinkan seseorang untuk dapat mengontrol situasi finansialnya. Setiap orang memiliki posisi dan kegiatan finansial yang berbeda, oleh karena itu perencanaan ini harus direncanakan secara baik dan benar untuk memenuhi tujuan dan kebutuhan spesifik. Rencana keuangan yang bersifat komprehensif mampu meningkatkan kualitas kehidupan seseorang dan juga meningkatkan kepuasan diri sendiri dengan mengurangi ketidakpastian tentang kebutuhan dan tujuan pada masa yang akan datang. (Kapoor, Dlabay, & Hughes, 2004) Banyak keuntungan yang didapat dengan melakukan perencanaan keuangan yang baik. Salah satunya adalah seseorang akan menjadi lebih efektif dalam memperoleh, menggunakan dan melindungi sumber daya keuangan pribadinya, karena ia menyadari akan kondisi keuangannya pada saat itu. Dengan mengetahui kondisi keuangan, seseorang juga akan menjadi lebih baik dalam mengatur keuangannya agar terhindar dari pengeluaran yang berlebihan, hutang, dan ketergantungan pada orang lain untuk keamanan ekonomi. Selain itu, tiap individu akan terbebas dari rasa khawatir terhadap kondisi keuangan mereka karena
dengan
perencanaan
keuangan
mereka
dapat
mengestimasikan
keuangannya untuk masa depan, mengantisipasi biaya pengeluaran dan mencapai tujuan ekonomi pribadi. (Kapoor, Dlabay, & Hughes, 2004)
21 2.7.1
Proses Perencanaan Keuangan Perencanaan keuangan adalah prosedur yang terus berlangsung, statusnya berubah setiap kali situasi dan posisi keuangan dalam kehidupan berubah. (Keown, 2010) Pada dasarnya perencaan keuangan mempunyai setidaknya tiga komponen. Seseorang harus mengetahui kondisi awal keuangan, tujuan finansial, dan cara pencapaian tujuan finansial. (Hananto, 2011) Namun, terdapat 5 tahapan dasar untuk perencanaan keuangan pribadi yang lebih rinci yang akan dijelaskan berikut ini. (Keown, 2010; Keown, 2010)
2.7.1.1
Tahap 1: Mengevaluasi Kesehatan Keuangan Tahap ini dimulai dari pemeriksaan terhadap situasi finansial
pada saat ini. Seseorang harus mengetahui 3 hal, yaitu: 1. Seberapa banyak uang yang diperoleh 2. Berapa besar pengeluaran yang dilakukan 3. Barang apa saja yang telah dibelanjakan Untuk bisa bertahan secara finansial, seseorang harus dapat melihat gambaran finansialnya secara utuh, dimana ia membutuhkan pencatatan yang baik, terutama dalam memperhatikan pengeluaran. Melacak apa yang dibelanjakan hanya membutuhkan waktu untuk memasukkan semua pengeluaran setiap hari ke dalam suatu buku atau program komputer. Ini memang hal yang membosankan, namun cara ini dapat memberikan seseorang gambaran akan keuangannya menjadi lebih jelas dan juga kemampuan untuk mengontrol situasi finansialnya.
22 Menghitung pemasukkan akan lebih mudah dibandingkan dengan menghitung pengeluaran. Karena kadang terdapat transaksi pengeluaran yang tidak mempunyai bukti, sehingga sedikit sulit untuk melacak semua hal detil yang dibelanjakan. Namun seperti yang sudah disebutkan sebelumnya, untuk membuat perencanaan seseorang harus mengetahui kemana ia menghabiskan uangnya. Pengeluaran dikategorikan menjadi beberapa klasifikasi; makanan, pakaian dan aksesoris, transportasi, rekreasi, kesehatan dan perawatan medis, perumahan dan alat-alat rumah tangga, biaya pajak, dan lain-lain. Selain kategori, pengeluaran juga dibagi menjadi dua tipe, yaitu variable expenditure (pengeluaran yang tidak harus dilakukan) dan fixed expenditure (pengeluaran
yang
harus
dilakukan
setiap
bulannya.)
2.7.1.2
Tahap 2: Menentukan Tujuan Finansial Tahap berikutnya adalah menentukan tujuan finansial atau
goal yang ingin seseorang capai. Tiap individu perlu mencatat goal ini dan menentukan kapan uang untuk mencapai tujuan tersebut dibutuhkan. Kadang banyak orang yang melewatkan tahap ini karena mereka tidak mengetahui bagaimana cara pencapaiannya. Yang harus dilakukan hanya atur tujuan apa yang diinginkan, dan memutuskan kesediannya untuk membuat komitemen keuangan yang diperlukan untuk mencapainya.
23 2.7.1.3
Tahap 3: Mengembangkan Rencana Ini adalah tahap dimana seseorang harus mengetahui
bagaimana cara mencapai tujuan finansial. Caranya bisa dengan melakukan budgeting atau membuat strategi investasi (menabung) yang
nantinya
seseorang
bisa
mendapatkan
tujuan
finansial
pribadinya masing-masing.
2.7.1.4
Tahap 4: Mengimplementasikan Rencana Penting halnya untuk seseorang tetap berdiri pada rencana
yang sudah ditetapkan sebelumnya. Untuk mengimplementasikan dan menetap pada rencana seseorang perlu untuk melacak semua pemasukkan dan pengeluaran, dan juga terus memantau tujuan finansialnya. Rencana keuangan inilah yang digunakan untuk mencapai sasaran finansial.
2.7.1.5
Tahap 5: Meninjau Kemajuan, Mengevaluasi Ulang, Merevisi Rencana Mengevaluasi ulang rencana sebelumnya juga penting dalam
menjalankan rencana tersebut. Karena mungkin saja ditengah perjalanan dalam mencapai tujuan finansial, terdapat kondisi-kondisi tak
terduga
seperti
menikah
atau
mempunyai
anak
yang
membutuhkan pengeluaran uang yang lebih. Untuk itu, seseorang harus merevisi kembali rencana sebelumnya untuk mengimbangi kondisi finansial saat itu demi pencapaian tujuan.
24 2.7.2 Pencatatan Keuangan Financial records atau pencatatan keuangan berguna dalam memahami keadaan finansial seseorang dan penting untuk mengetahui hal apa yang harus disimpan dan hal apa yang harus dibuang. (Marthur, 1984, p. 35) Selain itu, financial records juga dapat digunakan untuk memantau alur perjalanan uang. Jika tidak mengetahui kapan uang telah masuk dan keluar, pengelolaan keuangan tidak akan sukses. Records yang baik adalah yang mempunyai rincian uang masuk, uang keluar, waktu uang masuk dan keluar, jumlah uang dan kemana uang dikeluarkan. (York, 2005) Records datang dalam berbagai media. Banyak yang masih dibuat di atas kertas, misalnya, korespondensi, voucher, kontrak dan dokumen pendukung. Informasi juga dapat dicatat dalam sebuah buku, jurnal, register, atau hasil cetakan komputer. Akhir-akhir ini juga banyak aplikasi komputer yang membuat catatan keuangan, namun hanya mungkin ada dalam format elektronik. (Kimberly Barata, 2011, p. 11) Beberapa orang juga menggunakan aplikasi Microsoft Excel untuk menyimpan catatan pengeluaran, namun aplikasi ini mengandung sejumlah besar fitur yang tidak mudah untuk pemula. Microsoft Excel merupakan aplikasi yang berisi ratusan rumus dan memerlukan waktu yang lama untuk menguasai aplikasi ini dengan mudah. (Foster, 2011) Seperti yang telah diterangkan sebelumnya, pencatatan dapat dilakukan di berbagai media, salah satunya adalah media kertas. Namun, akan lebih mudah jika pencatatan dapat dilakukan menggunakan media seperti sebuah sistem pencatatan yang selalu dekat dengan keberadaan
25 seseorang, sehingga seseorang dapat mencatat dan merubah data keuangan dengan lebih mudah. (Weirich, 1983, p. 56) Terlebih lagi pencatatan manual atau pencatatan menggunakan media non-mobile tidak efektif dan efisien. Proses transaksi dan pembuatan laporan secara manual sering terjadi kesalahan jika terdapat banyak data sehingga laporan sering kurang akurat. (Setiawan, Satoto, & Fatchurrohim, 2008, p. 1)
2.7.3 Tujuan Finansial Membantu seseorang mengatur keuangan adalah dengan mencapai target atau goal yang telah ditetapkan sebelumnya. (Weirich, 1983, p. 48) Tipe dari goal atau tujuan finansial bisa beragam. Seseorang dapat menspesifikasikan tujuan finansialnya ke dalam keinginannya untuk membeli sesuatu, atau mungkin mempunyai goal untuk terlepas dari hutang kredit. Seseorang menginginkan untuk mempunyai sejumlah uang dalam jangka waktu tertentu juga bisa disebut sebagai goal. Atau hal sederhana seperti menabung sejumlah uang tiap bulannya dapat dijadikan sebagai goal agar kelak uang tersebut dapat berguna dikemudian hari. (Madura, 2004) Seseorang harus dapat menentukan tujuan finansial secara realistis agar nantinya tujuan tersebut bisa tercapai. Sebuah rencana keuangan yang membuat seseorang harus menabung hampir semua dari pemasukkannya juga sia-sia jika ia tidak bersedia untuk mengikuti rencana tersebut. Ketika satu rencana gagal, ketertarikan akan perencanaan keuangan akan menghilang. Dengan mengurangi tingkat
26 goal yang ingin dicapai dan menjadikannya lebih realistis, rencana yang layak dapat dikembangakan. Waktu pencapaian tujuan finansial dapat dikategorikan menjadi short term (dalam satu tahun kedepan), intermediate term (antara satu atau 5 tahun kedepan), atau long term (lebih dari 5 tahun). Contohnya seperti membeli mobil untuk 6 bulan kedepan bisa diklasifikasikan sebagai short team goal, membayar pinjaman uang untuk 3 tahun kedepan sebagai intermediate goal dan menabung untuk hari tua sebagai long term goal.
2.8
iOS Device iOS terdiri dari sistem operasi dan teknologi yang digunakan untuk menjalankan aplikasi native pada peranti seperti iPad, iPhone, dan iPod Touch. Meskipun mempunyai teknologi yang didapat dari Mac OS X, iOS khusus dirancang untuk memenuhi kebutuhan lingkungan mobile, yang pasti akan berbeda dari aplikasi desktop. Jika sebelumnya telah mencoba mengembangkan aplikasi untuk Mac OS X, pasti akan banyak teknologi sama yang ditemukan pada iOS, namun ada beberapa teknologi yang hanya tersedia untuk iOS itu sendiri, seperti antarmuka yang Multi-Touch dan accelerometer. (Apple, iOS Technology Overview, 2010) Mendapatkan aplikasi untuk iPhone atau iOS device lainnya sangat mudah, yaitu bisa didapatkan melalui Apple Application Store. Apple Application Store ini sendiri mempunyai “User Experience” yang lebih baik dibandingkan dengan smartphone lainnya, yang mana baik untuk penjualan aplikasi. Pengguna iPhone, iPod Touch maupun iPad tertarik dalam pembelian aplikasi, oleh karena itu mereka membeli iOS device yang ada. (Bumb, 2011)
27 Pengguna Apple iOS platform yang mengunduh aplikasi mobile memiliki nilai rata-rata tertinggi untuk jumlah aplikasi dan menggunakan aplikasiaplikasi tersebut beberapa kali perhari. Hal ini berdasarkan data yang dikeluarkan pada bulan April 2011 oleh The Nielsen Company. Pengguna Android,
menempati
posisi
ke-dua
pada
ke-dua
kategori
tersebut.
(MarketingCharts, 2011) Diantara para pengguna Apple iOS yang mengunduh aplikasi, rata-rata aplikasi yang mereka miliki adalah 48. Hal ini memberikan pengguna Apple iOS jumlah rata-rata tertinggi dari aplikasi mobile; pengguna Android mengikuti dengan 35 aplikasi, nomor yang merupakan 27% lebih rendah. Pengguna Palm hanya memiliki rata-rata 21 aplikasi pada mobile phone mereka, setengah dari jumlah rata-rata aplikasi yang dimiliki oleh pengguna iOS rata-rata. (MarketingCharts, 2011)
Gambar 2.12 Jumlah Rata-Rata Aplikasi Pada Mobile Phone (MarketingCharts, 2011)
28 Selain memiliki jumlah rata-rata tertinggi dari aplikasi, pengguna iOS juga memiliki tingkat tertinggi (68%) dalam menggunakan aplikasi-aplikasi tersebut beberapa kali sehari. Android mengikuti iOS dengan nilai 60%, jumlah pengguna Android yang menggunakan aplikasinya beberapa kali dalam sehari.
Gambar 2.13 Jumlah Rata-Rata Penggunaan Aplikasi Pada Mobile Phone (MarketingCharts, 2011)
Arsitektur pada iOS serupa dengan arsitektur dasar yang terdapat pada Mac OS X. Pada level tertinggi, iOS bekerja sebagai perantara antara perangkat keras dengan aplikasi yang muncul pada layar, seperti yang terdapat pada Gambar 2.6. Aplikasi akan berkomunikasi dengan perangkat keras melalui satu set antarmuka yang melindungi aplikasi tersebut dari perubahan perangkat keras. Pemisahan ini membuat pengembangan aplikasi untuk menjadi lebih mudah karena dapat bekerja untuk tetap konsisten pada piranti apapun walau mempunyai kemampuan perangkat keras yang berbeda. (Apple, iOS Technology Overview, 2010, pp. 13-14)
29
Gambar 2.14 Arsitektur iOS (Apple, 2010)
2.9
Kelebihan iPhone Hasil penelitian menunjukkan bahwa Apple menempati posisi pertama pada daftar
15
perusahaan
penghasil
barang
elektronik
mencakup
iPhone
(smartphone), iPad dan iPod Touch dengan presentase sebesar 32% (Gambar 2.8). Apple iPhone sendiri juga terdapat pada posisi paling atas dari daftar 20 telepon genggam terbaik (Gambar 2.9). (Media, 2011, p. 2)
30
Gambar 2.15 Top 15 Manufacturers (Media, 2011)
Gambar 2.16 Top 20 Mobile Phones (Media, 2011)
Keunggulan lain yang dimiliki oleh iPhone (Agung, 2009) adalah: 1. Memiliki layar sentuh berukuran 3.5” dengan resolusi 480x320 pixel dengan jenis layar capacitive touch screen. 2. Browser Safari bisa menampilkan huruf-huruf karakter Cina dan mengakomodasi 16 bahasa dunia. 3. Menggunakan speaker built-in sehingga mampu menyajikan suara dengan kencang, tidak pecah dan amat jernih. 4. Memiliki virtual keyboard yang sangat nyaman digunakan. 5. Memiliki tampilan menu yang bisa digeser sehingga anda bisa menampilkan banyak aplikasi dalam sebuah layar iPhone. 6. GPS yang terintegrasi
31 7. Memori internal antara 4, 8, 16, 32, 64 GB. 8. Memiliki fasilitas jaringan Wi-Fi, 3G, GPRS dan EDGE.
2.10 iOS SDK dan Xcode iOS SDK (Software Development Kit) yang bekerja pada komputer Macintosh menyediakan antarmuka, tools dan semua sumber yang digunakan untuk membangun aplikasi iOS. (Apple, iOS Technology Overview, 2010) Apple memberikan sebagian besar sistem untuk antarmuka mereka ke dalam paket yang disebut dengan framework atau kerangka kerja. Framework adalah sebuah direktori yang berisi library dan sumber-sumber seperti header files, gambar, aplikasi bantuan, dan lain-lain yang digunakan untuk mendukung library yang tersedia. Framework digunakan dengan cara me-link framework yang diinginkan ke dalam proyek aplikasi. Menghubungkan framework dengan proyek yang dibuat memberi akses ke semua fitur dari framework tersebut dan juga memungkinkan untuk development tools mengetahui dimana menemukan suatu file tertentu. (Apple, iOS Technology Overview, 2010, pp. 14-15) Komponen yang ada pada SDK termasuk: •
Xcode Tools – alat yang mendukung pengembangan aplikasi iOS, termasuk: 1. Xcode – sebuah alat yang mendukung pengembangan untuk mengelola proyek aplikasi dan memungkinkan untuk mengedit, mengkompilasi, menjalankan dan memperbaiki error pada kode. Xcode
terintegrasi
merupakan
aplikasi
pengembangan.
dengan utama
alat
pendukung
yang
lainnya
digunakan
dan
selama
32 2. Interface Builder – alat yang digunakan untuk merancang antarmuka secara visual. Objek antarmuka yang dibuat disimpan pada suatu file dan dimuat ke aplikasi saat runtime. 3. Instruments – alat yang digunakan untuk menganalisa perfoma dan mendeteksi kesalahan. Instruments bisa digunakan untuk mendapatkan informasi mengenai perilaku runtime dari aplikasi dan mengidentifikasikan kemungkinan kesalahan. 4. iOS Simulator – aplikasi Mac OS X yang mensimulasikan teknologi iOS, mengizinkan pengembang untuk menguji aplikasi iOS secara lokal pada komputer Macintosh yang digunakan. 5. iOS Developer Library – referensi dan dokumentasi konsep yang menjelaskan
semua tentang teknologi iOS dan proses
pengembangan aplikasi. Walaupun aplikasi bisa dicoba pada iOS Simulator, pengembang juga dimungkinkan untuk menguji aplikasinya ke piranti yang sesungguhnya menggunakan Xcode dan Instruments. iOS Simulator ideal untuk membangun dan menguji aplikasi secara cepat namun tidak bisa menggantikan pengujian pada piranti sesungguhnya. Untuk mencoba aplikasi ke salah satu piranti iOS, pengembang harus terdaftar pada iOS Developer Program. (Apple, iOS Technology Overview, 2010, p. 15)
2.11 iOS Human Interface Guideline Antarmuka yang baik adalah antarmuka yang mengikuti prinsip perancangan antarmuka. Prinsip tersebut didasari oleh cara orang atau pengguna berpikir, bukan dari kemampuan pirantinya. Antarmuka yang tidak menarik,
33 menyulitkan atau tidak logis akan membuat aplikasi yang canggih sekalipun menjadi tidak baik. (Apple, iOS Human Interface Guideline, 2011, pp. 20-23) 1. Aesthetic Integration Integritas estetika tidak menggunakan tampilan cantik sebagai acuan untuk mengukur, namun seberapa baik tampilan aplikasi tersebut terintegrasi dengan fungsinya. Sebuah aplikasi harus memberikan pengguna pesan yang jelas tentang tujuan dari aplikasi tersebut. Sebagai contoh, bila suatu aplikasi menyediakan kegunaan produktif bagi pengguna, namun tampilan antarmukanya aneh dan tidak karuan, tentu akan membuat pengguna untuk kesulitan dalam menginterpretasi. 2. Konsistensi Konsistensi
pada
antarmuka
memungkinkan
pengguna
untuk
menggunakan pengetahuan dan keterampilan yang mereka miliki di satu aplikasi ke aplikasi lain. Aplikasi yang konsisten bukan berarti meniru aplikasi lain, namun hanya mengambil keuntungan dari standar dan paradigma yang sudah jelas dirasakan nyaman oleh pengguna. 3. Kendali Pengguna Inisiasi dan pengontrolan aksi pada aplikasi adalah pengguna, bukan aplikasi itu sendiri. Aplikasi memang diharapkan dapat memberikan saran untuk melakukan aksi atau mengingatkan tentang konsekuensi berbahaya, namun aplikasi tidak boleh mengambil keputusan sendiri diluar kontrol user. Jadi aplikasi yang baik adalah aplikasi yang seimbang antara memberikan pengguna apa yang mereka butuhkan, juga membantu pengguna untuk menghindari hal-hal yang tidak diinginkan. Pengguna mengekspektasikan aplikasi untuk dapat membatalkan suatu operasi sebelum operasi tersebut
34 dimulai,
mengkonfirmasi
aksi
yang
akan
dilakukan,
dan
bisa
memberhentikan operasi yang sedang berlangsung.
2.12 Cocoa Cocoa dan Cocoa Touch framework yang bekerja untuk Mac OS X dan iOS adalah sebuah kerangka kerja yang terintegrasi ke dalam Xcode. Cocoa itu sendiri merupakan salah satu API (Application Programming Interface) berbasis objek milik Apple Inc. API Cocoa yang bertingkat tinggi membuat pengembang lebih mudah untuk menambahkan animasi, jaringan, tampilan platform asli, dan karakter untuk aplikasi dengan hanya beberapa baris kode. Cocoa framework terdiri dari libraries, API dan runtimes. Dengan menggunakan Cocoa, pengembang dapat membangun aplikasi dengan cara yang sama dengan Mac OS X. Aplikasi otomatis akan mempunyai karakter dan tampilan yang sama dengan Mac OS X. Cocoa dengan menggunakan Xcode adalah cara yang paling baik untuk membuat aplikasi untuk Mac. (Apple, Cocoa: Mac OS X Technology Overview, 2011)
2.12.1 Cocoa Touch Cocoa Touch, berbeda dengan Cocoa, merupakan ekstensi dari Cocoa untuk aplikasi pada sistem operasi iOS pada iPhone, iPad dan iPod Touch. Cocoa Touch digunakan untuk menambahkan fungsi sensor gerak dan animasi. Cocoa Touch mengatur dan mengelola interaksi pengguna pada iOS. Karena Cocoa Touch merupakan ekstensi dari Cocoa, maka semua teknologi Cocoa Touch berasal dari Cocoa. Cocoa Touch dan antarmuka
35 iOS benar-benar dirancang ulang untuk menangani multi-touch. Semua fitur antarmuka yang biasa digunakan pada platform iOS seperti iPhone, iPad dan iPod Touch telah disediakan pada Cocoa Touch framework. (Apple, Cocoa: Mac OS X Technology Overview, 2011) Dibangun di atas paradigma Model-View-Controller, Cocoa Touch menyediakan dasar yang kuat untuk menciptakan sebuah aplikasi menarik. Ketika dikombinasikan dengan alat pengembang pada Xcode seperti Interface Builder, keduanya akan menjadi mudah dan menyenangkan ketika menggunakan sistem drag-and-drop pada saat pembuatan aplikasi.
2.13 UIKit UIKit adalah sebuah framework yang menyediakan kelas-kelas untuk membangun dan mengatur perancangan antarmuka aplikasi iOS. UIKit menyediakan objek, event handling, penggambaran model, windows, views, dan kontrol yang didesain secara spesifik untuk antarmuka layar sentuh. (Apple, UIKit Framework References, 2011, p. 26)
2.14 Objective-C Objective-C adalah sebuah bahasa yang berorientasi objek. Bahasa ini digunakan pada Mac OS X dan piranti iOS. Objective-C sendiri merupakan sebuah kombinasi dari dua bahasa; C dan Smalltalk. Pada tahun 1970, beberapa pengembang yang berasal dari Bell Labs membuat sebuah bahasa yang dinamakan C. Bahasa C ini memudahkan
36 pengembang dalam membuat program karena mampu bekerja pada berbagai sistem operasi. Pada tahun 1980, bahasa C menjadi bahasa yang sangat terkenal. Ditahun inilah, Bred Cox dan Tom Love pengembang dari Stepstone menggabungkan bahasa C dengan bahasa Smalltalk. Bahasa C itu sendiri merupakan bahasa yang prosedural, yaitu menggunakan langkah beraturan untuk membaca suatu program. Sedangkan Smalltalk adalah bahasa yang berorientasi objek, yaitu tidak memproses program secara prosedural namun menggunakan objek untuk menyelesaikan pekerjaan. Kedua bahasa ini digabung dan menjadi bahasa yang dinamakan “Objective-C”. (Bennett, Fisher, & Lees, 2010, pp. 97-98)
2.15 Core Data Core Data adalah sebuah framework yang menyediakan solusi untuk tugas-tugas umum yang berhubungan dengan siklus objek dan pengelolaan objek. (Apple, Core Data, 2010, pp. 17-19) Fitur dari Core Data antara lain: 1. Menyediakan bantuan untuk melakukan undo dan redo. 2. Mampu mengatur konsistensi dari relasi antar objek. 3. Dapat mengurangi memori yang berkelebihan dari suatu program dengan memuat objek-objek. 4. Melakukan validasi terhadap nilai properti dari sebuah objek secara otomatis. 5. Mengizinkan pengguna mengubah skema yang telah ada dengan lebih mudah. 6. Menggunakan
NSFetchedResultsController
untuk
terintegrasi
37 dengan Cocoa pada Mac OS X. 7. Mengumpulkan accessor (getter – metoda yang mengembalikan nilai dari private class) yang sesuai untuk relasi to-many. 8. Mengelompokkan dan mengorganisasi data pada memori dan pada antarmuka. 9. Mendukung penyimpanan objek pada tempat penyimpanan data eksternal. 10. Meng-compile query dengan baik. 11. Menyediakan fitur locking untuk mengatasi permasalahan pada multi-writer. Terdapat banyak alasan mengapa Core Data baik untuk digunakan. Salah satunya adalah jumlah kode yang ditulis untuk mendukung layer model dari aplikasi akan menjadi 50% sampai 70% lebih sedikit (dihitung dari baris kode). Ini dikarenakan oleh fitur-fitur yang disediakan oleh Core Data. Core Data mempunya kode dimana kualitasnya dijaga melalui tes unit dan sudah digunakan setiap harinya untuk aplikasi-aplikasi yang bervarian. Framework ini sudah sangat teroptimisasi. Untuk menyediakan keamanan dan error-handling yang baik, Core Data juga menyediakan skalabilitas memori untuk solusi apapun. Selain dari keuntungan diatas, Core Data juga mampu untuk terintegrasi dengan baik dengan Mac OS X tool. Model design tool mampu membantu para pengguna untuk membuat skema secara cepat dan mudah. Pengguna juga bisa menggunakan template pada Instruments application untuk mengukur performa Core Data dan untuk menangani bermacam masalah. Pada desktop Mac OS X, Core Data juga terintegrasi dengan Interface
38 Builder untuk membantu pengguna membangun antarmuka berdasarkan skema model yang dibuat. Core Data sendiri bukan merupakan sebuah basis data relasional atau Relational
Database
Management
System
(RDBMS).
Core
Data
menyediakan infrastuktur untuk mengatur dan menyimpan objek dan mengambil objek tersebut dari sebuah tempat penyimpanan, seperti SQLite. Core Data tidak menghilangkan keharusan pengguna untuk menulis kode. Walaupun pengguna dapat menggunakan Data Modeling Tool dan Interface Builder pada Xcode, untuk aplikasi yang lebih nyata, pengguna tetap harus menulis kode.
2.15.1 SQLite SQLite merupakan sebuah sistem manajemen basis data relasional yang bersifat public domain, yaitu bebas untuk digunakan untuk tujuan apapun, komersial atau pribadi. SQLite ini dikembangan oleh D. Richard Hipp. Tidak seperti kebanyakan basis data SQL lainnya, SQLite tidak memiliki proses server yang terpisah. SQLite membaca dan menulis langsung ke sebuah file disk. SQLite merupakan sebuah basis data SQL lengkap dengan beberapa tabel, indeks, dan views yang berada dalam sebuah file disk. Format file basis data SQLite adalah cross-platform, sehingga bisa digunakan pada sistem operasi manapun. (SQLite, 2002)