Professional Documents
Culture Documents
Software Development
Pengembangan Sistem Aplikasi
Pendekatan Tradisional
1
SDLC
System Development Life Cycle)
proses pembuatan dan pengubahan sistem
Waterfall
Fase Kontruksi/Pengembangan:
desain sistem
membangun sistem
pengujian sistem
Fase Implementasi:
Instalasi
Operasional & Maintenance
4
Analysis Kelayakan
Yang dianalisis:
kemungkinan pengurangan biaya
keuntungan yang mungkin diraih
kesuksesan bisnis
estimasi waktu dan jadwal
kelayakan terhadap kemampuan teknis
organisasi
10
dapat dilakukan:
strategi paralel: jalan bersama untuk beberapa
waktu
strategi pilot: menjalankan di beberapa bagian
strategi berfase: bertahap menerapkan
strategi Cold Turkey: langsung menghentikan
total sistem lama
13
Paralel
Pilot
Bertahap
Cold Turkey
14
Modifikasi sistem
Berpedoman (interfacing) ke sistem lain
Perubahan hak akses sistem
Penanganan terhadap fasilitas pada sistem
yg rusak
Perlu adanya dokumentasi yg baik serta
transfer of knowledge dari pembuat sistem
ke SDM perusahaan untuk menjamin
terkelolanya proses pemeliharaan sistem.
16
Pendekatan alternatif
Pengembangan sistem menggunakan
17
Step 1
Kebutuhan sistem dasar
Step 2
Kembangkan prototipe awal
Step 3
Gunakan prototipe dan catat
perubahan yang diinginkan
User Ok
Step 4
Perbaiki prototipe sesuai dengan
yang diinginkan
18
User
Ok
19
21
Verification
&
Validation
oleh Retantyo W
22
Verification vs validation
Verification:
Validation:
Spesifikasi
s
persyaratan
Prototipe
Peranc. tk.
tinggi
Spesifikasi
formal
Perancangan rinci
Program
Pengujian
prog (DV)
SV dapat digunakan pada semua tahap proses PL, sementara DV hanya bisa
dilakukan jika ada program atau prototype
pengembangan PL.
Tujuan : Menemukan cacat dalam sistem
Static Verification
Hanya dapat memeriksa hubungan antar
Pengujian PL
Masih mendominasi
Menggunakan data riil
Sebuah testing yg baik/sukses adalah yg
Type pengujian
Defect testing (pengujian cacat)
Untuk mengungkapkan adanya cacat pada sistem,
bukan untuk simulasi penggunaan.
Uji cacat yg sukses adalah uji yg menyebabkan
sistem berlaku tidak benar shg mengungkapkan
adanya cacat pd PL.
Menunjukkan keberadaan kesalahan, bukan tidak
adanya kesalahan program
Menemukan ke-tidakkonsisten-an antara program
dengan spesifikasinya
Type pengujian
Statistical testing
Uji dirancang untuk menunjukkan input user yg
sebenarnya dan frekuensinya.
Untuk menguji kinerja dan keandalan program dan
memeriksa bagaimana kerjanya pd kondisi
operasional
untuk tujuannya
Tidak berarti bahwa program harus benar-benar
bebas dari cacat
Melainkan : Ini berarti bahwa sistem harus cukup
baik untuk tujuannya.
Tingkat kepercayaan bergantung pada tujuan sistem,
harapan user dan lingkungan pemasaran sistem pd
saat itu
User expectations
Banyak User memiliki harapan yang rendah dari PL mrk & tidak terkejut saat
PL tsb gagal saat dipakai
Marketing environment
Melemparkan produk ke pasaran lebih penting dari pada menemukan
kesalahan terlebih dahulu
Proses Debug
Hasil Test
Temukan lokasi
error
Specification
Rancang
perbaikan
Kasus uji
Perbaiki
error
Uji ulang
program
Perencanaan V & V
Diperlukan perrencanaan yang hati-hati utk mendapatkan
Spesifikasi
sistem
cccc
c
Rencana
c
uji
penerimaan
Layanan
Perancangan
sistem
Rencana uji
integrasi sistem
Uji Penerimaan
Uji integrasi
sistem
Perancangan
rinci
Rencana uji
integrasi
sub sistem
Kode dan
pengujian modul
dan unit
Uji integrasi
sub sistem
Software inspections
(inspeksi PL)
Pengujian program yg sistematis membutuhkan
Inspeksi Program
Proses formal yg dilakukan oleh tim kecil
Fokus pada deteksi kesalahan bukan koreksi
Cacat dapat berupa logical errors,
Inspection pre-conditions
Sebelum inspeksi program dimulai, adalah penting bahwa:
Ada spesifikasi yg pasti mengenai kode yg akan diperiksa
Anggota team inspeksi mengenal baik standard organisasi
Tersedia versi kode yg up to date dan benar secara sintak
tidak ada gunanya memeriksa kode yg hampir lengkap
Daftar error yg umum harus dipersiapkan
Manajemen harus menerima kenyataan bahwa proses inspeksi
akan menimbulkan peningkatan biaya dalam pembangunan
PL
Manajemen tidak boleh menggunakan proses inspeksi untuk
penilaian staf
Proses Inspeksi
Perencanaan
Tinjauan
Persiapan
i
individu
Rapat
pemeriksaan
Pengerjaan
ulang
Tindak
lanjut
Prosedur Inspeksi
Program yg akan diinspeksi diserahkan kpd team inspeksi
Kode dan dokumen terkait didistribusikan dlm tahap
Team Inspeksi
Tim paling sedikit terdiri dari 4 orang
Pembuat program adalah org yg bertanggung jawab
Inspection checklists
(daftar error)
Untuk memandu kegiatan inspeksi
Tergantung bahasa pemrograman yang
digunakan
Contoh : inisialisasi, penamaan constanta,
Examples: Initialisation, Constant naming, loop
termination, dll.
Faultclass
Datafaults
Controlfaults
Input/outputfaults
Interfacefaults
Storage management
faults
Exception
managementfaults
Inspectioncheck
Areallprogramvariablesinitialisedbeforetheir values
areused?
Haveallconstantsbeennamed?
Shouldthelowerboundofarraysbe0,1,orsomething
else?
Shouldtheupperboundofarraysbeequaltothesizeof
thearrayorSize1?
Ifcharacterstringsare used,isadelimiterexplicitly
assigned?
Foreachconditionalstatement,istheconditioncorrect?
Iseachloopcertaintoterminate?
Arecompoundstatementscorrectlybracketed?
Incasestatements,areallpossiblecasesaccountedfor?
Areallinputvariablesused?
Arealloutputvariablesassigned avaluebeforetheyare
output?
Do allfunctionandprocedurecallshavethecorrect
numberofparameters?
Doformalandactualparametertypesmatch?
Aretheparametersintherightorder?
Ifcomponentsaccesssharedmemory,dotheyhave the
samemodelofthesharedmemorystructure?
Ifalinkedstructureismodified, havealllinksbeen
correctlyreassigned?
Ifdynamic storageisused,hasspacebeenallocated
correctly?
Isspaceexplicitlydeallocatedafterit
isnolonger
required?
Haveallpossibleerrorconditionsbeentaken
into
account?
Inspection
checks
individu
90-125 statements/jam saat rapat
Sehingga Inspeksi adalah proses yang
sangat mahal
Staticanalysischeck
Variablesusedbeforeinitialisation
Variablesdeclaredbutneverused
Variables assignedtwicebutneverused
betweenassignments
Possiblearrayboundviolations
Undeclaredvariables
Controlfaults
Unreachablecode
Unconditionalbranchesintoloops
Input/outputfaults
Variables outputtwicewithnointervening
assignment
Interfacefaults
Parametertypemismatches
Parameternumbermismatches
Nonusageoftheresultsoffunctions
Uncalledfunctionsandprocedures
Storage
management Unassignedpointers
faults
Pointerarithmetic
masuk dan titik keluar, dan menemukan kode2 yang tidak bisa dicapai
(dikelilingi oleh statement goto), dll.
Analisis penggunaan data. Mendeteksi var yg digunakan tanpa
inisialisasi sebelumnya, variabel yang ditulis dua kali tanpa penentuan
nilai diantaranya dan variabel yang dideklarasikan tapi tidak pernah
dipakai, dll.
Analisis interface. Memeriksa konsistensi deklarasi prosedur dan
139% cc lint_ex.c
140% lint lint_ex.c
lint_ex.c(10): warning: c may be used before set
lint_ex.c(10): warning: i may be used before set
printarray: variable # of args. lint_ex.c(4) :: lint_ex.c(10)
printarray, arg. 1 used inconsistently lint_ex.c(4) ::
lint_ex.c(10)
printarray, arg. 1 used inconsistently lint_ex.c(4) ::
lint_ex.c(11)
printf returns value which is always ignored
Pengembangan PL Cleanroom
Salah satu cntoh pengembangan PL yg menghindari cacat
Istilah Cleanroom berasal dari unit pabrikasi semikonduktor.
Pd unit ini (cleanroom) cacat dihindari dgn pemabrikan pada
model cleanroom :
Spesifikasi formal
Pengembangan inkremental
PL dibagi menjadi inkremen (bagian) dan divalidasi
secara terpisah dgn metode cleanroom.
Pemrograman terstruktur
Verifikasi statis.
Pengujian statistik sistem
Proses Pengembangan
Cleanroom
Pengerjaanulangerror
Spesifikasi
sistemsecara
formal
Defenisikan
inkremenPL
Kembangkan
profil
operasional
Buat
program
terstruktur
Verifikasi
kodesecara
formal
Rancang
ujistatistik
Integrasikan
inkremen
Ujisistem
terintegrasi
Tetapkan
persyaratan
Spesifikasi
formal
Kembangkan
inkremenPL
Permintaanperubahanpersyaratant
SerahkanPL
62
Pembahasan
Defect testing (Pengujian cacat)
Integration testing (Pengujian integrasi)
Object-oriented testing (Pengujian berbasis
objek)
Testing workbenches (meja kerja pengujian)
Proses Pengujian
Pengujian Komponen
Berhubungan dengan pengujian berfungsinya komponen
Biasanya merupakan tanggung jawab programmer
Tes dilakukan berdasarkan pengalaman programer
Pengujian Integrasi
Menguji sekumpulan komponen yang terintegrasi sehingga
membentuk sebuah sistem atau sub sistem
Merupakan tanggung jawab team penguji independent
Tes dilakukan berdasarkan spesifikasi sistem
Fase Pengujian
Pengujian
komponen
Pengujian
integrasi
PengembangPL
Timpengujiindependent
I. Pengujian Cacat
Tujuannya adalah untuk mengungkap cacat
pada program
Pengujian yg berhasil adalah pengujian yang
menyebabkan sistem berprilaku tidak benar
Pengujian ini menunjukkan keberadaan bukan
tidak adanya kesalahan program
Berlawanan dengan pengujian validasi yang
menuntut sistem berlaku benar
Testing priorities
Hanya pengujian mendalam dapat
Kasus
Uji
Rancang
kasus uji
Data uji
Siapkan
data uji
Hasil uji
Jalankan prog
dgn data uji
s
Laporan
uji
A. Black-box testing
Pengujian berdasarkan pada spesifikasi sistem
program dianggap sebagai sebuah black-box
Black-box testing
Jika output
bukan merupakan
yang diramalkan,
berarti uji tsb
telah berhasil
mendeteksi
masalah dgn PL tsb
Input yg menyebabkan
prilaku menyimpang
System
Outputtest results
Oe
Output yg mengungkap
adanya cacat
B. Partisi Equivalensi
Data Input dan hasil output biasanya masuk dalam
Partisi Equivalesi
Invalidinputs
System
Outputs
Validinputs
Partisi Equivalesi
PE dapat diidentifikasi dengan
Kurang dari 4
Nilaiinput
11
10
Lebihdari10
Antara 4 dan
10
Jumlahnilaiinput
9999
10000
Kurangdari10000
50000
100000
99999
Antara10000dan999999
Lebihdari99999
nilai
Gunakan deret yang berbeda dengan ukuran
yang berbeda pada uji yang berbeda
Turunkan uji sehingga elemen deret yang
pertama, tengah dan terakhir diakses
Inputsequence(T)
17
17
17,29,21,23
41,18,9,31,30,16,45
17,18,21,23,29,41,38
21,23,29,33,38
Element
Insequence
Notinsequence
Firstelementinsequence
Lastelementinsequence
Middleelementinsequence
Notinsequence
Key(Key)
17
0
17
45
23
25
Output(Found, L)
true,1
false,??
true,1
true,7
true,4
false,??
C. Structural testing
Disebut juga white-box testing
Diturunkan dari pengetahuan struktur dan
implementasi PL
Biasa diterapkan utk unit program yg relatif kecil
Penguji dpt menganalisis kode dan menggunakan
pengetahuan mengenai struktur komponen utk
menurunkan data uji
Pengetahuan mengenai algorithma dpt dipakai
White-box testing
DataUji
Uji
Menurunkan
Kodekomponen
OutputUji
class BinSearch {
// This is an encapsulation of a binary search function that takes an array of
// ordered objects and a key and returns an object with 2 attributes namely
// index - the value of the array index
// found - a boolean indicating whether or not the key is in the array
// An object is returned because it is not possible in Java to pass basic types by
// reference to a function and so return two values
// the key is -1 if the element is not found
public static void search ( int key, int [] elemArray, Result r )
{
int bottom = 0 ;
int top = elemArray.length - 1 ;
int mid ;
r.found = false ; r.index = -1 ;
while ( bottom <= top )
{
mid = (top + bottom) / 2 ;
if (elemArray [mid] == key)
{
r.index = mid ;
r.found = true ;
return ;
} // if part
else
{
if (elemArray [mid] < key)
bottom = mid + 1 ;
else
top = mid - 1 ;
}
} //while loop
} // search
} //BinSearch
Elements<Mid
Elements>Mid
Midpoint
D. Pengujian Jalur
Bertujuan untuk menguji setiap jalur
bottom>top
whilebottom<=top
2
if(elemArray[mid]==key
8
5
(if(elemArray[mid]<key
Edge = 11
Node = 9
CC = 11-9+2
=4
9
7
Independent paths
1, 2, 3, 8, 9
1, 2, 3, 4, 6, 7, 2
1, 2, 3, 4, 5, 7, 2
1, 2, 3, 4, 6, 7, 2, 8, 9
T1
T1
A
T1
T2
T2
T2
T3
T3
C
T4
T3
C
T4
T5
D
Testsequence
1
Testsequence
2
Testsequence
3
dikombinasikan
Top-down testing
Level1
Testing
sequence
Level2
Le vel2
stubs
Le vel3
stubs
Level1
Level2
Le vel2
...
Level2
Bottom-up testing
Test
drivers
LevelN
Test
drivers
LevelN
LevelN1
Le velN
LevelN1
LevelN
LevelN
LevelN1
Testing
sequence
b.Pengujian Interface
Dilakukan saat sub sistem diintegrasi utk
Interface testing
Test
cases
Pengujian
bukan
terhadap
komponen,
tetapi
terhadap
subsistem yg
terbuat dari
gabungan
komponen
Jenis Interface
Parameter interfaces (interface parameter)
Interface tempat data yg dikirim dari procedure
(komponen) ke komponen lain
Shared memory interfaces (interface memory
bagi pemakai)
Interface dgn satu blok memory dipakai bersama
antar sub sistem
Jenis Interface
Procedural interfaces (Interface procedural)
Interface dgn satu sub sistem mengencapsulasi satu
set prosedur yg dapat dipanggil oleh sub sistem lain
Message passing interfaces
Interface tempat satu sub sistem meminta layanan
dari satu sub sistem lain dengan mengirimkan
message kepadanya
Error Interface
Salah satu bentuk error paling umum pd sistem komplek.
Penyalahgunaan Interface
Komponen pemanggil memanggil komponen lain dan
melakukan error dalam penggunaan interfacenya. Mis
urutan dan jml pengiriman yg salah
Kesalahpahaman Interface
Komponen pemanggil salah memahami spesifikasi
interface komponen yg dipanggil. Mis rutin search biner
dipanggil dgn aaray yg tidak urut, shg search akan gagal
Error Interface
Timing errors
Terjadi pada sistem waktu nyata (sistem yg
memberikan respons langsung saat diakses. Cth :
ATM, pemesanan tiket online) yg menggunakan
memory
komponen eksternal.
Selalu uji interface dgn parameter pointer null
Rancang uji yg akan mengakibatkan komponen gagal
Gunakan pengujian stress dlm sistem message
passing
Dalam sharing memory rancang uji yg mengubahubah urutan aktivasi komponen
c. Pengujian Stress
Melanjutkan pengujian utk melewati beban
mencakup
Pengujian semua operasi yg berhubungan dgn objek
Setting dan integrasi semua attribut yg berhub dgn objek tsb
Melatih objek dgn semua status yg mungkin
d. Pengujian Workbenches
Pengujian adalah fase proses yang mahal.
Shg banyak alat bantu pengujian
A testing workbench
Testdata
generator
Specification
Source
code
Test
manager
Testdata
Oracle
Dynamic
analyser
Program
beingtested
Test
results
Test
predictions
Execution
report
Simulator
File
comparator
Report
generator
Testresults
report
SISTEM KRITIS
Defenisi
Yaitu Sistem yang apabila terjadi
Dimensi dependabilitas :
Ketersediaan (Availability)
Probabilitas bahwa sistem dapat bekerja dan
memberikan layanan yang berguna setiap saat
Keandalan (Reliability)
Probabilitas bahwa dalam jangka waktu tertentu
bahwa sistem akan memberikan layanan
dengan benar sesuai harapan user
Keselamatan (Safety)
Penilaian pada seberapa besar kemungkinan
sistem akan menyebabkan kerusakan terhadap
orang dan lingkungan sistem
Keamanan (Security)
Penilaian pada seberapa besar kemungkinan
sistem dapat bertahan terhadap campur tangan
yang disengaja atau tidak disengaja
Keandalan :
Sistem hrs bekerja andal dan mengalirkan jumlah
insulin yang tepat
Keselamatan :
Kegagalan sistem dapat mengakibatkan pemberian dosis
yg berlebihan shg mengancam hidup pasien
KETERSEDIAAN &
KEANDALAN
Keandalan mencakup ketersediaan
Krn jika suatu layanan yg telah ditentukan
Keandalan :
Probabilitsas sistem yg bebas dr kegagalan dlm
kurun waktu tertentu pada suatulingkungan
tertentu dan untuk tujuan yg tertentu pula
Ketersediaan :
Probabilitas bahwa suatu sistem pada suatu waktu
akan bekerja dan dapat memberikan layanan yang
diminta
Toleransi kesalahan
Menjamin bahwa kesalahan sistem tidak menghasilkan eror atau menjamin
bahwa eror sistem tidak mngakibatkan kegagalan
KESELAMATAN
Yaitu atribut sistem yg merefleksikan
Keselamatan
3.Operator sistem
3.Membatasi kerusakan
Dgn menyertakan fitur proteksi yg akan meminimalisasi kerusakan
cth : pemadam api otomatis, sebelum melukai penumpang dan awak pesawat
KEAMANAN
Yaitu penilaian sampai sejauh mana sistem
Spesifikasi keandalan PL
Perlunya dependibilitas pd sistem kritis
menimbukan :
Persyaratan fungsional
Dibuat utk mendefenisikan pemeriksaan eror dan
fasilitas pemulihan serta fitur2 yg memberikan
proteksi thd kegagalan sistem
Persyaratan non-fungsional
Untuk mendefenisikan keandalan dan ketersediaan
sistem yg dibutuhkan
Spesifikasi keselamatan PL
Operasi yg selamat mrpk karakteristik yg
Pengurangan resiko :
Penghindaran bahaya
Sistem dirancang shg bahaya tidak muncul
Pembatasan kerusakan
Sistem dirancang shg konsekuensi kecelakaan
diminimalisasi
Spesifikasi Keamanan
Tahap proses spesifikasi keamanan :
Identifikasi dan evaluasi aset (data dan
program)
Analisis ancaman dan penilaian resiko
Penggolongan ancaman
Analisis teknologi
PENGEMBANGAN SISTEM
KRITIS
Toleransi kesalahan
Sistem hrs dirancang sedemikian rupa shg kesalahan
selama eksekusi akan terdeteksi dan tertangani.
Toleransi kesalahan
Minimalisasi Kesalahan
PL yg bebas dr kesalahan adalah PL yg dgn
Penghindaran Error
Stetement goto merupakan konstruksi
Penyembunyian Informasi
Komponen2 program harus diperbolehkan
Toleransi Kesalahan
Tujuannya utk menjamin bahwa kesalahan
Validation perspectives
Validasi Reliability/keandalan
Apakah keandalan sistem telah sesuai dengan
spesifikasinya?
Apakah keandalan sistem telah memberikan
kepuasan pada user pemakai sistem?
Validasi Safety/keselamatan
Menjamin bahwa kecelakaan tidak akan terjadi
atau bahwa konsekuensi kecelakaan akan minimal.
Validation perspectives
Validasi Security/keamanan
Apakah sistem dan datanya aman terhadap
serangan external?
Tekhnik Validasi
Static techniques
Review terhadap disain /inspeksi program
Dynamic techniques
Pengujian Statistik
Pengujian berbasis skenario
Pemeriksaan Run-time
Tekhnik Validasi
Process validation
Desain proses pembangunan yang
meminimalkan kemungkinan kesalahan dari
proses sesuai dgn dependibilitas sistem
(keandalan, ketersediaan, keselamatan dan
keamanan)
Safety reviews
Peninjauan thd Review utk kebenaran function
Peninjauan thd maintainable, understandable
structure
Peninjauan thd algorithma dan disain struktur data
berdasarkan spesifikasi
Peninjauan thd konsistensi kode dgn algorithma dan
disain struktur data
Peninjauan thd kelayakan sistem pengujian
Review guidance
Buatlah software sesederhana mungkin
Gunakan teknik yg sederhana dlm pencegahan error
Hazard-driven analysis
Efektif atau tidaknya jaminan keselamatan
Hazard-driven analysis
Safety review (ulasan keselamatan) harus