BAB II LANDASAN TEORI 2.1 Interaksi Obat Interaksi obat terjadi jika efek suatu obat (index drug) berubah akibat adanya obat lain (precipitant drug), makanan, atau minuman.Interaksi obat dapat menghasilkan efek yang memang dikehendaki (Desirable Drug Interaction), atau efek yang tidak dikehendaki (Undesirable/Adverse Drug Interactions = ADIs) yang lazimnya menyebabkan efek samping obat dan/atau toksisitas karena meningkatnya kadarobat di dalam plasma, atau sebaliknya menurunnya kadar obat dalam plasma yang menyebabkan hasil terapi menjadi tidak optimal. Sejumlah besar obat baru yang dilepas di pasaran setiap tahunnya menyebabkan munculnya interaksi baru antar obat akan semakin sering terjadi (Ament PW, et al, 2000). Interaksi obat didefinisikan sebagai modifikasi efek suatu obat akibat obat lain yang diberikan pada awalnya atau diberikan bersamaan, sehingga keefektifan atau toksisitas satu obat atau lebih berubah. Obat dapat berinteraksi dengan obat lainmaupun dengan makanan atau minuman yang dikonsumsi oleh pasien. Hal ini dapat terjadi karena dalam kehidupan sehari-hari, tidak jarang seorang penderita mendapat obat lebih dari satu macam obat, menggunakan obat ethical, obat bebas tertentu selain yang diresepkan oleh dokter maupun mengkonsumsi makanan dan minuman tertentu seperti alkohol, kafein. Perubahan efek obat akibat interaksi obat dapat bersifat membahayakan dengan meningkatnya toksisitas obat atau berkurangnya khasiat obat.Namun, interaksi dari beberapa obat juga dapat bersifat menguntungkan seperti efek hipotensif diuretik bila dikombinasikan dengan betabloker dalam pengobatanhipertensi (Fradgley, 2003). 7 http://digilib.mercubuana.ac.id/ 8 Beberapa laporan studi menyebutkan proporsi interaksi obat dengan obat lain (antar obat) berkisar antara 2,2% sampai 30% terjadi pada pasien rawat-inap dan 9,2% sampai 70,3% terjadi pada pasien-pasien rawat jalan, walaupun kadangkadang evaluasi interaksi obat tersebut memasukkan pula interaksi secara teoretik selain interaksi obat sesungguhnya yang ditemukan dan terdokumentasi (Peng CC, et al, 2003). Menurut Gitawati (2008), Mekanisme interaksi obat dapat melalui beberapa cara, yakni 1) interaksi secara farmasetik (inkompatibilitas); 2) interaksi secara farmakokinetik dan 3) interaksi secara farmakodinamik. Interaksi farmasetik atau disebut juga inkompatibilitas farmasetik bersifat langsung dandapat secara fisik atau kimiawi, misalnyaterjadinya presipitasi, perubahan warna, tidakterdeteksi (invisible), yang selanjutnyamenyebabkan obat menjadi tidak aktif. Contoh: interaksi karbcnisilin dengan gentamisin terjadi inaktivasi; fenitoin dengan larutan dextrosa 5% terjadi presipitasi; amfoterisin B dengan larutan NaCl fisiologik, terjadi presipitasi. Menurut Joy, Jyothi M, et al(2011), Interaksi farmakokinetik meliputi absorpsi, distribusi, metabolisme dan eliminasi.Absorpsi,ketika herbal dan obat diambil melalui mulut, biasanya diserap ke dalam aliran darah melalui perut dan usus. Herbal dapat mempengaruhi cara di mana obat yang diserap, menyebabkan perubahan jumlah obat yang memasuki aliran darah. Sebagai contoh, beberapa herbal dapat mengubah lingkungan fisik perut, seperti tingkat pH, sementara yang lain mungkin mengikat kimia untuk obat, menyebabkan mereka untuk tetap di perut bukannya memasuki aliran darah. Beberapa tumbuhan, seperti obat pencuci perut, bisa mempercepat proses pencernaan, mengurangi jumlah waktu obat yang hadir untuk diserap oleh lambung.Distribusi, herbal seperti Meadowsweet dan Hitam willow, yang mengandung rasa sakit mengurangi salisilat, dapat menggantikan protein yang sangat terikat obat-obatan seperti warfarin dan carbamazepine sehingga meningkatkan efek samping dari obat ini. Produk ini tidak harus diambil bersamaan.Metabolisme, setelah dalam aliran darah, banyak http://digilib.mercubuana.ac.id/ 9 obat perlu dimetabolisme (diubah kimiawi) baik oleh hati agar menjadi terapi aktif atau dihapus dari aliran darah.Oleh karena itu hati anda, memainkan peran penting dalam mengendalikan tingkat dan efektivitas obat dalam tubuh anda.Terapi herbal (dan juga terapi obat) dapat mengubah metabolisme hati.Dengan menginduksi atau menghambat enzim hati, herbal dapat mengubah jumlah obat terapi aktif dalam darah.Ini adalah mekanisme yang paling penting untuk interaksi antara terapi herbal dan obat-obatan anti retroviral. Akar manis (sebagai herbal, bukan pemanis) menurunkan metabolisme kortikosteroid, yang menyebabkan efek samping dan beracun dari penumpukan kortikosteroid.Eliminasi, beberapa obat dikeluarkan dari aliran darah melalui ginjal.Herbal yang mempengaruhi fungsi ginjal dapat mengubah tingkat obat dalam darah.Jika ramuan mengurangi fungsi ginjal, tingkat obat dapat meningkatkan.Jika ramuan meningkatkan fungsi ginjal, tingkat obat dapat menurun.Interaksi obat secara farmakokinetik yang terjadi pada suatu obat tidak dapat diekstrapolasikan (tidak berlaku) untuk obat lainnya meskipun masih dalam satu kelas terapi, disebabkan karena adanya perbedaan sifat fisikokimia, yang menghasilkan sifat farmakokinetik yang berbeda.Contohnya, interaksi farmakokinetik oleh simetidin tidak dimiliki oleh H2-blocker lainnya; interaksi oleh terfenadin, aztemizole tidak dimiliki oleh antihistamin non-sedatif lainnya. Interaksi farmakodinamik adalah interaksi antara obat yang bekerja pada sistem reseptor, tempat kerja atau sistem fisiologik yang samasehingga terjadi efek yang aditif, sinergistik, atau antagonistik, tanpa ada perubahan kadar plasma ataupun profil farmakokinetik lainnya. Interaksi farmakodinamik umumnya dapat diekstrapolasikan ke obat lain yang segolongan dengan obat yang berinteraksi, karena klasifikasi obat adalah berdasarkan efek farmakodinamiknya. Selain itu, umumnya kejadian interaksi farmakodinamik dapat diramalkan sehingga dapat dihindari sebelumnya jika diketahui mekanisme kerja obat (Kastrup EK, 2000). Interaksi farmakodinamik dapat terjadi ketika dua atau lebih obat memiliki mekanisme aksi yang menghasilkan hasil fisiologis yang sama. Interaksi farmakodinamik dapat dikategorikan secara luas sebagai: sinergis (ketika efek dari http://digilib.mercubuana.ac.id/ 10 dua obat lebih besar daripada jumlah efek masing-masing); antagonistik (ketika efek dari dua obat kurang dari jumlah efek masing-masing); aditif (ketika efek dari dua obat hanyalah jumlah dari efek masing-masing); dan tergantung urutan (ketika urutan dua obat yang diberikan mengatur efek mereka). Meskipun interaksi farmakodinamik relatif umum dalam praktek klinis, efek samping biasanya dapat diminimalkan jika interaksi diantisipasi dan diambil tindakan pencegahan yang tepat (Krishna, Bala, et al, 2011). Perubahan efek obat akibat interaksi obat sangat bervariasi diantara individu karena dipengaruhi oleh berbagai faktor seperti dosis, kadar obat dalam darah, rute pemberian obat, metabolisme obat, durasi terapi dan karakteristik pasien seperti umur, jenis kelamin, unsur genetik dan kondisi kesehatan pasien (Fradgley, 2003). Tidak semua interaksi obat akan bermakna secara signifikan, walaupun secara teoritis mungkin terjadi. Banyak interaksi obat yang kemungkinan besar berbahaya terjadi hanya pada sejumlah kecil pasien.Namun demikian seorang farmasis perlu selalu waspada terhadap kemungkinan timbulnya efek merugikan akibat interaksi obat ini untuk mencegah timbulnya resiko morbiditas atau bahkan mortalitas dalam pengobatan pasien (Rahmawati, et al, 2006). 2.2 Definisi Java Java merupakan salah satu bahasa pemrograman yang diciptakan olehperusahaan Sun Microsystem melalui Green Project, yaitu proyek penelitian untuk membuat bahasa yang akan digunakan pada chip-chip embedded pada device intelligent consumer electronic (Hermawan, 2004). Bahasa Java diciptakan oleh James Gosling.Pada awalnya, bahasa pemrograman ini bernama Oak.Penamaan Oak diambil ketika James melihat pohon di seberang kaca ruang kantornya. Kemudian lambat laun nama ini berubah menjadi Java. Bahasa Java hampir sama dengan bahasa pemrograman lain, seperti C, C++, Pascal, dan Modula-3 (Wijela, 1996). http://digilib.mercubuana.ac.id/ 11 Dua faktor penting yang mempengaruhi bahasa komputer adalah: perbaikan dalam seni pemrograman dan lingkungan komputasi. Java tidak terkecuali, harus memenuhi dua faktor sebelum menjadi paling popular, bahasa pemrograman yang luas. Ini dikembangkan di Sun Microsystems pada tahun 1991, oleh tim yang dipimpin oleh James Gosling. Bahasa baru awalnya bernama “Oak” kemudian berganti namamenjadi “Java” pada tahun 1995. Berbeda dengan bahasa yang lebih tua lainnya, yang dirancang untuk berjalan pada mesin tertentu (CPU), Java adalah bahasa portabel yang dapat berjalan di multi-platform (cross-platform), Internet dan World Wide Web (WWW) (Vu, Hieu, 2015). Terdapat beberapa konfigurasi software atau perangkat lunak yang dibutuhkan oleh Java (Wijela, 1996), yaitu : 1. java Interpreter Java yang digunakan untuk menjalankan program Java dalam bentuk bytecode 2. javac Compiler java yang mengkompilasi kode sumber Java ke dalam bytecode 3. javadoc Program dokumentasi java yang secara otomatis membuat dokumendokumen HTML dari kode sumber Java 4. javah File ini berfungsi untuk membuat file header dan file stub yang dapatdiimplementasikan pada class yang lain 5. javap File ini berfungsi untuk mengubah bentuk bytecode ke dalam kode sumberJava 6. javaprof File ini berfungsi untuk mencetak informasi untuk aplikasi single thread http://digilib.mercubuana.ac.id/ 12 2.3 Keunggulan Java Java memiliki beberapa keunggulan bila dibandingkan dengan bahasapemrograman lainnya. Menurut Hermawan (2004), terdapat 5 aspek yang menjadi keunggulan Java, yaitu: 1. Java bersifat sederhana dan relatif lebih mudah Bentuk model Java sebagian besar berasal dari bahasa C++. Namun adabeberapa karakteristik yang diperbaiki pada C++, seperti mengurangikompleksitas beberapa fitur, penambahan fungsionalitas, dan penghilanganbeberapa aspek pemicu ketidakstabilan sistem pada C++. 2. Java berorientasi pada objek (Object Oriented) Java merupakan bahasa pemrograman yang berorientasi objek (OOP) dan bukan seperti Pascal, Basic maupun C yang berbasis prosedural.Dalam memecahkan masalah, Java membagi program menjadi objek-objek yang kemudian memodelkan sifat dan tingkah laku masing-masing.Java juga menentukan dan mengatur interaksi antara objek yang satu dengan lainnya. 3. Java bersifat terdistribusi Pada dekade awal perkembangan PC (Personal Computer), komputer hanyabersifat sebagai workstation tunggal dan tidak terhubung satu sama lain.Sedangkan saat ini, sistem komputerisasi cenderung terdistribusi, mulai dariworkstation client, e-mail server, database server, web server, proxy server,dan sebagainya. 4. Java bersifat multiplatform Dewasa ini kita mengenal banyak platform sistem operasi, mulai dariWindows, Apple, dan berbagai varian UNIX dan Linux.Pada umunya,program yang dibuat dan di-compile di suatu platform hanya bisa dijalankandi platform tersebut.Java bersifat multiplatform, yakni dapat aplikasi yangdibuat dengan bahasa Java dapat diterjemahkan oleh Java Interpreter padaberbagai sistem operasi. 5. Java bersifat multithread http://digilib.mercubuana.ac.id/ 13 Thread adalah proses yang dapat dikerjakan oleh program dalam suatuwaktu. Java bersifat multithreaded, artinya dapat mengerjakan beberapaproses dalam waktu yang hampir bersamaan. 2.4 Operasi String Java adalah bahasa berorientasi objek yang memungkinkan programmer untuk membuat class generik.Ketika membuat class generik pengembang menempatkan setidaknya satu jenis parameter dalam kurung sudut setelah setiap class atau antarmuka deklarasi.Parameter jenis ini mungkin terikat atau terikat di Java (Mathur, 2011). String merupakan sebuah bentuk data yang sering dipakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks. Sebagai contoh fungsi string misalnya digunakan untuk menampung atau menyimpan sebuah kalimat dan lainsebagainya(Suprapto, dkk, 2008). Menurut Prasetyo DD (2007), String merupakan rangkaian karakter yang sifatnya immutable (read-only). Ini berarti bahwa isi suatu string tidak dapat diubah lagi begitu ia sudah terbentuk. Tidak seperti objek lainnya.Java memperlakukan string sebagai bagian dari bahasa Java.Dalam implementasinya, string hampir dipastikan selalu diperlukan di setiap kode program. String literal merupakan pendekatan yang lazim dilakukan untuk menciptakan string.Di sini cukup menuliskan rangkaian karakter di antara tanda kutip ganda. String s = “Indonesia”; Oleh karena string literal merupakan suatu objek, diperkenankan memanggil method-method String secara langsung. // Mencetak panjang string http://digilib.mercubuana.ac.id/ 14 System.out.println(“Indonesia”.length()); Konkatenasi atau penggabungan string merupakan salah satu operasi yang kerap kali dilakukan. Dalam kasus ini, bias menggunakan operator + atau method concat, namun operator + lebih praktis dan sederhana. String str1 = “Indonesia”; String str2 = “Raya”; System.out.println(str1 + str2); System.out.println(str1.concat(str2)); String mendefinisikan method baru isEmpty yang sangat membantu ketika ingin memeriksa apakah string kosong atau tidak. Dalam pemeriksaan ini, jika ingin mengabaikan spasi di awal dan di belakang string (jika ada), gunakan method trim. String s = “ “; If (s.trim().isEmpty()){ return s.trim().length() == 0; } Dan juga bisa memanfaatkan method length. public static boolean isEmpty(String s){ return s.trim().length() == 0; } Pada saat ingin membandingkan kesamaan isi objek, gunakan method equals, bukannya dengan operator ==. Perlu sekali diperhatikan, penggunaan operator == untuk komparasi tipe reference akan berakibat membandingkan reference. http://digilib.mercubuana.ac.id/ 15 String s3 = new String(“Indonesia”); String s4 = new String(“Indonesia”); System.out.println((s3 == s4) ? “sama” : “tidak sama”); // Output: tidak sama System.out.println((s3.equals(s4)) ? “sama” : “tidak sama”); // Output: sama Lain halnya jika menggunakan string literal, kedua komparasi di atas akan mengembalikan nilai sama. String s1 = “Indonesia”; String s2 = “Indonesia”; System.out.println(s1 == s2) ? “sama” : “tidak sama”); // Output: sama System.out.println(s1.equals(s2)) ? “sama” : “tidak sama”); // Output: sama Oleh karena penggunaan string dalam suatu program sangat sering dan penting, maka secara khusus Java mendukung beberapa operasi string dalam sintaks bahasa Java itu sendiri.Sehingga penggunaan string lebih leluasa dan mudah.Harus diingat bahwa kemudahan ini hanya berlaku untuk penggunaan String yang ada pada package java.lang dan tidak berlaku untuk class-class lainnya. Tentu berpikir bagaimana jika salah satu variable yang memegang referensi objek String tersebut melakukan manipulasi terhadap isinya, apa yang akan terjadi? Jawabannya tidak mungkin terjadi karena objek String bersifat immutable. Oleh karena itu, optimasi yang dilakukan Java ini tidak akan mengakibatkan efek http://digilib.mercubuana.ac.id/ 16 samping ke program yang sudah dibuat. Hal ini juga yang menyebabkan kenapa mendapatkan hasil : Kedua referensi sama : true Saat mengeksekusi potongan code tersebut karena memang pada dasarnya membandingkan dua buah referensi objek yang sama(Indrajani dan Martin, 2007). 2.5 Operasi File Input Output Pada saat berbicara mengenai program, tidak akan lepas dari komponen fundamental yang saling terkait, yakni masukan (input), proses, dan keluaran (output). Hal ini mengindikasikan bahwa suatu proses akan melibatkan adanya masukan dan keluaran. Adapun di Java, khususnya dalam konteks paket java.io, input, dan output (I/O) didefinisikan dengan istilah stream. Mengingat perannya sebagai salah satu komponen inti, kiranya penting sekali untuk memahami bagaimana bekerja dengan i/o, termasuk juga mengenai sistem berkas (file) dan direktori (Prasetyo DD, 2007). File atau Berkas komputer atauberkas adalah entitas dari data yang disimpan di dalam sistem berkas yang dapat diakses dan diatur oleh pengguna. File juga dapat didefinisikan sebagai kumpulan informasi yang biasanya disimpan dalam sebuah disk komputer, dimana informasi disimpan dalam bentuk file-file yang dikemudian hari dapat diambil kembali. Sebuah berkas memiliki namayang unik dalam direktori dimana ia berada. Alamat direktori dimana suatu berkas ditempatkan diistilahkan dengan path. File atau berkas diorganisasikan dari sejumlah record. Masing-masing record bisa terdiri dari satu atau beberapa field.Setiap field terdiri dari satu atau beberapa byte(Suprapto, dkk, 2008). Stream adalah representasi abstrak suatu masukan atau keluaran yang merupakan sumber atau tujuan data.Stream dapat divisualisasikan sebagai rangkaian byte yang mengalir ke dalam atau ke luar program.Pada saat melakukan penulisan ke stream, stream tersebut dinamakan stream keluaran (output http://digilib.mercubuana.ac.id/ 17 stream).Sementara itu, ketika melakukan operasi pembacaan, stream disebut sebagai stream masukan (input stream) (Prasetyo DD, 2007). Menurut Muhammad danHayuhardhika (2014), Yang dimaksud dengan stream adalah aliran data. Jika dianalogikan, stream digambarkan sebagai sungai yang mengalirkan air.Seperti sungai yang mengalirkan air, stream mengalirkan byte-byte data. Pemrosesan input dan output di Java pada prinsipnya menggunakan konsep stream ini. Pemrosesan file dalam jumlah besar, yang membutuhkan kinerja yang tinggi masih dibutuhkan berbagai bidang. Misalnya aplikasi backend yang mengelola dokumen di perusahaan, aplikasi pengolahan teks, aplikasi pemroses XML, HTML, aplikasi simulasi-simulasi dan sebagainya. Penguasaan stream dan file akan membantu untuk memecahkan berbagai masalah. Terdapat 2 jenis sub class stream yang dapat digunakan untuk melakukan pemrosesan file, yaitu InputStream dan OutputStream. InputStream merupakan subclass dari stream yang memiliki fungsi-fungsi untuk membaca byte-byte dari sebuah file untuk kemudian disimpan dalam aplikasi untuk diolah. Aliran data pada class InputStream ini adalah dari data source (File) menuju Aplikasi, seperti yang ditunjukkan pada gambar berikut. Class ini biasanya digunakan untuk pembacaan isi sebuah file target dalam bentuk byte-byte. Gambar 2.6.1Input Stream http://digilib.mercubuana.ac.id/ 18 Sebaliknya, OutputStream merupakan subclass yang menyimpan fungsifungsi untuk mengalirkan aliran data dari aplikasi menuju data source yang berupa file dalam bentuk byte-byte seperti yang digambarkan pada gambar dibawah. Class ini biasanya digunakan untuk menuliskan data pada source file dari aplikasi. Gambar 2.6.2Output Stream 2.6 Model Waterfall Model waterfall adalah model klasik yang bersifat sistematis, berurutan dalam membangun software.Menurut Maheshwari dan Jain (2012), Model Waterfall adalah konvensional, linier, softwarewaterfall model siklus hidup berurutan atau tradisional.Ini adalah pendekatan pembangunan berurutan, dimana pembangunan dilihat sepertiterus mengalir ke bawah melalui tahapan analisis kebutuhan, desain, implementasi, pengujian (validasi), pemeliharaan.Berikut ini gambaran dari waterfall model. http://digilib.mercubuana.ac.id/ integrasi, dan 19 Fase-fase model waterfall menurut referensi Sommerville (2011) : Gambar 2.7Waterfall Sommerville 1. Requirements Analysis and Definition Mengumpulkan kebutuhan secara lengkap kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh software yang akan dibangun. Hal ini sangat penting, mengingat software harus dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database, dan sebagainya. Tahap ini sering disebut dengan Project Definition. 2. System and Software Design Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untukmengetahui sifat dari program yang akan dibuat, maka para software engineerharus mengerti tentang domain informasi dari software, misalnya fungsi yangdibutuhkan, user interface, dan sebagainya. Dari dua aktivitas tersebut (pencarian kebutuhansistem dan software) harus didokumentasikan dan ditunjukkan kepada user.Proses software design untuk mengubah kebutuhan-kebutuhan di atas menjadi representasi ke dalam bentuk “blueprint”software sebelum coding dimulai. http://digilib.mercubuana.ac.id/ Desain harus dapat 20 mengimplementasikan kebutuhan yang telah disebutkan padatahap sebelumnya. Seperti dua aktivitas sebelumnya, maka proses ini juga harusdidokumentasikan sebagai konfigurasi dari software. 3. Implementation and Unit Testing Desain program diterjemahkan ke dalam kode-kode dengan menggunakanbahasa pemrograman yang sudah ditentukan.Program yang dibangun langsungdiuji baik secara unit. 4. Integration and System Testing Untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer, maka desaintadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin,yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap inimerupakan implementasi dari tahap design yang secara teknis nantinyadikerjakan oleh programmer. Penyatuan unit-unit program kemudian diujisecara keseluruhan (system testing). 5. Operation and Maintenance Sesuatu yang dibuat haruslah diujicobakan.Demikian juga dengan software.Semua fungsi-fungsi software harus diujicobakan, agar software bebas darierror, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalahpengembangan, karena software yang dibuat tidak selamanya hanya seperti itu.Ketika dijalankan mungkin saja masih ada error kecil yang tidak ditemukansebelumnya, atau ada penambahan fitur-fitur yang belum ada pada softwaretersebut.Pengembangan diperlukan ketika adanya perubahan dari eksternalperusahaan seperti ketika ada pergantian sistem operasi, atau perangkat lainnya. Kelebihan dari model ini adalah selain karena pengaplikasian menggunakanmodel ini mudah, kelebihan dari model ini adalah ketika semua kebutuhan sistem dapat didefinisikan secara utuh, eksplisit, dan benar di awal proyek, maka Software Engineering (SE) dapat berjalan dengan baik dan tanpa http://digilib.mercubuana.ac.id/ 21 masalah. Meskipun seringkali kebutuhan sistem tidak dapat didefinisikan seeksplisit yang diinginkan, tetapi paling tidak, problem pada kebutuhan sistem di awal proyek lebih ekonomis dalam hal uang (lebih murah), usaha, dan waktu yang terbuang lebih sedikit jika dibandingkan problem yang muncul pada tahap-tahap selanjutnya. Kekurangan yang utama dari model ini adalah kesulitan dalam mengakomodasi perubahan setelah proses dijalani. Fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya. Masalah dengan waterfall : 1. Perubahan sulit dilakukan karena sifatnya yang kaku. 2. Karena sifat kakunya, model ini cocok ketika kebutuhan dikumpulkan secara lengkap sehingga perubahan bisa ditekan sekecil mungkin. Tapi padakenyataannya jarang sekali konsumen/pengguna yang bisa memberikankebutuhan secara lengkap, perubahan kebutuhan adalah sesuatu yang wajarterjadi. 3. Waterfall pada umumnya digunakan untuk rekayasa sistem yang besar yaitudengan proyek yang dikerjakan di beberapa tempat berbeda, dan dibagi menjadibeberapa bagian sub-proyek. Menurut Maheshwari dan Jain (2012), IterativeWaterfall Model, Prinsip dasar, Masalah dengan Waterfall Model menciptakan permintaan untuk metode baru sistem pengembangan yang dapat memberikan hasil yang lebih cepat, membutuhkan lebih sedikit muka informasi dan menawarkan fleksibilitas yang lebih besar.Model iterative, proyek ini dibagi menjadi bagian-bagian kecil. Hal ini memungkinkan tim pengembangan untuk menunjukkan hasil sebelumnya di proses dan mendapatkan umpan balik yang berharga dari para pengguna sistem.Setiap iterasi sebenarnya adalah sebuah proses Waterfall mini dengan umpan balik dari satu fase menyediakan informasi penting untuk desain tahap berikutnya. http://digilib.mercubuana.ac.id/ 22 Keuntungan: Ini adalah model yang jauh lebih baik dari proses perangkat lunak. Hal ini memungkinkan umpan balik untuk tahap tindakan. Hal ini dapat digunakan untuk proyek dimana persyaratan tidak dipahami dengan baik. Kekurangan: Hal ini tidak mudah untuk mengelola model ini. Tidak ada tonggak yang jelas dalam proses pembangunan. Tidak ada tahap benar-benar selesai. http://digilib.mercubuana.ac.id/