Kamis, 13 Oktober 2016

Tugas Rekayasa Perangkat Lunak 1


1. WATERFALL MODEL


     Model yang dikembangkan untuk pengembangan perangkat lunak, membuat perangkat  lunak. model berkembang secara sistematis dari satu tahap ke tahap lain dalam mode seperti air terjun. Model ini mengusulkan sebuah pendekatan kepada pengembangan software yang sistematikdan sekuensial yang mulai dari tingkat kemajuan sistem pada seluruh analisis, desain, kode, pengujian dan pemeliharaan. Rekayasa dan pemodelan sistem informasi, analisis kebutuhan, desain, koding, mengujian dan pemeliharaan. Model pengembangan ini bersifat linear dari tahap awal pengembangan system yaitu tahap perencanaan sampai tahap akhir pengembangan system yaitu tahap pemeliharaan. Tahapan berikutnya tidak akan dilaksanakan sebelum tahapan sebelumnya selesai dilaksanakan dan tidak bisa kembali atau mengulang ke tahap sebelumnya.


Diagram Waterfall Model :





Proses / Cara Kerja Waterfall Model
Cara kerja waterfall model dilakukan dengan berbagai macam tahapan yaitu :

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

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

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

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

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

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


 Waterfall Advantages :

       1). Merupakan model pengembangan paling handal dan paling lama digunakan.
       2). Cocok untuk system software berskala besar.
       3). Cocok untuk system software yang bersifat generic.
       4). Pengerjaan project system akan terjadwal dengan baik dan mudah dikontrol.


 Waterfall Disvantages :

1). Waktu pengembangan lama. hal ini dikarenakan input tahap berikutnya adalah output dari         tahap sebelumnya. Jika satu tahap waktunya molor, maka waktu keseluruhan pengembangan juga ikut molor.
2). Biaya juga mahal, hal ini juga dikarenakan waktu pengembangan yang lama.                         
3). Terkadang perangkat lunak yang dihasilkan tidak akan digunakan karena sudah tidak sesuai dengan requirement bisnis customer. hal ini juga dikarenakan waktu pengembangan yang lama. selain itu dikarenakan waterfall merupakan aliran yang linear, sehingga jika requirement berubah proses tidak dapat diulang lagi.
4). Karena tahap-tahapan pada waterfall tidak dapat berulang, maka model ini tidak cocok untuk pemodelan pengembangan sebuah proyek yang memiliki kompleksitas tinggi.
5). Meskipun waterfall memiliki banyak kelemahan yang dinilai cukup fatal, namun model ini  merupakan dasar bagi model-model lain yang dikembangkan setelahnya.



   2. PROTOTYPING

              Adalah bagian dari produk yang mengekspresikan logika maupun fisik antarmuka eksternal yang ditampilkan. Konsumen potensial menggunakan prototipe dan menyediakan masukan untuk tim pengembang sebelum pengembangan skal besar dimulai. Melihat dan mempercayai menjadi hal yang diharapkan untuk dicapai dalam prototipe. Dengan menggunakan pendekatan ini, konsumen dan tim pengembang dapat mengklarifikasi kebutuhan dan interpretasi merek.
               Prototyping perangkat lunak (software prototyping) atau siklus hidup menggunakan protoyping (life cycle using prototyping) adalah salah satu metode siklus hidup sistem yang didasarkan pada konsep model bekerja (working model). Tujuannya adalah mengembangkan model menjadi sistem final. Artinya sistem akan dikembangkan lebih cepat dari pada metode tradisional dan biayanya menjadi lebih rendah. Ada banyak cara untuk memprotoyping, begitu pula dengan penggunaannya. Ciri khas dari metodologi ini adalah pengembang sistem (system developer), klien, dan pengguna dapat melihat dan melakukan eksperimen dengan bagian dari sistem komputer dari sejak awal proses pengembangan.
              Dengan prototype yang terbuka, model sebuah sistem (atau bagiannya) dikembangkan secara cepat dan dipoles dalam diskusi yang berkali-kali dengan klien. Model tersebut menunjukkan kepada klien apa yang akan dilakukan oleh sistem, namun tidak didukung oleh rancangan desain struktur yang mendetil. Pada saat perancang dan klien melakukan percobaan dengan berbagai ide pada suatu model dan setuju dengan desain final, rancangan yang sesungguhnya dibuat tepat seperti model dengan kualitas yang lebih bagus.
              Protoyping membantu dalam menemukan kebutuhan di tahap awal pengembangan,terutama jika klien tidak yakin dimana masalah berasal. Selain itu protoyping juga berguna sebagai alat untuk mendesain dan memperbaiki user interface bagaimana sistem akan terlihat oleh orang-orang yang menggunakannya.

 Diagram Prototyping : 
                                              


 Proses/Cara Kerja Prototyping :

1). Pengumpulan kebutuhan, developer akan bertemu terlebih dahulu dan kemudian menentukan  tujuan umum, kebutuhan yang diketahui dan gambaran bagian-bagian yang akan dibutuhkan berikutnya.
2). Perancangan, dilakukan dengan cepat dan rancangan tersebut mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuata prototype.
3). Evaluasi prototyping, klien akan mengevaluasi prototype yang dibuat dan digunakan untuk memperjelas kebutuhan software.
  
 Prototyping Advantages :

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 system.
4). Lebih menghemat waktu dalam pengembangan system.
5). Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya.
6). Membuat klien mendapat gambaran awal dari prototype.
7) . Membantu mendapatkan kebutuhan detil lebih baik.


 Prototyping Disadvantages :

1). Pelanggan tidak paham bahwa perangkat lunak yang ada belum mencantumkan kualitas dan pemeliharaan untuk jangka waktu yang lama.
2). Pengembang biasanya ingin cepat menyelesaikan proyek sehingga menggunakan algoritma dan bahasa yang sederhana agar lebih cepat, tanpa memikirkan program tersebut merupakan blue print system.
3). Hubungan pelanggan dengan komputer yang disediakan tidak mencerminkan teknik perancangan yang baik.



   3. ITERATIVE DEVELOPMENT

         Merupakan metode pengembangan dari prototyping model dan digunakan ketika requitment dari software akan terus berkembang dalam tahapan-tahapan pengembangan aplikasi tersebut. Sedikit pengertian tentang requitment software dari developer yang diterapkan pada tahap pertama iterasi, akan mendapatkan tanggapan dari user. Ketika requitment menjadi jelas, tahapan iterasi selanjutnya akan dilaksanakan.


 Diagram Iterative Development

                             


 Proses / Cara kerja Iteravtive Development.

1). Mendefinisikan tujuan dan kebutuhan bisnis, mengembangkan desain konseptual, rancangan konsep, rencana pengujian, dan analis terhadap resiko dengan melibatkan pemakai.
2). Mendefinisikan kebutuhan sistem, mengembangkan desail logikal, mengkompilasi (software-build) rancangan awal, mengevaluasi hasil dengan melibatkan pemakai.
3). Mendefinisikan kebutuhan subsistem, menghasilkan desain fisikal, mengkompilasi rancangan berikutnya, mengevaluasi hasil dengan melibatkan pemakai.
4). Mendefinisikan kebutuhan setiap unit, menghasilkan desain akhir, mengkompilasi rancangan akhir.


 Iterative Development Advantages.
 
1). User dapat mencoba sistem yang sudah dikembangkan dan kemudian dapat memberikan masukkan keterlibatan user semakin intens dampak positif dalam pengembangan.
2). Prototype relatif lebih mudah dibangun dan tidak memerlukan waktu yang lama.
3). Dengan prototype, kesalahan & kelalaian dalam pengembangan dapat segera diketahui.


 Iterative Development Disadvantages.

1).  Setiap iterasi bergantung prototype sebelumnya solusi final umumnya terjadi apabila ada perbedaan yang nyata pada prototype sebelumnya.
2).  Formal end-of-phase mungkin tidak terjadi, karena sangat sulit menentukan scope dari suatu prototype, proyek tidak pernah selesai.
 3).  Dokumentasi seringkali tidak lengkap,fokus pada pembuatan prototype.
4).  Isu2 mengenai system backup & recovery, system performance dan system security, kurang/tidak diperhatikan dan sering terlupakan.



   4. RATIONAL UNIFIED PROCESS

       Suatu kerangka kerja proses pengembangan perangkat lunak iteratif yang dibuat oleh Rational Software, suatu divisi dari IBM sejak 2003. Rational Unified Processn bukanlah suatu proses tunggal dengan aturan yang konkrit, melainkan suatu kerangka proses yang dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh organisasi pengembang dan tim proyek perangkat lunak yang akan memilih elemen proses sesuai dengan kebutuhan mereka.
      Pada Rational Unified Process didefinisikan terdapat 4 fasa siklus proyek. Fasa-fasa ini memungkinkan untuk disajikan dalam bentuk umum mirip dengan pendekatan air terjun, walaupun esensi kunci dari proses terdapat dalam iterasi dalam setiap fasenya. Setiap fase memiliki sebuah objektif kunci dan titik pencapaian akhir yang menandakan ketercapaian objektif. Visualisasi dari fase Rational Unified Process berikut dengan sumbu waktu dinamakan sebagai grafik Rational Unified Process.


 Diagram Rational Unified Process

   


 Proses / Cara kerja Rational Unified Process

Ada dua jenis aliran kerja (workflow) pada RUP, yaitu aliran kerja utama dan aliran kerja    pendukung.

  Aliran Kerja Utama
  
      1. Pemodelan bisnis (business modeling)
          Mendeskripsikan struktur dan proses-proses bisnis organisasi.

      2. Kebutuhan (requirements)
          Mendefinisikan kebutuhan perangkat lunak dengan menggunakan metode use case.

      3. Analisis dan perancangan (analysis and design)
          Mendeskripsikan berbagai arsitektur perangkat lunak dari berbagai sudut pandang.

     4. Implementasi (implementation)
         Menulis kode-kode program, menguji, dan mengintegrasikan unit-unit programnya.

     5. Pengujian (testing)
         Mendeskripsikan kasus uji, prosedur, dan alat ukur pengujian.

     6. Deployment
         Menangani konfigurasi sistem yang akan diserahkan.


  Aliran Kerja Pendukung

     1. Manajemen konfigurasi dan perubahan(configuration and change management)
         Mengendalikan perubahan dan memelihara artifak-artifak proyek.

     2. Manajemen proyek (project management)
         Mendeskripsikan berbagai strategi pekerjaan dengan proses yang berulang.

     3. Lingkungan (environment)
         Menangani infrastruktur yang dibutuhkan untuk mengembangkan sistem.


 Rational Unified Process Advantages

1). Menyediakan akses yang mudah terhadap pengetahuan dasar bagi anggota tim.
2). Menyediakan petunjuk bagaimana menggunakan UML secara efektif.
3). Mendukung proses pengulangan dalam pengembangan software.
4). Memungkinkan adanya penambahan-penambahan pada proses.
5). Memungkinkan untuk secara sistematis mengontrol perubahan - perubahan yang terjadi    pada software selama proses pengembangannya.


 Rational Unified Process Disadvantages

1). Metodologi ini hanya dapat digunakan pada pengembangan perangkat lunak yang berorientasi     objek dengan berfokus pada UML (Unified Modeling Language).
2). Membutuhkan waktu yang cukup lama dibandingkan XP dan Scrum.

   

   5. TIMEBOXING MODEL

           Proses menunda fitur untuk versi aplikasi di masa mendatang untuk melengkapi versi saat ini sebagai ketepatan waktu.Ketepatan waktu merupakan aspek penting dari RAD, karena tanpa itu ruang lingkup dapat mengancam untuk memperpanjang iterasi pembangunan, sehingga membatasi umpan balik dari klien, meminimalkan manfaat dari pembangunan berulang, dan berpotensi mengembalikan proses kembali ke pendekatan metodologi air terjun. Timeboxing model dengan jenis kotak waktu, dapat menggunakan pipelining untuk mengurangi waktu siklus seperti pipelining hardware-view iterasi setiap instruksi sebagai tahap telah mendedikasikan tim, eksekusi simultan dari iterasi yang berbeda.


 Diagram Timeboxing Model



 Proses / Cara Kerja Timeboxing Model

       Timeboxing model menentukan jangka waktu tertentu yang dialokasikan untuk menyelesaikan berbagai macam tugas. Apabila waktu yang ditentukan tersebut selesai, maka pembangunan sistem akan pindah ke tugas berikutnya, dengan harapan bahwa sebagian besar dari critical work telah berhasil diselesaikan sebelum waktu keseluruhan berakhir.


 Advantages Timeboxing Model

1). Kecepatan model ini sampai proses pengerjaan dan dapat mempersingkat waktu pengiriman.
2). Model ini cocok untuk mengembangkan projek dengan beberapa fitur dalam waktu singkat.


 Disvantages Timeboxing Model

1). Managemen projek akan menjadi lebih kompleks
2). Tidak cocok untuk projek dimana seluruh pengerjaan tidak dapat dibagi menjadi beberapa iterations.


    
   6. EXTREME PROGAMMING & AGILE PROCESS

   EXTREME PROGAMMING

          Adalah salah satu metode pengembangan software yang termasuk dalam Agile Software Development. XP menggunakan pendekatan object-oriented. Dalam XP, terdapat 5 nilai yang menjadi pondasi yaitu communication, simplicity, feedback, courage, dan respect. Komunikasi yang efektif antara pengembang perangkat lunak dan pihak-pihak yang terlibat sangatlah penting. Dalam XP, desain dijadikan kebutuhan intermediate. Desain dibuat sesederhana mungkin agar mudah mengimplementasikan code. Disini dapat terjadi perubahan struktur desain atau perubahan source code tanpa mengubah fungsi utamanya (refactoring). Feedback akan diberikan saat peningkatan dan pengimplementasian perangkat lunak.


 Diagram Extreme Programming



 Proses / Cara kerja Extreme Programming

Berikut merupakan proses Extreme Programming menurut Pressman (2010):

Planning.
     Tahap planning dimulai dengan membuat user stories yangmenggambarkan output, fitur, dan fungsi-fungsi dari software yang akan dibuat. User stories tersebut kemudian diberikan bobot seperti prioritas dan dikelompokkan untuk selanjutnya dilakukan prosesdelivery secara incremental.

Design.
     Design di Extreme Programming mengikuti prinsip Keep It Simple (KIS). Untuk design yang sulit, Extreme Programming akan menggunaan Spike Solution dimana pembuatan design dibuat langsung ke tujuannya. Extreme Programming juga mendukung adanya refactoring dimana software system diubah sedemikian rupa dengan cara mengubah stuktur kode dan menyederhanakannya namun hasil dari kode tidak berubah.

Coding.
      Proses coding pada XP diawali dengan membangun serangkaian unittest. Setelah itu pengembang akan berfokus untukmengimplementasikannya. Dalam Extreme Programming diperkenalkan istilah Pair Programming dimana proses penulisan program dilakukan secara berpasangan. Dua orang programmersaling bekerjasama di satu komputer untuk menulis program. Denganmelakukan ini akan didapat real-time problem solving dan real-time quality assurance.

Testing.
      Tahap ini dilakukan pengujian kode pada unit test. Dalam Extreme Programming, diperkenalkan XP acceptance test atau biasa disebutcustomer test. Tes ini dilakukan oleh customer yang berfokus kepada fitur dan fungsi sistem secara keseluruhan. Acceptance test ini berasal dari user stories yang telah diimplementasikan.


 Advantages Extreme Programming

1). Menjalin komunikasi yang baik dengan klien. (planning phase)
2). Menurunkan biaya pengembangan. (implementation phase)
3). XP merupakan metodologi yang semi formal. (planning phase)
4). Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima atau dengan  kata lain fleksibel. (maintenace phase)


 Disadvantages Extreme Programming

1). Tidak bisa membuat kode yang detail diawal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga) XP juga memiliki keunggulan yang sekaligus menjadi kelemahannya yaitu XP tidak memiliki dekumentasi formal yang dibuat selama pengembangan. Satu satunya dokumentasi adalah dekumentasi awal yang dilakukan oleh user.

     
  
   AGILE PROCESS

       Merupakan sekelompok aktifitas pembangunan perangkat lunak secara iteratif yang menekankan pada aktifitas konstruksi (desain dan koding). Agile Processmengeliminasi sebagian besar waktu untuk melakukan perencanaan sistem dan berusaha sebisa mungkin mematuhi jadwal deliversistem yang telah dijanjikan. Requirements yang dibutuhkan secara langsung di-drive oleh pelanggan itu sendiri, dan apabila terjadi perubahan terhadap requirements tersebut, pengembang dituntut mampu beradaptasi dengan perubahan yang terjadi.

Agile Process terbagi menjadi beberapa bentuk, diantaranya adalah:

1). Adaptive Software Development (ASD)
2). Dynamic Systems Development Method (DSDM)3). Scrum
4). Crystal
5). Feature Driven Development (FDD)
6). Agile Modeling (AM)
7). Lean Software Development (LSD)
8). Agile Unified Process (AUP)

  
 Diagram Agile Process


  
 Proses / Cara kerja Agile Process

1). Perencanaan XP: pengumpulan user stories dari klien yang klien tetapkan prioritasnya. Setiap story ditetapkan harga dan lama pembangunan, jika terlalu besar, story dapat dipecah menjadi beberapa story yang lebih kecil. Periksa dan pertimbangkan resiko

2). Desain XP berprinsip: sederhana memanfaatkan kartu CRC (Class-Responsibility-Collaborator) untuk identifikasi dan mengatur class-class di konsep OO. Jika temui kesulitan, prototype dibangun (ini namanya spike solution). Lakukan refactoring, yaitu mengembangkan desain dari program setelah ditulis.

3). Pengkodean XP: siapkan unit test sebelum pengkodean dipakai sebagai fokus pemrogram untuk membuat program. Pair programming dilakukan untuk real time program solving dan real time quality assurance


Pengujian XP: menggunakan unit test yang dipersiapkan sebelum pengkodean.


 Advantages Agile Process

1). Meningkatkan kepuasan kepada klien.
2). Dapat melakukan review pelanggan mengenai software yang dibuat lebih awal.3). Pembangunan system dibuat lebih cepat.
4). Mengurangi resiko kegagalan implementasi software dari segi non-teknis.
5). Jika pada saat pembangunan system terjadi kegagalan kerugian dari segi materi relatif kecil.


 Disadvantages Agile Process
1). Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.2). Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
3). Tidak cocok dalam skala tim yang besar (>20 orang).
4). Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.









































Tidak ada komentar:

Posting Komentar