Proses Dokumentasi
Dalam
rangka membangun perangkat lunak, langkah awal yang perlu dilakukan adalah
melakukan analisis kebutuhan perangkat lunak. Yang dimaksud dengan analisis
adalah mengurai atau mendekomposisi sesuatu menjadi elemen-elemennya. Analisis
perangkat lunak artinya mengurai aktivitas pengolahan data menjadi elemen
pencatatan, pengolahan, perekaman, dan pelaporan. Analisis kebutuhan perangkat
lunak merupakan upaya untuk mengidentifikasi kebutuhan, dengan mencari dan
mengenali elemen aktivitas pengolahan data , yang diperlukan ketika seseorang
atau suatu team akan membangun perangkat lunak.
Analisis
kebutuhan perangkat lunak meliputi :
- Mengidentifikasi kebutuhan
- Mengidentifikasi kebutuhan sebagai use cases
- Analisis
Ditinjau
dari sisi bahasa requirement berarti syarat atau keperluan.
Definisi
Software Requirement
Sedangkan
definisi dari Software Requirement itu sendiri adalah spesifikasi syarat atau
keperluan sebuah software agar dapat beroperasi sesuai dengan permintaan user
yang sebelumnya telah didefinisikan terlebih dulu.
Content
Software Requirement
Software
Requirements mencakup beberapa hal seperti yang tercantum di bawah ini :
Software Development Life Cycle
Waterfall VS Agile
- Keuntungan utama adalah skalabilitas mundur dalam Agile. Berdasarkan pendekatan waterfall kita tidak bisa mengubah keputusan dan implementasi bahwa kami telah dibuat di bawah tahap sebelumnya. Jika kita ingin membuat perubahan di bawah waterfall kita akan harus membangun keseluruhan proyek dari awal sekali lagi.
- Fleksibilitas untuk kesalahan centang di bawah setiap bagian dari tahap pengembangan Agile membuat lebih bug gratis dan kurang salah dibandingkan dengan waterfall yang hanya dapat menguji bug pada akhir modul pembangunan.
- Sejak Agile menyediakan fleksibilitas untuk membuat perubahan sesuai kebutuhan pelanggan itu lebih cenderung ke arah kepuasan klien yang lebih baik. Ini adalah satu set kembali nyata untuk model Waterfall yang tidak memungkinkan modifikasi setelah modul telah selesai.
- Dalam Agile pengembangan perangkat lunak modular partisi tersebut dapat secara efektif dilaksanakan dibandingkan dengan pasangannya. Meskipun keduanya memungkinkan pilihan untuk pemisahan nanti tidak memiliki modifikasi dalam tahap implementasi. Aturan-aturan yang ditetapkan sebelum dimulainya proyek karena itu merintangi lanjut memecah modul logis. Sedangkan Agile dapat sangat membantu dalam situasi seperti ini dan dapat memungkinkan pengembangan simultan dari modul yang berbeda pada saat yang sama sesuai kebutuhan waktu terikat. Jika kita ingin proyek menjadi lebih terpisah Agile datang sebagai penghilang rasa sakit untuk pengembang.
Waterfall Process Model
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.
Alasan Menggunakan Model Water Fall ::
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.
Agile methods merupakan
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
Prinsip Agile Software Development
Agile Software Development
juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang
teknis dan businessmen, antara developer dan managernya. Ciri lain adalah klien
menjadi bagian dari tim pembangun software. Ciri-ciri ini didukung oleh 12 prinsip
yang ditetapkan oleh Agile Alliance. Menurut Agile Alliance, 12 prinsip ini
adalah bagi mereka yang ingin berhasil dalam penerapan Agile Software
Development:
- 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 mendukung 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.
Dua belas prinsip tersebut
menjadi suatu dasar bagi model-model proses yang punya sifat agile. Dengan
prinsip-prinsip tersebur Agile Process Model berusaha untuk menyiasati 3 asumsi
penting tentang proyek software pada umumnya:
- Kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek.
- Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
- Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.
Kelebihan dari Agile Method
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.
Model-model Agile method
1.
Extreme Programmning (XP)
2.
Adaptive Software
Development (ASD)
3.
Dynamic Systems Development
Method (DSDM)
4.
Scrum Methodology
5.
Crystal
6.
Feature Driven Development
(FDD)
7.
Agile Modeling (AM)
8.
Rational Unified Process
Alasan menggunakan model Agile ::
- Meminimalisasi biaya pembuatan dokumen
- Menggunakan model waterfall prediksinya lambat
- Lebih cepat dan lebih menerima value daripada proses
- Pengerjaan cepat sesuai contract
- Ide bagus dan bisa diterima langsung dan diterapkan
Resource ::
http://www.sdlc.ws/agile-vs-waterfall/
http://tonyjustinus.wordpress.com/2007/11/11/waterfall-process-model/
http://dwijaantara.wordpress.com/2010/10/25/agile-method/
Fdrw.politekniktelkom.ac.id


