4.SE software process
Software Processes
Software Engineering
Chapter 4
Tujuan
• Mengenalkan models software proses
• Menjelaskan 3 proses model yang umum
• Menjelaskan proses outline untuk rekayasa
kebutuhan, pengembangan software, testing
dan evolusi
• Mengenalkan CASE technology sebagai
pendukung aktifitas software process
Topics covered
•
•
•
•
Model proses software
Proses iterasi
Aktifitas proses
Computer-aided software
engineering
The software process
• Aktivitas yang terstruktur yang dibutuhkan
untuk mengembangkan sebuah sistme software
–
–
–
–
Spesifikasi
Design
Validasi
Evolusi
Model proses software yang
umum
• The waterfall model
– Memisahkan fase spesifikasi dan pengembangan
• Pengembangan evolusioner
– Spesifikasi, pengembangan dan validasi saling
bersisipan
• Component-based software engineering
– Sistem dibangun dari komponen yang sudah ada
• Banyak sekali varian dari model seperti
pengembangan formal yang mirip dengan
waterfall tapi spesifikasi terdiri dari
beberapa langkah spesifikasi yang lebih
formal.
Waterfall model
Fase waterfall model
•
•
•
•
•
•
Analisa kebutuhan dan definisi
Desain software dan sistem
Implementasi dan unit testing
Integrasi dan sistem testing
Operation dan maintenance
Permasalahan : kesulitan untuk
mengakomodasi perubahan ketia
proses berjalan, fase harus
diselesaikan satu persatu
Waterfall model problems
• Pembagian yang tidak fleksibel dari sebuah
project ke beberapa tahap, membuat kita sulit
untuk mengakomodasi perubahan kebutuhan
customer
• Model ini hanya cocok ketika sebuah
requirement sudah dimengerti dengan baik dan
perubahan hanya terjadi sesekali selama proses
desain
• Cocok untuk sistem dengan business yang kecil
dan memiliki requirement yang stabil
• Model waterfall sering digunakan untuk project
rekayasa sistem dimana sistem tersebut
dikembangkan di lokasi yang berbeda
Pengembangan evolusioner
• Pengembangan secara eksplorasi
– Tujuannya adalah untuk bekerja dengan
customer dan mengembangkan final sistem.
Harus dimulai dengan pemahaman kebutuhan
secara detail dan menambahkan fitur baru
yang diajukan pelanggan
• Throw-away prototyping
– Tujuannya adalah untuk mengerti kebutuhan
sistem requirement. Dimulai dari
pemahaman yang sedikit tentang
requirement untuk klarifikasi apa yang
dibutuhkan sebenarnya.
Evolutionary development
Pengembangan evolusioner
• Problems
– Sistem memiliki struktur yang jelek
– Special skills dibutuhkan
• Applicability
– Small or medium size (sistem interaktif)
– Menjadi bagian dari sebuah sistem yang
besar ( misal : user interface)
– Sistem dengan lifetime yang pendek
Component-based software engineering
• Berdasarkan penggunaan ulang yang
sistematis dimana sistem terintegrasi
dengan komponen atau sebuah COTS.
• Tahapan proses :
– Analisis komponen
– Modifikasi requreiemt
– Sistem design dengan penggunaan ulang
– Pengembangan dan integrasi
Reuse-oriented development
Proses iterasi
• Untuk kebanyakan sistem besar perlu
digunakan berbagai model pendekatan untuk
berbagai bagian sistem sehingga harus
digunakan model hibrid.
• Iterasi dapat diterapkan pada model proses
generic diatas.
• Pendekatan relasi :
– pengembangan incremental
– Pengembangan spiral
Pengembangan inkremental
• Pelanggan mengidentifikasi secara garis
besar layanan (services) yang akan
disediakan oleh sistem.mereka
mengidentifikasi layanan mana yang paling
penting dan mana yang paling tidak penting
• Layanan dengan prioritas tertinggi akan
dikirimkan kepada pelanggan.
• Pada saat pengembangan, analisis persyaratan
selanjutnya untuk inkrement lainnya dapat
dilakukan, tetapi perubahan persyaratan
untuk inkremen yang sedang dikerjakan tidak
dapat diterima
Incremental development
Keuntungan penggunaan incremental
• Customer mendapatkan setiap inkremen, sehingga
fungsionalitas sistem dapat digunakan
didapatkan diawal
• Pelanggan dapat memakai inkrement yang pertama
sebagai bentuk prototipe dan mendapatkan
pengalaman yang dapat menginformasikan pada
pengembangan inkrement selanjutnya
• Resiko kecil dari kegagalan project secara
total
Extreme programming
• Pendekatan pengembangan berdasar
pengembangan dan pengiriman dari
masing-masing fungisonalitas
terkecil
• Bergantung pada improvisasi code,
keterlibatan user dalam team
pengembang, dan pemrogramana
secara berpasangan
Pengembangan spiral
• Proses direpresentasikan sebagai
spiral
• Setiap loop pada spiral
merepresentasikan fase dalam
setiap proses
• Tidak ada fase tetap seperti
spesifikasi atau desain – loops
dalam spiral dipilih berdasar apa
yang dibutuhkan
Spiral model of the software
process
Step Spiral model
• Penetapan tujuan
– Fase Identifikasi untuk penetapan tujuan yang
spesifik
• Penilaian dan pengurangan resiko
– Resiko dinilai dan berbagai aktifitas
dilakukan untuk mengurangi resiko
• Pengembangan dan validasi
– Pengembangan model untuk sistem dipilih dari
generic models
• Planning
– Proyek ditinjau dan selanjutnya dibuat
keputusan apakah akan diteruskan dengan fase
spiral selanjutnya
Aktifitas proses
•
•
•
•
Spesifikasi perangkat lunak
Desain software dan implemetasi
Validasi software
Evolusi software
Spesifikasi software
• Proses menetapkan layanan apa yang
dibutuhkan dan mendesak pada
operasi & pengembangan sistem
• Proses rekayasa requirement :
– Studi kelayakan
– Elisitasi dan analisis persyaratan
– Spesifikasi persyaratan
– Validasi persyaratan
The requirements engineering
process
Desain software dan implementasi
• Proses konversi spesifikasi sistem ke
sistem yang dapat di eksekusi
• Perancangan software
– Merancang struktur software yang
merealisasikan spesifikasi
• Implementation
– Menerjemahkan struktur ke sebuah
executable program
• Aktifitas implementasi dan desain sangat
dekat dan sering sekali saling tumpang
tindih
Design process activities
•
•
•
•
•
•
Desain arsitektural
Spesifikasi abstract
Interface desain
Komponen desain
Struktur data desain
Desain algoritma
The software design process
Structured methods
• Pendekatan sistematis untuk
mengembangkan desain software
• Desain biasanya di dokmentasikan
dengan model dalam bentuk grafis
• Model yang memungkinkan
– Object model;
– Sequence model;
– State transition model;
– Structural model;
– Data-flow model.
Programming and debugging
• Menerjemahkan dan desain ke sebuah program
dan menyingkirkan error dari sebuah program
• Programming adalah aktifitas personal,
tidak ada proses programming yang generic
• Programmer melakukan program testing untuk
menemukan kesalahan pada program dan
membenahi kesalahan ini dalam debugging
proses
The debugging process
Software validation
• Verifikasi dan validasi (V&V) untuk
menunjukkan sistem sudah sesuai dengan
spesifikasi dan memenuhi kebutuhan untuk
customer
• Cek dan review proses dan system testing
• Mengeksekusi / testing system dengan
beberapa test case yang diturunkan dari
spesifikasi dengan menggunakan data real
untuk diproses ke sistem
The testing process
Tahapan testing
• Component or unit testing
– Masing-masing komponen di lakukan tes
• System testing
– Testing sistem secara keseluruhan.
Testing emergent properties.
• Acceptance testing
– Testing dengan data customer untuk
cek apakah sistem memenuhi kebutuhan
user
Testing phases
Software evolution
• Software diharapkan dapat berubah
secara fleksible
• Apabila terdapat perubahan
requirement karena kondisi bisnis,
software yang mendukung bisnis
tersebut juga harus berubah
System evolution
Computer-aided software engineering
• CASE adalah software untuk mendukung
pengembangan software dan proses evolusi
• Activity automation
–
–
–
–
Editor grafis untuk pengembangan system model
Data dictionary untuk manage entities desain
UI builder untuk pembuatan user interface
Debuggers untuk mendukung pencarian kesalahan
CASE classification
• Klasifikasi membantu kita untuk mengerti
tipe dari case tools dan dukungannya untuk
aktifitas proses
• Functional perspective
– Tools yang digunakan untuk fungsi spesifik
• Process perspective
– Tools yang digunakan untuk mendukung aktifitas
proses
• Integration perspective
– Tools yang digunakan untuk mengklasifikasikan
integrasi unit
Functional tool classification
Tool type
Examples
Planning tools
PERT tools, estimation tools, spreadsheets
Editing tools
Text editors, diagram editors, word processors
Change management tools
Requirements traceability tools, change control systems
Configuration management tools
Version management systems, system building tools
Prototyping tools
Very high-level languages, user interface generators
Method-support tools
Design editors, data dictionaries, code generators
Language-processing tools
Compilers, interpreters
Program analysis tools
Cross reference generators, static analysers, dynamic analysers
Testing tools
Test data generators, file comparators
Debugging tools
Interactive debugging systems
Documentation tools
Page layout programs, image editors
Re-engineering tools
Cross-reference systems, program re-structuring systems
Activity-based tool
classification
CASE integration
• Tools
– Mendukung proses/tugas individual
seperti konsistensi desain, editing
text, dst
• Workbenches
– Mendukung fase proses seperti
spesifikasi atau desain
• Environments
– Mendukung semua bagian untuk proses
software
Tools, workbenches,
environments
Key points
• Software processes are the activities
involved in producing and evolving a software
system.
• Software process models are abstract
representations of these processes.
• General activities are specification, design
and implementation, validation and evolution.
• Generic process models describe the
organisation of software processes. Examples
include the waterfall model, evolutionary
development and component-based software
engineering.
• Iterative process models describe the
software process as a cycle of activities.
Key points
• Requirements engineering is the process of
developing a software specification.
• Design and implementation processes transform
the specification to an executable program.
• Validation involves checking that the system
meets to its specification and user needs.
• Evolution is concerned with modifying the
system after it is in use.
• The Rational Unified Process is a generic
process model that separates activities from
phases.
• CASE technology supports software process
activities.
Software Engineering
Chapter 4
Tujuan
• Mengenalkan models software proses
• Menjelaskan 3 proses model yang umum
• Menjelaskan proses outline untuk rekayasa
kebutuhan, pengembangan software, testing
dan evolusi
• Mengenalkan CASE technology sebagai
pendukung aktifitas software process
Topics covered
•
•
•
•
Model proses software
Proses iterasi
Aktifitas proses
Computer-aided software
engineering
The software process
• Aktivitas yang terstruktur yang dibutuhkan
untuk mengembangkan sebuah sistme software
–
–
–
–
Spesifikasi
Design
Validasi
Evolusi
Model proses software yang
umum
• The waterfall model
– Memisahkan fase spesifikasi dan pengembangan
• Pengembangan evolusioner
– Spesifikasi, pengembangan dan validasi saling
bersisipan
• Component-based software engineering
– Sistem dibangun dari komponen yang sudah ada
• Banyak sekali varian dari model seperti
pengembangan formal yang mirip dengan
waterfall tapi spesifikasi terdiri dari
beberapa langkah spesifikasi yang lebih
formal.
Waterfall model
Fase waterfall model
•
•
•
•
•
•
Analisa kebutuhan dan definisi
Desain software dan sistem
Implementasi dan unit testing
Integrasi dan sistem testing
Operation dan maintenance
Permasalahan : kesulitan untuk
mengakomodasi perubahan ketia
proses berjalan, fase harus
diselesaikan satu persatu
Waterfall model problems
• Pembagian yang tidak fleksibel dari sebuah
project ke beberapa tahap, membuat kita sulit
untuk mengakomodasi perubahan kebutuhan
customer
• Model ini hanya cocok ketika sebuah
requirement sudah dimengerti dengan baik dan
perubahan hanya terjadi sesekali selama proses
desain
• Cocok untuk sistem dengan business yang kecil
dan memiliki requirement yang stabil
• Model waterfall sering digunakan untuk project
rekayasa sistem dimana sistem tersebut
dikembangkan di lokasi yang berbeda
Pengembangan evolusioner
• Pengembangan secara eksplorasi
– Tujuannya adalah untuk bekerja dengan
customer dan mengembangkan final sistem.
Harus dimulai dengan pemahaman kebutuhan
secara detail dan menambahkan fitur baru
yang diajukan pelanggan
• Throw-away prototyping
– Tujuannya adalah untuk mengerti kebutuhan
sistem requirement. Dimulai dari
pemahaman yang sedikit tentang
requirement untuk klarifikasi apa yang
dibutuhkan sebenarnya.
Evolutionary development
Pengembangan evolusioner
• Problems
– Sistem memiliki struktur yang jelek
– Special skills dibutuhkan
• Applicability
– Small or medium size (sistem interaktif)
– Menjadi bagian dari sebuah sistem yang
besar ( misal : user interface)
– Sistem dengan lifetime yang pendek
Component-based software engineering
• Berdasarkan penggunaan ulang yang
sistematis dimana sistem terintegrasi
dengan komponen atau sebuah COTS.
• Tahapan proses :
– Analisis komponen
– Modifikasi requreiemt
– Sistem design dengan penggunaan ulang
– Pengembangan dan integrasi
Reuse-oriented development
Proses iterasi
• Untuk kebanyakan sistem besar perlu
digunakan berbagai model pendekatan untuk
berbagai bagian sistem sehingga harus
digunakan model hibrid.
• Iterasi dapat diterapkan pada model proses
generic diatas.
• Pendekatan relasi :
– pengembangan incremental
– Pengembangan spiral
Pengembangan inkremental
• Pelanggan mengidentifikasi secara garis
besar layanan (services) yang akan
disediakan oleh sistem.mereka
mengidentifikasi layanan mana yang paling
penting dan mana yang paling tidak penting
• Layanan dengan prioritas tertinggi akan
dikirimkan kepada pelanggan.
• Pada saat pengembangan, analisis persyaratan
selanjutnya untuk inkrement lainnya dapat
dilakukan, tetapi perubahan persyaratan
untuk inkremen yang sedang dikerjakan tidak
dapat diterima
Incremental development
Keuntungan penggunaan incremental
• Customer mendapatkan setiap inkremen, sehingga
fungsionalitas sistem dapat digunakan
didapatkan diawal
• Pelanggan dapat memakai inkrement yang pertama
sebagai bentuk prototipe dan mendapatkan
pengalaman yang dapat menginformasikan pada
pengembangan inkrement selanjutnya
• Resiko kecil dari kegagalan project secara
total
Extreme programming
• Pendekatan pengembangan berdasar
pengembangan dan pengiriman dari
masing-masing fungisonalitas
terkecil
• Bergantung pada improvisasi code,
keterlibatan user dalam team
pengembang, dan pemrogramana
secara berpasangan
Pengembangan spiral
• Proses direpresentasikan sebagai
spiral
• Setiap loop pada spiral
merepresentasikan fase dalam
setiap proses
• Tidak ada fase tetap seperti
spesifikasi atau desain – loops
dalam spiral dipilih berdasar apa
yang dibutuhkan
Spiral model of the software
process
Step Spiral model
• Penetapan tujuan
– Fase Identifikasi untuk penetapan tujuan yang
spesifik
• Penilaian dan pengurangan resiko
– Resiko dinilai dan berbagai aktifitas
dilakukan untuk mengurangi resiko
• Pengembangan dan validasi
– Pengembangan model untuk sistem dipilih dari
generic models
• Planning
– Proyek ditinjau dan selanjutnya dibuat
keputusan apakah akan diteruskan dengan fase
spiral selanjutnya
Aktifitas proses
•
•
•
•
Spesifikasi perangkat lunak
Desain software dan implemetasi
Validasi software
Evolusi software
Spesifikasi software
• Proses menetapkan layanan apa yang
dibutuhkan dan mendesak pada
operasi & pengembangan sistem
• Proses rekayasa requirement :
– Studi kelayakan
– Elisitasi dan analisis persyaratan
– Spesifikasi persyaratan
– Validasi persyaratan
The requirements engineering
process
Desain software dan implementasi
• Proses konversi spesifikasi sistem ke
sistem yang dapat di eksekusi
• Perancangan software
– Merancang struktur software yang
merealisasikan spesifikasi
• Implementation
– Menerjemahkan struktur ke sebuah
executable program
• Aktifitas implementasi dan desain sangat
dekat dan sering sekali saling tumpang
tindih
Design process activities
•
•
•
•
•
•
Desain arsitektural
Spesifikasi abstract
Interface desain
Komponen desain
Struktur data desain
Desain algoritma
The software design process
Structured methods
• Pendekatan sistematis untuk
mengembangkan desain software
• Desain biasanya di dokmentasikan
dengan model dalam bentuk grafis
• Model yang memungkinkan
– Object model;
– Sequence model;
– State transition model;
– Structural model;
– Data-flow model.
Programming and debugging
• Menerjemahkan dan desain ke sebuah program
dan menyingkirkan error dari sebuah program
• Programming adalah aktifitas personal,
tidak ada proses programming yang generic
• Programmer melakukan program testing untuk
menemukan kesalahan pada program dan
membenahi kesalahan ini dalam debugging
proses
The debugging process
Software validation
• Verifikasi dan validasi (V&V) untuk
menunjukkan sistem sudah sesuai dengan
spesifikasi dan memenuhi kebutuhan untuk
customer
• Cek dan review proses dan system testing
• Mengeksekusi / testing system dengan
beberapa test case yang diturunkan dari
spesifikasi dengan menggunakan data real
untuk diproses ke sistem
The testing process
Tahapan testing
• Component or unit testing
– Masing-masing komponen di lakukan tes
• System testing
– Testing sistem secara keseluruhan.
Testing emergent properties.
• Acceptance testing
– Testing dengan data customer untuk
cek apakah sistem memenuhi kebutuhan
user
Testing phases
Software evolution
• Software diharapkan dapat berubah
secara fleksible
• Apabila terdapat perubahan
requirement karena kondisi bisnis,
software yang mendukung bisnis
tersebut juga harus berubah
System evolution
Computer-aided software engineering
• CASE adalah software untuk mendukung
pengembangan software dan proses evolusi
• Activity automation
–
–
–
–
Editor grafis untuk pengembangan system model
Data dictionary untuk manage entities desain
UI builder untuk pembuatan user interface
Debuggers untuk mendukung pencarian kesalahan
CASE classification
• Klasifikasi membantu kita untuk mengerti
tipe dari case tools dan dukungannya untuk
aktifitas proses
• Functional perspective
– Tools yang digunakan untuk fungsi spesifik
• Process perspective
– Tools yang digunakan untuk mendukung aktifitas
proses
• Integration perspective
– Tools yang digunakan untuk mengklasifikasikan
integrasi unit
Functional tool classification
Tool type
Examples
Planning tools
PERT tools, estimation tools, spreadsheets
Editing tools
Text editors, diagram editors, word processors
Change management tools
Requirements traceability tools, change control systems
Configuration management tools
Version management systems, system building tools
Prototyping tools
Very high-level languages, user interface generators
Method-support tools
Design editors, data dictionaries, code generators
Language-processing tools
Compilers, interpreters
Program analysis tools
Cross reference generators, static analysers, dynamic analysers
Testing tools
Test data generators, file comparators
Debugging tools
Interactive debugging systems
Documentation tools
Page layout programs, image editors
Re-engineering tools
Cross-reference systems, program re-structuring systems
Activity-based tool
classification
CASE integration
• Tools
– Mendukung proses/tugas individual
seperti konsistensi desain, editing
text, dst
• Workbenches
– Mendukung fase proses seperti
spesifikasi atau desain
• Environments
– Mendukung semua bagian untuk proses
software
Tools, workbenches,
environments
Key points
• Software processes are the activities
involved in producing and evolving a software
system.
• Software process models are abstract
representations of these processes.
• General activities are specification, design
and implementation, validation and evolution.
• Generic process models describe the
organisation of software processes. Examples
include the waterfall model, evolutionary
development and component-based software
engineering.
• Iterative process models describe the
software process as a cycle of activities.
Key points
• Requirements engineering is the process of
developing a software specification.
• Design and implementation processes transform
the specification to an executable program.
• Validation involves checking that the system
meets to its specification and user needs.
• Evolution is concerned with modifying the
system after it is in use.
• The Rational Unified Process is a generic
process model that separates activities from
phases.
• CASE technology supports software process
activities.