Selasa, 21 Februari 2017

Metode Build and Fix

Model Build & Fix
Build & Fix Method merupakan metode yang paling lemah diantara metode SDLC yang lain tetapi menjadi acuan pengembangan untuk metode SDLC yang lain. Build & fix bertujuan untuk memberikan kepercayaan terhadap pelanggan dengan cara memberikan pelayanan perbaikan dan perawatan secara terus menerus terhadap produk yang digunakan oleh user.






Langkah – Langkah dalam Build & Fix Method:

Functional Desain, dalam tahap ini seorang developer membuat perancangan fungsi terhadap sistem yang akan dibuatnya.

Technical Desain, dalam tahap ini seorang developer membuat perancangan teknis terhadap sistem yang akan dibu   Implementation, dalam tahap ini developer melaksanakan dan membuat produk berdasarkan rencana rancangan design yang telah ditetapkan sebelumnya.

Deployment, dalam fase ini developer meluncurkan / memasarkan.

Usage, Dalam fase ini user / konsumen diibaratkan sebagai user sekaligus tester yang jika ada kekurangan dalam sistem dapat di report ke developer.

Problem, Adalah masalah atau kekurangan dalam sistem

Bug Report, adalah tindakan melaporkan bug / kekurangan dalam sistem.

Vendor Evaluation, dalam tahap ini Developer melakukan pengecekan atau evaluasi terhadap sistem yang telah dibuat.

Fix, adalah tindakan memperbaiki sistem yang memiliki kerusakan (bug)

Upgrade, adalah proses memperbaharui atau memperbaiki sistem yang rusak.
MODEL PROTOTYPING
Prototyping adalah proses iterative dalam pengembangan sistem dimana requirement diubah ke dalam sistem yang bekerja (working system) yang secara terus menerus diperbaiki melalui kerjasama antara user dan analis. Prototype juga bisa dibangun melalui beberapa tool pengembangan untuk menyederhanakan proses.




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.
Tahapan-tahapan Model Prototyping:
  1. Pengumpulan KebutuhanPelanggan dan pengembang bersama-sama mendefinisikan format seluruh perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat.
  1. Membangun PrototypingMembangun prototyping dengan membuat perancangan sementara yang berfokus pada penyajian kepada pelanggan (misalnya dengan membuat input dan format output).
  1. Menggunakan Sistem : Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginann pelanggan.
  1. Mengkodekan Sistem : Dalam tahap ini prototyping yang sudah di sepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai.
  1. 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.
  1. Evaluasi Sistem : Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan.
  1. Evaluasi Prototyping : Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk digunakan.

Kelebihan dan Kekurangan
  1. Kelebihan
  •      Prototype melibatkan user dalam analisa dan desain.
  •      Punya kemampuan menangkap requirement secara konkret.
  •      Digunakan untuk memperluas SDLC.


  1. Kekurangan
  •      Proses analisis dan perancangan terlalu singkat.
  •      Mengesampingkan alternatif pemecahan masalah.
  •      Bisanya kurang fleksible dalam mengahdapi perubahan.
  •      Protitype yang dihasilkan tidak selamanya mudah dirubah dan cepat selesai.

Metode Extreme Programming

 Model Extreme Programming (Agile)
        Agile methods adalah salah satu dari beberapa metode yang digunakan dalam pengembangan sooftware. Agile method 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 Method juga dapat diartikan 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. Metode ini jg merupakan membuang beberapa tahapan yang tidak mempunyai nilai/value dan menekankan pada pengembangan sederhana dan iterative/berulang. 


Extreme Programming (XP)

    Proyek Pemrograman Extreme pertama dimulai 6 Maret 1996. Extreme Programming adalah salah satu dari beberapa Proses Agile populer. Sudah terbukti sangat sukses di banyak perusahaan dari berbagai ukuran dan industri di seluruh dunia.

   Extreme Pemrograman berhasil karena menekankan kepuasan pelanggan. Alih-alih memberikan semua yang anda mungkin inginkan pada tanggal beberapa jauh di masa depan proses ini memberikan perangkat lunak yang Anda butuhkan saat Anda membutuhkannya. Extreme Pemrograman memberdayakan pengembang Anda untuk percaya diri menanggapi perubahan kebutuhan pelanggan, bahkan terlambat dalam siklus hidup.

  Extreme Pemrograman menekankan kerja sama tim. Pengelola, pelanggan, dan pengembang semua mitra setara dalam sebuah tim kolaboratif. Extreme Pemrograman menerapkan, sederhana namun efektif yang memungkinkan tim lingkungan menjadi sangat produktif. Tim mengorganisir diri mengatasi masalah untuk menyelesaikannya seefisien mungkin.

     Extreme Pemrograman meningkatkan proyek perangkat lunak dalam lima cara penting; komunikasi, kesederhanaan, umpan balik, rasa hormat, dan keberanian. Extreme Programmer selalu berkomunikasi dengan pelanggan mereka dan programer sesama. Mereka terus desain mereka yang sederhana dan bersih. Mereka mendapatkan umpan balik dengan menguji perangkat lunak mereka dimulai pada hari pertama. Mereka memberikan sistem ke pelanggan sebagai perubahan sedini mungkin dan melaksanakan seperti yang disarankan. Setiap keberhasilan kecil memperdalam rasa hormat mereka atas kontribusi yang unik dari masing-masing dan setiap anggota tim. Dengan dasar Extreme pemrogram dapat berani merespon perubahan kebutuhan dan teknologi.
    Aspek yang paling mengejutkan dari Extreme Programming adalah aturan sederhana. Extreme Pemrograman sangat mirip jig gergaji teka-teki. Ada banyak potongan-potongan kecil. 
    Extreme Programming adalah metode pengembangan perangkat lunak yang ringan dan termasuk salah satu agile methods yang dipelopori oleh Kent Beck, Ron Jeffries, dan Ward Cunningham. Extreme Programming merupakan agile methods yang paling banyak digunakan dan menjadi sebuah pendekatan yang sangat terkenal. Sasaran Extreme Programming adalah tim yang dibentuk berukuran antara kecil sampai medium saja, tidak perlu menggunakan sebuah tim yang besar. Hal ini dimaksudkan untuk menghadapi requirements yang tidak jelas maupun terjadinya perubahan-perubahan requirements yang sangat cepat.
    Extreme Programming sebagai sebuah metode yang dinamis diperlihatkan dalam empat values yang dimilikinya dan keempatnya merupakan dasar-dasar yang diperlukan dalam Extreme Programming. Kent Beck menyatakan bahwa tujuan jangka pendek individu sering berbenturan dengan tujuan sosial jangka panjang. Karena itu dibuatlah values yang menjadi aturan, hukuman, dan juga penghargaan. Keempat values tersebut adalah :
1. Komunikasi (Communication)
  Tugas utama developer dalam membangun suatu sistem perangkat lunak adalah mengkomunikasikan kebutuhan sistem kepada pengembang perangkat lunak. Komunikasi dalam Extreme Programmning dibangun dengan melakukan pemrograman berpasangan (pair programming). Developer didampingi oleh pihak klien dalam melakukan coding dan unit testing sehingga klien bisa terlibat langsung dalam pemrograman sambil berkomunikasi dengan developer. Tujuannya untuk memberikan pandangan pengembang sesuai dengan pandangan pengguna sistem.
2. Kesederhanaan (Simplicity)
XP mencoba untuk mencari solusi paling sederhana dan praktis. Perbedaan metode ini dengan metodologi pengembangan sistem konvensional lainnya terletak pada proses desain dan coding yang terfokus pada kebutuhan saat ini daripada kebutuhan besok, seminggu lagi atau sebulan lagi. Lebih baik melakukan hal yang sederhana dan mengembangkannya besok jika diperlukan.
3. Umpan Balik (Feedback)
Hal ini diperlukan untuk mengetahui kemajuan dari proses dan kualitas dari aplikasi yang dibangun. Informasi ini harus dikumpulkan setiap interval waktu yang singkat secara konsisten. Ini dimaksudkan agar hal-hal yang menjadi masalah dalam proses pengembangan dapat diketahui sedini mungkin. Setiap feed back ditanggapi dengan melakukan tes, unit test atau system integration dan jangan menunda karena biaya akan membengkak (uang, tenaga, waktu).
4. Keberanian (Courage)
Berani mencoba ide baru. Berani mengerjakan kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki. Contoh dari courage adalah komitmen untuk selalu melakukan design dan coding untuk saat ini dan bukan untuk esok. Ketika ada kode yang terlalu rumit, sulit dibaca dan dipahami, tidak sesuai dengan kemauan pelanggan, dll maka seharusnya kode program seperti itu di refactor (kalau perlu dibangun ulang). Hal ini menjadikan pengembang merasa nyaman dengan refactoringprogram ketika diperlukan.
Extreme Programming menggunakan pendekatan berorientasi objek. Pada aktifitas Perencanaan terjadi 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. Terjadi pemeriksaan dan pertimbangkan resiko dan aktifitas Desain kegiatannya sederhana yaitu memanfaatkan kartu CRC (Class-Responsibility-Collaborator) untuk identifikasi dan mengatur class-class di konsep OO. Jika temuikan kesulitan, prototype dibangun [ini namanya spike solution].
Dilakukannya refactoring, yaitu mengembangkan desain dari program setelah ditulis. Pada aktifitas Pengkodean adalah penyiapan unit test sebelum pengkodean dipakai sebagai focus pemrogram untuk membuat program. Pair programming dilakukan untuk real time program solving dan real time quality assurance. Proses pengujiannya menggunakan unit test yang dipersiapkan sebelum pengkodean Menggunakan pendekatan berorientasi objek.

Keuntungan dan Kerugian

Keuntungan Extreme Programmning:

Menjalin komunikasi yang baik dengan client. Meningkatkan komunikasi dan sifat saling menghargai antar developer.

Kerugian Extreme Programmning:

Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima. Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).

Metode Iterative

Model Iterative (Perulangan)

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

Beberapa tipe dari Iterative Model di antaranya :
A. Spiral Model
Dikembangkan dari sifat iterative prototyping model dan sifat linier waterfall model. Merupakan model yang ideal bagi software yang memiliki bermacam jenis.
Dalam tiap iterasinya, proses software development mengikuti tahap-tahap fase linier, dan dalam akhir tiap fasenya, user mengevaluasi software tesrebut dan memberikan feed back. Proses iterasi berlangsung terus dalam pengembangan software tersebut.

B. Win Win Spiral Model
Dalam win win spiral model yang merupakan ekstensi dari spiral model, tim pengembang dan pelanggan akan melakukan diskusi dan negosiasi terhadap requirement-nya. Disebut win win karena merupakan situasi kemenangan antara tim pengembang dan pelanggan. Yang membedakan antara win win spiral model dan spiral model adalah setelah selesai mendapatkan feed back dari pelanggan, tim pengembang aplikasi dan pelanggan akan kembali melakukan negosiasi untuk perkembangan aplikasi tersebut.

C. Component Based Development Model
Dalam metode component based development ini, menitik beratkan pada penggunaan kembali dari komponen-komponen yang dibangun dalam sebuah aplikasi. Komponen di sini, dapat berupa fungsi tertentu atau sebuah kelompok yang berhubungan
dengan fungsi tertentu.

Metode Spiral

Model Spiral


Model spiral pada awalnya diusulkan oleh Boehm, adalah model proses perangkat lunak evolusioner yang merangkai sifat iteratif dari prototype dengan cara kontrol dan aspek sistematis model sequensial linier. Model iteratif ditandai dengan tingkah laku yang memungkinkan pengembang mengembangkan versi perangkat lunak yang lebih lengkap secara bertahap.



Tahapan-tahapan Model Spiral
1.       Komunikasi Pelanggan
Yaitu tugas-tugas untuk membangun komunikasi antara pelanggan dan kebutuhan- kebutuhan yang diinginkan oleh pelanggan.
2.       Perencanaan
Yaitu tugas-tugas untuk mendefinisikan sumber daya, ketepatan waktu, dan proyek informasi lain yg berhubungan.
3.       Analisis Resiko
Yaitu tugas-tugas yang dibutuhkan untuk menaksir resikomanajemen dan teknis.
4.       Perekayasaan
Yaitu tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari apikasi tersebut.
5.       Konstruksi dan Peluncuran
Yaitu tugas-tugas yang dibutuhkan untuk mengkonstruksi, menguji, memasang, dan memberi pelayanan kepada pemakai.
6.       Evaluasi Pelanggan
Yaitu tugas-tugas untuk mendapatkan umpan balik dari pelanggan.

Kelebihan dan Kekurangan
1.       Kelebihan
  •   Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak komputer.
  •   Lebih cocok untuk pengembangan sistem dan perangkat lunak skala besar
  •   Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses
  •   Menggunakan prototipe sebagai mekanisme pengurangan resiko dan pada setiap keadaan di dalam evolusi produk.
  •   Tetap mengikuti langkah-langkah dalam siklus kehidupan klasik dan memasukkannya ke dalam kerangka kerja iteratif .
  •           Membutuhkan pertimbangan langsung terhadp resiko teknis sehingga mengurangi
                  resiko sebelum menjadi permaslahan yang serius.

2.       Kekurangan
  •   Sulit untuk menyakinkan pelanggan bahwa pendekatan evolusioner ini bisa dikontrol.
  •   Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur.
  •   Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolute.