BAB 2 LANDASAN TEORI 2.1 HAVERSINE FORMULA Haversine formula adalah persamaan penting pada navigasi, memberikan jarak lingkaran besar antara dua titik pada permukaan bola (bumi) berdasarkan bujur dan lintang. Haversine digunakan untuk menghitung jarak antara titik di permukaan bumi menggunakan garis lintang (longitude) dan garis bujur (lattitude) sebagai variabel inputan. Dengan mengasumsikan bahwa bumi berbentuk bulat sempurna dengan jarijari R 6.367, 45 km, dan lokasi dari 2 titik di koordinant bola (lintang dan bujur) masing-masing adalah lon1, lat1, dan lon2, lat2, maka rumus Haversine dapat ditulis dengan persamaan sebagai berikut: [1] x = (lon2-lon1) * cos ((lat1+lat2)/2); y = (lat2-lat1); d = sqrt(x*x+y*y)*R Keterangan : x = Longitude (Lintang) y = Latitude (Bujur) d = Jarak R = Radius Bumi = 6371 km 1 derajat = 0.0174532925 radian Contoh perhitungan Haversine Fromula Lokasi 1: lon1= 119.800801, lat1= -0.790175 Lokasi 2: lon2= 119.8428 , lat2= -0.8989 lat1 = -0.790175 * 0.0174532925 radian = -0.013791155 radian lon1 = 119.800801 * 0.0174532925 radian = 2.090918422 radian lat2 = -0.8989 * 0.0174532925 radian = -0.01569 radian lon2 = 119.8428 * 0.0174532925 radian= 2.091651 radian x = (lon2-lon1) * cos ((lat1+lat2)/2) = (2.091651-2.090918422) * cos ((-0.013791155 + -0.01569)/2) = 0.0007329412 y = (lat2-lat1) 2- 1 http://digilib.mercubuana.ac.id/ = (-0.01569- (-0.013791155)) = -0.001897609 d = sqrt (x*x + y*y) * R = sqrt((0.0007329412*0.0007329412)+( -0.001897609*0.001897609))*6371 = sqrt (0.0000041381) * 6371 = 12.96012927 km [1] 2.2 WEBSITE Website adalah keseluruhan halaman-halaman web yang terdapat dalam sebuah domain yang mengandung informasi. Sebuah website biasanya dibangun atas banyak halaman web yang saling berhubungan. Hubungan antara satu halaman web dengan halaman web lainnya disebut dengan hyperlink, sedangkan teks yang dijadikan media penghubung disebut hypertext. Domain adalah nama unik yang dimiliki oleh sebuah institusi sehingga bisa diakses melalui internet, misalnya lintau.com, yahoo.com, google.com, ephi.web.id dan lain-lain. Untuk mendapat sebuah domain kita harus melakukan register pada registar-registar yang ditentukan. Istilah lain yang sering ditemui sehubungan dengan website adalah homepage. Homepage adalah halaman awal sebuah domain. Misalnya, anda membuka website www.lintau.com, halaman pertama yang muncul disebut dengan homepage, jika anda meng-klik menu-menu yang ada dan meloncat ke lokasi yang lainnya, disebut web page, sedangkan keseluruhan isi/conten domain disebut website.[2] 2.2.1 JENIS-JENIS WEBSITE Seiringan dengan perkembangan teknologi informasi yang begitu cepat, website juga mengalami perkembangan yang sangat ber-arti. Dalam pengelompokan jenis web, lebih diarahkan bedasar-kan pada fungsi, sifat dan bahasa pemrograman yang digunakan Jenis-jenis web berdasarkan sifatnya adalah; 2- 2 http://digilib.mercubuana.ac.id/ Website dinamis, merupakan sebuah website yang menyedi-kan content atau isi yang selalu berubah-ubah setiap saat. Misalnya website berita, seperti, www.kompas.com, www.detik.com, www.polinpdg.ac.id, dan lain-lain. Website statis, merupakan website yang contentnya sangat jarang diubah. Misalnya, web profile organisasi, dan lain-lain. Berdasarkan tujuannya, website dibagi atas; Personal web, website yang berisi informasi pribadi seseorang, Corporate web, website yang dimiliki oleh sebuah perusahaan, Portal web, website yang mempunyai banyak layanan, mulai dari layanan berita, email, dan jasa-jasa lainnya. Forum web, sebuah web yang bertujuan sebagai media diskusi. Di samping itu juga ada website e-Government, e-Banking, e-Payment, e-Procurement, dan sebagainya. Ditinjau dari segi bahasa pemrograman yang digunakan, website terbagi atas Server Side, merupakan website yang menggunakan bahasa pemrograman yang tergantung kepada tersedianya server. Seperti PHP, ASP dan lain sebagainya. Jika tidak ada server, website yang dibangun menggunakan bahasa pemrograman di atas tidak dapat berfungsi sebagaimana mestinya. Client Side, adalah website yangtidak membutuhkan server dalam menjalankannya, cukup diakses melalui browser saja. Misalnya, html.[2] 2.2.2 PERALATAN DALAM PERCANCANGAN WEBSITE Dalam merancang dan membangun sebuah website yang baik diperlukan beberapa skill. Oleh karena itu biasanya dalam pengerjaan sebuah website dibutuhkan tim, agar tujuan pembuatan web yang baik tercapai. Berikut ini beberapa skill yang sebaiknya dimiliki seorang webmaster. Skill dalam bidang bahasa pemrograman. Misalnya, bahasa pemrograman PHP, ASP, JSP, Javascript, HTML dan lain-lain. Skill dalam bidang desain. Misalnya menguasai software Photoshop, Illustrator, Paintshop Pro, dan lain-lain. 2- 3 http://digilib.mercubuana.ac.id/ Skill dalam bidang animasi. Misalnya, menguasai Flash, Swish, Image Eeady, Swift, Gif Animator, dan lain-lain.[2] 2.3 WEB SERVER Web Server atau Server web merupakan sebuah perangkat lunak server yang berfungsi menerima permintaan dari klien yang dikenal dengan browser web dan mengirimkan kembali hasilnya dalam bentuk halaman-halaman web melalui protokol HTTP atau HTTPS. Web server bertugas mengelola halaman-halaman web dan dokumen-dokumen lainnya. Jadi, pada dasarnya web server hanyalah sebuah perangkat lunak yang bisa saja berada di komputer apapun dengan spesifikasi apapun. PC biasapun dapat berfungsi sebagai web server. Karena web server hanyalah suatu perangkat lunak, saat ini banyak pilihan yang dapat kita pilih. Mulai dari yang gratis (free) sampai yang berbayar, mulai dari yang kompleks sampai yang bisa berjalan di CD. Tabel 1.1 di bawah ini menunjukan daftar beberapa web server yang tersedia saat ini beserta spesifikasi singkatnya. Tabel 2- 1 Daftar Web Server NO NAMA PENGEMBANG OSS LISENSI VERSI TANGGAL RILIS 1 AOLserver NaviSoft 2 Apache Apache 3 HTTP Software Server Foundation Apache Tomcat Apache Software Yes Mozilla 4.5.1 2009-02-02 Yes Apache 2.4.2 2012-04-17 Yes Apache 7.0.27 2012-04-05 Foundation 4 Boa Paul Philips Yes GPL 0.94.13 2002-07-30 5 Caudium The Caudium Yes GPL 1.4.18 2012-02-24 Lopez Yes GPL 1.2.101 2011-10-18 Group 6 7 Cherokee HTTP Alvaro Server Ortega Hiawatha HTTP Hugo Leisink Yes GPL 8.3.2 2012-05-29 Rejetto Yes GPL 2.2f 2009-02-17 IBM No Non-free 7.0 2009-03-15 Server 8 HFS 9 IBM Server HTTP proprietary 2- 4 http://digilib.mercubuana.ac.id/ NO NAMA PENGEMBANG OSS LISENSI VERSI TANGGAL RILIS 10 Internet Microsoft No Information Non-free 7.5 2009-10-22 proprietary Service (IIS) 11 Jetty Eclipse Foundation Yes Apache 7.3.1 2011-03-04 12 KLone KoanLogic Srl Yes BSD 3.1.0 2012-09-05 13 Lighttpd Jan Yes BSD 1.4.30 2011-12-18 4.1.8 2011-11-18 Kneschke (Incremental) 14 Variant LiteSpeed Web LiteSpeed No Non-free Server Technologies 15 NaviServer Various Yes Mozilla 1.1 4.99.3 2009-03-11 16 NCSA HTTPd Robert McCool Yes Free non- 1.5.2a 1996 1.2.0 2012-04-23 0.8.9 2012-07-11 6.1.5 2012-03-16 Non-free 11g 2009 proprietary releas 1 proprietary commercia l use 17 Nginx NGINX, Inc. Yes BSD Variant 18 Nodejs Ryan Dahl Yes MIT 19 OpenLink OpenLink Software Yes GPL Virtuoso and commercia l versions 20 Oracle HTTP Oracle Corporation No Server 21 Oracle iPlanet Oracle Corporation Yes BSD 7.0u8 2010-01-20 Oracle Oracle Corporation No Non-free 11gR1 2011-05-16 WebLogic (formerly proprietary (10.3.5) Server Systems) Web Server 22 23 Resin Open BEA Caucho Technology Yes GPL 4.25 2012-01-15 Caucho Technology No Non-free Same Same proprietary as OSS OSS version Source 24 Resin Professional as version 25 Thttpd Jef Poskanzer for Yes ACME Laboratories 26 Tornado FriendFeed, BSD 2.25b 2003-12-29 1.2.1 2011-03-03 variant Yes Apache Yes GPL Facebook 27 TUX web server Ingo Molnar 2- 5 http://digilib.mercubuana.ac.id/ NO NAMA PENGEMBANG OSS LISENSI VERSI TANGGAL RILIS 28 WEBrick Ruby Community Yes Ruby 1.9.3 2012-10-12 29 Xitami iMatix Corporation Yes GPL 5.0a0 2009-02-19 30 Yaws Claes Wikstrom Yes BSD 1.89 2010-09-25 4.3r5 2010-01-13 variant 31 Zeus Web Zeus Technology No Server 32 Zope Non-free proprietary Zope Corporation Yes Zope Dari keseluruhan perangkat webserver yang tersedia, salah satu yang paling populer dan paling banyak digunakan saat ini adalah Apache Web Server. Apache termasuk generasi awal yang mengembangkan perangkat server web berlisensi terbuka (open source) dan didistribusikan secara gratis.[3] 2.4 PERAMBAN WEB (WEB BROWSER) Peramban web atau lebih dikenal dengan web browser merupakan perangkat lunak yang berfungsi untuk menerima dan menyajikan sumber informasi di internet. Mudahnya, browser digunakan untuk menampilkan halaman-halaman web. Seluruh komponen web termasuk teks, gambar, dan komponen lain yang dibangun dengan teknologi client-side scripting dapat ditampilkan di web browser.[3] 2.5 HTML, CSS DAN JAVASCRIPT HTML merupakan singkatan dari Hypertext Markup Language. HTML dikembangkan pertama kali oleh Tim Berners-Lee bersamaan dengan protokol HTTP (Hypertext Transfer Protocol) pada tahun 1989. Tujuan utama pengembangan HTML adalah untuk menghubungkan satu halaman web dengan halaman web lainnya. Tentunya pada awal perkembangannya, halaman web hanya berupa teks, tidak seperti sekarang. Pada dasarnya, setiap halaman web ditulis dalam bentuk HTML. HTML merupakan bahasa pemrograman web yang memberitahukan peramban web (web browser) bagaimana menyusun dan menyajikan konten di halaman web. Dengan kata lain, HTML adalah pondasi web. HTML disusun dengan bahasa yang 2- 6 http://digilib.mercubuana.ac.id/ sederhana, sehingga sangat mudah diimplementasikan. Saat ini, HTML dapat menampilkan obyek-obyek seperti teks, label, tautan, gambar, audio dan video. HTML sendiri berkembang dari waktu ke waktu. Untuk menetapkan standar perintah HTML dan mengembangkannya, didirikan sebuah konsorsium W3C (World Wide Web Consortium) yang diprakarsai oleh Tim Berners-Lee. Pada perkembangannya, W3C tidak hanya menetapkan standar HTML, namun beberapa teknologi lainnya seperti XML, XHTML dan SOAP. Beberapa standar versi HTML yang pernah dikeluarkan oleh W3C antara lain HTML 2.0 pada tahun 1995, HTML 3.2 pada Januari 1997, HTML 4.0 pada Desember 1997 dan direvisi menjadi HTML 4.01 pada bulan Desember 1999. Pada bulan Mei 2000, W3C mengumumkan standar baru HTML dengan nama XHTML yang sebenarnya berupa standar HTML 4.01 dengan beberapa penyesuaian. Dan saat ini, standar HTML yang terakhir dirilis oleh W3C adalah HTML5. Banyak fitur (perintah) baru yang dikenalkan pada HTML5 seperti penanganan audio, video dan penyimpanan lokal. HTML merupakan bahasa dasar web yang berfungsi untuk menampilkan berbagai komponen web. Sementara itu, untuk mempercantik tampilan web, dikembangkanlah CSS atau Cascading Style Sheet. CSS pertama kali disusulkan oleh Hakom Wium Lie pada tahun 1994 dan selanjutnya distandarisasi oleh W3C. CSS memberikan cara yang mudah dan efisien bagi pemrogram untuk menentukan tata letak halaman web dan mempercantik halaman dengan elemen desain seperti warna, sudut bulat, gradien, dan animasi. Seperti halnya HTML, versi CSS juga berkembang. Versi pertama yang ditetapkan oleh W3C adalah CSS 1 (dibaca CSS level 1) pada bulan Desember 1996. Selanjutnya berkembang menjadi CSS 2 (ditetapkan bulan Mei 1998), CSS 2.1 (tahun 2011) dan CSS 3 yang diusulkan pada tahun 2012. Versi yang sedang populer saat ini adalah CSS 3 yang memiliki banyak kelebihan dibanding versi sebelumnya seperti penambahan fitur media-queries dan penanganan font web. Selain HTML dan CSS, sebuah aplikasi berbasis web tidak dapat dilepaskan dari teknologi Javascript. Pertama kali Javascript dikembangankan oleh Netscape dengan nama awal LiveScript. Fungsi utama dari javascript adalah untuk menambah fungsionalitas dan kenyamanan halaman web. Javascript lebih fokus 2- 7 http://digilib.mercubuana.ac.id/ pada proses pengolahan data di sisi client serta menyajikan komponen web yang lebih interaktif. Javascript makin populer sejak kemunculan konsep AJAX (Asynchronous Javascript and XML) yang memungkinkan interaksi antara client dan server lebih elegan dan fleksibel. Secara sederhana yang menggambarkan bagaimana peran HTML, CSS dan Javascript dalam pembuatan web dapat dianalogikan sebagaimana pembuatan baju kemeja. Bahan dasar dari pembuatan baju adalah bahan atau kain. Baju tidak akan bisa dibuat tanpa keberadaan kain. Demikian juga halaman web, tidak akan terbentuk tanpa keberadaan perintah HTML. Selanjutnya kain diolah sedemikian rupa menjadi sebuah baju kemeja. Untuk melengkapi baju kemeja, biasanya ditambahkan satu atau beberapa saku yang berfungsi utnuk menaruh sesuatu. Fungsionalitas baju bertambah tidak sekedar melindungi tubuh, namun dapat untuk menaruh dompet, handphone, catatan, dan sebagainya. Kantong saku inilah Javascript dalam pembuatan web. Bagaimana dengan CSS? CSS pada proses pembuatan baju kemeja adalah tata letak, pengaturan warna serta hiasan-hiasan tertentu seperti renda, bros dan asesoris lainnya.[3] 2.6 PHP Apa itu PHP? PHP merupakan salah satu bahasa pemrograman berbasis web yang ditulis oleh dan untuk pengembang web. PHP pertama kali dikembangkan oleh Rasmus Lerdorf, seorang pengembang software dan anggota tim Apache, dan dirilis pada akhir tahun 1994. PHP dikembangkan dengan tujuan awal hanya untuk mencatat pengunjung pada website pribadi Rasmus Lerdorf. Pada rilis keduanya, ditambahkan Form Intepreter, sebuah tools untuk melakukan penerjemahan perintah SQL. Rilis kedua disebut dengan PHP/FI. Sejak itu, PHP mulai diterima sebagai sebuah bahasa pemrograman baru yang sangat diminati. Terbukti pada pertengahan tahun 1997, tercatat sekitar 50.000 situs di seluruh dunia telah menggunakan PHP. Dengan bertambah banyaknya pengguna PHP di seluruh dunia, maka PHP tidak memungkinkan lagi untuk dikelola oleh satu orang saja. Sehingga dibentuk sebuah tim pengembagan yang mengorganisir kontributor dari seluruh dunia dengan model pengembangan proyek open source “benevolent junta”. Tim tersebut 2- 8 http://digilib.mercubuana.ac.id/ dipimpin oleh dua orang programmer, Zeev Suraski dan Andi Gutmans. Keduanya lalu mendirikan sebuah perusahaan PHP dengan nama Zend (akronim dari nama Zeev Suraski dan Andi Gutmans). Selanjutnya Zend merilis versi PHP3 dan PHP4. Seiring dengan waktu, PHP terus dikembangkan baik dari sisi fitur, keamanan maupun performanya. Versi terakhir PHP adalah PHP 5.6.14 (Oktober 2015). Sejak PHP5, terjadi penambahan dan peningkatan fitur yang cukup signifikan. PHP5 dibangun dengan konsep berorientasi objek (OO) secara penuh seperti halnya bahasa pemrograman seperti Java dan C++. Versi sebelumnya memmang PHP belum sepenuhnya mendukung konsep OO. Mulai PHP5, seluruh fungsi bawaan PHP ditulis ulang menggunakan konsep OO, walaupun pada masa transisi PHP masih mendukung gaya klasik yaitu prosedural. Dan sedikit demi sedikit gaya penulisan prosedural akan dihilangkan dari PHP.[3] 2.7 XAMPP XAMPP adalah sebuah software yang berfungsi untuk menjalankan website berbasis PHP dan menggunakan pengolah data MySQL di komputer lokal. XAMPP berperan sebagai server web pada komputer anda. XAMPP juga dapat disebut CPanel server virtual, yang dapat membantu anda melakukan preview sehingga dpat memodifikasi website tanpa harus online atau terakses dengan internet.[4] 2.8 UML (UNIFIED MODELING LANGUAGE) UML (Unified Modeling Language) adalah ‘bahasa’ pemodelan sistem untuk sistem atau perangkat lunak yang berparadigma ‘berorientasi objek’. Pemodelan (modeling) sesungguhnya digunakan untuk penyederhanaan permasalahanpermasalahan yang kompleks sedemikian rupa sehingga lebih mudah dipelajari dan dipahami. Sebagai contoh, alih-alih membawa planet bumi ke meja kita, kita mungkin akan membawa peta-peta tentang bagian bumi tertentu ke meja kita untuk kita pelajari lebih jauh. Dalam hal ini, sasaran model sesungguhnya adalah abstraksi segala sesuatu yang ada di planet bumi menjadi gambaran-gambaran yang lebih mudah dipelajari dan dipahami. Adapun tujuan pemodelan (dalam kerangka pengembangan sistem/perangkat lunak aplikasi) adalah serupa dengan yang kita 2- 9 http://digilib.mercubuana.ac.id/ singgung diatas, yaitu sebagai sarana analisis, pemahaman, visualisasi, dan komunikasi antara anggota tim pengembang (saat seorang analis/perancang perangkat lunak bekerja dalam tim yang beranggotakan beberapa/banyak anggota), serta sebagai sarana dokumentasi (yang bermanfaat untuk menelaah perilaku perangkat lunak secara seksama serta bermanfaat untuk melakukan pengujian terhadap perangkat lunak yang telah selesai dikembangkan).[5] 2.9 BLACK BOX TESTING Terfokus pada apakah unit program memenuhi kebutuhan (requirement) yang disebutkan dalam spesifikasi. Pada black box testing, cara pengujian hanya dilakukan dengan menjalankan atau mengeksekusi unit atau modul, kemudian diamati apakah hasil dari unit itu sesuai dengan proses bisnis yang diinginkan. [6] 2.10 MAKANAN Berdasarkan definisi dari WHO, makanan adalah semua substansi yang dibutuhkan oleh tubuh tidak termasuk air, obat-obatan, dan substansi-substansi lain yang digunakan untuk pengobatan. Air tidak termasuk dalam makanan karena merupakan elemen yang vital bagi kehidupan manusia. Terdapat tiga fungsi makanan. Pertama, makanan sebagai sumber energi karena panas dapat dihasilkan dari makanan seperti juga energi. Kedua, makanan sebagai zat pembangun karena makanan berguna untuk membangun jaringan tubuh yang baru, memelihara, dan memperbaiki jaringan tubuh yang sudah tua. Fungsi ketiga, makanan sebagai zat pengatur karena makanan turut serta mengatur proses alami, kimia, dan proses faal dalam tubuh. Makanan merupakan salah satu bagian yang penting untuk kesehatan manusia.[7] 2.11 MODEL PROSES PERANGKAT LUNAK Waterfall (air terjun), model pertama yang diterbitkan untuk proses pengembangan perangkat lunak diambil dari proses rekayasa lain (Royce, 1970). Model ini diilustrasikan pada gambar 2- 1. Berkat penurunan dari satu fase ke fase yang lainnya, model ini dikenal sebagai ‘model air terjun’ atau siklus hidup 2- 10 http://digilib.mercubuana.ac.id/ perangkat lunak. Tahap-tahap utama dari model ini memetakan kegiatan-kegiatan pengembagan dasar yaitu: 1. Analisis dan definisi persyaratan. Pelayanan, batasan, dan tujuan sistem ditentukan melalui konsultasi dengan user sistem. Persyaratan ini kemudian didefinisikan secara rinci dan berfungsi sebagai spesifikasi sistem. 2. Perancangan sistem dan perangkat lunak. Proses perancangan sistem membagi persyaratan dalam sistem perangkat keras atau perangkat lunak. Kegiatan ini menentukan arsitektur sistem secara keseluruhan. Perancangan perangkat lunak melibatkan identifikasi dan deskripsi abstraksi sistem perangkat lunak yang mendasar dan hubunganhubungannya. 3. Implementasi dan pengujuan unit. Pada tahap ini, perancangan perangkat lunak direalisasikan sebagai serangkaian program atau unit program. Pengujuan unit melibatkan verifikasi bahwa setiap unit telah memenuhi spesifikasinya. 4. Integrasi dan pengujian sistem. Unit program atau program individual diintegrasikan dan diuji sebagai sistem yang lengkap untuk mejamin bahwa persyaratan sistem telah terpenuhi. Setelah pengujian sistem, perangkat lunak dikirim kepada pelanggan. 5. Operasi dan pemeliharaan. Biasanya (walaupun tidak seharusnya), ini merupakan fase siklus hidup yang paling lama. Sistem diinstal dan dipakai. Pemeliharaan mencakup koreksi dari berbagai error yang tidak ditemukan pada tahap-tahap terdahulu, perbaikan atas implementasi unit sistem dan pengembangan pelayanan sistem, sementara persyaratanpersyaratan baru ditambahkan. 2- 11 http://digilib.mercubuana.ac.id/ Gambar 2- 1 Siklus hidup perangkat lunak Pada prinsipnya hasil dari setiap fase merupakan satu atau lebih dokumen yang disetujui (‘ditanda-tangani’). Fase berikutnya tidak boleh dimulai sebelum fase sebelumnya selesai. Pada prakteknya, tahap-tahap ini bertumpang tindih dan memberi informasi satu sama lain. Pada waktu perancangan, masalah dengan persyaratan diidentifikasi, pada saat pengkodean, ditemukan masalah perancangan dan seterusnya. Proses perangkat lunak bukanlah model linear sederhana, tetapi melibatkan serangkaian iterasi kegiatan pengembagan. Sebagai akibat dari biaya pembuatan dan persetujuan dokumen, iterasi menjadi mahal dan melibatkan pengerjaan ulang yang signifikan. Dengan demikian, setelah sejumlah kecil iterasi, adalah normal untuk membekukan bagian dari pengembangan, seperti spesifikasi, dan melanjutkan dengan tahap pengembangan berikutnya. Masalah-masalah dikesampingkan, diabaikan atau dihindari, untuk pemecahan kemudian. Pembekuan persyaratan dini ini bisa berarti bahwa sistem tidak dapat melakukan apa yang diinginkan user. Akibat lainnya bisa juga berupa sistem yang memiliki struktur yang buruk jika masalah perancangan dihindari dengan trik implementasi. Pada saat fase siklus hidup akhir (operasi dan pemeliharaan) perangkat lunak digunakan, error dan penghapusan atas persyaratan perangkat lunak yang asli akan ditemukan. Kesalahan program dan perancangan muncul dan kebutuhan untuk 2- 12 http://digilib.mercubuana.ac.id/ fungsionalitas yang baru akan diidentifikasi. Dengan demikian, sistem harus berubah agar tetap berguna. Melakukan perubahan ini (pemeliharaan perangkat lunak) dapat melibatkan pengulangan beberapa atau seluruh tahap proses sebelumnya. Masalah dengan model air terjun adalah terjadinya pembagian proyek menjadi tahap-tahap yang tidak fleksibel. Komitmen harus dilakukan pada tahap awal proses, dan akan sulit bagi perekayasa untuk menanggapi perubahan persyaratan pelanggan. Dengan demikian, model air terjun harus digunakan hanya ketika persyaratan dipahami dengan baik. Bagaimanapun juga, model air terjun merefleksikan praktek rekayasa. Secara konsekuen, proses perangkat lunak yang berdasarkan pada pendekatan ini masih digunakan untuk pengembangan perangkat lunak, terutama jika merupakan bagian dari sistem proyek rekayasa yang lebih besar.[8] 2- 13 http://digilib.mercubuana.ac.id/