Minggu, 30 September 2012

Tugas 2 Alstrukdat



Bismillahirahmanirahim..
Ini adalah tugas kedua saya di mata kuliah algoritma dan struktur data. Mudah- mudahan dengan diberikannya tugas ini, saya bisa termotivasi untuk memahami mengenai C Modul secara lebih detail.
EVALUASI
1.   Apa yang dimaksud dengan C Module?
Sebelumnya saya akan menjelaskan dulu pengertian dan karakteristik kata Modul berdasarkan sumber yang saya dapatkan.
Modul merupakan bahan ajar cetak yang dirancang untuk dapat dipelajari secara mandiri oleh peserta pembelajaran.
Modul disebut juga media untuk belajar mandiri karena di dalamnya telah dilengkapi petunjuk untuk belajar sendiri.
Jadi, C Modul adalah suatu bahan ajar cetak bahasa pemrograman C yang sengaja dibuat agar penggunanya bisa langsung mengerti secara mandiri. Di dalamnya telah dibuat tutorial – tutorial lengkap mengenai bahasa pemrograman C. Artinya, pengguna dapat melakukan kegiatan belajar tanpa kehadiran pengajar secara langsung.

2.   Apa yang dimaksud interface file sebuah modul?
Suatu komunikasi hubungan antara komponen satu komponen dengankomponen lainnya. Program akan lebih bisa diidentifikasi oleh programer apabila penjabarannya jelas.

3.   Apa yang dimaksud implementation file sebuah modul?
Pengaplikasian file yang diterapkan langsung ke bahasa pemrograman seperti ke bahasa C. Pendeklarasian program.

4.   Bagaimana mengetahui layanan – layanan yang disediakan oleh modul?
Dengan cara menganalisanya. Biasanya tersaji dengan jelas.




Sumber:
http://www.wikipedia.com/modul-struktur-data.html




Link Tugas 1 Kelompok (ADT)

http://www.mediafire.com/view/?789bzha12zoz7sr

Selasa, 25 September 2012

Tugas Program Pangkat ( Bahasa C)


#include <stdio.h>
#include<conio.h>
main()
{
      int i,NomorMenu;
      float NilaiM, NilaiN, pangkat;
      do
      {
      system("cls");
      printf("  \n");
      printf(" MENU TUGAS ALSTRUKDAT 1  \n");
      printf(" ======================= \n");
      printf("  1. Lihat Biodata Saya:)       \n");
      printf("  2. Hitung Pangkat :) \n");
      printf("  3. Exit :) \n");
      printf("  Silahkan pilih menu anda ( 1/2/3) : ");
     
      scanf("%d",&NomorMenu);
     
      switch (NomorMenu)
      {
             case 1 : {
                        system("cls");
                        printf("  \n");
                        printf(" Biodata ku \n");
                        printf(" =========== \n");
                        printf(" Nama   : Ilham Nurhakim \n");
                        printf(" Nim    : 113114284 \n");
                        printf(" Alamat : Buah Batu Bojong Soang \n");
                        break;
                      }
             case 2 : {
                        system("cls");
                        printf("  \n");
                        pangkat=1;
                        printf(" Masukan nilai bilangan : "); scanf("%f",NilaiM);
                        printf(" Masukan nilai pangkatnya : "); scanf("%f",NilaiN);
                        for(i=1;i<=NilaiN;i++)
                        {
                          pangkat=pangkat*NilaiM;
                        }
                        printf(" Hasil pemangkatan adalah : %f",pangkat);
                        break;
             case 3 : system("cls");
                      printf("  \n");
                      printf("Keluar program \n");
                      printf("Tengkyu...hehehe  \n");
                      break;
                        }
      }
      getch();
      }
      while(NomorMenu !=3);
}

Minggu, 23 September 2012

Pengembangan Diri

Tugas 1. Alstrukdat 

  1. Kelebihan Diri :
    • Disiplin
    • Jujur
    • Amanah
    • Pedean
    • Leadership
  1.  2.   Kekurangan :

o   Malas
o   Tidak menerima kekalahan
o   Mudah dipengaruhi

Minggu, 22 April 2012

WATERFALL PROCESS MODEL



Nama model ini sebenarnya adalah “Linear Sequential Model”. Model ini sering disebut dengan “classic life cycle” atau model waterfall. Model ini adalah model yang muncul pertama kali yaitu sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai didalam Software Engineering (SE). Model ini melakukan pendekatan secara sistematis dan urut mulai dari level kebutuhan sistem lalu menuju ke tahap analisis, desain, coding, testing / verification, dan maintenance. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan. Sebagai contoh tahap desain harus menunggu selesainya tahap sebelumnya yaitu tahap requirement. Secara umum tahapan pada model waterfall dapat dilihat pada gambar berikut :

Gambar di atas adalah tahapan umum dari model proses ini. Akan tetapi Roger S. Pressman memecah model ini menjadi 6 tahapan meskipun secara garis besar sama dengan tahapan-tahapan model waterfall pada umumnya. Berikut adalah penjelasan dari tahap-tahap yang dilakukan di dalam model ini menurut Pressman:
·       System / Information Engineering and Modeling. Permodelan ini diawali dengan mencari kebutuhan dari keseluruhan sistem yang akan diaplikasikan ke dalam bentuk software. Hal ini sangat penting, mengingat software harus dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database, dsb. Tahap ini sering disebut dengan Project Definition.
·         Software Requirements Analysis. Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untuk mengetahui sifat dari program yang akan dibuat, maka para software engineer harus mengerti tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user interface, dsb. Dari 2 aktivitas tersebut (pencarian kebutuhan sistem dan software) harus didokumentasikan dan ditunjukkan kepada pelanggan.
·       Design. Proses ini digunakan untuk mengubah kebutuhan-kebutuhan diatas menjadi representasi ke dalam bentuk “blueprint” software sebelum coding dimulai. Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada tahap sebelumnya. Seperti 2 aktivitas sebelumnya, maka proses ini juga harus didokumentasikan sebagai konfigurasi dari software.
·       Coding. Untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer, maka desain tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer.
·       Testing / Verification. Sesuatu yang dibuat haruslah diujicobakan. Demikian juga dengan software. Semua fungsi-fungsi software harus diujicobakan, agar software bebas dari error, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.
·       Maintenance. Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu. Ketika dijalankan mungkin saja masih ada errors kecil yang tidak ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada software tersebut. Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan seperti ketika ada pergantian sistem operasi, atau perangkat lainnya.
Mengapa model ini sangat populer??? Selain karena pengaplikasian menggunakan model ini mudah, kelebihan dari model ini adalah ketika semua kebutuhan sistem dapat didefinisikan secara utuh, eksplisit, dan benar di awal project, maka SE dapat berjalan dengan baik dan tanpa masalah. Meskipun seringkali kebutuhan sistem tidak dapat didefinisikan seeksplisit yang diinginkan, tetapi paling tidak, problem pada kebutuhan sistem di awal project lebih ekonomis dalam hal uang (lebih murah), usaha, dan waktu yang terbuang lebih sedikit jika dibandingkan problem yang muncul pada tahap-tahap selanjutnya.
Meskipun demikian, karena model ini melakukan pendekatan secara urut / sequential, maka ketika suatu tahap terhambat, tahap selanjutnya tidak dapat dikerjakan dengan baik dan itu menjadi salah satu kekurangan dari model ini. Selain itu, ada beberapa kekurangan pengaplikasian model ini, antara lain adalah sebagai berikut:
·         Ketika problem muncul, maka proses berhenti, karena tidak dapat menuju ke tahapan selanjutnya. Bahkan jika kemungkinan problem tersebut muncul akibat kesalahan dari tahapan sebelumnya, maka proses harus membenahi tahapan sebelumnya agar problem ini tidak muncul. Hal-hal seperti ini yang dapat membuang waktu pengerjaan SE.
·       Karena pendekatannya secara sequential, maka setiap tahap harus menunggu hasil dari tahap sebelumnya. Hal itu tentu membuang waktu yang cukup lama, artinya bagian lain tidak dapat mengerjakan hal lain selain hanya menunggu hasil dari tahap sebelumnya. Oleh karena itu, seringkali model ini berlangsung lama pengerjaannya.
·       Pada setiap tahap proses tentunya dipekerjakan sesuai spesialisasinya masing-masing. Oleh karena itu, ketika tahap tersebut sudah tidak dikerjakan, maka sumber dayanya juga tidak terpakai lagi. Oleh karena itu, seringkali pada model proses ini dibutuhkan seseorang yang “multi-skilled”, sehingga minimal dapat membantu pengerjaan untuk tahapan berikutnya.
Menurut saya, tahapan-tahapan model ini sudah cukup baik dalam artian minimal untuk melakukan SE, maka harus ada tahapan-tahapan ini. Tahapan-tahapan ini jugalah yang digunakan oleh model-model yang lain pada umumnya. Ada filosofi yang mengatakan sesuatu yang sukses diciptakan pertama kali, maka akan terus dipakai di dalam pengembangannya. Hal ini juga berlaku pada waterfall model ini. Mungkin dapat dikatakan bahwa inilah standar untuk melakukan SE.
Akan tetapi, yang mungkin menjadi banyak pertimbangan mengenai penggunaan dari model ini adalah metode sequential-nya. Mungkin untuk awal-awal software diciptakan, hal ini tidak menjadi masalah, karena dengan berjalan secara berurutan, maka model ini menjadi mudah dilakukan. Sesuatu yang mudah biasanya hasilnya bagus. Oleh karena itu model ini sangat populer. Akan tetapi, seiring perkembangan software, model ini tentu tidak bisa mengikutinya. Yang menjadi kelemahan adalah pada pengerjaan secara berurutan tadi, seperti yang sudah saya utarakan sebelumnya. Kelemahan-kelemahan yang lain juga sudah saya utarakan di atas, atau bahkan masih ada yang lainnya.
Dari sini, nantinya akan dikembangkan model-model yang lain, bahkan ada tahap evolusioner dari suatu model proses untuk mengatasi kelemahan-kelemahan tadi. Meskipun secara tahapan masih menggunakan standar tahapan waterfall model. Kesimpulannya adalah ketika suatu project skalanya sedang mengarah kecil bisa menggunakan model ini. Akan tetapi kalau sudah project besar, tampaknya kesulitan jika menggunakan model ini.
Sumber :

PROTOTYPING MODEL



Prototyping merupakan salah satu metode pengembangan perangkat lunak yang banyak digunakan. Dengan metode prototyping ini pengembang dan pelanggan dapat saling berinteraksi selama proses pembuatan sistem.
Sering terjadi seorang pelanggan hanya mendefinisikan secara umum apa yang dikehendakinya tanpa menyebutkan secara detal output apa saja yang dibutuhkan, pemrosesan dan data-data apa saja yang dibutuhkan. Sebaliknya disisi pengembang kurang memperhatikan efesiensi algoritma, kemampuan sistem operasi dan interface yang menghubungkan manusia dan komputer.
Untuk mengatasi ketidakserasian antara pelanggan dan pengembang , maka harus dibutuhakan kerjasama yanga baik diantara keduanya sehingga pengembang akan mengetahui dengan benar apa yang diinginkan pelanggan dengan tidak mengesampingkan segi-segi teknis dan pelanggan akan mengetahui proses-proses dalm menyelasaikan sistem yang diinginkan. Dengan demikian akan menghasilkan sistem sesuai dengan jadwal waktu penyelesaian yang telah ditentukan.
Kunci agar model prototype ini berhasil dengan baik adalah dengan mendefinisikan aturan-aturan main pada saat awal, yaitu pelanggan dan pengembang harus setuju bahwa prototype dibangun untuk mendefinisikan kebutuhan. Prototype akan dihilangkan sebagian atau seluruhnya dan perangkat lunak aktual aktual direkayasa dengan kualitas dan implementasi yang sudah ditentukan
Tahapan-tahapan Prototyping
Tahapan-tahapan dalam Prototyping adalah sebagai berikut:
1. Pengumpulan kebutuhan
Pelanggan dan pengembang bersama-sama mendefinisikan format seluruh perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat.
2. Membangun prototyping
Membangun prototyping dengan membuat perancangan sementara yang berfokus pada penyajian kepada pelanggan (misalnya dengan membuat input dan format output)
3. Evaluasi prototyping
Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginann pelanggan. Jika sudah sesuai maka langkah 4 akan diambil. Jika tidak prototyping direvisi dengan mengulangu langkah 1, 2 , dan 3.
4. Mengkodekan sistem
Dalam tahap ini prototyping yang sudah di sepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai
5. Menguji sistem
Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus dites dahulu sebelum digunakan. Pengujian ini dilakukan dengan White Box, Black Box, Basis Path, pengujian arsitektur dan lain-lain
6. Evaluasi Sistem
Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan . Jika ya, langkah 7 dilakukan; jika tidak, ulangi langkah 4 dan 5.
7. Menggunakan sistem
Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk digunakan.
Keunggulan dan Kelemahan Prototyping
Keunggulan prototyping adalah:
1.       Adanya komunikasi yang baik antara pengembang dan pelanggan
2.       Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan
3.       Pelanggan berperan aktif dalam pengembangan sistem
4.       Lebih menghemat waktu dalam pengembangan sistem
5.       Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya.
Kelemahan prototyping adalah :
1.       Pelanggan kadang tidak melihat atau menyadari bahwa perangkat lunak yang ada belum mencantumkan kualitas perangkat lunak secara keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk jangja waktu lama.
2.       Pengembang biasanya ingin cepat menyelesaikan proyek. Sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat prototyping lebih cepat selesai tanpa memikirkan lebih lanjut bahwa program tersebut hanya merupakan cetak biru sistem .
3.       Hubungan pelanggan dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik

 Contoh Diagram :

RAPID APPLICATION DEVELOPMENT



Rapid application development (RAD) atau rapid prototyping adalah model proses pembangunan perangkat lunak yang tergolong dalam teknik incremental (bertingkat). RAD menekankan pada siklus pembangunan pendek, singkat, dan cepat. Waktu yang singkat adalah batasan yang penting untuk model ini. Rapid application development menggunakan metode iteratif (berulang) dalam mengembangkan sistem dimana working model (model bekerja) sistem dikonstruksikan di awal tahap pengembangan dengan tujuan menetapkan kebutuhan (requirement) user dan selanjutnya disingkirkan. Working model digunakan kadang-kadang saja sebagai basis desain dan implementasi sistem final.

Penerapan
Model RAD mengadopsi model waterfall dan pembangunan dalam waktu singkat yang dicapai dengan menerapkan :
1.        Component based construction ( pemrograman berbasis komponen bukan prosedural).
2.        Penekanan pada penggunaan ulang (reuse) komponen perangkat lunak yang telah ada.
3.        Pembangkitan kode program otomatis/semi otomatis.
4.        Multiple team (banyak tim), tiap tim menyelesaikan satu tugas yang selevel tapi tidak sama. Banyaknya tim tergantung dari area dan kompleksitasnya sistem yang dibangun.
Jika kebutuhan yang diinginkan pada tahap analisis kebutuhan telah lengkap dan jelas, maka waktu yang dibutuhkan untuk menyelesaikan secara lengkap perangkat lunak yang dibuat adalah berkisar 60 sampai 90 hari. Model RAD hampir sama dengan model waterfall, bedanya siklus pengembangan yang ditempuh model ini sangat pendek dengan penerapan teknik yang cepat.
Sistem dibagi-bagi menjadi beberapa modul dan dikerjakan beberapa tim dalam waktu yang hampir bersamaan dalam waktu yang sudah ditentukan. Model ini melibatkan banyak tim, dan setiap tim mengerjakan tugas yang selevel, namun berbeda. Sesuai dengan pembagian modul sistem.

Contoh Diagram RAD




Kelebihan
1.    Hasil pengembangan bisa lebih cepat.
2.    Memerlukan biaya yang lebih sedikit.
3.    Mementingkan dari segi bisnis dan teknik.
4.    Berkonsentrasi pada sudut pandang user .
5.    Menyediakan kemungkinan perubahan secara cepat sesuai permintaan user.
6.    Menghasilkan jarak kesesuaian yang kecil antara kebutuhan user dan spesifikasi sistem.
7.    waktu, biaya, dan effort minimal.


Kelemahan
Beberapa hal (kelebihan dan kekurangan) yang perlu diperhatikan dalam implementasi pengembangan menggunakan model RAD :
1.      Model RAD memerlukan sumber daya yang cukup besar, terutama untuk proyek dengan skala besar.
2.    Model ini cocok untuk proyek dengan skala besar.
3.    Model RAD memerlukan komitmen yang kuat antara pengembang dan pemesan, bahkan keduanya bisa tergabung dalam 1 tim
4.    kinerja dari perangkat lunak yang dihasilkan dapat menjadi masalah manakala kebutuhan-kebutuhan diawal proses tidak dapat dimodulkan, sehingga pendekatan dengan model ini kurang bagus.
5.    sistem yang tidak bisa dimodularisasi tidak cocok untuk model ini.
6.    penghalusan dan penggabungan dari beberapa tim di akhir proses sangat diperlukan dan ini memerlukan kerja keras.
7.    proyek bisa gagal karena waktu yang disepakati tidak dipenuhi
8.    risiko teknis yang tinggi juga kurang cocok untuk model ini.


Sumber : 
·                     http://id.wikipedia.org/wiki/Rapid_Application_Development

SOFTWARE DEVELOPMENT METHODE



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

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.
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.

2. 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.

3.  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.

       Metode System Development Life Cycle (SDLC) :
1. Rekayasa dan Pemodelan Sistem/Informasi
Karena perangkat lunak merupakan bagian dari suatu sistem maka langkah pertama dimulai dengan membangun syarat semua elemen sistem dan mengalokasikan ke perangkat lunak dengan memeperhatiakn hubungannya dengan manusia, perangkat keras dan database.

2. Analisis Kebutuhan Perangkat Lunak
Proses menganalisis dan pengumpulan kebutuhan sistem yang sesuai dengan domain informasi tingkah laku, unjuk kerja, dan antar muka (interface) yang diperlukan. Kebutuhan-kebutuhan tersebut didokumentasikan dan dilihat lagi dengan pelanggan.

3. Desain
Proses desain akan menerjemahkan syarat kebutuhan ke sebuah perancangan perangkat lunak yang dapat diperkirakan sebelum dibuat coding. Proses ini berfokus pada : struktur data, arsitektur perangkat lunak, representasi interface, dan detail (algoritma) prosedural.

4. Pengkodeaan (Coding)
Pengkodean merupakan proses menerjemahkan desain ke dalam suatu bahasa yang bisa dimengerti oleh komputer.

5. Pengujian
Proses pengujian dilakukan pada logika internal untuk memastikan semua pernyataan sudah diuji. Pengujian eksternal fungsional untuk menemukan kesalahan-kesalahan dan memastikan bahwa input akan memberikan hasil yang aktual sesuai yang dibutuhkan.

6. Pemeliharaan
Perangkat lunak yang sudah disampaikan kepada pelanggan pasti akan mengalami perubahan. Perubahan tersebut bisa karena mengalami kesalahan karena perangkat lunak harus menyesuaikan dengan lingkungan (periperal atau sistem operasi baru) baru, atau karena pelanggan membutuhkan
perkembangan fungsional atau unjuk kerja.




SPIRAL MODEL



Proses model yang lain, yang cukup populer adalah Spiral Model. Model ini juga cukup baru ditemukan, yaitu pada sekitar tahun 1988 oleh Barry Boehm pada artikel A Spiral Model of Software Development and Enhancement. Spiral model adalah salah satu bentuk evolusi yang menggunakan metode iterasi natural yang dimiliki oleh model prototyping dan digabungkan dengan aspek sistimatis yang dikembangkan dengan model waterfall. Tahap desain umumnya digunakan pada model Waterfall, sedangkan tahap prototyping adalah suatu model dimana software dibuat prototype (incomplete model), “blue-print”-nya, atau contohnya dan ditunjukkan ke user / customer untuk mendapatkan feedback-nya. Jika prototype-nya sudah sesuai dengan keinginan user / customer, maka proses SE dilanjutkan dengan membuat produk sesungguhnya dengan menambah dan memperbaiki kekurangan dari prototype tadi.
Model ini juga mengkombinasikan top-down design dengan bottom-up design, dimana top-down design menetapkan sistem global terlebih dahulu, baru diteruskan dengan detail sistemnya, sedangkan bottom-up design berlaku sebaliknya. Top-down design biasanya diaplikasikan pada model waterfall dengan sequential-nya, sedangkan bottom-up design biasanya diaplikasikan pada model prototyping dengan feedback yang diperoleh. Dari 2 kombinasi tersebut, yaitu kombinasi antara desain dan prototyping, serta top-down dan bottom-up, yang juga diaplikasikan pada model waterfall dan prototype, maka spiral model ini dapat dikatakan sebagai model proses hasil kombinasi dari kedua model tersebut. Oleh karena itu, model ini biasanya dipakai untuk pembuatan software dengan skala besar dan kompleks.
Spiral model dibagi menjadi beberapa framework aktivitas, yang disebut dengan task regions. Kebanyakan aktivitas2 tersebut dibagi antara 3 sampai 6 aktivitas. Berikut adalah aktivitas-aktivitas yang dilakukan dalam spiral model:
· Customer communication. Aktivitas yang dibutuhkan untuk membangun komunikasi yang efektif antara developer dengan user / customer terutama mengenai kebutuhan dari customer.
· Planning. Aktivitas perencanaan ini dibutuhkan untuk menentukan sumberdaya, perkiraan waktu pengerjaan, dan informasi lainnya yang dibutuhkan untuk pengembangan software.
· Analysis risk. Aktivitas analisis resiko ini dijalankan untuk menganalisis baik resiko secara teknikal maupun secara manajerial. Tahap inilah yang mungkin tidak ada pada model proses yang juga menggunakan metode iterasi, tetapi hanya dilakukan pada spiral model.
· Engineering. Aktivitas yang dibutuhkan untuk membangun 1 atau lebih representasi dari aplikasi secara teknikal.
· Construction & Release. Aktivitas yang dibutuhkan untuk develop software, testing, instalasi dan penyediaan user / costumer support seperti training penggunaan software serta dokumentasi seperti buku manual penggunaan software.
· Customer evaluation. Aktivitas yang dibutuhkan untuk mendapatkan feedback dari user / customer berdasarkan evaluasi mereka selama representasi software pada tahap engineering maupun pada implementasi selama instalasi software pada tahap construction and release.
Berikut adalah gambar dari spiral model secara umum :

Satu lingkaran dari bentuk spiral pada spiral model dibagi menjadi beberapa daerah yang disebut dengan region. Region tersebut dibagi sesuai dengan jumlah aktivitas yang dilakukan dalam spiral model. Tentunya lingkup tugas untuk project yang kecil dan besar berbeda. Untuk project yang besar, setiap region berisi sejumlah tugas-tugas yang tentunya lebih banyak dan kompleks daripada untuk project yang kecil. SE berjalan dari inti spiral berjalan mengitari sirkuit per sirkuit. Sebagai contoh untuk sirkuit pertama dilakukan untuk pembangunan dari spesifikasi dari software dengan mencari kebutuhan dari customer. Untuk sirkuit pertama harus menjalani semua aktivitas yang didefinisikan. Setelah 1 sirkuit terlewati lanjut ke tugas selanjutnya misalnya membangun prototype. Tugas ini juga harus mengitari 1 sirkuit dan begitu terus selanjutnya sampai project selesai.
Tidak seperti model-model konvesional dimana setelah SE selesai, maka model tersebut juga dianggap selesai. Akan tetapi hal ini tidak berlaku untuk spiral model, dimana model ini dapat digunakan kembali sepanjang umur dari software tersebut. Pada umumnya, spiral model digunakan untuk beberapa project seperti Concept Development Project (proyek pengembangan konsep), New Product Development Project (proyek pengembangan produk baru), Product Enhancement Project (proyek peningkatan produk), dan Product Maintenance Project (proyek pemeliharaan proyek). Keempat project tersebut berjalan berurutan mengitari sirkuit dari spiral. Sebagai contoh setelah suatu konsep dikembangkan dengan melalui aktivitas2 dari spiral model, maka dilanjutkan dengan proyek selanjutnya yaitu pengembangan produk baru, peningkatan produk, sampai pemeliharaan proyek. Semuanya melalui sirkuit2 dari spiral model.
Mengapa spiral model begitu populer? Pendekatan dengan model ini sangat baik digunakan untuk pengembangan sistem software dengan skala besar. Karena progres perkembangan dari SE dapat dipantau oleh kedua belah pihak baik developer maupun user / customer, sehingga mereka dapat mengerti dengan baik mengenai software ini begitu juga dengan resiko yang mungkin didapat pada setiap aktivitas yang dilakukan. Selain dari kombinasi 2 buah model yaitu waterfall dan prototyping, kelebihan dari software ini ada pada analisis resiko yang dilakukan, sehingga resiko tersebut dapat direduksi sebelum menjadi suatu masalah besar yang dapat menghambat SE. Model ini membutuhkan konsiderasi langsung terhadap resiko teknis, sehingga diharapkan dapat mengurangi terjadinya resiko yang lebih besar. Sebenarnya dengan menggunakan prototype juga bisa menghindari terjadinya resiko yang muncul, tetapi kelebihan dari model ini yaitu dilakukannya proses prototyping untuk setiap tahap dari evolusi produk secara kontinu. Model ini melakukan tahap2 yang sudah sangat baik didefinisikan pada model waterfall dan ditambah dengan iterasi yang menyebabkan model ini lebih realistis untuk merefleksikan dunia nyata. Hal-hal itulah yang menjadi kelebihan menggunakan spiral model.
Meskipun banyak kelebihan tetapi tentu masih ada kekurangannya. Kekurangannya ada pada masalah pemikiran user / customer dimana mereka pada umumnya tidak