Siklus Pengembangan Perangkat Lunak (Software Development Life Cycle)
Endy Muhardin <
[email protected]> http://endy.artivisi.com last updated : 2007-08-01
Who am I ●
●
Endy Muhardin –
[email protected]
–
Y! endymuhardin
Kegiatan –
Software Developer
–
Project Manager
–
SEPG Member (BaliCamp)
Kompetensi Teknis ●
Java Enterprise Edition (JEE)
●
Spring Framework
●
Hibernate O/R Mapping
●
Java Server Faces (JSF)
●
PHP
●
Linux (single boot sejak 2002)
Projects ●
PlaySMS
●
PlayBilling
●
CMMI
Buku Subversion
Materi ●
Siklus Pengembangan Perangkat Lunak –
Fase Perencanaan
–
Fase Analisa
–
Fase Desain
–
Fase Coding
–
Fase Testing
–
Fase Implementasi
–
Fase Pemeliharaan
Metodologi ●
●
●
Heavyweight –
Waterfall
–
RUP
Lightweight –
Agile
–
XP
Apapun metodologinya, kegiatannya mirip –
analysis – desain – coding – testing – deliver
Fase Perencanaan [1] ●
●
Estimasi ukuran software –
Function point calculation
–
Metode Putnam
–
Metode COCOMO
Estimasi effort dan durasi –
Berapa orang?
–
Berapa bulan?
–
Berapa biayanya?
Fase Perencanaan [2] ●
Memilih metodologi
●
Menentukan milestone
●
Mendefinisikan aturan manajemen
●
–
komunikasi
–
penyimpanan dokumen
–
aturan rilis
–
prosedur change management
Mengidentifikasi resiko
Fase Perencanaan [3] ●
Menyusun anggota tim –
Steering Committee / Project Sponsor
–
Project Manager
–
Subject Matter Expert
–
Business Analyst
–
Software Architect
–
Programmer
–
Tester
–
Technical Writer
Produk Fase Perencanaan ●
●
Project Schedule –
Estimasi ukuran
–
Estimasi effort dan durasi
–
Tanggal selesai masing-masing milestone
Project Plan –
Stakeholder plan
–
Configuration management plan
–
Training plan
–
Daftar resiko project
Tools Fase Perencanaan ●
DotProject
●
ActiveCollab
●
Open Workbench
??? Pertanyaan dan Diskusi
Project Monitoring [1] ●
●
Rencana yang telah dibuat harus dimonitor secara berkala agar proyek berjalan baik Tujuan Project Monitoring –
Memastikan rencana dijalankan
–
Identifikasi masalah sedini mungkin
–
Memecahkan masalah sedini mungkin
–
Memantau kinerja anggota tim
Project Tracking [2] ●
Hal yang harus dimonitor –
Kemajuan proyek dibandingkan rencana awal
–
Keterlibatan stakeholder
–
Pemenuhan komitmen
–
Resiko proyek
–
Penanganan masalah yang timbul
Tools Project Monitoring ●
DotProject
●
ActiveCollab
●
Open Workbench
●
Timesheet
??? Pertanyaan dan Diskusi
Fase Analisa [1] ●
●
Memahami software yang akan dibuat (requirement) –
Diskusi dengan SME
–
Diskusi dengan User
Verifikasi requirement –
Review hasil analisa
–
Prototyping
–
Membuat test scenario
Fase Analisa [2] ●
●
Mendapatkan komitmen –
Sign off
–
Email Approval
Mengelola perubahan –
Setiap perubahan harus melalui prosedur
Fase Analisa [3] ●
Requirement yang baik –
Sahih (tidak berdasarkan asumsi)
–
Dapat diimplementasikan
–
Benar-benar diperlukan
–
Memiliki skala prioritas
–
Tidak ambigu
–
Dapat diverifikasi
Fase Analisa [4] ●
Spesifikasi yang baik –
Lengkap
–
Konsisten
–
Bisa diubah
–
Bisa dilacak
Produk Fase Analisa ●
Functional Spec / SRS / URS / CRS
●
Test Scenario
●
Requirement Traceability Matrix
●
Prototype
●
UML Diagram –
Use Case Diagram
–
Activity Diagram
Tools Fase Analisa ●
DokuWiki
●
OSRMT
●
Jude Community
●
Poseidon CE
Kegunaan Spesifikasi ●
●
●
Marketing –
membuat brosur
–
merencanakan kegiatan pemasaran
Developer –
mendesain software
–
membuat software
Technical Writer –
menulis dokumentasi
??? Pertanyaan dan Diskusi
Change Management ●
Kebutuhan user –
●
●
●
PASTI BERUBAH !!!
Ini adalah hal yang alami Perlu ada prosedur khusus sehingga tidak mengacaukan proyek Perubahan requirement akan berbuntut: –
Perubahan effort
–
Perubahan durasi
–
Perubahan biaya
Prosedur Change Management ●
●
Change Requester harus jelas Impact Analysis harus dihitung dengan cepat –
●
gunakan Requirement Traceability Matrix
Berdasarkan hasil Impact Analysis, Steering Committee bisa memutuskan: –
approve and proceed immediately
–
pending to next phase
–
discard completely
??? Pertanyaan dan Diskusi
Fase Desain [1] ●
●
Desain tampilan akhir –
warna
–
huruf
–
efek khusus
Memilih teknologi dan framework –
kemudahan
–
kecepatan
–
fitur
–
sistem operasi
Fase Desain [2] ●
●
Menentukan partisi sistem –
komponen
–
plugin
Menentukan skema database
Produk Fase Desain ●
Technical Specification
●
Proof of Concepts
●
Arsitektur Sistem
●
Dokumentasi pemilihan teknologi
●
–
Alternatif yang dipertimbangkan
–
Kriteria yang digunakan
–
Bobot masing-masing kriteria
–
Penilaian masing-masing alternatif
Test Script
Tools Fase Desain ●
Jude Community
●
Poseidon CE
●
Aqua Studio
●
DBDesigner
??? Pertanyaan dan Diskusi
Fase Coding [1] ●
●
Persiapan Development –
Version Control
–
Mailing List / Forum Diskusi
–
Bug Tracker
–
Continuous Integration
Kebijakan Coding –
coding standard
–
quality standard
Fase Coding [2] ●
Pengukuran kualitas kode –
keterikatan (coupling)
–
kompleksitas
–
kemudahan pengembangan (extensibility)
–
kesesuaian dengan best-practices
–
kecukupan jumlah test vs jumlah kode
–
Fase Coding [3] ●
Jenis test yang dilakukan programmer –
Unit Test : method/function
–
Coverage Test : kecukupan unit test
–
Code Review : praktek coding
–
Integration Test : interaksi dengan sistem lain (database, mail, aplikasi lain)
–
Performance Test : waktu yang dibutuhkan untuk menjalankan fitur tertentu
–
Stress Test : perilaku fitur bila dihadapkan dengan request yang banyak
Produk Fase Coding ●
Coding convention
●
Kode program
●
Unit test
●
Code review report
●
Unit test report
●
Coverage test report
●
User Manual
Tools Fase Coding (Java) ●
Ant
●
PMD / Findbugs
●
JUnit / TestNG
●
Cobertura / Emma
●
DBUnit
●
CruiseControl / Luntbuild
●
JDepend
●
JUnitPerf
●
JMeter
Tools Fase Coding (Umum) ●
Subversion
●
Mantis
●
phpBB
●
Redmine
●
GForge
??? Pertanyaan dan Diskusi
Fase Testing ●
●
Terdiri dari –
Internal Testing: dilakukan oleh project team
–
User Testing: dilakukan oleh customer
Tujuan (Internal Testing) –
●
mengurangi jumlah bug yang ditemukan oleh customer / end-user
Tujuan (User Testing) –
memastikan software yang diterima sesuai dengan spesifikasi yang diminta
Produk Fase Testing ●
Bug Report
●
Bug Fix
Tools Fase Testing ●
Functional Specification
●
Test Scenario
●
Mantis
●
Selenium
●
HttpUnit
●
Canoo WebTesting
●
Abbot & Costello
??? Pertanyaan dan Diskusi
Fase Implementasi ●
Tujuan –
●
menyiapkan aplikasi untuk penggunaan yang sebenarnya (go-live)
Kegiatan –
User Training
–
Administrator Training
–
Migrasi Data (kalau ada)
–
Cut off sistem/proses lama
Produk Fase Implementasi ●
Training Material
●
Cut-off Data
Fase Pemeliharaan ●
●
Kegiatan –
perbaikan bug yang tersisa
–
penambahan fitur
–
perubahan fitur
Bisa dilakukan dalam kesepakatan terpisah atau sebagai bagian dari masa garansi
Terima Kasih
●
●
http://endy.artivisi.com ●
[email protected]
Y!: endymuhardin