Jumat, 27 Maret 2015

LAPORAN PRAKTIKUM PBO


MODUL 3





Jatmiko Aji Nugroho
L200130002

Program Studi Informatika
Fakultas Komunikasi dan Informatika
Universitas Muhammadiyah Surakarta
2015

A.   TUJUAN
1.      Mahasiswa mampu memberikan nilai awal saat objek diciptakan.
2.      Mahasiswa mampu membuat konstruktor yang memiliki bentuk lebih dari satu.
B.     LANDASAN TEORI

1.      Konstruktor
Konstruktor adalah metode yang dapat digunakan untuk memberikan nilai awal saat objek diciptakan. Metode inin akan dipanggil secara otomatis oleh java ketika new dipakai untuk menciptakan objek dari suatu kelas.
Sifat – sifat konstruktor :
·         Namanya sama dengan kelas
·         Tidak memiliki nilai balik (termasuk tidak boleh ada kata kunci void)
2.      Overloading Konstruktor
Overloading terhadap konstruktor merupakan suatu mekanisme pembuatan konstruktor yang memiliki bentuk lebih dari satu. Dalam hal ini pembda antara satu konstruktor dengan konstruktor yang lain berupa jumlah parameter atau tipe parameter.
3.      Overloading Method
Overloading biasanya dipakai pada konstruktor, akan tetapi overloading juga dapat dikenakan pada metode non-konstruktor

C.    ALAT DAN BAHAN

·         Komputer
·         Netbeans
·         Modul praktikum Pemrograman Berorientasi Objek 


D.    PERCOBAAN PERTAMA

1.      Membuat kelas java dengan nama “Buku.java”
/**
 *
 * @author jatmiko
 */
public class Buku {
    String pengarang;
    String judul;
    int tahunTerbit;
   
    //membuat konstruktor
    public Buku(String pengarang, String judul){
        this.judul = judul;
        this.pengarang = pengarang;
    }//akhir konstruktor

    //membuat method
    public void infoBuku(){
        System.out.println("Judul Buku "+judul);
        System.out.println("pengarang "+pengarang);
        System.out.println("tahun terbit "+tahunTerbit);
        }
}
2.      Membuat kelas baru dengan nama “OverloadingKonstruktor.java”
/**
 *
 * @author jatmiko
 */
public class OverloadingKonstruktor {
    public static void main (String []args){
        Buku bukuku = new Buku("Jatmiko Aji Nugroho","Panduan Pintar Komputer");
        bukuku.infoBuku();
3.      Mengcompile progam diatas dan menjelaskan hasil dari progam tersebut

Analisa :
      Progam diatas menampilkan output judul buku, pengarang, dan tahun terbit dari kelas “OverLoadingKonstruktor.java”. Karena pada konstruktor awal tidak terdapat parameter untuk memasukkan tahun terbit maka output pada tahun terbit berisi 0.



        E. PERCOBAAN KEDUA
1.      Mengedit file “Buku.java” dengan menambahkan kode konstruktor overloading
/**
 *
 * @author jatmiko
 */
public class Buku {
    String pengarang;
    String judul;
    int tahunTerbit;
   
    //membuat konstruktor
    public Buku(String pengarang, String judul){
        this.judul = judul;
        this.pengarang = pengarang;
    }//akhir konstruktor

    //membuat overloading konstruktor
    public Buku (String pengarang, String judul, int tahunTerbit){
        this.pengarang = pengarang;
        this.judul = judul;
        this.tahunTerbit = tahunTerbit;
       }
   
    //membuat method
    public void infoBuku(){
        System.out.println("Judul Buku "+judul);
        System.out.println("pengarang "+pengarang);
        System.out.println("tahun terbit "+tahunTerbit);
        }
}
2.      Mengedit kelas “OverloadingKonstruktor.java” dan menambahkan kode berikut
                  /**
 *
 * @author jatmiko
 */
public class OverloadingKonstruktor {
    public static void main (String []args){
        Buku bukuku = new Buku("Jatmiko Aji Nugroho","Panduan Pintar Komputer");
        Buku bukumu = new Buku("Jatmiko Aji Nugroho","Panduan Pintar Komputer",2009);
        bukuku.infoBuku();
        bukumu.infoBuku();
                     }
          }
3.      Mengcompile progam diatas dan menjelaskan hasil progam tersebut

Analisa :
      Progam diatas menampilkan 2 output. Output pertama tidak terdapat tahun terbit. Output kedua terdapat tahun terbit karena pada file “Buku.java” telah diisikan overloading untuk parameter tahun terbit dan pada kelas “OverloadingKonstruktor.java” pada tahun terbit diinputkan 2009.


         F.   PERCOBAAN KETIGA
1.      Membuat kelas baru dengan nama “Matematika.java”
                  /**
 *
 * @author jatmiko
 */
public class Matematika {
    static public double kuadrat (double nilai){
        return nilai*nilai;
    }
    static public int kuadrat (int nilai){
        return nilai*nilai;
    }
    static public double kuadrat (String nilai){
        double bilangan;
        bilangan = Double.valueOf(nilai).doubleValue();
        return bilangan*bilangan;
       
    }
}
2.      Membuat kelas baru dengan nama “OverLoadingMethod.java”
                  /**
 *
 * @author jatmiko
 */
public class OverloadingMethod {
    public static void main (String[]args){
        System.out.println("Nilai Kuadrat dari tipe data double "
                                        +Matematika.kuadrat(20));
        System.out.println("Nilai Kuadrat dari tipe data interger "
                                        +Matematika.kuadrat(20));
        System.out.println("Nilai Kuadrat dari tipe data String "
                                        +Matematika.kuadrat(20));
    }
}
3.      Mengcompile progam diatas dan menjelaskan hasilnya

Analisa :
      Progam diatas menampilkan output hasil kuadrat dari nilai yang di inputkan pada kelas “OverloadingMethod.java”.


      TUGAS

1.      Mengedit kelas “Buku.java” dan kelas “OverloadingKonstruktor.java”


            Kelas Buku.java
            /**
 *
 * @author jatmiko
 */
public class Buku {
    String pengarang;
    String judul;
    int tahunTerbit;
   
    //membuat konstruktor
    public Buku(String pengarang, String judul){
        this.judul = judul;
        this.pengarang = pengarang;
    }
    public Buku(String pengarang){
        this.pengarang = pengarang;
    }
    public Buku(String judul,int tahunTerbit){
        this.judul = judul;
        this.tahunTerbit = tahunTerbit;
    }//akhir konstruktor
    //membuat overloading konstruktor
    public Buku (String pengarang, String judul, int tahunTerbit){
        this.pengarang = pengarang;
        this.judul = judul;
        this.tahunTerbit = tahunTerbit;
       }
   
    //membuat method
    public void infoBuku(){
        System.out.println("Judul Buku "+judul);
        System.out.println("pengarang "+pengarang);
        System.out.println("tahun terbit "+tahunTerbit);
        }
}


Kelas OverloadingKonstruktor.java
/**
 *
 * @author jatmiko
 */
public class OverloadingKonstruktor {
    public static void main (String []args){
        Buku bukuku = new Buku("Jatmiko Aji Nugroho","Panduan Pintar Komputer");
        Buku bukumu = new Buku("Jatmiko Aji Nugroho","Panduan Pintar                                                                                                        Komputer",2009);
        Buku bukuki = new Buku("Panduan Pintar Komputer");
        Buku bukumi = new Buku ("Panduan Pintar Komputer",2009);
        System.out.println("Buku Ku");
        bukuku.infoBuku();
        System.out.println();
        System.out.println("Buku Mu");
        bukumu.infoBuku();
        System.out.println();
        System.out.println("Buku Kita");
        bukuki.infoBuku();
        System.out.println();
        System.out.println("Buku Kami");
        bukumi.infoBuku();
       }
}

Output




             Analisa :
Progam diatas menampilkan 4 output yang berbeda-beda. Apabila ada salah satu data yang tidak diisi contohnya judul buku dan pengarang maka outputnya berupa null. Apabila tahun terbitnya tidak diisi maka outputnya berupa angka 0.






     



Senin, 23 Maret 2015

ITERASI PROSES
A.  Pengertian
Iterasi adalah model pengembangan system yang bersifat dinamis dalam artian setiap tahapan proses pengembangan system dapat diulang jika terdapat kekurangan atau kesalahan. Setiap tahapan pengembangan system dapat dikerjakan berupa ringkasan dan tidak lengkap, namun pada akhir pengembangan akan didapatkan system yang lengkap pada pengembangan system. Model Iterasi digambarkan sebagai berikut :

B.      Kelebihan dan Kelemahan Model Iterasi
Kelebihan Model Iterasi :

  • Dapat mengakomodasi jika terjadi perubahan pada tahapan pengembangan yang telah dilaksanakan.
  •  Dapat disesuaikan agar system bisa dipakai selama hidup software computer.
  •  Cocok untuk pengembangan sistem dan perangkat lunak skala besar.
  • Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tahapan karena system terus bekerja selama proses.
Kekurangan Model Iterasi :

  • Hanya berlaku untuk Short-Lifetime system.
  • Tahapan proses tidak terlihat sedang berada ditahapan mana suatu pekerjaan.
  • Memerlukan alat ukur kemajuan secara regular.
  • Perubahan yang sering terjadi dapat merubah struktur system.
  • Memerlukan tenaga ahli dengan kemampuan tinggi.
Terdapat dua jenis Model Iterasi, yaitu :

  1. Model Incremental, merupakan model pengembangan system yang dipecah sehingga model pengembangannya secara increment/bertahap. Kebutuhan pengguna diprioritaskan dan prioritas tertinggi dimasukkan dalam awal increment.
Tahapan Incremental Model :

  • Requirement
  • Specification
  • Architecture

DesignTahapan-tahapan tersebut dilakukan secara berurutan. Setiap bagian yang sudah selesai dilakukan testing, dikirim ke pemakai untuk langsung dapat digunakan.

Model ini menerapkan sistem kerja yang paralel. Setelah daftar kebutuhan didapatkan dari pemakai, tim spesifikasi membuat spesifikasi untuk modul pertama. Setelah spesifikasi pertama selesai, tim desain menindak lanjuti. Tim spesifikasi sebelumnya juga langsung membuat spesifikasi untuk model kedua, dan seterusnya.

Kelebihan dan Kekurangan Model Incremental
Kelebihan Model Incremental :

  • Penambahan kemampuan fungsional akan lebih mudah diuji, diverifikasi, dan divalidasi dandapat menurunkan biaya yang dikeluarkan untuk memperbaiki system.
  • Nilai penggunaan dapat ditentukan pada setiap increament sehingga fungsionalitas sistemdisediakan lebih awal
  • Increment awal berupa prototype untuk membantu memahami kebutuhan pada incrementberikutnya.
  • Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem.
  • Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji

Kekurangan Model Incremental


  • Tiap bagian tidak dapat diintegrasikan
  • Setiap tambahan yang dibangun harus dimasukkan kedalam struktur yang ada tanpamenurunkan kualitas dari yang telah dibangun system tersebut sampai saat ini.
  • Penambahan staf dilakukan jika hasil incremental akan dikembangkan lebih lanjut

Model Incremental digambarkan sebagai berikut :


2.             Model Spiral,
merupakan model pengembangan system yang digambarkan berupa spiral. Model spiral ini tidak merepresentasikan rangkaian tahapan dengan penelusuran balik (back-tracking), tidak ada fase-fase tahapan yang tetap seperti spesifikasi atau perancangan. Setiap untaian pada pada spiral menunjukkan fase software process. Model ini merupakan perbaikan dari model waterfall dan prototype. Mengabungkan keuntungan model air terjun dan prototype dan memasukkan analissis resiko
Beberapa hal yang dilakukan dalam Model Spiral :
1.      Mendefinisikan kebutuhan dengan sedetail mungkin
2.      Pembuatan desain untuk sistem yang baru
3.      Pembuatan prototipe dari pembuatan desain, pembuatan prototipe selanjutnya berdasarkan evaluasi prototipe sebelumnya
4.      Proses prototipe dilakukan berulang-ulang sampai customer puas
5.      Sistem dibuat berdasarkan prototipe yang memuaskan customer
6.      Sistem di tes dan dievaluasi

Kelebihan dan Kekurangan Model Spiral :
          Kelebihan Model Spiral :
1.      Dapat digunakan untuk sistem yang besar
2.      Sangat cocok sebagai mekanisme mengurangi resiko
Kelemahan Model Spiral :
1.      Terlalu banyak memikirkan resiko yang akan terjadi
2.      Masih jarang digunakan
3.      Metode ini lambat dan mahal karena setiap tahapan yang dilalui harus menikutsertakan pemesan
Model Spiral ini digambarkan sebagai berikut :

·     
  •  
  •  
  •  
  •  

















RUP (RATIONAL UNIFIED PROCESS)

Singkatan dari "Rational Unified Process." RUP adalah proses pengembangan perangkat lunak dari Rasional, sebuah divisi dari IBM. Ini membagi proses pembangunan menjadi empat tahap yang berbeda yang masing-masing melibatkan pemodelan bisnis, analisis dan desain, implementasi, pengujian, dan penyebaran.Keempat fase tersebut adalah:
  1. Inception - Ide untuk proyek dinyatakan. Tim pengembangan menentukan apakah proyek tersebut layak mengejar dan apa sumber daya yang akan dibutuhkan.
  2. Elaborasi - Arsitektur proyek dan diperlukan sumber daya dievaluasi lebih lanjut. Pengembang mempertimbangkan kemungkinan aplikasi perangkat lunak dan biaya yang terkait dengan pembangunan.
  3. Konstruksi - Proyek ini dikembangkan dan diselesaikan. Software ini dirancang, ditulis, dan diuji.
  4. Transisi - Perangkat lunak ini dirilis ke publik. Penyesuaian akhir atau update yang dibuat berdasarkan masukan dari pengguna akhir .
Metodologi pengembangan RUP menyediakan cara yang terstruktur bagi perusahaan untuk membayangkan membuat program perangkat lunak. Karena memberikan rencana khusus untuk setiap langkah dari proses pembangunan, membantu mencegah sumber daya dari yang terbuang dan mengurangi biaya pengembangan yang tak terduga.

CASE (Computer Aided Software Engineering)


Dalam software engineering telah dikenal banyak tools (computer-base system) yang dikenal dengan Computer-Aided Software Engineering (CASE).CASE merupakan suatu teknik yang digunakan untuk membantu satu atau beberapa fase dalam life-cycle software, termasuk fase analisis, desain, implementasi dan maintenance dari software tersebut. Manfaat CASE tools dalam software engineer adalah sebagai berikut:
1.      CASE tools memperbesar kemungkinan otomatisasi pada setiap fase life-cycle software.
2.   CASE tools sangat membantu dalam meningkatkan kualitas design model suatu software sebelum software itu dibangun/dikembangkan, baik itu untuk software yang dibangun dalam simple maupun complex environment.

Ada banyak tools yang mendukung pembangunan/pengembangan suatu software. Agar tidak membingungkan, CASE tools dibagi menjadi beberapa kategori:
1.      Information engineering-supporting products. Ada beberapa proses dari life-cycle, yang dihasilkan dari rencana strategis dari perusahaan dan yang menyediakan suatu repository untuk membuat dan memelihara enterprise models, data models dan process models.
2.  Structured diagramming-supporting products. Produk ini sangat mendukung dalam memodelkan data flow, control flow dan entity flow.
3.     structured development aids-providing products. Merupakan produk yang cocok digunakan oleh sistem analis, karena didukung oleh suatu proses terstruktur sehingga penganalisaan lebih cepat dan akurat.
4.    Application-code-generating products. Produk ini mampu menghasilkan application-code untuk tujuan tertentu yang telah ditetapkan oleh designer.

CASE tools diklasifikasikan sebagai berikut:
1.  Upper CASE. CASE tools yang didesain untuk mendukung perencanaan, identifikasi, dan seleksi proyek (permulaan dari perencanaan proyek), tepatnya pada fase analisis dan desain dari suatu system development life cycle (SDLC). Tools yang termasuk kelas ini adalah jenis Diagramming tools, Form and report generators, dan Analysis tools. Contoh CASE tools: Cradle, PRO-IV Workbench, ProKit*WORKBENCH.

2.      Lower CASE. CASE tools yang didesain untuk mendukung tahap implementasi dan maintenance dari SDLC. Tools yang termasuk kelas ini adalah jenis Code generators. Contoh CASE tools: Level/l-User Sensitive CASE, PRO-IV application Development.
3.      Cross life-cycle CASE/Integrated CASE (I-CASE). CASE tools yang dirancang untuk mendukung aktifikas-aktifitas yang terjadi pada beberapa fase dari SDLC. Mengkombinasikan Upper dan Lower CASE menjadi satu. Tools yang termasuk kelas ini adalah jenis Project management tools. Contoh CASE tools: Rational Rose, Poseidon, ArgoUML, Catalyze, in-Step, Juggler, PRINCE.
Fase yang didukung oleh Lower and upper CASE tools diperlihatkan dalam model Waterfall seperti gambar di bawah:
Hal yang melatarbelakangi munculnya CASE tools adalah: karena selama ini para software engineer hanya melakukan pembuatan perangkat lunak untuk mengoptimalkan pekerjaan orang lain. Sedangkan software engineer itu sendiri dalam aktifitasnya belum sepenuhnya terotomatisasi. Sehingga muncullah CASE tools untuk membantu para software engineer tersebut.
Computer Aided Software Engineering (CASE) merupakan kategori S/W yang bertujuan mengalihkan sebagian beban kerja pengembangan sistem dari manusia ke komputer. Ada 4 kategori :
·         Peralatan CASE tingkat atas : dapat digunakan oleh eksekutif perusahaan dalam perancangan strategis; contoh : IEW/Planning Work Station dari Knowledge Ware dan Develop-Mate dari IBM.
·         Peralatan CASE tingkat menengah dapat digunakan selama tahap analisis dan rancangan untuk mendokumentasikan proses dan data dari sistem yang telah ada atau baru. Contoh: Visible Analyst dari Visible System dan Excelator dari Index Technology.
·         Peralatan CASE tingkat bawah digunakan selama tahap penerapan dan penggunaan untuk membantu programmer, mengembangkan, menguji, dan menjaga kode. Contoh yang popular Telon dari Pansophic Systems yang menghasilkan COBOL atau kode PL/I.
·         Peralatan CASE integrasi menawarkan cakupan integrasi dari peralatan CASE tingkat atas, menengah, dan bawah. Contoh: Design-1, dari Anderson Consulting dan In CASE dari EOS.

Keuntungan teknologi CASE adalah sebagai berikut :
1.      Perbaikan produktivitas.
2.      Perbaikan kualitas program.
3.      Penghematan biaya
4.      Perbaikan prosedur pengendalian
5.      Penyederhanaan dokumentasi

Beberapa masalah yang ada dalam teknologi CASE adalah sebagai  berikut : 

  1. Tidak kompatibel
  2. Biaya
  3.  Harapan yang tidak terpenuhi

Dalam menggunakan suatu CASE tools, ada beberapa tahapan yang harus dilakukan terlebih dahulu. Diantaranya:
1.      Lakukan studi terhadap teknologi yang ada agar kita bisa mempersiapkan dampak perubahan teknologi yang akan terjadi nantinya, sehingga model yang dibangun nantinya bisa fleksibel terhadap perubahan.
2.      Evaluasi bagaimana jika organisasi yang sudah ada harus dibangun ulang agar bisa mengambil keuntungan dari teknologi baru.
3.      Tetapkan suatu ketentuan untuk mengganti sistem yang lama dengan teknologi baru yang paling efektif.
4.      Tentukan suatu metodologi pembangunan sistem.
Setelah melakukan tahapan-tahapan tersebut, barulah kita bisa menentukan CASE tools yang akan dipakai, misalnya : Poseidon for UML  atau ArgoUML.

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.
AGILE SOFTWARE DEVELOPMENT
Agile merupakan adalah jenis pegembangan sistem jangka pendek yang memerlukan adaptasi cepat dan pengembang terhadap perubahan dalam bentuk apapun. Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana. Agile juga dapat diartikan sebagai sekelompok metodologi pengembangan software yang didasarkan pada prinsip-prinsip yang sama atau pengembangan system jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun. Menurut Agile Alliance, ada 12 prinsip yang mendorong keberhasilan dalam penerapan Agile Software Development, yaitu:
  • Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
  • Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
  • Penyerahan hasil/software dalam hitungan waktu beberapa minggu sampai beberapa bulan.
  • Pihak bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan berjalan.
  • Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukun dan yang dipercaya untuk dapat menyelesaikan proyek.
  • Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien
  • Software yang berfungsi adalah ukuran utama dari kemajuan proyek
  • Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan
  • Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
  • Kesederhanaan penting
  • Arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri
  • Secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.
Kelebihan dari Agile Software Development yaitu:
  • Meningkatkan kepuasan kepada klien
  • Pembangunan system dibuat lebih cepat
  • Mengurangi resiko kegagalan implementasi software dari segi non-teknis
  • Jika pada saat pembangunan system terjadi kegagalan,kerugian dar segi materi relative kecil.
Berikut beberapa model proses yang terdapat pada model Proses Agile :
a. Extreme Programming (XP)
Dipublikasikan oleh Kenn Beck pada tahun 1999 dengan menggunakan pendekatan OOP (Object Oriented Programming), terdiri dari aktivitas perencanaan, aktivitas desain, aktivitas pengkodean dan aktivitas pengujian. Skemanya adalah sebagai berikut :
Hasil gambar untuk Extreme Programming (XP)

Konsep Agile – Extreme Programming (XP)
b. Adaptive Software Development (ASD)
Di usulkan oleh Jim Highsmith sebagai tehnik untuk membangun software dan sistem yang komplek, filosofi dari ASD adalah kolaborasi manusia dan tim yang mengatur diri sendiri, aktivitas pada proses ASD adalah speculation, collaboration & learning. Skemanya adalah sebagai berikut:

Konsep Agile – Adaptive Software Development (ASD)
c. Dinamic System Development Method
Menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan. Aktifitas pada DInamic System development method adalah Feasibility Study, Business Study, Functional Model Iteration, Desain & Build iteration, Implementation, skema dari model ini adalah sebagai berikut :

Konsep Agile – Dinamic System Development
d. SCRUM
Diperkenalkan oleh Jeff Sutherland tahun awal tahun 1990-an, Pengembangan berikutnya dilakukan oleh Schwaber dan Beedle, Scrum memiliki prinsip:
  • ukuran tim yang kecil melancarkan komunikasi, mengurangi biaya, dan emberdayakan satu sama lain
  • proses dapat beradaptasi terhadap perubahan teknis dan bisnis
  • proses menghasilkan beberapa software increment
  • pembangunan dan orang yang membangun dibagi dalam tim yang kecil
  • dokumentasi dan pengujian terus menerus dilakukan setelah software dibangun
  • proses scrum mampu menyatakan bahwa produk selesai kapanpun diperlukan
pada metode SCRUM terdapat aktivitas yang dijalankan sebagai berikut: Backlog, Sprints, Scrum Meetings, Demo. Skema dari SCRUM adalah sebagai berikut:

Konsep Agile – SCRUM
e. Agile Modelling
AM adalah suatu metodologi yang praktis untuk dokumentasi dan pemodelan sistem software. AM adalah kumpulan nilai-nilai, prinsip dan praktek-praktek untuk memodelkan software agar dapat diaplikasian pada software development proyek secara efektif. Prinsip dalam Agile Modelling adalah sebagai berikut:
  • membuat model dengan tujuan
  • mengunakan multiple models
  • travel light
  • isi lebih penting dari pada penampilan
  • memahami model dan alat yang yang digunakan untuk membuat software
  • adaptasi secara lokal
skema dari agile modeling adalah sebagai berikut :
Sumber :
http://dinyistyanto.blogspot.com/2014/04/4-metodologi-pengembangan-software.html
 http://kamarujung.blogspot.com/2013/04/iterasi.html
http://lutfie-nanda.blogspot.com/2012/04/case-computer-aided-software.html
Buku Software Engineering by Roger S. Pressman http://en.wikipedia.org/wiki/Waterfall_model