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.