Siklus Pengembangan
Siklus Pengembangan
Perangkat Lunak
Perangkat Lunak
(Software Development Life Cycle) (Software Development Life Cycle) Endy Muhardin <Endy Muhardin <[email protected]@artivisi.com>> http://endy.artivisi.com
http://endy.artivisi.com
last updated : 2007-08-01
Who am I
Who am I
●
Endy Muhardin
Endy Muhardin
– [email protected]@artivisi.com – Y! endymuhardinY! endymuhardin
●
Kegiatan
Kegiatan
– Software Developer Software Developer – Project ManagerProject Manager
Kompetensi Teknis
Kompetensi Teknis
●
Java Enterprise Edition (JEE)
Java Enterprise Edition (JEE)
●Spring Framework
Spring Framework
●
Hibernate O/R Mapping
Hibernate O/R Mapping
●Java Server Faces (JSF)
Java Server Faces (JSF)
●PHP
PHP
Projects
Projects
●
PlaySMS
PlaySMS
●PlayBilling
PlayBilling
●CMMI
CMMI
Buku Subversion
Materi
Materi
●
Siklus Pengembangan Perangkat Lunak
Siklus Pengembangan Perangkat Lunak
– Fase PerencanaanFase Perencanaan – Fase AnalisaFase Analisa
– Fase DesainFase Desain – Fase CodingFase Coding – Fase TestingFase Testing
– Fase ImplementasiFase Implementasi – Fase PemeliharaanFase Pemeliharaan
Metodologi
Metodologi
●Heavyweight
Heavyweight
– WaterfallWaterfall – RUPRUP ●Lightweight
Lightweight
– AgileAgile – XPXP●
Apapun metodologinya, kegiatannya mirip
Apapun metodologinya, kegiatannya mirip
Fase Perencanaan [1]
Fase Perencanaan [1]
●
Estimasi ukuran software
Estimasi ukuran software
– Function point calculationFunction point calculation – Metode PutnamMetode Putnam
– Metode COCOMOMetode COCOMO
●
Estimasi effort dan durasi
Estimasi effort dan durasi
– Berapa orang?Berapa orang? – Berapa bulan?Berapa bulan?
Fase Perencanaan [2]
Fase Perencanaan [2]
●
Memilih metodologi
Memilih metodologi
●
Menentukan milestone
Menentukan milestone
●
Mendefinisikan aturan manajemen
Mendefinisikan aturan manajemen
– komunikasikomunikasi
– penyimpanan dokumenpenyimpanan dokumen – aturan rilisaturan rilis
– prosedur change managementprosedur change management
Fase Perencanaan [3]
Fase Perencanaan [3]
●
Menyusun anggota tim
Menyusun anggota tim
– Steering Committee / Project SponsorSteering Committee / Project Sponsor – Project ManagerProject Manager
– Subject Matter ExpertSubject Matter Expert – Business AnalystBusiness Analyst
– Software ArchitectSoftware Architect – ProgrammerProgrammer
– TesterTester
Produk Fase Perencanaan
Produk Fase Perencanaan
●
Project Schedule
Project Schedule
– Estimasi ukuranEstimasi ukuran
– Estimasi effort dan durasiEstimasi effort dan durasi
– Tanggal selesai masing-masing milestoneTanggal selesai masing-masing milestone
●
Project Plan
Project Plan
– Stakeholder planStakeholder plan
– Configuration management planConfiguration management plan – Training planTraining plan
Tools Fase Perencanaan
Tools Fase Perencanaan
●
DotProject
DotProject
●ActiveCollab
ActiveCollab
???
???
Pertanyaan dan Diskusi
Project Monitoring [1]
Project Monitoring [1]
●
Rencana yang telah dibuat harus
Rencana yang telah dibuat harus
dimonitor secara berkala agar proyek
dimonitor secara berkala agar proyek
berjalan baik
berjalan baik
●
Tujuan Project Monitoring
Tujuan Project Monitoring
– Memastikan rencana dijalankanMemastikan rencana dijalankan
– Identifikasi masalah sedini mungkinIdentifikasi masalah sedini mungkin – Memecahkan masalah sedini mungkinMemecahkan masalah sedini mungkin – Memantau kinerja anggota timMemantau kinerja anggota tim
Project Tracking [2]
Project Tracking [2]
●
Hal yang harus dimonitor
Hal yang harus dimonitor
– Kemajuan proyek dibandingkan rencana awalKemajuan proyek dibandingkan rencana awal – Keterlibatan stakeholderKeterlibatan stakeholder
– Pemenuhan komitmenPemenuhan komitmen – Resiko proyekResiko proyek
Tools Project Monitoring
Tools Project Monitoring
●
DotProject
DotProject
●ActiveCollab
ActiveCollab
●
Open Workbench
Open Workbench
●Timesheet
Timesheet
???
???
Pertanyaan dan Diskusi
Fase Analisa [1]
Fase Analisa [1]
●
Memahami software yang akan dibuat
Memahami software yang akan dibuat
(requirement)
(requirement)
– Diskusi dengan SMEDiskusi dengan SME – Diskusi dengan UserDiskusi dengan User
●
Verifikasi requirement
Verifikasi requirement
– Review hasil analisaReview hasil analisa – Prototyping Prototyping
Fase Analisa [2]
Fase Analisa [2]
●
Mendapatkan komitmen
Mendapatkan komitmen
– Sign offSign off
– Email ApprovalEmail Approval
●
Mengelola perubahan
Mengelola perubahan
Fase Analisa [3]
Fase Analisa [3]
●
Requirement yang baik
Requirement yang baik
– Sahih (tidak berdasarkan asumsi)Sahih (tidak berdasarkan asumsi) – Dapat diimplementasikanDapat diimplementasikan
– Benar-benar diperlukanBenar-benar diperlukan – Memiliki skala prioritasMemiliki skala prioritas – Tidak ambiguTidak ambigu
Fase Analisa [4]
Fase Analisa [4]
●
Spesifikasi yang baik
Spesifikasi yang baik
– LengkapLengkap – KonsistenKonsisten – Bisa diubahBisa diubah – Bisa dilacakBisa dilacak
Produk Fase Analisa
Produk Fase Analisa
●
Functional Spec / SRS / URS / CRS
Functional Spec / SRS / URS / CRS
●Test Scenario
Test Scenario
●
Requirement Traceability Matrix
Requirement Traceability Matrix
●Prototype
Prototype
●
UML Diagram
UML Diagram
– Use Case DiagramUse Case Diagram – Activity DiagramActivity Diagram
Tools Fase Analisa
Tools Fase Analisa
●
DokuWiki
DokuWiki
●OSRMT
OSRMT
●
Jude Community
Jude Community
●Poseidon CE
Poseidon CE
Kegunaan Spesifikasi
Kegunaan Spesifikasi
●
Marketing
Marketing
– membuat brosurmembuat brosur
– merencanakan kegiatan pemasaranmerencanakan kegiatan pemasaran
●
Developer
Developer
– mendesain softwaremendesain software – membuat softwaremembuat software
●
Technical Writer
Technical Writer
???
???
Pertanyaan dan Diskusi
Change Management
Change Management
●
Kebutuhan user
Kebutuhan user
– PASTI BERUBAH !!!PASTI BERUBAH !!!
●
Ini adalah hal yang alami
Ini adalah hal yang alami
●
Perlu ada prosedur khusus sehingga tidak
Perlu ada prosedur khusus sehingga tidak
mengacaukan proyek
mengacaukan proyek
●
Perubahan requirement akan berbuntut:
Perubahan requirement akan berbuntut:
– PPerubahan efforterubahan effort
– Perubahan durasiPerubahan durasi – Perubahan biayaPerubahan biaya
Prosedur Change Management
Prosedur Change Management
●
Change Requester harus jelas
Change Requester harus jelas
●
Impact Analysis harus dihitung dengan
Impact Analysis harus dihitung dengan
cepat
cepat
– gunakan Requirement Traceability Matrixgunakan Requirement Traceability Matrix
●
Berdasarkan hasil Impact Analysis,
Berdasarkan hasil Impact Analysis,
Steering Committee bisa memutuskan:
Steering Committee bisa memutuskan:
– approve and proceed immediatelyapprove and proceed immediately– pending to next phasepending to next phase – discard completelydiscard completely
???
???
Pertanyaan dan Diskusi
Fase Desain [1]
Fase Desain [1]
●
Desain tampilan akhir
Desain tampilan akhir
– warnawarna – hurufhuruf
– efek khususefek khusus
●
Memilih teknologi dan framework
Memilih teknologi dan framework
– kemudahankemudahan – kecepatankecepatan – fiturfitur
Fase Desain [2]
Fase Desain [2]
●
Menentukan partisi sistem
Menentukan partisi sistem
– komponenkomponen – pluginplugin
Produk Fase Desain
Produk Fase Desain
●
Technical Specification
Technical Specification
●Proof of Concepts
Proof of Concepts
●
Arsitektur Sistem
Arsitektur Sistem
●
Dokumentasi pemilihan teknologi
Dokumentasi pemilihan teknologi
– Alternatif yang dipertimbangkanAlternatif yang dipertimbangkan – Kriteria yang digunakanKriteria yang digunakan
– Bobot masing-masing kriteriaBobot masing-masing kriteria
– Penilaian masing-masing alternatifPenilaian masing-masing alternatif
Tools Fase Desain
Tools Fase Desain
●
Jude Community
Jude Community
●Poseidon CE
Poseidon CE
●
Aqua Studio
Aqua Studio
●DBDesigner
DBDesigner
???
???
Pertanyaan dan Diskusi
Fase Coding [1]
Fase Coding [1]
●
Persiapan Development
Persiapan Development
– Version ControlVersion Control
– Mailing List / Forum DiskusiMailing List / Forum Diskusi – Bug TrackerBug Tracker
– Continuous IntegrationContinuous Integration
●
Kebijakan Coding
Kebijakan Coding
– coding standardcoding standard – quality standardquality standard
Fase Coding [2]
Fase Coding [2]
●
Pengukuran kualitas kode
Pengukuran kualitas kode
– keterikatan (coupling)keterikatan (coupling) – kompleksitaskompleksitas
– kemudahan pengembangan (extensibility)kemudahan pengembangan (extensibility) – kesesuaian dengan best-practiceskesesuaian dengan best-practices
– kecukupan jumlah test vs jumlah kodekecukupan jumlah test vs jumlah kode –
Fase Coding [3]
Fase Coding [3]
●
Jenis test yang dilakukan programmer
Jenis test yang dilakukan programmer
– Unit Test : method/functionUnit Test : method/function
– Coverage Test : kecukupan unit testCoverage Test : kecukupan unit test – Code Review : praktek codingCode Review : praktek coding
– Integration Test : interaksi dengan sistem lain Integration Test : interaksi dengan sistem lain
(database, mail, aplikasi lain)
(database, mail, aplikasi lain)
– Performance Test : waktu yang dibutuhkan Performance Test : waktu yang dibutuhkan
untuk menjalankan fitur tertentu
untuk menjalankan fitur tertentu
– Stress Test : perilaku fitur bila dihadapkan Stress Test : perilaku fitur bila dihadapkan
dengan request yang banyak
Produk Fase Coding
Produk Fase Coding
●
Coding convention
Coding convention
●Kode program
Kode program
●
Unit test
Unit test
●
Code review report
Code review report
●Unit test report
Unit test report
●
Coverage test report
Coverage test report
●User Manual
User Manual
Tools Fase Coding (Java)
Tools Fase Coding (Java)
● AntAnt
● PMD / FindbugsPMD / Findbugs ● JUnit / TestNG JUnit / TestNG
● Cobertura / EmmaCobertura / Emma ● DBUnit DBUnit
● CruiseControl / LuntbuildCruiseControl / Luntbuild ● JDepend JDepend
● JUnitPerf JUnitPerf ● JMeter JMeter
Tools Fase Coding (Umum)
Tools Fase Coding (Umum)
●Subversion
Subversion
●Mantis
Mantis
●phpBB
phpBB
●Redmine
Redmine
●GForge
GForge
???
???
Pertanyaan dan Diskusi
Fase Testing
Fase Testing
●
Terdiri dari
Terdiri dari
– Internal Testing: dilakukan oleh project teamInternal Testing: dilakukan oleh project team – User Testing: dilakukan oleh customerUser Testing: dilakukan oleh customer
●
Tujuan (Internal Testing)
Tujuan (Internal Testing)
– mengurangi jumlah bug yang ditemukan oleh mengurangi jumlah bug yang ditemukan oleh
customer / end-user
customer / end-user
●
Tujuan (User Testing)
Tujuan (User Testing)
– memastikan software yang diterima sesuai memastikan software yang diterima sesuai
dengan spesifikasi yang diminta
Produk Fase Testing
Produk Fase Testing
●
Bug Report
Bug Report
●Bug Fix
Bug Fix
Tools Fase Testing
Tools Fase Testing
●
Functional Specification
Functional Specification
●Test Scenario
Test Scenario
●
Mantis
Mantis
●
Selenium
Selenium
●HttpUnit
HttpUnit
●
Canoo WebTesting
Canoo WebTesting
●Abbot & Costello
Abbot & Costello
???
???
Pertanyaan dan Diskusi
Fase Implementasi
Fase Implementasi
●
Tujuan
Tujuan
– menyiapkan aplikasi untuk penggunaan yang menyiapkan aplikasi untuk penggunaan yang
sebenarnya (go-live)
sebenarnya (go-live)
●
Kegiatan
Kegiatan
– User TrainingUser Training
– Administrator TrainingAdministrator Training – Migrasi Data (kalau ada)Migrasi Data (kalau ada) – Cut off sistem/proses lamaCut off sistem/proses lama
Produk Fase Implementasi
Produk Fase Implementasi
●
Training Material
Training Material
●Cut-off Data
Cut-off Data
Fase Pemeliharaan
Fase Pemeliharaan
●
Kegiatan
Kegiatan
– perbaikan bug yang tersisaperbaikan bug yang tersisa – penambahan fiturpenambahan fitur
– perubahan fiturperubahan fitur
●
Bisa dilakukan dalam kesepakatan
Bisa dilakukan dalam kesepakatan
terpisah atau sebagai bagian dari masa
terpisah atau sebagai bagian dari masa
garansi
Terima Kasih
Terima Kasih
● [email protected]@artivisi.com ● http://endy.artivisi.comhttp://endy.artivisi.com