Nama : Dwiki Ardiansyah
Npm : 43A87007150390
Kelas : S1/SI/3B(pagi)
Tugas 1 Rekayasa Perangkat Lunak
1.
WATERFALL
Waterfall adalah suatu metodologi pengembangan perangkat lunak
yang mengusulkan pendekatan kepada perangkat lunak sistematik dan sekuensial
yang mulai pada tingkat kemajuan sistem pada seluruh analisis, design, kode,
pengujian dan pemeliharaan.
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).
Proses pada
metodologi Waterfall:
1. Requirement Analysis
Seluruh kebutuhan software harus
bisa didapatkan dalam fase ini, termasuk didalamnya kegunaan software yang
diharapkan pengguna dan batasan software. Informasi ini biasanya dapat
diperoleh melalui wawancara, survey atau diskusi. Informasi tersebut dianalisis
untuk mendapatkan dokumentasi kebutuhan pengguna untuk digunakan pada tahap
selanjutnya.
2. System
Design
Tahap ini dilakukan sebelum melakukan coding. Tahap ini bertujuan untuk
memberikan gambaran apa yang seharusnya dikerjakan dan bagaimana tampilannya.
Tahap ini membantu dalam menspesifikasikan kebutuhan hardware dan sistem serta
mendefinisikan arsitektur sistem secara keseluruhan.
3. Implementation
Dalam tahap ini dilakukan pemrograman. Pembuatan software dipecah menjadi
modul-modul kecil yang nantinya akan digabungkan dalam tahap berikutnya. Selain
itu dalam tahap ini juga dilakukan pemeriksaaan terhadap modul yang dibuat,
apakah sudah memenuhi fungsi yang diinginkan atau belum.
4. Integration
& Testing
Di tahap ini dilakukan penggabungan modul-modul yang sudah dibuat dan
dilakukan pengujian ini dilakukan untuk mengetahui apakah software yang dibuat
telah sesuai dengan desainnya dan masih terdapat kesalahan atau tidak.
5. Operation &
Maintenance
Ini merupakan tahap terakhir dalam model waterfall. Software yang sudah
jadi dijalankan serta dilakukan pemeliharaan. Pemeliharaan termasuk dalam memperbaiki
kesalahan yang tidak ditemukan pada langkah sebelumnya. Perbaikan
implementasi unit sistem dan peningkatan jasa sistem sebagai kebutuhan baru.
Gambaran Tahapan Umum Proses Waterfall:
Keuntungan Waterfall:
1.
Kualitas dari
sistem yang dihasilkan akan baik. Ini dikarenakan oleh pelaksanaannya secara
bertahap. Sehingga tidak terfokus pada tahapan tertentu.
2.
Document
pengembangan system sangat terorganisir, karena setiap fase harus terselesaikan
dengan lengkap sebelum melangkah ke fase berikutnya. Jadi setiap fase
atau tahapan akan mempunyai dokumen tertentu.
3.
Metode ini
masih lebih baik digunakan walaupun sudah tergolong kuno, daripada
menggunakan pendekatan asal-asalan. Selain itu, metode ini juga masih masuk
akal jika kebutuhan sudah diketahui dengan baik.
Kelemahan Waterfal:
1.
Diperlukan majemen
yang baik, karena proses pengembangan tidak dapat dilakukan secara berulang
sebelum terjadinya suatu produk.
2.
Kesalahan kecil
akan menjadi masalah besar jika tidak diketahui sejak awal pengembangan yang
berakibat pada tahapan selanjutnya.
3.
Pelanggan sulit
menyatakan kebutuhan secara eksplisit sehingga tidak dapat mengakomodasi
ketidak pastian pada saat awal pengembangan.
4.
Pelanggan harus
sabar, karena pembuatan perangkat lunak akan dimulai ketika tahap desain sudah
selesai. Sedangkan pada tahap sebelum desain bisa memakan waktu yang lama.
5.
Pada kenyataannya,
jarang mengikuti urutan sekuensial seperti pada teori. Iterasi sering terjadi
menyebabkan masalah baru.
2. 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.
Diagram of Prototyping Model
Tujuan Prototype :
Prototyping model sendiri mempunyai
tujuan yaitu mengembangkan model awal software menjadi sebuah sistem yang final
Proses-proses dalam model prototyping secara
umum adalah sebagai berikut:
1. Pengumpulan kebutuhan
Developer dan klien akan bertemu
terlebih dahulu dan kemudian menentukan tujuan umum, kebutuhan yang diketahui
dan gambaran bagian-bagian yang akan dibutuhkan berikutnya.
2. Perancangan
Perancangan dilakukan dengan cepat dan
rancangan tersebut mewakili semua aspek software yang diketahui, dan rancangan
ini menjadi dasar pembuatan prototype.
3. Evaluasi Prototype
Klien akan mengevaluasi prototype yang dibuat dan digunakan untuk memperjelas
kebutuhan software.
B. Tahapan
Selain itu, untuk memodelkan sebuah perangkat
lunak dibutuhkan beberapa tahapan di dalam proses pengembangannya. Tahapan
inilah yang akan menentukan keberhasilan dari sebuah software itu. Pengembang
perangkat lunak harus memperhatikan tahapan dalam metode prototyping agar
software finalnya dapat diterima oleh penggunanya. Dan tahapan-tahapan dalam
prototyping tersebut adalah sebagai berikut :
1. Pengumpulan kebutuhan
Pelanggan dan pengembang bersama-sama mendefinisikan format dan kebutuhan keseluruhan
perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem
yang akan dibuat.
2. Membangun prototyping
Membangun prototyping dengan membuat perancangan sementara yang berpusat pada
penyajian kepada pelanggan (misalnya dengan membuat input dan contoh
outputnya).
3. Evaluasi protoptyping
Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun
sudah sesuai dengan keinginan pelanggan. Jika sudah sesuai maka langkah keempat
akan diambil. Jika tidak, maka prototyping diperbaiki dengan mengulang langkah
1, 2 , dan 3.
4. Mengkodekan system
Dalam tahap ini prototyping yang sudah disepakati diterjemahkan ke dalam bahasa
pemrograman yang sesuai.
5. Menguji system
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 sudah, maka langkah ketujuh dilakukan, jika belum maka
mengulangi langkah 4 dan 5.
7. Menggunakan system
Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk digunakan
C. Keunggulan dan kelemahan metode prototype
Keunggulan prototyping :
1.
Komunikasi akan
terjalin baik antara pengembang dan pelanggan.
2.
Pengembang dapat
bekerja lebih baik dalam menentukan kebutuhan setiap pelanggannya.
3.
Pelanggan berperan
aktif dalam proses pengembangan sistem.
4.
Lebih menghemat
waktu dalam pengembangan sistem.
5.
Penerapan menjadi
lebih mudah karena pemakai mengetahui apa yang diharapkannya
Kelemahan prototyping :
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 jangka 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 sebuah
kerangka kerja(blueprint) dari sistem.
3.
Hubungan pelanggan
dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan
yang baik dan benar.
3. Iterative
Development
Merupakan model pengembangan sistem yang
bersifat dinamis dalam artian setiap tahapan proses pengembangan sistem dapat
diulang jika terdapat kekurangan atau kesalahan. Setiap tahapan pengembangan
system dapat dikerjakan berupa ringkasan dan tidak lengkap, namun pada akhir
pengembangan akan didapatkan sistem yang lengkap pada pengembangan system.
Iterative Development berarti
menciptakan versi yang lebih fungsional dari sebuah system dalam siklus
pembangunan pendek. Setiap versi ditinjau dengan klien untuk menghasilkan
persyaratan untuk membuat versi berikutnya. Proses ini diulang sampai semua
fungsionalitas telah dikembangkan. Panjang ideal iterasi adalah antara satu
hari (yang lebih dekat dengan Metodologi Agile) dan tiga minggu. Setiap siklus
pengembangan memberikan pengguna kesempatan untuk memberikan umpan balik,memperbaiki
persyaratan, dan kemajuan melihat (dalam pertemuan sesi fokus grup). Hal ini
akhirnya pembangunan berulang yang memecahkan masalah yang melekat dalam
metodologi fleksibel dibuat pada 1970an.
A . Keuntungan dari Iterative
model :
1. User
dapat mencoba sistem yg sudah dikembangkan dan kemudian dapat memberikan masukan keterlibatan user semakin intens dampak positif dalam pengembangan
2. Prototype relatif lebih
mudah dibangun dan tidak memerlukan waktu yang lam
3. Dengan
prototype, kesalahan & kelalaian dalam pengembangan dapat segera diketahui
B. Kelemahan dari Iterative model
:
1. Setiap
iterasi bergantung prototype sebelumnya solusi final umumnya terjadi apabila
ada perbedaan yg nyata pada prototype
sebelumnya.
2. Formal end-of-phasemungkin tidak
terjadi, karena sangat sulit menentukan scope dari suatu prototype > proyek
tidak pernah selesai
3. Dokumentasi seringkali tdk
lengkap > fokus pada pembuatan prototype
Proses Iterative Development
4. Rational Unfield Process
Rasional
Unified Process (RUP) adalah metodologi berorientasi objek dan pengembangan
program Web-enabled. Menurut
Rasional (pengembang Rational
Rose dan Bersatu
Modeling Language ), RUP adalah
seperti mentor online yang menyediakan pedoman, template, dan contoh untuk
semua aspek dan tahapan pengembangan program. RUP dan sejenis produk - seperti Process Object-Oriented
Software (OOSP), dan Proses OPEN - alat rekayasa perangkat lunak komprehensif
yang menggabungkan aspek prosedural pembangunan (seperti tahap didefinisikan,
teknik, dan praktek) dengan komponen lain dari pembangunan (seperti dokumen,
model, manual, kode, dan sebagainya) dalam kerangka pemersatu.
Diagram Rational Unfield Process :
Proses/cara kerja:
Cara kerja RUP itu didasarkan pada 6 kunci prinsip bagi perkembangan bisnis yang terkendali yaitu :
1. Mengadaptasi proses
2. Menyeimbangkan prioritas dari para stakeholders
3. Melakukan kolaborasi antar tim
4. Mendemonstrasikan hasil-hasil yang ada secara berulang-ulang
5. Menaikkan level abtraksi dari sebuah software
6. Memfokuskan pada kualitas secara terus-menerus
Kelebihan dan kekurangan:
Ada beberapa keuntungan dengan mengunakan RUP di antaranya :
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.
6. Memungkinkan untuk menjalankan test case dengan menggunakan Rational TestManager Tool
kekurangan Pengembangan Perangkat Lunak RUP.
KEKURANGANNYA:
1. Metodologi ini hanya dapat digunakan pada pengembangan perangkat lunak yangberorientasi objek dengan berfokus pada UML (Unified Modeling Language)
5. Time Boxing Model
Time boxing adalah 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.
Dengan waktu kotak tiga tahap, paling banyak
tiga iterasi dapat bersamaan berlangsung. Jika kotak waktu adalah hari ukuran T, maka
pengiriman perangkat lunak pertama akan terjadi setelah hari T. Pengiriman berikutnya, bagaimanapun, akan berlangsung setelah
setiap T / 3 hari. Misalnya, jika waktu durasi
kotak T adalah 9 minggu (dan masing-masing durasi tahap adalah 3 minggu),
pengiriman pertama dilakukan 9 minggu setelah dimulainya proyek. Pengiriman kedua dilakukan setelah 12 minggu, ketiga setelah
15 minggu, dan sebagainya. Kontras ini dengan
eksekusi linear iterasi, dimana pengiriman pertama akan dilakukan setelah 9
minggu, yang kedua setelah 18 minggu, ketiga setelah 27 minggu, dan sebagainya
Tabel Keuntungan dan Kerugian
dari TIME BOXING MODEL :
Keuntungan
|
kekurangan
|
- Mempercepat proses pembangunan dan
memperpendek waktu pengiriman
- Nah cocok untuk mengembangkan proyek-proyek
dengan sejumlah fitur dalam periode waktu yang singkat.
|
- Manajemen proyek menjadi lebih kompleks.
- Tidak cocok untuk proyek-proyek di mana
seluruh pekerjaan pembangunan tidak dapat dibagi menjadi beberapa
iterasi hampir, durasi yang sama.
|
6. Extreme Programming Dan Agile
Extreme Programming (XP) merupakan 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.
Cara Kerja Extreme Programming :
- 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
- 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.
- 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.
Keunggulan:
- Menjalin komunikasi yang baik dengan klien. (Planning Phase)
- Menurunkan biaya pengembangan (Implementation Phase)
- Meningkatkan komunikasi dan sifat saling menghargai antar
developer. (Implementation Phase)
- XP merupkan metodologi yang semi formal. (Planning Phase)
- Developer harus selalu siap dengan perubahan karena perubahan akan
selalu diterima, atau dengan kata lain fleksibel. (Maintenance Phase)
Kelemahan :
- Tidak bisa membuat kode yang detail di awal (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 dokumentasi formal yang dibuat selama pengembangan. Satu-satunya
dokumentasi adalah dokumentasi awal yang dilakukan oleh user.
AGILE
Agile Development Methods adalah sekelompok metodologi pengembangan perangkat lunak yang
didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka
pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam
bentuk apapun. Agile
development methods merupakan
salah satu dari Metodologi pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak. Agile memiliki
pengertian bersifat cepat, ringan, bebas bergerak, dan waspada.[1] Sehingga saat membuat perangkat lunak dengan menggunakan agile development methods diperlukan inovasi dan responsibiliti
yang baik antara tim pengembang dan klien agar kualitas dari perangkat lunak
yang dihasilkan bagus dan kelincahan dari tim seimbang.
Dalam proses
pengembangan agile kita mengenal dengan iterasi atau perulangan. Jika suatu
proyek pengembangan software dikerjakan dengan menggunakan metode agile, maka
selama waktu pengerjaannya akan selalu dijumpai proses pengembangan yang
dilakukan berulang. Setiap perulangan (iterasi) meliputi berbagai kegiatan yang
wajib dilakukan dalam proyek pengembangan software itu sendiri, yaitu:
a. Requierements
Analysis: langkah ini merupakan analisa terhadap kebutuhan system. Pengumpulan
data dalam tahap ini bisa melakukan sebuah penelitian, wawancara atau study
literature. Seorang system analisis akan menggali informasi sebanyak-banyaknya
dari user sehingga akan tercipta sebuah sistem komputer yang bisa melakukan
tugas-tugas yang diinginkan oleh user tersebut. Tahapan ini akan menghasilkan
dokumen user requierements atau bisa dikatakan sebagai data yang berhubungan
dengan keinginan user dalam pembuatan system. Dokumen inilah yang akan menjadi
acuan system analis untuk menerjemahkan ke dalam bahasa pemrograman.
b. Desain:
Proses desain akan menerjemahkan syarat kebutuhan ke sebuah perancangan
perangkat lunak yang dapat diperkirakan sebelum dibuat koding. Proses ini
berfokus pada: struktur data arsitektur perangkat lunak, representasi
interface, dan detail (algoritma) procedural. Tahapan ini akan menghasilkan
dokumen yang disebut software requirement. Dokumen inilah yang akan digunakan
programmer untuk melakukan aktivitas pembuatan sistemnya.
c. Coding:
Coding merupakan penerjemahan design dalam bahasa yang bisa dikenali oleh
computer. Dilakukan oleh programmer yang akan menterjemahkan transaksi yang
diminta oleh user. Tahapan inilah yang merupakan tahapan secara nyata dalam
mengerjakan suatu system. Dalam artian penggunaan computer akan dimaksimalkan
dalam tahapan ini.
d.
Testing: Testing adalah menemukan kesalahan-kesalahan terhadap sistem tersebut dan
kemudian bisa diperbaiki.
Kelebihan dari agile:
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.
Kekurangan
dari agile:
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