Selasa, 24 Maret 2015

Tugas: Rekayasa Perangkat Lunak

1. Definisi adaptive software development (ASD)

Adaptive Software Development (ASD) diajukan oleh Jim Highsmith sebagai teknik untuk membangun software dan sistem yang kompleks. 
System kerja adaptive software development ada 3 :
Speculation, Collaboration dan Learning.
Adaptive cycle planning yaitu menggunakan informasi awal seperti misi dari klien, batasan proyek dan kebutuhan dasar untuk definisikan rangkaian software increment (produk software yang secara berkala diserahkan).

Proses Adaptive Software Development (ASD)
ASD merupakan suatu model yang tergolong dalam pendekatan agile yang diusulkan oleh Jim Highsmith. ASD menekankan pada pengorganisasian tim secara mandiri, kolaborasi antar-perseorangan, dan terus belajar, baik secara individu maupun secara tim.

ASD menggunakan tools yang disebut "time-boxing" yaitu berupa aktifitas yang 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 tugas berakhir. Terdapat tiga tahapan pada model ASD, yaitu: Speculation, Collaboration, dan Learning. 

Adaptive Software Development (Pressman, 2005) 
Pada tahap Speculation, proyek dimulai dan adaptive cycle planning diselenggarakan. Pada tahapan ini, didefinisikan visi dan misi pengguna terhadap sistem yang akan dibuat, selanjutnya mendefinisikan project constraints, misalnya: waktu deliver. dan selanjutnya mendefinisikan satu set dari requirements yang akan dikerjakan dalam suatu cycle. Tahap Collaboration, pada tahap ini diorganisasikan tim kerja untuk membangun sistem. Direkomendasikan menggunakan model Joint Application Development (JAD). Collaboration : orang-orang yang bermotivasi tinggi bekerja sama: saling melengkapi, rela membantu, kerja keras, trampil di bidangnya, dan komunikasikan masalah untuk hasilkan penyelesaian yang efektif. 
Pada tahap Learning, terdapat tiga aktifitas yaitu: pelanggan atau end-user menyediakan feedback terhadap hasil incremental delivery, tim ASD melakukan review terhadap komponen perangkat lunak untuk memperbaiki dan meningkatkan kualitas perangkat lunak yang sedang dibuat. Learning: tim pembangun sering merasa sudah tahu semua hal tentang proyek, padahal tidak selamanya begitu. Karena itu proses ini membuat mereka belajar lebih tentang proyek melalui 3 cara:
Focus group: klien dan pengguna memberi masukan terhadap software
Formal Technique Reviews: Tim ASD lengkap melakukan review 

Postmortems: Tim ASD lakukan instrospeksi pada kinerja dan proses

2. DefinisI DSDM

DSDM adalah suatu kerangka kerja awalnya didasarkan pada Rapid Application Development (RAD). DSDM mengutamakan keterlibatan pemakai secara berkesinambungan dengan pendekatan pengembangan secara berulang dan bertambah, tanggap terhadap perubahan,untuk membangun sistem perangkat lunak yang memenuhi kebutuhan bisnis tepat waktu dan tepat anggaran. DSDM merupakan salah satu metode Agile untuk pengembangan perangkat lunak, dan bagian dari Agile Alliance. DSDM pertama kali diperkenalkan pada tahun 1995, di mana merupakan satusatunya publikasi penggunaan metode RAD di dunia. DSDM terdiri dari 3 tahapan utama, dan 5 sub tahap. Tahapan utama adalah:
  1. Sebelum proyek, di mana kandidat proyek diidentifikasi, pembiayaan proyek terpenuhi, dan jaminan proyek dipastikan. Penanganan hal- hal tersebut pada tahap ini menghindari masalah pada tahaptahap berikutnya.
  2. Siklus hidup proyek, merupakan inti dari DSDM, yang terdiri dari 5 sub tahap yaitu i) studi kelayakan; ii) studi bisnis; iii) perulangan model fungsional; iv) perulangan perancangan dan pembuatan; v) penerapan.
  3. Setelah proyek, yaitu memastikan sistem berjalan secara efektif dan efisien. Hal ini diwujudkan dengan perawatan, peningkatan dan perbaikan sesuai prinsip-prinsip DSDM. Perawatan dapat dilihat sebagai usaha meneruskan pengembangan berdasarkan sifat alami DSDM, yaitu perulangan dan pertambahan.
PRINSIP
Ada delapan prinsip yang mendasari DSDM Atern. Prinsip-prinsip ini mengarahkan tim dalam sikap mereka harus mengambil dan pola pikir mereka harus mengadopsi untuk memberikan secara konsisten.

1) Fokus pada kebutuhan bisnis
Kriteria utama untuk penerimaan dari "penyampaian" adalah memberikan suatu sistem yang membahas kebutuhan bisnis saat ini. Menyampaikan sistem yang sempurna yang membahas semua kebutuhan bisnis yang mungkin kurang penting daripada berfokus pada fungsi kritis.
· Memahami prioritas bisnis sejati
· Membentuk Kasus Bisnis suara
· Mencari sponsor bisnis yang berkesinambungan dan komitmen
· Jaminan Subset Usable Minimum fitur.

2) Memberikan tepat waktu
· Timebox pekerjaan
· Fokus pada prioritas bisnis
· Selalu memenuhi tenggat waktu

3) Berkolaborasi
Keterlibatan pengguna merupakan kunci utama dalam menjalankan proyek yang efisien dan efektif, dimana kedua pengguna dan pengembang berbagi tempat kerja (baik fisik atau melalui alat), sehingga pengambilan keputusan dapat dilakukan secara kolaboratif dan cepat.
· Melibatkan pemangku kepentingan yang tepat, pada waktu yang tepat, seluruh proyek
· Pastikan bahwa anggota tim diberi wewenang untuk mengambil keputusan atas nama rakyat yang mereka wakili tanpa menunggu persetujuan tingkat yang lebih tinggi.

4) Jangan kompromi soal kualitas
· Mengatur tingkat kualitas di awal
· Memastikan kualitas yang tidak menjadi variable

5) Membangun secara bertahap
· Upayakan untuk pengiriman awal manfaat bisnis di mana mungkin
· Terus mengkonfirmasi solusi yang tepat sedang dibangun

6) Mengembangkan Iterasi
· Jangan cukup desain depan untuk menciptakan fondasi yang kuat
· Mengambil pendekatan iteratif untuk membangun semua produk
· Membangun umpan balik pelanggan dalam setiap iterasi untuk fokus pada solusi bisnis yang efektif
· Terimalah bahwa detail yang paling muncul kemudian daripada cepat
· Merangkul berubah - solusi yang tepat tidak akan berkembang tanpa itu
· Jadilah kreatif, bereksperimen, belajar, berevolusi

7) Berkomunikasi terus menerus dan jelas
Komunikasi dan kerja sama di antara semua stakeholder proyek diperlukan untuk menjadi efisien dan efektif.
· Jalankan tim setiap hari
· Gunakan teknik komunikasi yang kaya seperti pemodelan dan prototyping
· Menjaga dokumentasi ramping dan tepat waktu
· Mengelola harapan pemangku kepentingan seluruh proyek
· Mendorong informal komunikasi tatap muka di semua tingkatan

8) Menunjukkan kontrol.
· Gunakan tingkat yang sesuai formalitas untuk pelacakan dan pelaporan
· Buatlah rencana dan kemajuan terlihat oleh semua
· Mengukur kemajuan melalui fokus pada pengiriman produk daripada kegiatan selesai
· Mengelola secara proaktif
· Evaluasi kelayakan proyek terus berdasarkan tujuan bisnis

 

Siklus hidup DSDM.
 

3. Definisi Scrum

Scrum merupakan framework untuk manajemen pengembangan software dengan karakteristik cekatan dan bersifat iteratif dan incremental. Scrum mendefinisikan dirinya fleksible, strategi pengembangan yang menyeluruh di mana seluruh team bekerja sebagai satu unit dalam mencapai sebuah gol yang sama.
Dalam menjalankan kerjasama antara anggota team, scrum menekankan lokasi fisik yang sama atau sarana online yang akrab antara semua member, dan juga pertemuan muka dengan muka setiap hari antara semua anggota team.
Prinsip kunci dari scrum adalah memahami bahwa dalam project yang tengah berlangsung, klien mungkin mengubah apa yang menjadi kebutuhan dan keinginannya. Perubahan sulit diadaptasi oleh framework pengembangan aplikasi yang bersifat tradisional. Scrum menerima perubahan ini dan memaksimalkan seluruh anggota team untuk menyesuaikan perubahan mendadak ini.Scrum mempunyai 3 Role

Product Owner

Pengertian produk adalah tujuan dari proyek. Product Owner memastikan bahwa proyek berjalan sesuai yang diharapkan. Product Owner merupakan penjembatan antara client dengan team development. Product Owner akan menuliskan spesifikasi-spesifikasi sesuai cara pandang client, di lain pihak harus punya empati terhadap anggota team.
Team Member Dilihat dari namanya jelas yaitu anggota-anggota team. Scrum Master Scrum
Master akan mencegah hal-hal yang mengalihkan focus team. Scrum master akan membuat suasana kondusif supaya team dapat bekerja sama dalam mencapai goal.

 


Proses penting dalam Scrum antara lain:
  • Backlog refinement
  • Sprint planning
  • Daily Scrum
  • Sprint review meeting
  • Sprint retrospective meeting


4. Crystal

Crystal diperkenalkan oleh Cockburn dan Highsmith, Development yang tidak pada jalur kritis, dapat menghabikan waktu lebih, mereka yang memperbaiki produk atau membantuoaring yang ada di jalur proyek kritis.Karakteristik Crystal

5. Feature driven development (Fdd)

Fitur-driven development (FDD) adalah iteratif dan proses pengembangan perangkat lunak tambahan. Ini adalah salah satu dari sejumlah metode Agile untuk mengembangkan perangkat lunak dan bagian bentuk dari Aliansi Agile. FDD memadukan sejumlah industri-praktek terbaik yang diakui menjadi satu kesatuan yang kohesif. Praktek-praktek semua didorong dari klien-nilai perspektif (fitur) fungsi. Tujuan utamanya adalah untuk memberikan nyata, software yang bekerja berulang-ulang pada waktu yang tepat.
KARAKTERISTIK

FDD sebaiknya digunakan jika; memekerjakan 10 – 250 developer yang memiliki kemampuan teknis lebih dari rata-rata, dan jangan digunakan jika; jumlah tim kurang dari 10, tim sedang belajar menguasai pekerjaan dan jika kurang dukungan dari sistem. FDD lebih terhirarki daripada Extreme Programming, memiliki class owenership yang terpisah-pisah, sukses jika dalam rentang jumlah developer diatas rata-rata, klien tidak dilibatkan dalam seluruh urutan proses (hanya dalam proses 1, 2 dan 4) dan menghargai developer sebagai individu manusia yang menentukan sukses atau tidaknya pengembangan.

Kelebihan:

  • User dapat menggambarkan dengan mudah bentuk system.
  • Dapat di organisasikan atau diatur ke dallamkelompok bisnis yang hirarki.
  • Desain dank ode lebih mudah diperiksa secara efektif.
  • Merancang proyek, penjadwalan dan jalur diarahkan oleh feature.

6. Agile modeling

Agile pengembangan software adalah sekelompok metodologi pengembangan software yang didasarkan pada prinsip-prinsip yang sama. Agile metodologi umumnya mempromosikan proyek yang mendorong proses pengelolaan sering inspeksi dan adaptasi, sebuah filosofi yang mendorong kepemimpinan tim, mandiri dan akuntabilitas organisasi, satu set teknik praktek terbaik yang memungkinkan untuk pengiriman cepat dari perangkat lunak yang berkualitas tinggi, dan usaha pendekatan yang aligns pembangunan dengan kebutuhan pelanggan dan tujuan perusahaan. Konseptual kerangka dasar-dasar ini akan ditemukan di modern pendekatan manajemen operasional dan analisis seperti bersandar manufaktur, lunak sistem metodologi, pidato bertindak teori (pendekatan percakapan jaringan), dan Six Sigma.


METODOLOGI


Analisis Proyek : Menganalisis proyek sistem yang ingin dikembangakan
Pengembangan Proyek : Proses pengembangan sistem dilakukan
Testing Proyek : Mencoba sistem yang sudah selesai sebelum diberikan kepada client Apabila sistem lulus test dan tidak ada perubahan-perubahan, maka sistem tersebut sudah bisa digunakan oleh client. Sementara apabila masih terjadi perubahan-perubahan maka kembali lagi ke proses awal.

Kelebihan dan Kekurangan
Kelebihan dari Agile Modeling:

1. Meningkatkan kepuasan kepada klien
2. Pembangunan system dibuat lebih cepat
3. Mengurangi resiko kegagalan implementasi software dari segi non-teknis
4. Jika pada saat pembangunan system terjadi kegagalan,kerugian dar segi materi relative kecil.

Kelemahan dari Agile Modeling:
Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.



7. Lean Software Development

Prinsip-prinsip Lean dalam pengembangan software dan prinsip ini dapat disatukan pada saat kita menjalan proyek IT menggunakan Scrum. Kita dapat meng-ilustrasi-kan proyek yang diajalankan dengan cara Scrum adalah membagi proyek yang besar menjadi beberapa bagian dan setiap bagian akan menghasilkan incremental product.

Kita mengenal konsep yang namanya "sprint", katakanlah tim Scrum ini menetapkan setiap sprint adalah 3 minggu. Maka tim ini akan menetapkan sub-produk apa saja yang akan dihasilkan dari sprint pertama sampe sprint terakhir dimana setiap sprint akan berjalan 3 minggu. Selama 3 minggu (1 sprint), mereka akan fokus dengan satu added value atau "running version software". Kemudian, mereka akan fokus kepada potongan running version berikutnya dan dikerjakan dalam waktu yang sama (sprint kedua) dan begitu seterusnya.

Tentu saja, prinsip-prinsip Lean dapat disinergikan dengan pelaksaan pengembangan proyek menggunakan Scrum.

a. Menghilangkan aktifitas yang tidak berkaitan langsung dengan End Product
Fokuskan waktu dan tenaga serta diskusi kita dengan spesifik added value yang kita harapkan sebagai sebuah End Product. Software atau aplikasi yang kita kembangkan harus berdasarkan keinginan client. Imajinasi atau ide sesaat yang muncul pada saat pembuatan program, cukup menjadi catatan terlebih dahulu dan nantinya akan menjadi bahan untuk pengembangan selanjutnya.

b. Melakukan pembelajaran secara berkelanjutan
Pada saat pengembangan berlangsung, kita dapat selalu melibatkan user atau klien untuk mencoba atau mereview atau pengecek apakah progress pengembangan dan memberikan kesempatan kepada mereka untuk menyampaikan feedback. Sedapat mungkin kita sudah melibatkan user dari awal selain sebagai sarana untuk mendapatkan early feedback, juga dapat dijadikan wahana untuk proses pembelajaran guna pengembangan yang berkelanjutan.


c. Menunda sesuatu sampai memang dibutuhkan
Pada saat program/software sedang dibuat, begitu banyak ide yang tiba-tiba datang dan mengalir begitu deras. Dalam prinsip Lean, sebaiknya kita menunda untuk mengimplementasikan sesuatu yang bukan menjadi tujuan utama saat ini.

d. Deliver Software as fast as possible
Klien kita adalah pihak yang berperang dengan waktu karena kesempatan memiliki parameter waktu. Suatu kesempatan bisnis akan menjadi hilang dan effort yang kita keluarkan menjadi tidak bermakna jika kita terlambat mengantisipasinya.



8. Agile Unifed Process

Unified Process (UP) merupakan suatu metode pembangunan sistem secara objek oriented yang dikembangkan oleh Rational Rose, bagian dari IBM. Secara luas, UP telah diakui sebagai standar metodologi pengembangan sistem berorientasi objek. Vesri alsi dari UP didefinisikan sangat rumit untuk setiap kegiatan. Namun versi terbaru dari UP yakni metodologinya lebih sederhana. Ciri utama metode ini adalah menggunakan use-case driven dan pendekatan iteratif untuk siklus pengembangan perangkat lunak.

UP tepat digunakan saat kondisi:

  • Pengembangan perangkat lunak yang berorientasi objek dengan berfokus pada UML (Unified Modeling Language )
  • Mempunyai waktu pengembangan yang panjang
  • Dikembangkan pada perangkat lunak sebagai sarana interaksi antara pengguna dan perangkat keras
  • Mempunyai tim programmer yang cukup banyak
  • Pengembangan dan perubahan perangkat lunak berdasarkan kebutuhan user
Keuntungan Pengembangan Perangkat Lunak RUP :
Ada beberapa keuntungan dengan mengunakan RUP di antaranya :

  • Menyediakan akses yang mudah terhadap pengetahuan dasar bagi anggota tim.
  • Menyediakan petunjuk bagaimana menggunakan UML secara efektif.
  • Mendukung proses pengulangan dalam pengembangan software.
  • Memungkinkan adanya penambahan-penambahan pada proses.
  • Memungkinkan untuk secara sistematis mengontrol perubahan- perubahan yang terjadi pada software selama proses pengembangannya.
  • Memungkinkan untuk menjalankan test case dengan menggunakan Rational Test Manager Tool
Kekurangan Pengembangan Perangkat Lunak RUP :  
  • Metodologi ini hanya dapat digunakan pada pengembangan perangkat lunak yang berorientasi objek dengan berfokus pada UML (Unified Modeling Language).
  • Membutuhkan waktu yang cukup lama dibandingkan XP dan Scrum




2 komentar :

  1. kalau dipaparkan extreme programming dan global extreme programming , artikel makinx komplit broooo

    BalasHapus