Selasa, 03 April 2018

(4) Software Testing


Software testing adalah aktivitas-aktivitas yang bertujuan untuk mengevaluasi atribut-atribut atau kemampuan sebuah program atau sistem dan penentuan apakah sesuai dengan hasil yang diharapkan. Testing adalah proses pemeriksaan program dengan tujuan tertentu dalam menemukan kesalahan sebelum diserahkan ke pengguna.
Verification: Apakah kita membangun produk dengan benar, Software seharusnya sesuai dengan spesifikasinya. Gunakan proses software yang bagus. Validation: “Apakah kita membangun produk yang benar, Software seharusnya melakukan apa yang pengguna benar-benar butuhkan.

Tahapan Testing
Terdapat cukup banyak pendekatan yang dilakukan untuk melakukan testing. Salah satu definisi testing adalah “sebuah proses yang melakukan pertanyaan terhadap sebuah produk untuk dinilai”, di mana “pertanyaan” merupakan segala sesuatu yang diberikan kepada produk sebagai pengujian.
Beberapa tahapan testing yang umum dilalui oleh aplikasi adalah sebagai berikut:
1.Unit/ComponentTesting.
Terbagi atas testing terhadap unit dan component. Unit testing merupakan proses testing, di mana Anda melakukan testing pada bagian basic dari kode program. Contohnya adalah memeriksa kode program pada event, procedure, dan function. Unit Testing meyakinkan bahwa masing-masing unit tersebut berjalan sebagaimana mestinya.Pada Unit Testing, Anda memeriksa bagian kode program secara terpisah dari bagian yang lain. Anda dapat langsung melakukan Unit Testing setiap kali sebuah kode unit (event, procedure, function) selesai dibuat. Anda dapat memeriksa kode unit dengan menjalankannya baris per baris untuk memastikan bahwa proses yang dilakukan berjalan sebagaimana yangAndainginkan.
2.IntegrationTesting.
Setelah Anda melakukan Unit/Component Testing, langkah berikutnya adalah memeriksa bagaimana unit-unit tersebut bekerja sebagai suatu kombinasi, bukan lagi sebagai suatu unit yang individual. Sebagai contoh, Anda memiliki sebuah proses yang dikerjakan oleh dua function, di mana satu function menggunakan hasil output dari function yang lainnya. Kedua function ini telah berjalan dengan baik secara individu pada Unit Testing. Pada tahap Integration Testing, Anda memeriksa hasil dari interaksi kedua function tersebut, apakah bekerja sesuai dengan hasil yang diharapkan. Anda juga harus memastikan bahwa seluruh kondisi yang mungkin terjadi dari hasil interaksi antarunit tersebut menghasilkanoutputyangdiharapkan.
3.SystemTesting.
Mencakup testing aplikasi yang telah selesai didevelop. Karena itu, aplikasi harus terlihat dan berfungsi sebagaimana mestinya terhadap end-user atau pengguna akhir. Untuk itu, testing dilakukan dengan menggunakan data yang menggambarkan data yang digunakan oleh pengguna sesungguhnya terhadap aplikasi. Jika aplikasi Anda di-develop untuk lingkungan yang besar,
Anda dapat melakukan testing pada dua komputer yang berbeda. Komputer yang Anda gunakan sebagai komputer testing harus terlebih dahulu dikonfigurasi hanya dengan:
a. Operating system yang dibutuhkan.
b. Driver yang diperlukan oleh aplikasi.
c. Aplikasi yang dites.
Dengan menggunakan konfi gurasi yang paling minimal dan sederhana, maka dapat membantu Anda untuk memastikan bahwa permasalahan yang timbul selama testing berlangsung adalah merupakan kesalahan aplikasi, dan bukan kesalahan yang berasal dari aplikasi atau software lain.
4.AcceptanceTesting.
Seperti Integration Testing, Acceptance Testing juga meliputi testing keseluruhan aplikasi. Perbedaannya terletak pada siapa yang melakukan testing. Pada tahap ini, end-user yang terpilih melakukan testing terhadap fungsi-fungsi aplikasi dan melaporkan permasalahan yang ditemukan. Testing yang dilakukan merupakan simulasi penggunaan nyata dari aplikasi pada lingkungan yang sebenarnya. Proses ini merupakan salah satu tahap final sebelum pengguna menyetujui dan menerima penerapan sistem aplikasi yang baru. Karena itu pada tahap ini sudah tidak difokuskan untuk mengangkat permasalahan kecil seperti kesalahan pengetikan, ataupun kosmetik aplikasi. Hal-hal minor seperti di atas sudah seharusnya ditangani selama Unit/Component Testing dan Integration Testing.
5.RegressionTesting.
Merupakan bagian penting dari masing-masing tahap proses testing. Regression Testing mencakup pengujian ulang terhadap unit, component, proses, atau keseluruhan aplikasi setelah perbaikan suatu kesalahan dilakukan.Regression Testing memastikan permasalahan yang terjadi telah ditanggulangi, dan tidak terdapat permasalahan baru yang timbul sebagai efek perbaikan tersebut. Selain itu, tahap ini tidak hanya berguna untuk melakukan pengujian aplikasi, tetapi dapat juga digunakan untuk melakukan pemantauan kualitas dari output yang dihasilkan. Sebagai contoh, Regression Testing memantau ukuran file, waktu yang dibutuhkan untuk melakukan suatu tes, waktu yangdibutuhkanuntukmelakukankompilasi,danlainsebagainya.

whitebox-testing
  • White Box

Pengertian White Box Testing
White box testing adalah pengujian yang didasarkan pada pengecekan terhadap detail perancangan, menggunakan struktur kontrol dari desain program secara procedural untuk membagi pengujian ke dalam beberapa kasus pengujian. Secara sekilas dapat diambil kesimpulan white box testing merupakan petunjuk untuk mendapatkan program yang benar secara 100%.
Pengujian white box:
Untuk mengetahui cara kerja suatu perangkat lunak secara internal.
Untuk menjamin operasi-operasi internal sesuai dengan spesifikasi yang telah ditetapkan dengan menggunakan struktur kendali dari prosedur yang dirancang.
Pelaksanaan pengujian white box:
Menjamim seluruh independent path dieksekusi paling sedikit satu kali. Independent path adalah jalur dalam program yang menunjukkan paling sedikit satu kumpulan proses ataupun kondisi baru.
Menjalani logical decision pada sisi dan false.
Mengeksekusi pengulangan (looping) dalam batas-batas yang ditentukan.
Menguji struktur data internal.
Berdasarkan konsep pengujian; White box (structural) testing / glass box testing : memeriksa
kalkulasi internal path untuk mengidentifikasi kesalahan.


Langkah-langkah white box:

- Mendefinisikan semua alur logika

- Membangun kasus untuk digunakan dalam pengujian

- Melakukan pengujian.


Kelebihan White Box Testing
                      - Kesalahan logika. Digunakan pada sintaks ‘if’ dan pengulangan. Dimana White Box Testing akan mendeteksi kondisi-kondisi yang tidak sesuai dan mendeteksi kapan proses pengulangan akan berhenti.
                      - Ketidaksesuaian asumsi. Menampilkan asumsi yang tidak sesuai dengan kenyataan, untuk di analisa dan diperbaiki.
                      - Kesalahan ketik. Mendeteksi bahasa pemrograman yang bersifat case sensitive.
Kelemahan White Box Testing
                      - Untuk perangkat lunak yang tergolong besar, White Box Testing dianggap sebagai strategi yang tergolong boros, karena akan melibatkan sumber daya yang besar untuk melakukannya.
Jenis white box;

  1. Basis path:: Metode identifikasi yang berdasarkan pada jalur,, struktur atau koneksi yang ada dari suatu sistem ini biasa disebut juga sebagai branch testing,, karena cabang-cabang dari kode atau fungsi logika diidentifikasi dan dites, atau disebut juga sebagai control-flow testing.

Ada 2 bentuk Basis path, yaitu:
Zero Path: Jalur penghubung yang tidak penting atau jalur pintas yang ada pada suatu sistem.
One Path: Jalur penghubung yang penting atau berupa proses pada suatu sistem.
      2. Cyclomatic Complexity
Adalah pengukuran software yang memberikan pengukuran kuantitatif dari kompleksitas logika program.
Pada konteks metode basis path testing , nilai yang dihitung bagi cyclomatic complexity menentukan  jumlah jalur-jalur yang independen dalam kumpulan basis suatu program dan memberikan jumlah tes minimal yang harus dilakukan untuk memastikan bahwa semua pernyataan telah dieksekusi sekurangnya satu kali.
Jalur independen adalah tiap jalur pada program yang memperlihatkan 1 kelompok baru dari pernyataan proses atau kondisi baru.
     3.Graph Matrix
Adalah matrik berbentuk segi empat sama sisi, dimana jumlah baris dan kolom sama dengan jumlah node, dan identifikasi baris dan kolom sama dengan identifikasi node, serta isi data adalah keberadaan penghubung antar node (edges).
Beberapa properti yang dapat ditambahkan sebagai pembobotan pada koneksi antar node di dalam graph matrix, sebagai berikut:
Kemungkinan jalur (Edge) akan dilalui / dieksekusi.
Waktu proses yang diharapkan pada jalur selama proses transfer dilakukan.
Memori yang dibutuhkan selama proses transfer dilakukan pada jalur.
Sumber daya (resources) yang dibutuhkan selama proses transfer dilakukan pada jalur.

Control Structur Testing, meliputi;
Condition testing:: Suatu metode disain test case yang memeriksa kondisi logika yang terdapat pada modul program.
Data flow testing:: Metode data flow testing memilih jalur program berdasarkan pada lokasi dari definisi dan penggunaan variabel-variabel pada program.
Loop testing:: suatu teknik white box testing yang berfokus pada validitas konstruksi loop secara eksklusif.  Ada 4 kelas dari loop, yaitu;
Simple Loops
Nested Loops
Concatenated Loops
Unstructured Loops

Contoh kasus : Imperial Taxi Services (ITS) :

V(G) = R = 6

V(G) = E – N + 2 = 21 – 17 + 2 = 6

V(G) = P + 1 = 5 + 1 = 6
Rumus : V(G) = R = E – N + 2 = P + 1

Keterangan :

V(G) = cyclometic complexity graph

R = jumlah region dalam program flow graph

E = jumlah edge

N = jumlah node

P = jumlah decision (percabangan)


blackbox-testing-quality-assurance

  • Black Box


Pengertian Black Box Testing
Black box testing adalah pengujian yang dilakukan hanya mengamati hasil eksekusi melalui data uji dan memeriksa fungsional dari perangkat lunak. Jadi dianalogikan seperti kita melihat suatu koatak hitam, kit hanya bisa melihat penampilan luarnya saja, tanpa tau ada apa dibalik bungkus hitam nya. Sama seperti pengujian black box, mengevaluasi hanya dari tampilan luarnya(interface nya) , fungsionalitasnya.tanpa mengetahui apa sesungguhnya yang terjadi dalam proses detilnya (hanya mengetahui input dan output).
  Kelebihan Black Box
                     - Dapat memilih subset test secara efektif dan efisien
                     - Dapat menemukan cacat
                     - Memaksimalkan testing investmen
   Kelemahan  Black Box
                       - Tester tidak pernah yakin apakah PL tersebut benar – benar lulus uji.

Contoh Black Box Testing dengan Equivalence Partitioning :
Pemeliharaan data untuk aplikasi bank yang sudah diotomatisasikan. Pemakai dapat memutar nomor telepon bank dengan menggunakan mikro komputer yang terhubung dengan password yang telah ditentukan dan diikuti dengan perintah-perintah. Data yang diterima adalah :
- Kode area        : kosong atau 3 digit
- Prefix               : 3 digit atau tidak diawali 0 atau 1
- Suffix              : 4 digit
- Password         : 6 digit alfanumerik
- Perintah           : check, deposit, dll


Selanjutnya kondisi input digabungkan dengan masing-masing data elemen  dapat ditentukan sebagai berikut:
Kode area : kondisi input, Boolean –kode area mungkin ada atau tidak kondisi input, range –nilai ditentukan antara 200 dan 999
Prefix  : kondisi input range > 200 atau tidak diawali 0 atau 1
Suffix  : kondisi input nilai 4 digit
Password : kondisi input boolean –passwordmungkin diperlukan atau  tidak kondisi input nilai dengan 6 karakter string
Perintah   : kondisi input set berisi perintah-perintah yang telah didefinisikan


  • Perbedaan White Box & Black Box

White box (Struktural)
Dilakukan oleh penguji yang mengetahui tentang QA.
Melakukan testing pada software/program aplikasi menyangkut security dan performance program tersebut (meliputi tes code, desain implementasi, security, data flow, software failure).
Dilakukan seiring dengan tahapan pengembangan software atau pada tahap testing.
Metode BlackBox  (Fungsional)
Dilakukan oleh penguji Independent.
Melakukan pengujian berdasarkan apa yang dilihat, hanya fokus terhadap fungsionalitas dan output. Pengujian lebih ditujukan pada desain software sesuai standar dan reaksi apabila terdapat celah-celah bug/vulnerabilitas pada program aplikasi tersebut setelah dilakukan white box testing.
Dilakukan setelah white box testing.

(3) Metode Pengembangan Perangkat Lunak

Software adalah : Suatu program komputer, prosedur, data dan semua dokumentasi yang berhubungan operasi pada sistem komputer dengan kata lain software merupakan kumpulan dari object membentuk konfigurasi yang didalamnya termasuk program, dokumen, dan data.
Menurut  IEEE , Pengembangan software (software engineering ) adalah : Aplikasi sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan dari software, dengan kata lain software engineering merupakan sebuah metodologi pengembangan perangkat lunak (software) yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi sistem hingga pada tahap pemeliharaan sistem setelah digunakan dengan tujuan untuk membuat perangkat lunak yang tepat dengan metode yang tepat.
Hal yang perlu di pertimbangkan dalam pengembangan software yaitu :
1.  Produk dan software (terdiri dari program, dokumen, dan data)
2.  Proses pengembangannya (terdiri dari proses manajemen dan proses teknikal)
System Development Life Cycle (SDLC) merupakan beberapa tahap pengembangan pemantauan produk dari perangkat lunak.  Contoh dari SDLC antara lain model waterfall, model V, model spiral, prototyping dan lain-lain. Sedangkan proses manajemen dalam pengembangan software lunak terdiri atas manajemen proyek, configuration management dan quality assurance management dan proses teknikal merupakan metode yang diaplikasikan pada tahap tertentu dalam pengembangan software, yang didalamnya termasuk metode analisis, metode desain, metode pemrograman, dan metode testing.
Tiga Elemen kunci dalam Pengembangan Software :
1.  Metode
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Terdiri dari serangkaian tugas seperti perencanaan dan estimasi proyek
Software merupakan bagian terbesar dari sistem, sehingga pekerjaan dimulai dengan cara menerapkan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan elemen lain, seperti hardware, software lain dan database
2. Analisis kebutuhan sistem dan software
Merupakan suatu proses pengumpulan kebutuhan software untuk mengerti sifat -sifat program yang dibentuk software engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan interfase terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan ditinjau bersama-sama klien.
3. Desain struktur data
Desain software sesungguhnya adalah proses multi step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3 atribut program yang berbeda, yaitu struktur data, arsitektur software dan rincian prosedur.
Sebelum membedakan, definisi dari pengembangan software dan pengembangan sistem informasi  adalah sebagai berikut :
1.  Metode
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Terdiri dari serangkaian tugas seperti perencanaan dan estimasi proyek
Software merupakan bagian terbesar dari sistem, sehingga pekerjaan dimulai dengan cara menerapkan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan elemen lain, seperti hardware, software lain dan database.
2. Analisis kebutuhan sistem dan software
Merupakan suatu proses pengumpulan kebutuhan software untuk mengerti sifat -sifat program yang dibentuk software engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan interfase terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan ditinjau bersama-sama klien.
3. Desain struktur data
Desain software sesungguhnya adalah proses multi step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3 atribut program yang berbeda, yaitu struktur data, arsitektur software dan rincian prosedur.
     * Arsitektur program dan prosedur algoritma
Proses desain menterjemahkan kebutuhan kedalam representasi software yang dapat diukur kualitasnya sebelum coding dimulai. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.
     * Coding
Merupakan proses penterjemahan desain ke dalam bentuk yang dapat dibaca oleh mesin
     * Testing dan pemeliharaan
Setelah objek program dihasilkan, testing program dimulai. Proses testing difokuskan pada logika internal software. Jaminan bahwa semua pernyataan atau statements sudah dites dan lingkungan external menjamin bahwa definisi input akan menghasilkan output yang diinginkan.  Sementara proses pemeliharaaan atau maintenance dilakukan karena software mengalami error, atau harus diadaptasi untuk menyesuaikan dengan lingkungan external.

Peralatan atau tools
Peralatan pengembangan software memberikan dukungan atau semiautomasi untuk metode, contohnya:
1. CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hardware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
2. Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
3. Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE.

Prosedur
Prosedur terdiri dari, urut-urutan di mana metode tersebut diterapkan, dokumen, laporan-laporan, formulir-formulir yang diperlukan, kontrol kualitas software, dan koordinasi perubahan yang terjadi pada software.
Tiga Metode Dalam Pengembangan Software yang secara luas digunakan, yaitu:
1. System Development Life Cycle (SDLC)
Adalah proses pengembangan dimana keseluruhan proses pengembangan sistem dilakukan melalui proses multi-langkah dari investigasi persyaratan awal melalui analisis, desain, implementasi dan pemeliharaan (sumber: Russel Kay, Computer World).
SDLC terdiri dari beberapa jenis model antara lain model Waterfall, Fountain, dan Spiral. Pada model waterfall output dari langkah yang satu akan menjadi input bagi langkah selanjutnya.
a. Spiral Model
s1
Model spiral (spiral model) adalah model pengembangan software dimana proses digambarkan sebagai spiral. Setiap loop akan mewakili satu fase dari software process. Loop paling dalam berfokus pada kelayakan dari sistem, loop selanjutnya tentang definisi dari kebutuhan, loop berikutnya berkaitan dengan desain sistem dan seterusnya, seperti gambar berikut
Pada spiral model, setiap Loop dibagi dibagi menjadi sejumlah aktifitas kerangka kerja yang disebut juga wilayah tugas, wilayah tugas tersebut terdiri antara tiga sampai enam wilayah tugas, yaitu :
1. Komunikasi Pelanggan.
Tugas – tugas yang dibutuhkan untuk membangun     komunikasi yang efektif di antara pengembangan dan pelanggan.
2. Perencanaan.
Tugas–tugas yang dibutuhkan untuk mendefinisikan sumber–sumber daya, ketepatan waktu, dan proyek informasi lain yang berhubungan.
3. Analisis Risiko.
Tugas – tugas yang dibutuhkan untuk menaksir risiko – risiko, baik manajemen maupun teknis.
4. Perekayasaan.
Tugas – tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut.
5. Konstruksi dan peluncuran.
Tugas – tugas yang dibutuhkan untuk mengkonstruksi, menguji, instalasi dan memberikan pelayanan kepada pemakai (contohnya pelatihan dan dokumentasi).
6. Evaluasi pelanggan.
Tugas – tugas yang dibutuhkan untuk memperoleh umpan balik dari pelanggan dengan didasarkan pada evaluasi representasi software, yang dibuat selama masa perekayasaan, dan diimplementasikan selama masa pemasangan software.
b. Waterfall model
w1
Fase atau tahapan yang terjadi pada waterfall model adalah sebagai berikut ::
1) Tahap Investigasi
Pada tahap investigasi akan terjadi proses seperti:
a)   Initialisasi: terjadi proses seperti perencanaan manajemen, kebutuhan serta                              potensi dari user.
b)  Definisi formal:  dilakukan definisi tujuan, motivasi, ruang lingkup, batasan,                                  kendala,   dan strategi. Selain itu, pada definisi formal juga dilakukan verifikasi                          permasalahan sehingga dapat dilakukan penilaian terhadap kebutuhan yang baru.
c)   Uji kelayakan, yang terdiri dari:
1. Uji kelayakan teknis, merupakan uji terhadap ketersediaan hardware dan                                      software.
2. Uji kelayakan ekonomis, yaitu menilai apakah manfaat yang didapat dari                                        pengembangan software akan sebanding dengan biaya yang dikeluarkan.
3. Uji kelayakan operasional, uji kelayakan yang berkaitan dengan kemampuan                                orang yang bekerja dalam sistem untuk melakukan pekerjaan mereka dengan                            cara yang telah ditentukan.
4. Uji kelayakan kelayakan organisasi, menilai kesiapan perusahaan atau organisasi                      untuk mengembangkan penjualan pemasaran dan sistem keuangan berbasis Web                  (e-commerce system).
2) Tahap Analisa
Dalam tahapan ini sistem yang akan dibangun diselaraskan dengan kebutuhan user atau pengguna. Pada tahap ini terjadi proses seperti:
a)   Determine requirements atau penentuan kebutuhan, hal ini dilakukan dengan cara                mempelajari sistem yang telah ada, serta menentukan kebutuhan struktur dan                          menghilangkan redundansi.
b)   Requirement analysis atau analisa kebutuhan, terdiri dari analisa kebutuhan                              fungsional dan performa (kinerja).
c)    Menghasilkan desain sistem alternatif
d)   Membandingkan alternatif desain sistem yang dihasilkan dan
e)   Merekomendasikan alternatif terbaik kepada klien.
3) Tahap Desain
Tahap menentukan bagaimana sistem mencapai tujuan yang telah didefinisikan sebelumnya. Tahap ini terdiri dari:
a)  User interface design, meliputi tampilan, form, report dan dialog design.
b)  Data design, merupakan proses desain elemen struktur data.
c)  Process design, merupakan desain program prosedur sistem
4) Tahap Implementasi
Pada tahap ini terjadi beberapa hal seperti:
a)  Evaluasi hardware, software dan jasa
b)  Modifikasi dan pengembangan software
c)  Dokumentasi, yang merupakan mekanisme komunikasi utama selama proses                            pengembangan.
d)  Konversi data, pada proses ini terjadi perbaikan dan penyaringan data yang tidak                     diinginkan dan konsolidasi data.
e)  Testing atau uji coba, pada proses ini dilakukan uji coba dan debugging software.
f)   Training atau pelatihan sistem/software yang telah terbentuk.
g)  Konversi, yakni proses pergantian dari sistem lama ke sistem baru. Proses konversi                dapat dilakukan melalui 4 macam cara antara lain:
1. Parallel strategy
2. Pilot strategy
3. Phased strategy dan
4. Plunge strategy
5) Tahap Pemeliharaan (maintenance)
Pada proses ini terjadi modifikasi software, perbaikan error atau umpan balik dari user terhadap software yang telah mereka gunakan.
Keunggulan dan Kelemahan pada metode SDLC antara lain:
a. Keunggulan:
1)   Proses pengembangan sangat terstruktur dan sistematik
2)   Melalui definisi kebutuhan, sehingga gap atau kesenjangan yang terjadi antara                          kebutuhan dan sistem yang dihasilkan dapat dikurangi.
3)   Menghasilkan petunjuk arah pengembangan yang jelas bagi manajemen.
b. Kelemahan:
1)   Tidak adaptif terhadap perubahan yang dapat terjadi selama proses                                                  pengembangan (kaku atau rigid).
2)   Melelahkan karena membutuhkan waktu pengembangan yang lama dan biaya                            yang tinggi
3)   Proyek yang sebenarnya jarang mengikuti aliran sequential yang ditawarkan                               model ini. Iterasi (Pengulangan) selalu terjadi dan menimbulkan masalah pada                           aplikasi yang dibentuk oleh model ini.
4)   Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara                           explisit.
5)   Klien harus sabar karena versi program yang sedang jalan tidak akan tersedia                             sampai proyek pengembangan selesai.
c.  Rapid Application Development (RAD)
R1
Rapid Aplication Development (RAD) adalah sebuah metode pengembangan software yang diciptakan untuk menekan waktu yang dibutuhkan untuk mendesain serta mengimplementasikan sistem, informasi sehingga dihasilkan siklus pengembangan yang sangat pendek.
Model RAD ini merupakan adaptasi dari model sekuensial linier dimana perkembangan yang cepat dicapai dengan menggunakan pendekatan kontruksi berbasis komponen. Sehingga, jika kebutuhan sistem dipahami dengan baik, proses RAD memungkinkan developer menciptakan sistem fungsional yang utuh dalam periode waktu yang sangat pendek (± 60 sampai 90 hari). Karena dipakai terutama pada aplikasi sistem konstruksi, pendekatan RAD meliputi fase – fase dibawah ini:
a. Bussiness modeling
Aliran informasi di antara fungsi – fungsi bisnis dimodelkan dengan suatu cara untuk menjawab pertanyaan – pertanyaan sebagai berikut :
1)   Informasi apa yang mengendalikan proses bisnis?
2)   Informasi apa yang di munculkan?
3)    Siapa yang memunculkanya?
4)    Ke mana informasi itu pergi?
5)   Siapa yang memprosesnya?
b. Data modeling
Aliran informasi yang didefinisikan sebagai bagian dari fase bussiness modelling disaring ke dalam serangkaian objek data yang dibutuhkan untuk menopang bisnis tersebut. Karakteristik (disebut atribut) masing masing objek diidentifikasi dan hubungan antara objek – objek tersebut didefinisikan.
c. Prosess modelling
Aliran informasi yang didefinisikan di dalam fase data modeling ditransformasikan untuk mencapai aliran informasi yang perlu bagi implementasi sebuah fungsi bisnis. Gambaran pemrosesan diciptakan untuk menambah, memodifikasi, menghapus, atau mendapatkan kembali sebuah objek data.
d. Aplication generation
RAD mengasumsikan pemakaian teknik generasi ke empat. Selain menciptakan perangkat lunak dengan menggunakan bahasa pemrograman generasi ketiga yang konvensional, RAD lebih banyak memproses kerja untuk memkai lagi komponen program yang ada (pada saat memungkinkan) atau menciptakan komponen yang bisa dipakai lagi (bila perlu). Pada semua kasus, alat – alat bantu otomatis dipakai untuk memfasilitasi konstruksi perangkat lunak.
e. Testing and turnover
Karena proses RAD menekankan pada pemakaian kembali, banyak komponen program telah diuji. Hal ini mengurangi keseluruhan waktu pengujian. Tetapi komponen baru harus di uji dan semua interface harus dilatih secara penuh.
Keunggulan dan kelemahan model RAD adalah :
Keunggulan:
1. Waktu pengembangan yang lebih singkat dan
2. Biaya yang relatif lebih murah
Kelemahan:
1. Tidak cocok untuk proyek skala besar
2. Proyek bisa gagal karena waktu yang disepakati tidak dipenuhi
3. Sistem yang tidak bisa dimodularisasi tidak cocok untuk model
4. Resiko teknis yang tinggi juga kurang cocok untuk model ini.
d. Prototyping
p1
Proses pada model prototyping yang dapat dijelaskan sebagai berikut:
a. User Requirements
Pada tahap ini developer dan klien bertemu dan menentukan tujuan umum, kebutuhan yang diketahui dan gambaran bagian-bagian yang akan dibutuhkan berikutnya. Detil kebutuhan mungkin tidak dibicarakan pada tahap ini.
b. Develope Prototype
Pada tahap ini dilakukan perancangan prototype sistem oleh developer, perancangan sistem dilakukan secara cepat dan rancangan diusahakan mewakili semua aspek software yang telah diketahui.
c. Revise Prototype
Pada tahap ini dilakukan evaluasi prototype sistem oleh klien. Apabila klien merasa prototype sistem yang telah dikembangkan sesuai dengan keinginannya maka prototype tersebut dapat digunakan, akan tetapi jika  prototype tersebut tidak sesuai, maka prototype tersebut akan dilakukan revisi dan digunakan sebagai acuan dalam memperjelas kebutuhan software dan kemudian dikembangkan prototype selanjutnya. Siklus ini (develop-revise prototype) akan terus berlangsung hingga didapatkan prototype sistem yang sesuai dengan kebutuhan klien atau user.
Keunggulan dan kelemahan pada pengembangan software menggunakan metode prototyping.
Keunggulan:
1. Meningkatnya komunikasi antara user dan developer
2. Peningkatan peran aktif user didalam proses pengembangan
3. Peningkatan efisiensi waktu
4. Implementasi sistem menjadi lebih mudah karena user turut berperan aktif didalam proses pengembangan
Kelemahan:
1. Kurangnya fitur keamanan dan kontrol pada prototype akhir sistem
2. Sistem akan sulit terbentuk jika proses evaluasi pada siklus prototype tidak mendapatkan titik temu.
3. Dapat menyebabkan dokumentasi akhir yang tidak lengkap
4. Developer lebih sulit mengendalikan ekspektasi user