RESUME REKAYASA PERANGKAT LUNAK
"SOFTWARE ENGINEERING"
Ian Sommerville
disusun oleh : Willi Kornellius
CHAPTER 1
Introduction
1.1 Rekayasa perangkat lunak adalah disiplin
teknik yang berkaitan dengan semua aspek produksi perangkat lunak dari tahap
awal spesifikasi sistem hingga pemeliharaan sistem setelah mulai digunakan.
Dalam definisi ini,ada dua frase kunci:
-Engineering discipline membuat segala
sesuatu bekerja. mereka menerapkan teori, metode, dan alat dimana ini sesuai
dan menggunakannya secara selektif.
-All aspects of software production rekayasa
perangkat lunak tidak hanya berkaitan dengan proses teknis pengembangan
perangkat lunak. ini juga termasuk kegiatan seperti manajemen proyek perangkat
lunak dan pengembangan alat, metode dan teori untuk mendukung produksi
perangkat lunak.
1.2 Keragaman rekayasa perangkat lunak adalah
pendekatan sistematis untuk produksi perangkat lunak itu sendiri dengan
memperhitungkan biaya yang murah, jadwal, dan masalah ketergantungan, serta
kebutuhan pelanggan dan produsen perangkat lunak. bagaimana pendekatan
sistematis ini diimplementasikan sangat bervariasi tergantung pada organisasi
yang mengembangkan jenis perangkat lunak tersebut dan orang-orang yang terlibat
proses didalamnya. tidak ada metode dan teknik rekayasa perangkat lunak
universal yang cocok untuk semua sistem dan semua perusahaan , melainkan
beragam RPL metode dan alat telah berkembang selama 50 tahun terakhir.
1.3
Software Engineering and Web perkembangan world wide web memiliki
efek mendalam karena pada awalnya informasi yang dapat diakses secara universal
sangat minim, sekitar 2000 web mulai berevolusi dan semkain banyak fungsi yang
ditambahkan ke browser.ini artinya sistem berbasis web dapat dikembangkan
dimana, alih-alih pengguna dengan tujuan khusus antarmuka, sistem ini dapat
diakses menggunakan browser web.ini menyebabkan pengembangan beragam produk
sistem baru yang memberikan layanan inovatif, diakses melalui web.banyak bisnis
telah pindah untuk berinteraksi berbasis web dengan sistem perangkat lunak.
CHAPTER 2
Software processes
2.1 Software
process models seperti yang saya jelaskan dibab 1, model proses perangkat
lunak adalaha representasi yang disederhanakan oleh proses perangkat lunak. Setiap model proses mewakili proses
dari perspektif tertentu, dan dengan demikian hanya memberikan informasi
parsial tentang proses itu. Sebagai contoh, model aktivitas proses menunjukkan
aktivitas dan urutannya tetapi mungkin tidak ditampilkan peran orang-orang yang
terlibat dalam kegiatan ini. Di bagian ini, saya memperkenalkan sejumlah model
proses yang sangat umum (kadang-kadang disebut 'paradigma proses') dan
menyajikan ini dari perspektif arsitektur. Artinya, kita melihat kerangka kerja
proses tetapi tidak rincian kegiatan spesifik.
Model generik ini bukan deskripsi pasti dari
proses perangkat lunak. mereka adalah abstraksi dari proses yang dapat
digunakan untuk menjelaskan berbagai pendekatan pengembangan perangkat lunak.
Anda bisa menganggapnya sebagai kerangka proses yang mungkin diperluas dan
disesuaikan untuk menciptakan proses rekayasa perangkat lunak yang lebih
spesifik.
2.2 Process activities
Proses perangkat lunak nyata adalah urutan
yang saling terkait teknis, kolaboratif, dan
kegiatan manajerial dengan tujuan keseluruhan
untuk menentukan, merancang, mengimplementasikan,
dan menguji sistem perangkat lunak.
Pengembang perangkat lunak menggunakan berbagai perangkat lunak yang berbeda.
Empat kegiatan dasar proses spesifikasi, pengembangan, validasi, dan evolusi
diatur secara berbeda dalam proses pengembangan yang berbeda. Di air terjun
model, mereka disusun secara berurutan, sedangkan dalam pengembangan tambahan
merekadisisipkan. Bagaimana kegiatan ini dilakukan tergantung pada jenis
perangkat lunak, orang, dan struktur organisasi yang terlibat. Dalam
pemrograman ekstrim, misalnya, spesifikasi tertulis di kartu. Tes dapat
dieksekusi dan dikembangkan sebelum program itu sendiri. Evolusi dapat
melibatkan restrukturisasi atau refactoring sistem yang substansial.
2.3 Coping with change Perubahan tidak bisa
dihindari dalam semua proyek perangkat lunak besar. Persyaratan sistem berubah
karena bisnis pengadaan sistem merespons tekanan dan manajemen eksternal
sehingga prioritas pun berubah. Ketika teknologi baru tersedia, desain baru dan
kemungkinan implementasi muncul. Oleh karena itu model proses perangkat lunak
apa pun yang digunakan, itu penting bahwa itu dapat mengakomodasi perubahan
pada perangkat lunak yang dikembangkan.
2.4 The Rational unified Process
Proses Bersatu Rasional adalah contoh dari
modern
model proses yang telah diturunkan dari
pekerjaan di UML dan Unified terkait
Proses Pengembangan Perangkat Lunak.karena
ini adalah contoh yang baik dari model proses hybrid.
Ini menyatukan elemen-elemen dari semua model
proses generik menggambarkan praktik yang baik dalam spesifikasi dan desain dan
mendukung pembuatan prototipe dan pengiriman tambahan.
RUP mengakui bahwa model proses konvensional
menghadirkan pandangan tunggal proses. Sebaliknya, RUP biasanya digambarkan
dari tiga perspektif:
1.
Perspektif dinamis, yang menunjukkan fase model dari waktu ke waktu.
2.
Perspektif statis, yang menunjukkan aktivitas proses yang diberlakukan.
3.
Perspektif praktik, yang menyarankan praktik yang baik untuk digunakan
selama proses.
Sebagian besar deskripsi upaya RUP untuk
menggabungkan perspektif statis dan dinamis dalam satu diagram. Saya pikir itu
membuat prosesnya lebih sulit dimengerti, jadi saya menggunakan deskripsi
terpisah dari masing-masing perspektif ini.
RUP adalah model bertahap yang
mengidentifikasi empat fase diskrit dalam perangkat lunak proses. Namun, tidak
seperti model air terjun di mana fase disamakan dengan proses kegiatan, fase
dalam RUP lebih terkait erat dengan bisnis daripada masalah teknis. menunjukkan
fase dalam RUP. Ini adalah:
1.
Pendahuluan Tujuan dari fase awal adalah untuk membangun kasus bisnis
untuk sistem. Anda harus mengidentifikasi semua entitas eksternal (orang dan
sistem) yang akan berinteraksi dengan sistem dan mendefinisikan interaksi ini.
Anda kemudian menggunakan informasi ini untuk menilai kontribusi yang diberikan
sistem kepada bisnis. Jika ini kontribusi kecil, maka proyek dapat dibatalkan
setelah fase ini.
2.
Elaborasi Tujuan dari fase elaborasi adalah untuk mengembangkan
pemahaman dari domain masalah, membangun kerangka kerja arsitektur untuk
sistem,mengembangkan rencana proyek, dan mengidentifikasi risiko proyek utama.
Setelah menyelesaikan ini fase Anda harus memiliki model persyaratan untuk
sistem, yang mungkin merupakan set kasus penggunaan UML, deskripsi arsitektur,
dan rencana pengembangan untuk perangkat lunak.
3.
Konstruksi Tahap konstruksi melibatkan desain sistem, pemrograman, dan
pengujian. Bagian dari sistem dikembangkan secara paralel dan terintegrasi
selama tahap ini. Setelah menyelesaikan fase ini, Anda harus memiliki sistem
perangkat lunak yang berfungsi dan dokumentasi terkait yang siap dikirim ke
pengguna.
4.
Transisi Fase terakhir dari RUP berkaitan dengan pemindahan sistem dari
komunitas pengembangan ke komunitas pengguna dan membuatnya bekerja di
lingkungan nyata. Ini adalah sesuatu yang diabaikan dalam sebagian besar proses
perangkat lunak model tetapi, pada kenyataannya, kegiatan mahal dan
kadang-kadang bermasalah.Setelah menyelesaikan fase ini, Anda harus memiliki
sistem perangkat lunak yang terdokumentasi bekerja dengan benar di lingkungan
operasional.
CHAPTER 3 Agile software and development
3.1 Agile Methods Pada 1980-an dan awal
1990-an, ada pandangan luas bahwa cara terbaik untuk melakukannya mencapai
perangkat lunak yang lebih baik adalah melalui perencanaan proyek yang cermat,
kualitas yang diformalkan jaminan, penggunaan metode analisis dan desain yang
didukung oleh alat CASE, dan
proses pengembangan perangkat lunak yang
terkontrol dan ketat. Pandangan ini berasal dari
komunitas rekayasa perangkat lunak yang
bertanggung jawab untuk mengembangkan sistem perangkat lunak besar dan berumur
panjang seperti ruang angkasa dan sistem pemerintah.Perangkat lunak ini
dikembangkan oleh tim besar yang bekerja untuk perusahaan yang berbeda. Tim
sering tersebar secara geografis dan bekerja pada perangkat lunak untuk jangka
waktu yang lama. Contoh dari perangkat lunak jenis ini adalah sistem kontrol
untuk pesawat terbang modern,yang mungkin membutuhkan waktu hingga 10 tahun
dari spesifikasi awal hingga penempatan. Pendekatan plandriven ini melibatkan
overhead yang signifikan dalam perencanaan, perancangan, dan dokumentasi
sistem. Overhead ini dibenarkan ketika pekerjaan beberapa tim pengembang harus
dikoordinasikan, ketika sistem itu sistem kritis, dan ketika banyak berbeda. Metode Agile telah sangat sukses untuk
beberapa jenis pengembangan sistem :
1.
Pengembangan produk di mana perusahaan perangkat lunak sedang
mengembangkan atau kecil produk berukuran sedang untuk dijual.
2.
Pengembangan sistem khusus dalam suatu organisasi, di mana ada komitmen
yang jelas dari pelanggan untuk terlibat dalam proses pengembangan dan di mana
tidak banyak aturan dan regulasi eksternal yang memengaruhi perangkat lunak.
3.2 Plan-driven and agile development
Pendekatan tangkas untuk pengembangan
perangkat lunak mempertimbangkan desain dan implementasi. memasukkan kegiatan
lain, seperti persyaratan elisitasi dan pengujian, ke dalam desain dan
implementasi. Sebaliknya,pendekatan yang digerakkan oleh rencana ke rekayasa
perangkat lunak mengidentifikasi tahap-tahap terpisah dalam proses perangkat
lunak dengan output yang terkait dengan setiap tahap. Output dari satu tahap
adalah digunakan sebagai dasar untuk merencanakan kegiatan proses berikut.Dalam
pendekatan yang digerakkan oleh rencana, iterasi terjadi dalam kegiatan dengan
dokumen formal yang digunakan untuk berkomunikasi antara tahap proses.
Misalnya,persyaratan akan berkembang dan, pada akhirnya, spesifikasi
persyaratan akan diproduksi.
Ini kemudian merupakan input untuk proses
desain dan implementasi. Dalam pendekatan gesit, iterasi terjadi di seluruh
kegiatan. Oleh karena itu, persyaratan dan desainnya adalah dikembangkan
bersama, bukan terpisah.
3.3 Extreame Programming
Pemrograman ekstrim melibatkan sejumlah
praktik :
1.
Pengembangan tambahan didukung melalui rilis kecil dan sering dari
sistem. Persyaratan didasarkan pada cerita atau skenario pelanggan sederhana
digunakan sebagai dasar untuk memutuskan fungsionalitas apa yang harus
dimasukkan dalam suatu sistem kenaikan.
2.
Keterlibatan pelanggan didukung melalui keterlibatan berkelanjutan dari
pelanggan dalam tim pengembangan. Perwakilan pelanggan mengambil bagian dalam
pengembangan dan bertanggung jawab untuk menentukan tes penerimaan untuk
sistem.
3. didukung melalui pemrograman berpasangan,
kepemilikan kolektif atas kode sistem, dan proses pembangunan berkelanjutan
yang tidak melibatkan jam kerja yang terlalu lama.
4.
Perubahan dianut melalui rilis sistem reguler ke pelanggan, uji-pertama
pengembangan, refactoring untuk menghindari degenerasi kode, dan integrasi
berkesinambungan fungsi baru.
5.
Mempertahankan kesederhanaan didukung oleh refactoring konstan yang
meningkatkan kode kualitas dan dengan menggunakan desain sederhana yang tidak
perlu mengantisipasi masa depan perubahan pada sistem.
3.4 Agile project management Fitur inovatif Scrum
adalah fase sentralnya, yaitu siklus sprint.
Scrum sprint adalah unit perencanaan di mana
pekerjaan yang akan dilakukan dinilai, fitur
dipilih untuk pengembangan, dan perangkat
lunak diimplementasikan. Di akhir a
sprint, fungsionalitas yang selesai dikirim
ke pemangku kepentingan. Karakteristik utama
dari proses ini adalah sebagai berikut:
1.
Sprint adalah panjang tetap, biasanya 2-4 minggu. Mereka sesuai dengan
pengembangan rilis sistem di XP.
2.
Titik awal untuk perencanaan adalah jaminan produk, yang merupakan
daftar pekerjaan harus dilakukan pada proyek. Selama fase penilaian sprint, ini
Ulasan, dan prioritas dan risiko ditugaskan. Pelanggan terlibat erat
dalam proses ini dan dapat memperkenalkan
persyaratan atau tugas baru di awal setiap sprint.
3.
Tahap seleksi melibatkan semua tim proyek yang bekerja dengan pelanggan
untuk memilih fitur dan fungsi yang akan dikembangkan selama sprint.
4.
Setelah ini disepakati, tim mengorganisir diri untuk mengembangkan
perangkat lunak. Pertemuan harian singkat yang melibatkan semua anggota tim
diadakan untuk meninjau kemajuan dan jika perlu, memprioritaskan pekerjaan.
Selama tahap ini tim diisolasi dari pelanggan dan organisasi, dengan semua
komunikasi disalurkan melalui 'master Scrum'. Peran master Scrum adalah untuk
melindungi tim pengembangan dari gangguan eksternal. Cara kerjanya dilakukan
tergantung pada masalah dan tim. Tidak seperti XP, Scrum tidak menghasilkan
saran spesifik tentang cara menulis persyaratan, menguji pengembangan pertama,
dll.
Namun, praktik XP ini dapat digunakan jika
tim menganggapnya sesuai.
5. Di
akhir sprint, pekerjaan yang dilakukan ditinjau dan disajikan kepada para
pemangku kepentingan.
Siklus sprint berikutnya kemudian dimulai.
Gagasan di balik Scrum adalah bahwa seluruh tim harus diberdayakan untuk
membuat keputusan sehingga istilah 'manajer proyek', telah sengaja dihindari.
CHAPTER 4 Requirements engineering
4.1 Functional and non-functional requirements
Persyaratan sistem perangkat lunak sering diklasifikasikan sebagai persyaratan
fungsional atau persyaratan nonfungsional:
1.
Persyaratan fungsional :Ini adalah pernyataan layanan yang seharusnya
diberikan oleh sistem, bagaimana sistem harus bereaksi terhadap input tertentu,
dan bagaimana sistem
harus berperilaku dalam situasi tertentu.
Dalam beberapa kasus, persyaratan fungsional juga dapat secara eksplisit
menyatakan apa yang seharusnya tidak dilakukan oleh sistem.
2. Persyaratan
non-fungsional : Ini adalah kendala pada layanan atau fungsi ditawarkan oleh
sistem.termasuk kendala waktu, kendala pada proses pengembangan, dan kendala
yang ditentukan oleh standar. Persyaratan non-fungsional sering berlaku untuk
sistem secara keseluruhan, bukan sistem individual fitur atau layanan.
4.2 Requirements
specification
Namun, pada level detail diperlukan untuk
sepenuhnya menentukan sistem perangkat lunak yang kompleks ,Ada beberapa alasan
untuk ini:
1. Anda mungkin harus merancang arsitektur
awal sistem untuk membantu menyusunnya sesuai kebutuhan. Persyaratan sistem
diatur sesuai dengan berbagai sub-sistem yang membentuk sistem. definisi
arsitektur ini sangat penting jika Anda ingin menggunakan kembali perangkat
lunak komponen saat menerapkan sistem.
2.
Dalam kebanyakan kasus, sistem harus beroperasi dengan sistem yang ada,
yang menjadi kendala desain dan memaksakan persyaratan pada sistem baru.
3.
Penggunaan arsitektur tertentu untuk memenuhi persyaratan non-fungsional
yang perlu untuk menyatakan bahwa sistem tersebut aman dan dapat menentukan
bahwa desain arsitektur yang sudah disertifikasi dapat digunakan.
4.3 Requirements elicitation and analysis
1.
Penemuan persyaratan. Ini adalah proses berinteraksi dengan para
pemangku kepentingan
sistem untuk menemukan persyaratan
mereka.nanti di bagian ini.
2.
Klasifikasi dan organisasi persyaratan Kegiatan ini mengambil kumpulan
persyaratan yang tidak terstruktur, persyaratan terkait kelompok, dan
mengorganisir mereka menjadi kelompok yang koheren.
3.
Prioritas persyaratan dan negosiasi. Tidak dapat dihindari, ketika
banyak pemangku kepentingan terlibat, persyaratan akan bertentangan. Kegiatan
ini berkaitan dengan
memprioritaskan persyaratan dan menemukan
serta menyelesaikan konflik persyaratan
melalui negosiasi.
4.
Spesifikasi persyaratan. Persyaratan didokumentasikan dan dimasukkan ke
dalam
putaran spiral
berikutnya.
CHAPTER 5 System modeling
Model digunakan selama
proses rekayasa persyaratan untuk membantu menurunkan
persyaratan untuk
suatu sistem.Anda dapat mengembangkan model dari sistem yang ada dan
sistem yang akan
dikembangkan:
1.
Model sistem yang ada digunakan selama
rekayasa kebutuhan. Mereka membantu memperjelas apa yang dilakukan sistem yang
ada dan dapat digunakan sebagai dasar untuk mendiskusikan kekuatan dan
kelemahannya. Ini kemudian mengarah pada persyaratan untuk sistem baru.
2.
Model sistem baru digunakan
selama rekayasa untuk membantu menjelaskan persyaratan yang diajukan kepada
pemandu kepentingan sistem lainnya. engineer menggunakan model-model ini untuk
membahas proposal desain dan untuk mendokumentasikan sistem untuk implementasi.
implementasi sistem lengkap atau sebagian dari model sistem.
untuk memperjelas
penjelasan tentang system modeling kita harus bisa menjabarkan dalam bentuk
diagram , seperti :
1. Diagram aktivitas, yang menunjukkan aktivitas
yang terlibat dalam suatu proses atau dalam data pengolahan.
2. Gunakan diagram kasus, yang menunjukkan
interaksi antara sistem dan lingkungannya.
3. Sequence diagram,
yang menunjukkan interaksi antara aktor dan sistem dan
antara komponen
sistem.
4. Class diagram, yang menunjukkan kelas objek
dalam sistem dan asosiasi antara kelas-kelas ini.
5. State diagram, yang menunjukkan bagaimana
sistem bereaksi terhadap peristiwa internal dan eksternal.
Biasa ada 3 cara model
grafis yang paling umum digunakan :
1.
sebagai sarana memfasilitasi
diskusi tentang sistem yang ada atau yang akan diusulkan.
2.
sebagai cara
mendokumentasikan sistem yang ada.
3.
sebagai deskripsi sistem
terperinci yang dapat digunakan untuk menghasilkan suatu sistem penerapan.
CHAPTER
6 Architectural design
Ada 2 jenis rancangan arsitektur perangkat
lunak pada 2 tingkat abstraksi, yaitu arsitektur kecil & besar :
1.
Arsitektur kecil berkaitan
dengan arsitektur program individu.
2.
Arsitektur besar biasanya
berkaitan dengan sistem perusahaan yang kompleks karna mencakup sistem,
program, dan komponen program lainnya.
Ada tiga keuntungan dari mendesain dan
mendokumentasikan arsitektur perangkat lunak secara eksplisit :
1.
presentasi tingkat tinggi
dari sistem yang dapat digunakan sebagai fokus diskusi oleh berbagi pemangku
kepentingan yang berbeda.
2.
Analisis sistem menjadikan
arsitektur sistem eksplisit pada tahap awal,keputusan ini memiliki efek,apakah
sistem dapat memenuhi persyaratan kritis seperti kinerja,kendalam dan
pemeliharaan.
3.
penggunaan kembali skala
besar model aristektur sistem karena penggunaanya sangat mudah dikelola dan
juga mudah diakses.
Sebagai perancang perangkat lunak, kita dapat
menggunakan model arsitektur aplikasi dalam sejumlah cara:
1.
Sebagai titik awal untuk
proses desain arsitektur.
2.
Sebagai daftar pemeriksan
sistem aplikasi desain yang telah dikembangkan.
3.
Sebagai cara mengatur kerja
tim, agar para anggota grup dapat mengimplementasikan berbagai komponen dalam
arsitektur.
4.
Sebagai sarana menilai
komponen untuk digunakan kembali.
5.
Sebagai kosakata untuk
berbicara tentang konsep dalam arsitektur generik untuk membicarakan aplikasi.
CHAPTER 7 Design and implementation
Model konteks sistem dan model interaksi
adalah :
1.
Model Konteks sistem adalah
model struktural yang menunjukan sistem lain di lingkungan sistem yang sedang
dikembangkan.
2.
Model interaksi adalah model
dinamis yang menunjukan bagaimana sistem berinteraksi dengan lingkungannya
seperti yang digunakan.
Pada
tahap awal proses desain, ada 3 model yang sangat berguna untuk menambahkan
detail arsitektur :
1.
Subsistem model, yang
menunjukan pengelompokan objek yang logis menjadi koheren subsistem. Model
subsistem bersifat statis model (Struktural).
2.
Sequence model, yang
menunjukan urutan interaksi objek. biasa dipresentasikan menggunakan urutan UML
atau diagram kolaborasi. Sequence model adalah model dinamis.
3.
State machine model , yang
menunjukan bagaimana objek individu mengubah keadaan respons terhadap
peristiwa. ini diwakili dalam UML menggunakan diagram keadaan.sama seperti
Sequence model, model ini menggunakan model dinamis.
Oleh karena itu, ada 3 kegiatan manajemen
konfigurasi dasar :
1.
Manajemen versi, dimana
dukungan diberikan untuk melacak perbedaan versi komponen perangkat lunak.
meeka menghentikan satu kode timpa pengembang yang telah dikirimkan ke sistem
oleh orang lain.
2.
Integrasi sistem, di mana
dukungan diberikan untuk membantu pengembang menentukan apa versi komponen yang akan digunakan untuk membuat setiap versi
sistem.
3.
Pelacakan masalah, dimana
dukungan diberikan untuk memungkinkan pengguna melaporkan bug dan masalah lain,
dan untuk memungkinkan semua pengembang melihat siapa yang mengerjakan masalah
ini dan kapan mereka diperbaiki.
CHAPTER 8 Software testing
SOFTWARE TESTING
Proses pengujian memiliki 2 tujuan berbeda,
yaitu :
1.
Untuk menunjukan kepada
pengembang dan pelanggan bahwa perangkat lunak memenuhi persyaratan.itu berarti
harus ada tes untuk semua fitur sistem, plus kombinasi fitur-fitur yang akan dimasukan
kedalam produk.
2.
Untuk menemukan situasi
dimana perilaku perangkat lunak salah,tidak diinginkan atau tidak sesuai dengan
spesifikasinya. ini adalah konsekuensi dari cacat perangkat lunak. Pengujian
ini berkaitan untuk membasmi sistem yang tidak diinginkan seperti crash sistem,
perhitungan salah, dan korupsi data.
Biasanya, sistem perangkat lunak komersial
harus melalui 3 tahap pengujian yaitu;
1.
Pengujian pengembangan,
dimana sistem uji selama pengembangan untuk menemukan bug dan cacat.perancangan
dan pemrograman sistem cenderung terlibat dalam proses pengujian.
2.
Uji rilis, dimana tim
pengujian terpisah menguji versi lengkap dari sistem sebelum dirlis ke
pengguna. Tujuan dari pengujian rilis adalah untuk memeriksa sistem apakah
memenuhi persyaratan yang ditentukan.
3.
Pengujian pengguna, dimana
pengguna atau pengguna potensial dari suatu sistem menguji sistem di dalam
lingkungan nya sendiri.ini semua dilakukan agar dapat diputuskan apakah
perangkat lunak dapat dipasarkan, dirilis, dan dijual.
4.
Pengujian penerimaan adalah
salah satu jenis pengujian pengguna dimana pelanggan secara resmi menguji
sistem untuk memutuskan apakah harus ditrima dari pemasok sistem.
masih banyak testing lain yang harus
dilakukan sebelum meluncurkan Software seperti Scenario testing, User
testing,Performance testing, Release testing dll.
CHAPTER 9 Software Evolution
Pengembangan perangkat lunak tidak berhenti
ketika suatu sistem dikirimkan tetapi berlanjut
sepanjang masa hidup sistem. Setelah suatu
sistem dikerahkan, pasti harus terjadi perubahan jika ingin tetap berguna. Perubahan bisnis
dan perubahan harapan pengguna menghasilkan persyaratan baru untuk perangkat
lunak yang ada. Bagian dari perangkat lunak mungkin harus dimodifikasi untuk
memperbaiki kesalahan yang ditemukan dalam operasi, untuk menyesuaikannya
perubahan pada platform perangkat keras dan lunaknya, dan untuk meningkatkan
kinerjanya atau karakteristik non-fungsional lainnya.
Ada 3 jenis pemeliharaan perangkat lunak :
1.
Perbaikan kesalahan Kesalahan pengkodean
biasanya relatif murah untuk dikoreksi; kesalahan desain lebih mahal karena
mereka mungkin melibatkan penulisan ulang beberapa komponen program.Kesalahan
persyaratan adalah yang paling mahal untuk diperbaiki karena luas perancangan
ulang sistem yang mungkin diperlukan.
2.
Adaptasi lingkungan. Jenis
pemeliharaan ini diperlukan saat beberapa orang aspek lingkungan sistem seperti
perangkat keras, platform yang beroperasi sistem, atau perubahan perangkat
lunak pendukung lainnya. Sistem aplikasi harus dimodifikasi untuk beradaptasi
untuk mengatasi perubahan lingkungan ini.
3.
Penambahan fungsionalitas Jenis pemeliharaan
ini diperlukan saat sistem perubahan persyaratan sebagai respons terhadap
perubahan organisasi atau bisnis. Skala perubahan yang diperlukan untuk
perangkat lunak seringkali jauh lebih besar daripada jenis perawatan yang
lain.Dalam praktiknya, tidak ada yang jelas.
Data yang berguna dalam penilaian kualitas
evolusi adalah :
1.
the number of system request Perubahan sistem biasanya merusak struktur sistem dan membuat
perubahan lebih lanjut lebih sulit. Semakin tinggi nilai akumulasi ini, semakin
rendah kualitas sistem.
2.
the number of user interface faktor
penting dalam sistem berbasis formulir di mana setiap formulir dapat dianggap
sebagai antarmuka pengguna yang terpisah.semakin besar kemungkinan akan ada
inkonsistensi dan redundansi di antarmuka ini.
3.
the volume of data used by system Semakin
tinggi volume data (angkafile, ukuran database, dll.), semakin besar
kemungkinan akan ada dataketidakkonsistenan yang mengurangi kualitas sistem.
CHAPTER 10 Sociotechnical
system
Dalam sistem komputer, perangkat lunak dan
perangkat keras saling bergantung.. Tanpa perangkat keras, sistem perangkat
lunak hanyalah abstraksi, yang hanya merupakan representasi dari beberapa
pengetahuan dan gagasan manusia. Tanpa perangkat lunak, perangkat keras
hanyalah seperangkat perangkat elektronik saja. Namun, jika Anda menyatukannya
untuk membentuk sistem, Anda membuat mesin yang dapat melakukan perhitungan
yang rumit dan memberikan hasil perhitungan ini dengan lingkungannya.
Sistem sosioteknik sangat rumit sehingga
tidak mungkin memahaminya secara keseluruhan. Sebaliknya, Anda harus melihatnya
layer per layer,berikut lapisan-lapisan yang membentuk sistem sosioteknik :
1.
Lapisan peralatan Lapisan
ini terdiri dari perangkat perangkat keras.
2.
Lapisan sistem operasi :
Lapisan ini berinteraksi dengan perangkat keras dan menyediakan seperangkat
fasilitas umum untuk lapisan perangkat lunak yang lebih tinggi dalam sistem.
3.
Lapisan manajemen komunikasi
: data Lapisan ini memperluas fasilitas sistem operasi dan menyediakan
antarmuka yang memungkinkan interaksi dengan lebih banyak fungsi yang luas,
seperti akses ke sistem jarak jauh, akses ke sistem database, dll. Ini
kadang-kadang disebut middleware, seperti di antara aplikasi dan sistem
operasi.
4.
Lapisan aplikasi : Lapisan
ini memberikan fungsionalitas khusus aplikasi itu wajib. Mungkin ada banyak
program aplikasi berbeda di lapisan ini.
5.
Lapisan proses bisnis : Pada
tingkat ini, proses bisnis organisasi,yang menggunakan sistem perangkat lunak,
didefinisikan dan diberlakukan.
6.
Lapisan organisasi : Lapisan
ini mencakup proses strategis tingkat yang lebih tinggi juga sebagai aturan
bisnis, kebijakan, dan norma yang harus diikuti ketika menggunakan sistem.
7.
Lapisan sosial : Pada
lapisan ini, hukum dan peraturan masyarakat yang mengatur operasi sistem
didefinisikan.
Faktor organisasi dari lingkungan sistem yang
dapat mempengaruhi persyaratan, desain, dan pengoperasian sistem sosioteknik
meliputi :
1.
Perubahan proses Sistem, mungkin
memerlukan perubahan pada proses kerja di lingkungan Hidup. Jika demikian,
pelatihan tentu akan diperlukan. Jika perubahan signifikan,atau jika mereka
melibatkan orang-orang yang kehilangan pekerjaan, ada bahaya bahwa para
pengguna akan melakukannya menolak pengenalan sistem.
2.
Perubahan pekerjaan Sistem
baru dapat mengurangi keterampilan pengguna di lingkungan atau sebab mereka
untuk mengubah cara mereka bekerja. Jika demikian, pengguna dapat secara aktif
menolak pengenalan sistem ke dalam organisasi. Desain yang melibatkan manajer
harus mengubah cara mereka bekerja agar sesuai dengan sistem komputer.. Manajer
harus sadar bahwa status mereka dalam organisasi sedang dikurangi oleh sistem.
3.
Perubahan organisasi Sistem
dapat mengubah struktur kekuasaan politik disebuah organisasi. Sebagai contoh,
jika suatu organisasi bergantung pada
sistem yang kompleks, mereka yang mengontrol akses ke sistem itu memiliki
banyak kekuatan politik.
Sistem sosioteknik memiliki tiga
karakteristik yang sangat penting ketika mempertimbangkan keamanan dan
ketergantungan:
1.
Mereka memiliki properti yang merupakan
properti dari sistem secara keseluruhan,daripada terkait dengan bagian-bagian
individual dari sistem. Properti yang muncul tergantung pada komponen sistem
dan hubungan di antara mereka.Dengan kompleksitas ini, properti yang muncul
hanya dapat dievaluasi begitu sistem telah dirakit. properti adalah Keamanan
dan ketergantungan dari sistem yang munculi.
2.
Mereka sering tidak
deterministik. Ini berarti ketika disajikan dengan spesifik input, mereka
mungkin tidak selalu menghasilkan output yang sama. Perilaku sistem tergantung
pada operator manusia dan orang-orang tidak selalu bereaksi dengan cara yang
sama. Selanjutnya, penggunaan sistem dapat menciptakan hubungan baru antara komponen
sistem dan karenanya mengubah perilaku yang muncul.
3.
Sejauh mana sistem mendukung
tujuan organisasi tidak adil tergantung pada sistem itu sendiri. Itu juga
tergantung pada stabilitas tujuan-tujuan ini, hubungan dan konflik antara
tujuan organisasi dan bagaimana orang dalam organisasi menafsirkan tujuan ini.
Manajemen baru dapat menafsirkan kembali tujuan organisasi yang dirancang oleh
suatu sistem untuk mendukungnya sistem ‘berhasil’ kemudian dapat dilihat
sebagai ‘kegagalan’.
Evolusi sistem, seperti evolusi perangkat
lunak ,bisa dibilang mahal karena beberapa alasan:
1.
Perubahan yang diajukan
harus dianalisis dengan sangat hati-hati dari sudut pandang bisnis dan teknis.
Perubahan harus berkontribusi pada tujuan sistem dan seharusnya tidak hanya
termotivasi secara teknis.
2.
Karena subsistem tidak
pernah sepenuhnya independen, perubahan pada satu subsistem dapat mempengaruhi
kinerja atau perilaku subsistem lainnya.Oleh karena itu perubahan yang
diperlukan untuk subsistem ini mungkin diperlukan.
3.
Alasan untuk keputusan
desain asli sering tidak dicatat. Mereka yang bertanggung jawab atas evolusi
sistem harus mengetahui mengapa keputusan desain tertentu telah dibuat.
4.
Seiring bertambahnya usia
sistem, struktur mereka biasanya menjadi rusak karena perubahan biaya untuk
membuat perubahan lebih lanjut meningkat.
CHAPTER 11 Depandibility and security
Ketergantungan sistem sekarang biasanya lebih
penting daripada fungsionalitas karena alasan berikut:
1.
Kegagalan sistem
mempengaruhi banyak orang. Banyak sistem menyertakan fungsionalitas yang jarang
digunakan. Jika fungsi ini tidak disertakan dalam sistem, hanya sejumlah kecil
pengguna akan terpengaruh. Kegagalan sistem, yang mempengaruhi ketersediaan suatu
sistem, berpotensi mempengaruhi semua pengguna sistem..
2.
Pengguna sering menolak
sistem yang tidak dapat diandalkan, tidak aman, atau tidak terpercaya. Jika
pengguna menemukan bahwa suatu sistem tidak dapat diandalkan atau tidak aman,
mereka akan menolak untuk menggunakannya. Selanjutnya,mereka juga dapat menolak
untuk membeli atau menggunakan produk lain dari perusahaan yang sama. karena
mereka percaya bahwa produk ini juga cenderung tidak dapat diandalkan atau
tidak aman.
3.
Biaya kegagalan sistem
mungkin sangat besar. Untuk beberapa aplikasi, seperti reaktor sistem kontrol
atau sistem navigasi pesawat terbang, biaya kegagalan sistem biasanya
persenan-nya lebih besar dari biaya sistem kontrol.
4.
Sistem yang tidak dapat
diandalkan dapat menyebabkan hilangnya informasi. Data sangat mahal untuk
dikumpulkan dan didapatkan .Biaya untuk memulihkan data yang hilang atau rusak
biasanya sangat tinggi.
Beberapa kegagalan dalam sebuah sistem, yaitu
:
1.
Kegagalan perangkat keras,
perangkat keras sistem mungkin gagal karena kesalahan desainnya, komponen
didalamnya gagal karena kesalahan dalam pembuatan, atau karena komponen telah
mencapai akhir kehidupan alami mereka.
2.
Kegagalan perangkat lunak,
perangkat lunak sistem mungkin gagal karena kesalahan dalam hal spesifikasi,
desain, ataupun implementasi.
3.
Kegagalan Operasional,
Pengguna mungkin gagal menggunakan atau mengoperasikan sistem dengan benar.
Dalam sistem jaringan apa pun, ada tiga jenis
utama ancaman keamanan:
1.
Ancaman terhadap kerahasiaan
sistem dan datanya. Ini dapat mengungkapkan informasi kepada orang-orang atau
program yang tidak berwenang memiliki akses ke sana.
2.
Ancaman terhadap integritas
sistem dan datanya. Ancaman ini dapat merusak perangkat lunak atau datanya.
3.
Ancaman terhadap
ketersediaan sistem dan datanya,Ancaman ini dapat membatasi akses ke perangkat
lunak atau datanya untuk pengguna yang berwenang.
Kontrol yang mungkin Anda lakukan untuk
meningkatkan keamanan sistem :
1.
Strateginya di sini adalah
merancang sistem sehingga masalah keamanan dapat dihindari. Misalnya, sistem
militer sensitif tidak terhubung ke publik sehingga akses eksternal tidak
mungkin terjadi. Anda juga harus menganggap enkripsi sebagai kontrol
berdasarkan penghindaran. Setiap akses dianggap tidak sah ke data
terenkripsi,berarti itu tidak dapat dibaca oleh penyerang. Dalam prakteknya,
itu sangat rumit dan memakan waktu untuk memecahkan enkripsi yang kuat.
2.
Deteksi serangan dan Kontrol
netralisasi yang dimaksudkan untuk mendeteksi dan mengusir serangan. Kontrol
ini melibatkan termasuk fungsionalitas dalam sistem itu memantau operasinya dan
memeriksa pola kegiatan yang tidak biasa. Jika ini terdeteksi, maka tindakan
dapat diambil, seperti mematikan bagian dari sistem,membatasi akses ke pengguna
tertentu, dll.
3.
Batasan paparan dan
pemulihan Kontrol yang mendukung pemulihan dari masalah. Ini dapat berkisar
dari strategi dan informasi cadangan otomatis 'Mirroring' ke polis asuransi
yang mencakup biaya yang terkait dengan serangan yang berhasil pada sistem.
CHAPTER 12 Dependability and Security specifiation
Kegiatan dalam proses spesifikasi berbasis
risiko umum dapat dijabarkan secara spesifik sebagai berikut :
1.
Identifikasi risiko Dalam
spesifikasi keselamatan, ini adalah identifikasi bahaya yang mengidentifikasi bahaya yang dapat
mengancam sistem.
2.
Analisis risiko Ini adalah
proses penilaian bahaya untuk memutuskan bahaya yang ada atau paling mungkin
terjadi. Ini harus diprioritaskan ketika menurunkan persyaratan keselamatan.
3.
Penguraian risiko, Proses
ini berkaitan dengan penemuan peristiwa itu. Dalam spesifikasi keselamatan,
prosesnya adalah dikenal sebagai analisis bahaya.
4.
Pengurangan risiko Proses
ini didasarkan pada hasil analisis bahaya dan mengarah pada identifikasi
persyaratan keselamatan. Ini mungkin berkaitan dengan memastikan bahwa suatu
bahaya tidak timbul atau menyebabkan kecelakaan atau jika terjadi kecelakaan
setidaknya bersifat minimal.
Hazard
analysis
adalah proses menemukan akar penyebab bahaya
dalam sistem kritis keselamatan. Tujuannya adalah untuk mengetahui cara atau
kombinasi cara apa yang bisa dilakukan menyebabkan kegagalan sistem yang
menyebabkan bahaya. Untuk melakukan ini, Anda dapat menggunakan pendekatan top
down atau bottom-up. Teknik deduktif, top-down, yang cenderung lebih mudah
digunakan, mulai dengan bahaya dan bekerja mulai dari kemungkinan kegagalan
sistem.
Teknik induktif, bottom-up dimulai dengan
kegagalan sistem yang diusulkan dan mengidentifikasi bahaya apa yang mungkin
timbul dari kegagalan itu.
Setelah potensi risiko
dan akar penyebabnya telah diidentifikasi, Anda kemudian dapat melakukan
persyaratan keselamatan yang mengelola risiko dan memastikan bahwa insiden atau
kecelakaan tidak terjadi. Ada tiga strategi yang dapat Anda gunakan:
1. Penghindaran bahaya
Sistem dirancang agar bahaya tidak terjadi.
2. Deteksi dan
penghapusan bahaya Sistem ini dirancang sedemikian rupa sehingga bahaya
tersebut terdeteksi dan dinetralkan sebelum mereka mengakibatkan kecelakaan.
3. Batasan kerusakan
Sistem dirancang agar konsekuensi kecelakaan dapat diminimalkan.
Ada tiga jenis
persyaratan keandala fungsional untuk suatu sistem:
1.
Memeriksa persyaratan, Persyaratan ini
mengidentifikasi pemeriksaan pada input ke sistem untuk memastikan bahwa input
yang salah atau di luar jangkauan terdeteksi sebelum masuk diproses oleh
sistem.
2.
Persyaratan pemulihan,
Persyaratan ini ditujukan untuk membantu sistem pulih setelah kegagalan
terjadi. Biasanya, persyaratan ini diperhatikan dengan memelihara salinan
sistem dan datanya serta menentukan cara memulihkan layanan sistem setelah
kegagalan.
3.
Persyaratan redundansi Ini
menentukan fitur redundan dari sistem itu memastikan bahwa kegagalan satu
komponen tidak menyebabkan hilangnya layanan sepenuhnya.
CHAPTER 13 Depandibility
engineering
Dependability
engineering berkaitan dengan teknik yang digunakan untuk
meningkatkan
ketergantungan sistem kritis dan non kritis. Teknik-teknik ini
mendukung tiga
pendekatan pelengkap yang digunakan dalam mengembangkan ketergantungan
perangkat lunak:
1.
Penghindaran kesalahan
Desain perangkat lunak dan proses implementasi harus dilakukan pendekatan,
untuk pengembangan perangkat lunak yang membantu menghindari desain dan
kesalahan pemrograman dan dengan demikian meminimalkan jumlah kesalahan yang
mungkin muncul ketika sistem mengeksekusi. Lebih sedikit kesalahan berarti
lebih sedikit kemungkinan kegagalan run-time.
2.
Deteksi dan koreksi
kesalahan Proses verifikasi dan validasi harus dirancang untuk menemukan dan
menghapus kesalahan dalam suatu program, sebelum digunakan untuk penggunaan
operasional. Sistem kritis memerlukan verifikasi dan validasi yang sangat luas
untuk menemukan kesalahan sebanyak mungkin sebelum penyebaran.
3.
Toleransi kesalahan Sistem
dirancang sedemikian rupa sehingga terjadi kesalahan atau sistem yang tidak
terduga perilaku selama eksekusi terdeteksi pada saat run-time dan dikelola
sedemikian rupa agar kegagalan sistem tidak terjadi. Pendekatan sederhana untuk
toleransi kesalahan berdasarkan built-in run-time checking dapat dimasukkan
dalam semua sistem. Namun,teknik toleransi kesalahan yang lebih terspesialisasi
(seperti penggunaan toleransi kesalahan arsitektur sistem) umumnya hanya
digunakan ketika tingkat sistem yang sangat tinggi diperlukan ketersediaan dan
keandalan.
Contoh kegiatan yang
mungkin termasuk kedalam Dependability engineering :
1.
Requirements reviews untuk memeriksa bahwa
persyaratannya sejauh mungkin lengkap dan konsisten.
2.
Requirements management untuk memastikan
bahwa perubahan pada persyaratan dikontrol dan bahwa dampak dari perubahan
persyaratan yang diusulkan dipahami oleh semua pengembang yang terpengaruh oleh
perubahan.
3.
Formal specification dimana model
matematika dari perangkat lunak dibuat dan dianalisis, manfaat yang paling
penting adalah bahwa ia memaksa analisis yang sangat rinci dari persyaratan
sistem.
4.
System modeling dimana desain perangkat
lunak secara eksplisit didokumentasikan
sebagai satu set model grafis.
5.
Design and program inspection dimana
deskripsi berbeda dari sistem diperiksa oleh orang yang berbeda, biasanya
inspeksi didorong dari banyaknya kesalahan umum pada desain dan pemrograman.
6.
Static analysis dimana pemeriksaan otomatis
dilakukan pada kode sumber program.ini berguna untuk mencari anomali yang bisa
menunjukan kesalahan program atau kelalaian.
7.
Test planning and management tempat serangkaian uji sistem komprehensif
dirancang. Proses pengujian harus dikelola dengan hati-hati untuk menunjukan
hal itu. tes ini memberikan cakupan persyaratan sistem telah benar ketika
diterapkan dalam proses pengujian.
Para perancang sistem
Airbus telah mencoba berbagai cara seperti :
1.
Komputer kontrol penerbangan
utama menggunakan prosesor yang berbeda dari sistem kontrol penerbangan
sekunder.
2.
Chipset yang digunakan di
setiap saluran dalam sistem primer dan sekunder dipasok dari pabrik yang
berbeda
3.
Perangkat lunak dalam sistem
kontrol penerbangan sekunder hanya menyediakan fungsionalitas kritis, perangkat
lunak ini tidak serumit perangkat lunak utama.
4.
Perangkat lunak untuk setiap
saluran di sistem primer dan sekunder dikembangkan menggunakan bahasa
pemrograman yang berbeda dan oleh tim yang berbeda.
5.
Bahasa pemrograman yang
berbeda digunakan dalam sistem sekunder dan primer.
CHAPTER 14 SECURITY ENGINEERING
Pertimbangan
risiko dimulai sebelum sistem diputuskan untuk diciptakan dan harus terus
berlanjut selama proses pengembangan sistem dan setelah sistem tersebut mulai
digunakan. Ada 3 tahap pertimbangan :
1.
Preliminary risk assessment, dilakukan sebelum dirumuskan
rancangan dan implementasi sistem, untuk memutuskan tingkat kecanggihan dari
sistem keamanan dan biaya yang diperlukan.
2.
Life-cycle risk assessment, dilakukan ketika pengembangan sistem, hasilnya untuk
memutuskan apakah akan ada perubahan sistem keamanan dan bertambahnya
requirements.
3.
Operational risk assessment, dilakukan ketika sistem sudah
diluncurkan dan digunakan, untuk mengawasi jalannya sistem dan merumuskan
perubahan keamanan sistem seperlunya.
Ada
4 jenis ancaman terhadap sistem :
1.
Interception, dimana penyerang bisa mengakses aset suatu
sistem.
2.
Interruption, dimana penyerang bisa mematikan suatu bagian
dalam sistem.
3.
Modification, dimana penyerang bisa mengubah komponen dalam
sistem.
4.
Fabrication, dimana penyerang bisa memasukkan informasi palsu
dalam sistem.
Untuk
mengakses dan mengubah record penyerang harus menembus tiga lapisan sistem :
1.
Platform-level protection, sistem keamanan dari platform
tempat record terletak.
2.
Application level protection, sistem keamanan yang sudah
dirancang dalam aplikasi itu sendiri.
3.
Record-level protection, sistem keamanan dari sebuah record
spesifik.
Ketahanan
sistem dapat dicapai melalui 3 strategi :
1.
Resistance, merancang sebuah fitur kedalam sistem untuk
menangkal penyerangan.
2.
Recognition, merancang sebuah fitur untuk mendeteksi
penyerangan.
3.
Recovery, merancang sebuah fitur untuk memulihkan sistem
setelah diserang.
CHAPTER 15 DEPENDABILITY AND SECURITY
ASSURANCE
Jaminan
keamanan sistem diperiksa melalui analisis source code dan programnya langsung.
Selain analisis, ada beberapa cara lain :
1.
Formal verification, program diperiksa secara matematis
apakah sudah memenuhi kebutuhan dan spesifikasinya.
2.
Model checking, digunakan pembuktian teorema untuk mengecek
ketidakkonsistenan.
3.
Automated program analysis, pengecekan source code untuk
mendeteksi code yang berkemungkinan menimbulkan error.
Reliability
testing adalah proses untuk mengukur keandalan sistem. Ada 4 tahapan :
1.
Mempelajari sistem sejenis yang sudah ada untuk memahami
implementasi sistemnya.
2.
Membuat sekumpulan data testing yang mencerminkan profil
operasional sistem.
3.
Mengetes sistem dengan data diatas dan menghitung jumlah dan
tipe eror yang muncul.
4.
Setelah observasi testing dan kegagalan sistem, dirumuskan
nilai keandalan software.
Pengkajian
keamanan sistem semakin penting karena kebanyakan sistem penting terintegrasi
dengan internet sehingga mudah diserang. Ada beberapa cara yang bisa digunakan
untuk memeriksa keamanan sistem :
1.
Experience-based testing, analisis terhadap beberapa tipe
serangan yang diketahui.
2.
Tiger teams, dimana dibentuk “tiger team” yang ditugaskan
menerobos sistem dengan mencari kelemahan sistem, kemudian dibentuk penangkal
untuk hasil tes yang didapat.
3.
Tool-based testing, dimana digunakan berbagai tools seperti
password checker untuk menganalisis sistem.
Safety
and dependability case mengumpulkan semua bukti yang menunjukkan bahwa suatu
sistem aman dan dapat diandalkan. Safety cases diperlukan ketika regulator
eksternal harus mengesahkan sistem sebelum digunakan.
Safety
case biasanya didasarkan pada argumen terstruktur. Argumen keselamatan
terstruktur menunjukkan bahwa kondisi berbahaya yang diidentifikasi tidak akan
pernah terjadi dengan mempertimbangkan semua jalur program yang mengarah ke
kondisi tidak aman, dan menunjukkan bahwa kondisi tersebut tidak dapat terjadi.
CHAPTER 16 SOFTWARE REUSE
Reuse-based
software adalah strategi rekayasa software dimana pengembangan dilakukan dengan
menggunakan kembali software yang sudah ada. Ada beberapa faktor yang harus
dipertimbangkan :
1.
Schedule pengembangan software
2.
Jangka hidup software
3.
Latarbelakang, keahlian, dan pengalaman dari pengembang
4.
Kepentingan software dan requirement non-fungsionalnya
5.
Domain aplikasi
6.
Platform dimana sistem akan diluncurkan
Framework
adalah struktur generik yang diperluas untuk menciptakan subsistem atau
aplikasi yang lebih spesifik. Framework mendukung fitur generik yang mungkin
digunakan dalam semua aplikasi yang satu tipe. Ada 3 kelas framework :
1.
System infrastructure frameworks, mendukung infrastruktur
sistem seperti komunikasi, UI, dan compiler.
2.
Middleware integration frameworks, terdiri dari seperangkat
standar dan object class terkait yang mendukung komunikasi komponen dan
pertukaran informasi.
3.
Enterprise application frameworks, berkaitan dengan domain
aplikasi spesifik seperti telekomunikasi atau sistem finansial.
Web
Application Frameworks(WAF) adalah model framework terbaru dan paling penting.
WAF biasanya menggabungkan satu atau lebih framework khusus yang mendukung
fitur aplikasi tertentu. Meskipun setiap framework mencakup fungsi yang sangat
berbeda, sebagian besar WAF mendukung fitur berikut :
1.
Security, menyertakan class untuk membantu
mengimplementasikan user authentication dan access control untuk memastikan
bahwa pengguna hanya dapat mengakses fungsi yang diizinkan dalam sistem.
2.
Dynamic web pages, class disediakan untuk membantu menentukan
template halaman web dan mengisi ini secara dinamis dengan data spesifik dari
database sistem.
3.
Database support, framework tak menyediakan databse tapi
biasanya mengasumsikan bahwa sistem database lain seperti MySQL akan digunakan.
4.
Session management, class untuk mengelola sesi (sejumlah
tindakan bersama dengan sistem oleh pengguna) biasanya merupakan bagian dari
WAF.
5.
User Interaction, sebagian besar web framework sekarang
didukung AJAX, yang memungkinkan lebih banyak halaman web interaktif dibuat.
Software
product line adalah seperangkat aplikasi dengan arsitektur dan komponen sama,
dengan masing-masing aplikasi khusus untuk mencerminkan persyaratan yang
berbeda. Beberapa tipe spesialisasi software product line ialah :
1.
Platform specialization, aplikasi dikembangkan untuk platform
yang lain(versi aplikasi tersedia untuk windows, linux, mac os dst).
2.
Environment specialization, aplikasi dikembangkan untuk
menangani lingkungan pengoperasian khusus dan perangkat periferal.
3.
Functional specialization, aplikasi dikembangkan untuk
pelanggan tertentu yang memiliki requirement berbeda.
4.
Process specialization, sistem ini disesuaikan untuk
mengatasi proses tertentu.
Langak-langkah
yang ditempuh dalam software product line ialah :
1.
Mendapatkan requirement dari konsumen
2.
Memilih sistem tersedia yang paling memenuhi requirement
3.
Negosiasi ulang requirement
4.
Adaptasi sistem yang ada
5.
Mengirimkan software anakkan terbaru
Commercial-off-the-shelf(COTS)
product adalah sistem software yang dapat disesuaikan dengan kebutuhan pengguna
tanpa perlu mengubah source code dari sistem tersebut. Metode ini memberikan
beberapa keuntungan :
1.
Memungkinkan pengerahan software yang dapat diandalkan dengan
lebih cepat
2.
Memungkinkan memperlihatkan fungsi apa saja yang tersedia dan
memudahkan penilaian kecocokan software dengan kegunaan.
3.
Beberapa resiko pengembangan software dapat dihindari.
4.
Bisnis dapat memfokuskan ke kegiatan inti mereka tanpa harus
mengerahkan banyak sumber daya untuk pengembangan IT.
5.
Seiring perkembangan, update dapat disederhanakan karena ini
adalah tanggung jawab vendor produk COTS daripada pelanggan.
CHAPTER 17 COMPONENT BASED SOFTWARE
ENGINEERING
Component-based
software engineering(CBSE) muncul sebagai pendekatan terhadap pengembangan
sistem perangkat lunak berdasarkan penggunaan kembali komponen perangkat lunak.
Beberapa hal penting dalam CBSE adalah :
1.
Komponen independen yang sepenuhnya ditentukan oleh interface
mereka.
2.
Standar komponen yang memfasilitasi integrasi komponen.
3.
Middleware yang menyediakan dukungan perangkat lunak untuk
integrasi komponen.
4.
Proses pengembangan yang diarahkan untuk rekayasa perangkat
lunak berbasis komponen
Component
adalah unit perangkat lunak independen yang dapat disusun dengan component lain
untuk membuat sistem software. Melihat component sebagai penyedia layanan
menekankan dua karakteristik penting dari component yang dapat digunakan
kembali :
1.
Komponen adalah entitas yang dapat dieksekusi secara
independen yang dapat dipahami dari interfacenya.
2.
Layanan yang ditawarkan oleh component disediakan melalui
interface dan semua interaksi dilakukan melalui interface tersebut.
Interface
ini berisi layanan yang disediakan component dan layanan yang diperlukan
component untuk beroperasi dengan benar :
1.
Interface ‘provide’ mendefinisikan layanan yang disediakan
oleh component.
2.
Interface ‘require’ menentukan layanan apa yang harus
disediakan oleh component lain dalam sistem jika component ingin beroperasi
dengan benar.
CBSE
processes adalah proses software yang mendukung CBSE. Mereka memperhitungkan
kemungkinan penggunaan kembali dan berbagai aktivitas proses yang terlibat
dalam mengembangkan dan menggunakan component yang dapat digunakan kembali. Ada
2 tipe proses CBSE :
1.
Development for reuse, pengembangan component atau layanan
yang akan digunakan kembali dalam aplikasi lain.
2.
Development with reuse, proses mengembangkan aplikasi baru
menggunakan component dan layanan yang sudah ada.
Component
composistion adalah proses mengintegrasikan komponen satu sama lain, dan dengan
'glue code' yang ditulis khusus untuk membuat sistem atau komponen lain. Namun,
ketika component dikembangkan secara independen untuk digunakan kembali, akan
sering dihadapkan dengan ketidakcocokan interface. Ini berarti bahwa interface
component yang ingin dbuat tidak sama. Tiga jenis ketidakcocokan dapat terjadi
:
1.
Parameter incompability, ketidakcocokan pada jenis parameter
atau jumlah parameternya.
2.
Operation incompability, ketidakcocokan nama operasi pada
sisi interface.
3.
Operation incompleteness, component dalam interface ‘provide’
merupakan bagian dari interface ‘require’.
CHAPTER 18 DISTRIBUTED SOFTWARE
ENGINEERING
Sistem
distribusi adalah sistem yang melibatkan beberapa komputer, berbeda dengan
sistem terpusat di mana semua komponen sistem dijalankan pada satu komputer.
Berikut keuntungan menggunakan pendekatan terdistribusi untuk pengembangan
sistem :
1.
Resource sharing, memperbolehkan berbagi hardware dan
software seperti disk, file, printer, dan compiler.
2.
Openness, sistem yang terbuka memperbolehkan peralatan dan
software dari vendor lain untuk digabungkan.
3.
Concurrency, beberapa proses dapat dijalankan bersamaan.
4.
Scalability, skalanya bisa diatur karena kemampuan sistem
dapat ditingkatkan dengan menambahkan sumber daya baru untuk memenuhi kebutuhan
baru.
5.
Fault tolerance, karena sistemnya merupakan resource sharing
maka tidak akan terlalu berdampak buruk apabila terjadi error selama terjalin
dengan sistem lainnya.
Sistem
client-server adalah sistem terdistribusi di mana sistem terstruktur menjadi
beberapa lapisan, dengan lapisan presentasi diimplementasikan pada komputer
klien. Server menyediakan layanan pengelolaan data, aplikasi, dan basis data.
Perancang
sistem terdistribusi harus mengatur desain sistem mereka untuk menemukan
keseimbangan antara kinerja, keandalan, keamanan, dan pengelolaan sistem. Ada 5
gaya arsitektural sistem :
1.
Master-slave architecture, untuk sistem real-time di mana
waktu respons interaksi yang pasti diperlukan.
2.
Two-tier client-server architecture, untuk sistem
klien-server sederhana, dan dalam situasi di mana penting untuk memusatkan
sistem untuk alasan keamanan
3.
Multitier client-server architecture, ketika ada volume
transaksi yang tinggi untuk diproses oleh server.
4.
Distributed component architecture, ketika sumber daya dari
sistem dan basis data yang berbeda perlu digabungkan.
5.
Peer-to-peer architecture, ketika klien bertukar informasi
yang disimpan secara lokal dan peran server adalah untuk memperkenalkan klien
satu sama lain
CHAPTER 19 SERVICE ORIENTED
ARCHITECTURE
Service-oriented
architecture (SOA) adalah cara mengembangkan sistem terdistribusi di mana
komponen sistem adalah layanan yang berdiri sendiri, dijalankan pada komputer
yang terdistribusi secara geografis. Standar utama untuk SOA web adalah sebagai
berikut:
1.
SOAP, standar pertukaran pesan yang mendukung komunikasi
antara layanan. Ini mendefinisikan komponen-komponen penting dan opsional dari
pesan yang dilewati antara layanan.
2.
Web Service Definition Language (WSDL) adalah standar untuk
definisi layanan interface. Ini menetapkan bagaimana operasi layanan (nama
operasi, parameter, dan jenisnya) dan binding layanan harus didefinisikan.
3.
WS-BPEL, standar untuk bahasa alur kerja yang digunakan untuk
mendefinisikan program proses yang melibatkan beberapa layanan berbeda.
Standar
SOA utama didukung oleh serangkaian standar pendukung yang fokus pada aspek SOA
yang lebih khusus. Beberapa standar ini meliputi :
1.
WS-Reliable Messaging, standar untuk pertukaran pesan yang
memastikan pesan akan dikirimkan hanya sekali dan sekali saja.
2.
WS-Security, serangkaian standar yang mendukung keamanan
layanan web termasuk standar yang menetapkan definisi kebijakan dan standar
keamanan yang menutupi penggunaan tanda tangan digital.
3.
WS-Adressing, yang
mendefinisikan bagaimana informasi alamat harus diwakili dalam pesan SOAP.
4.
WS-Transaction, yang mendefinisikan bagaimana transaksi
lintas layanan yang didistribusikan harus dikoordinasikan.
Service
engineering adalah proses pengembangan layanan untuk digunakan kembali dalam
aplikasi berorientasi layanan. Ada 3 tahapan dalam service engineering :
1.
Service candidate identification, mengidentifikasi service
yang mungkin digunakan dan merumuskan requirement servicenya.
2.
Service design, mendesain interface logical dan WSDL
servicenya.
3.
Service implementation and deployment, mengimplementasikan
serta membuat service beroperasi.
Software
development with services didasarkan pada gagasan bahwa Anda menyusun dan
mengonfigurasi layanan untuk membuat layanan gabungan baru. Ada 6 tahap utama
dalam proses Software development with services :
1.
Formulate outline workflow, gunakan requirement untuk service
komposit sebagai dasar untuk menciptakan desain service 'ideal'.
2.
Discover services, mencari service dalam register atau katalog,
siapa yang membuat servie itu, dan aoa yang disediakan service tersebut.
3.
Select possible services, dari semua service yang dicari
dipilih yang paling sesuai dengan workflow dan memenuhi requirement.
4.
Refine workflow, menyempurnakan workflow yang sebelumnya
abstrak dengan memperjelas dan menambah atau mengurangi kegiatan.
5.
Create workflow program, workflow yang abstrak tadi diubah
menjadi program executable dan interface servicenya dirumuskan.
6.
Test completed service or application, mengetes service dan
memastikan service beroperasi dengan benar dan mencari bug atau error apabila
ada.
CHAPTER 20 EMBEDDED SOFTWARE
Embedded
Software adalah bagian yang tertanam dalam hardware/software dan bereaksi
terhadap peristiwa di lingkungannya. Embedded software biasanya adalah sistem
berbasis real-time. Perilaku sistem real-time bisa ditentukan dari ‘rangsangan’
yang diterima, respons terhadapnya, dan kapan respons tersebut harus dilakukan.
Rangsangan ini terbagi menjadi 2 :
1.
Periodic stimuli, dimana rangsangan terjadi dalam jangka
waktu terprediksi, seperti setiap 2 detik.
2.
Aperiodic stimuli, tidak terjadi secara beraturan dan biasa
dilakukan menggunakan mekanisme komputer.
Sistem
real-time harus merespons rangsangan yang terjadi pada waktu yang berbeda. Maka
harus mengatur arsitektur sistem sehingga, segera setelah stimulus diterima,
kontrol ditransfer ke penanganan yang benar. Dalam mendesain proses software
real-time dilakukan aktivitas berikut :
1.
Platform selection, memilih platform untuk eksekusi sistem.
2.
Stimuli/response identification, menentukan rangsangan yang
diterima sistem dan respons yang sesuai.
3.
Timing analysis, menentukan jangka waktu untuk proses
rangsangan dan responsnya.
4.
Process design, menyatukan rangsangan dan respons dalam
sejumlah proses bersamaan.
5.
Algorithm design, mendesain algoritma yang diperlukan untuk
menjalankan komputasi.
6.
Data design, merumuskan data yang ditukar antar proses dan
peristiwa yang memicu pertukaran informasi, serta mendesain struktur data untuk
mengelola pertukaran informasi tersebut.
7.
Process scheduling,
mendesain sistem penjadwalan untuk memastikan setiap proses berjalan
tepat waktu.
CHAPTER 21 ASPECT ORIENTED SOFTWARE
ENGINEERING
Aspect
oriented software engineering adalah pendekatan pengembangan software yang
didasari konsep abstraksi yang disebut ‘aspect’ yang mengimplementasikan
fungsionalitas sistem yang mungkin diperlukan di beberapa tempat berbeda dalam
suatu program.
Separation
of concern berarti penyusunan software sehingga tiap elemen dalam program hanya
melakukan satu kegiatan saja. Ada beberapa tipe concern :
1.
Functional concerns, terkait fungsionalitas spesifik yang
akan dimasukkan dalam sistem.
2.
Quality of service concerns, terkait perilaku non-fungsional
dari suatu sistem.
3.
Policy concerns, terkait keseluruhan kebijakan yang mengatur
penggunaan sistem.
4.
System concerns, terkait atribut-atribut dari sistem sebagai
suatu kesatuan.
5.
Organizational concerns, terkait tujuan dan prioritas dari
suatu organisasi.
Ada
beberapa extension yang berasal dari concern-concern tadi, yakni :
1.
Secondary functional extensions, menambahkan kapabilitas dari
fungsi yang disediakan.
2.
Policy extensions, menambahkan kapabilitas fungsionalitas
yang mendukung kebijakan organisasi.
3.
QoS extensions, menambahkan kapabilitas untuk mencapai quality
of service yang sudah ditentukan sistem.
4.
Infrastucture extensions, menambahkan kapabilitas untuk
mendukung implementasi sistem di suatu platform tertentu.
CHAPTER 22 PROJECT MANAGEMENT
Project
perlu dikelola karena software engineering profesional selalu tunduk pada
anggaran organisasi dan kendala jadwal. Tugas manajer project adalah memastikan
bahwa project perangkat lunak memenuhi dan mengatasi kendala ini serta
memberikan perangkat lunak berkualitas tinggi. Beberapa tujuan penting dalam
project adalah :
1.
Mengirimkan software pada pelanggan pada waktu yang
ditentukan.
2.
Menjaga biaya keseluruhan dibawah anggaran.
3.
Mengirimkan software yang memenuhi harapan pelanggan.
4.
Menjaga tim pengembang yang baik dan senang.
Manajer
project biasa bertanggungjawab untuk kegiatan berikut :
1.
Project planning, merencanakan, memperkirakan dan
menjadwalkan project, serta menugaskan orang-orang pekerjaan tertentu untuk
menyelesaikan project.
2.
Reporting, melaporkan kemajuan dari project kepada pelanggan.
3.
Risk management, menilai, memonitor, dan mengambil tindakan
terhadap resiko-resiko yang memengaruhi project.
4.
People management, mengelola tim pengembang yang akan
mengerjakan project.
5.
Proposal writing, menuliskan proposal untuk mendapatkan
kontrak persetujuan project.
Dalam
pengelolaan resiko, ada beberapa hal yang harus diketahui. Pertama-tama, ada 3
kategori resiko :
1.
Project risks, resiko yang mempengaruhi sumber daya atau
schedule project.
2.
Product risks, resiko yang memengaruhi kualitas atau performa
software yang dikembangkan.
3.
Business risks, resiko yang memengaruhi organisasi yang
mengembangkan software.
Kemudian,
ada tahapan mengelola resiko, yakni :
1.
Risk identification, menemukan resiko terhadap project,
produk, dan bisnis yang bisa terjadi.
2.
Risk analysis, analisis kemungkinan resiko terjadi dan dampak
dari resiko tersebut.
3.
Risk planning, merencanakan cara mengusut resiko, baik dengan
menghindari resiko tersebut atau meminimalisir dampak resiko tersebut.
4.
Risk assessing, menilai resiko secara reguler dan
merencanakan penanganan resiko kedepannya.
Terakhir,
dalam people management ada 4 faktor penting yang harus diingat :
1.
Consistency, setiap anggota project harus diperlakukan secara
sama dan konsisten.
2.
Respect, tiap anggota memiliki perbedaan keahlian dan seorang
manajer harus menghargai perbedaan tersebut.
3.
Inclusion, mengikutsertakan setiap anggota, sekecil apapun
keahliannya.
4.
Honesty, bersikap jujur atas apa yang berjalan dengan baik
dan buruk dalam project, serta mengenai pengetahuan teknis manajer dan meminta
pendapat dari anggota yang lebih paham.
CHAPTER 23 PROJECT PLANNING
Project planning terjadi pada 3 tahap project
:
1.
Saat proposal project, dibutuhkan rencana untuk menentukan
apakah resource yang ada memenuhi requirement dan menentukan harga untuk
pelanggan.
2.
Saat startup project, menentukan siapa yang akan mengerjakan
project, bagaimana pembagian pekerjaan project, bagaimana resource akan
digunakan dalam project, dan lain-lain.
3.
Selama project berjalan, mengubah rencana project seiring
perkembangan dari project, baik perkembangan bagus atau buruk.
Project
scheduling adalah proses memutuskan bagaimana pekerjaan dalam suatu project
akan dikelola sebagai tugas yang terpisah, dan kapan dan bagaimana tugas ini
akan dilaksanakan. Ada 2 representasi schedule project yang sering digunakan :
1.
Bar charts, berdasarkan tanggal, menunjukkan siapa yang
mengerjakan suatu pekerjaan, perkiraan waktu yang berlalu, dan kapan pekerjaan
dimulai dan selesai.
2.
Activity networks, merupakan diagram jaringan yang menunjukkan
ketergantungan antar aktivitas yang membentuk sebuah project.
Project
activities adalah elemen dasar project planning. Setiap aktivitas memiliki :
1.
Durasi dalam harian atau bulanan kalendar.
2.
Perkiraan kinerja, mencerminkan jumlah orang yang diperlukan
untuk menyelesaikan aktivitas dalam harian atau bulanan.
3.
Deadline dimana aktivitas sudah harus diselesaikan.
4.
Titik akhir yang menunjukkan hasil dari penyelesaian
aktivitas.
CHAPTER 24 SOFTWARE QUALITY MANAGEMENT
Software
quality management berkaitan dengan memastikan bahwa software hanya memiliki
sedikit error dan mencapai standar yang disyaratkan dalam pemeliharaan,
keandalan, portabilitas, dan seterusnya. Ini termasuk mendefinisikan standar
untuk proses dan produk dan menetapkan proses untuk memeriksa bahwa
standar-standar ini telah diikuti.
Software
standards penting untuk jaminan kualitas karena mereka mewakili identifikasi
'praktik terbaik'. Saat mengembangkan software, standar memberikan fondasi yang
kuat untuk software berkualitas tinggi.
Diperlukan
pendokumentasian serangkaian prosedur jaminan kualitas dalam manual kualitas
organisasi. Ini mungkin didasarkan pada model generik untuk manual kualitas
yang disarankan dalam standar ISO 9001.
Ulasan
software process melibatkan tim yang mengecekdiikuti. Ulasan adalah teknik
yang paling banyak digunakan untuk menilai kualitas.
Dalam
inspeksi program atau peer review, tim kecil secara sistematis memeriksa kode.
Mereka membaca kode secara detail dan mencari kemungkinan kesalahan dan kelalaian.
Masalah yang terdeteksi dibahas pada pertemuan tinjauan kode.
Pengukuran
perangkat lunak dapat digunakan untuk mengumpulkan data kuantitatif tentang
perangkat lunak dan proses softwarenya. Anda mungkin dapat menggunakan
nilai-nilai metrik perangkat lunak yang dikumpulkan untuk membuat konferensi
tentang kualitas produk dan proses.
Product
quality metrics sangat berguna untuk menyoroti komponen anomali yang mungkin
memiliki masalah kualitas. Komponen-komponen ini kemudian harus dianalisis
secara lebih rinci.
CHAPTER 25 CONFIGURATION MANAGEMENT
Configuration
management sebuah produk sistem software meliputi 4 aktivitas yang berkaitan :
1.
Change management, melacak permintaan untuk perubahan ke
software dari pelanggan dan pengembang, menghitung biaya dan dampak dari
perubahan ini, dan memutuskan apakah dan kapan perubahan harus dilaksanakan.
2.
Version management, melacak banyaknya versi component sistem
dan memastikan perubahan terhadap komponen dari pengembang yang berbeda tidak
akan mengganggu satu sama lain.
3.
System building, proses menyusun component, data, dan library
program, lalu mengcompile dan menghubungkannya untuk menciptakan sebuah sistem
executable.
4.
Release management, menyiapkan software untuk release ke
pasaran dan melacak versi sistem yang direlease untuk penggunaan konsumen.
Ada
beberapa faktor yang harus dipertimbangkan sebelum menyetujui sebuah perubahan
:
1.
Konsekuensi apabila perubahan tidak dilakukan
2.
Keuntungan dari perubahan
3.
Jumlah user yang dipengaruhi perubahan
4.
Biaya yang diperlukan untuk melakukan perubahan
5.
Siklus release produk
Sistem
version management biasanya menyediakan fitur berikut :
1.
Version and release identification, versi-versi yang dikelola
dikenakan pengenal ketika disubmit ke sistem.
2.
Storage management, sistem menyimpan daftar perbedaan antara
satu versi dan lainnya.
3.
Change history recording, perubahan terhadap code dari sistem
atau componentnya akan direcord dan masuk kedalam daftar.
4.
Independent development, melacak component yang sedang
dipakai untuk editing dan memastikan perubahan terhadap suatu component dari
pengembang yang lain tidak akan saling menganggu.
5.
Project support, mendukung pengembangan sekumpulan project
yang memakai component yang sama.
System
building adalah proses menyatukan komponen sistem menjadi sebuah program
executable untuk dioperasikan pada sistem komputer target.
Software
harus sering dibuat ulang dan dites segera setalh versi terbaru sudah
diciptakan. Ini supaya bug dan permasalahan lain pada build yang lama lebih
mudah dideteksi.
System
release meliputi executable code, file data, file configurasi, dan dokumentasi.
Release management meliputi mengambil keputusan pada tanggal rilis sistem,
menyiapkan semua informasi untuk distribusi, dan mendokumentasi setiap release
sistem baru.
CHAPTER 26 PROCESS IMPROVEMENT
Ada
2 pendekatan untuk perkembangan dan perubahan sistem :
1.
Process maturity approach, berfokus pada peningkatan proses
dan manajemen project dan memperkenalkan praktik software engineering yang baik
dalam suatu organisasi.
2.
Agile approach, berfokus pada pengembangan berulang dan
pengurangan overhead dalam proses software.
Proses
dari process improvement adalah sebuah siklus sirkular, yang berupa 3 subproses
:
1.
Process measurement, atribut dari project atau produk yang
sedang dikembangkan diukur.
2.
Process analysis, proses saat ini dinilai, dan kelemahan dari
proses diidentifikasi.
3.
Process change, perubahan proses diusulkan untuk mengatasi
beberapa kelemahan proses yang diidentifikasi.
Process
measurement adalah data kuantitatif tentang proses software. Process
measurement dapat digunakan untuk menilai apakah efisiensi proses telah
ditingkatkan. Ada 3 tipe process metrics yang bisa didapat :
1.
Waktu yang dibutuhkan supaya proses diselesaikan
2.
Resource yang dibutuhkan untuk sebuah proses tertentu
3.
Jumlah kejadian suatu peristiwa tertentu
Process
analysis adalah pembelajaran proses untuk membantu memahami karakteristiknya
dan bagaimana proses tersebut dipraktekkan. Ada 3 tujuan dalam process analysis
:
1.
Memahami aktivitas yang terlibat dalam proses dan relasi
antar aktivitas.
2.
Memahami relasi antara aktivitas proses dan ukuran yang
diperoleh dalam process measurements.
3.
Untuk mengaitkan proses yang sudah dianalisis dengan proses yang dapat
dibandingkan di tempat lain dalam organisasi, atau dengan proses yang
diidealkan dari jenis yang sama.
Teknik
yang paling sering digunakan dalam analisis adalah :
1.
Questionnaire and interviews, para insinyur dan manajer yang
mengerjakan project ditanyai tentang apa yang sebenarnya dikerjakan dalam
project.
2.
Ethnographic studies, di mana peserta proses diamati saat
mereka bekerja, dapat digunakan untuk memahami sifat pengembangan software
sebagai aktivitas manusia.
Process
change meliputi membuat modifikasi terhadap proses yang telah ada. Process
change harus bertujuan untuk meningkatkan kualitas dari proses. Ada 5 tahapan
process change :
1.
Improvement identification, menggunakan hasil analisis proses
untuk mengidentifikasi cara untuk mengatasi masalah kualitas, hambatan, atau
inefisiensi biaya yang telah diidentifikasi selama analisis proses.
2.
Improvement prioritization, menilai kemungkinan perubahan
pada proses, dan memprioritaskannya untuk implementasi. Ketika banyak
kemungkinan perubahan telah diidentifikasi, biasanya tidak mungkin untuk
memperkenalkan semuanya sekaligus, dan harus diputuskan mana yang paling
penting.
3.
Process change introduction, menempatkan prosedur baru,
metode, dan alat pada tempatnya dan mengintegrasikannya dengan kegiatan proses
lainnya.
4.
Process training, tanpa pelatihan tidak mungkin mendapatkan
manfaat penuh dari perubahan proses. Para insinyur yang terlibat perlu memahami
perubahan yang telah diusulkan dan bagaimana melakukan proses yang baru dan
berubah
5.
Change tuning, di mana masalah kecil dapat ditemukan, dan
modifikasi pada proses dapat diusulkan dan diperkenalkan.
Komentar
Posting Komentar