4.SE-software

Download Report

Transcript 4.SE-software

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 masingmasing 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 ma nagement tools
Requirements traceability tools, change control systems
Configuration management tools
Version management systems, system b uilding 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 comp arators
Debugging tools
Interactive debugging systems
Documentation tools
Page layout programs , ima ge 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.