You are on page 1of 50

Rekayasa Perangkat Lunak

Software Processes

Kelompok Keilmuan/ Keahlian Informatika

Dr. Aradea, S.T., M.T.


Source : Roger S Pressman, Ian Sommervile, Grady Booch
Edward Yourdon , KK-Informatika ITB
What is Software Engineering ?

• Software engineering is the establishment and


sound engineering principles in order to obtain
economically software that is reliable and works
efficiently on real machines (Fritz Bauer,1969)

• Software engineering is [1] the application of a


systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of
software, and [2] the study of approaches as in
[1] (IEEE,1993)
Software Engineering Body of
Knowledge (SWEBOK)
• Software requirements
• Software design
• Software construction
• Software testing
SWEBOK • Software maintenance
Knowledge Areas • Software configuration management
• Software engineering management
• Software engineering process
• Software engineering tools and methods
• Software quality
Software Engineering – a layered
technology

Tools

Methods

Process

A quality focus
Important Questions for Software
Engineers

• Why does it take so long to get software finished?


• Why are development costs so high?
• Why can't we find all errors before we give the
software to our customers?
• Why do we continue to have difficulty in measuring
progress as software is being developed?
Why Software Engineering ?

• To get the right software and to


make the software right
• Complexity of software
– Domain problem: Business Rule
– Data size: Digital and Non Digital
– Solution: Algorithm
– Place or Sites
Why Software Engineering ?

• Software must be correct


• Software correctness have to be maintained
How should SE be applied ?

• There are 2 things to be considered in SE:


– Product = Software:
• Programs
• Documents
• Data
– Process of how the software is build:
• Management process
• Technical process
Product of Software Engineering

• Product is obtained through stages of


development = Software Development Life Cycle
(SDLC)
• Examples of life cycles (SDLC):
– Waterfall model
– V model
– Spiral model
– Fountain model
– Prototyping
– Etc.
Ilustrasi Perangkat Lunak
Pembangunan Perangkat Lunak Dilakukan Oleh Tim :
•Permintaan Manajemen : Dengan asumsi efesiensi, tidak
mempertimbangkan cara pakai dan kekuatannya.
•Permintaan proyek : Kehandalan (reliability), supaya kuat
menggunakan 3 tali.
•Rancangan Sistem Analis : Kekuatan diutamakan dengan asumsi
batang paling besar adalah paling kuat.
•Hasil Programmer : Asumsi antisipasi efisiensi dengan menggunakan
2 dahan.
•Pemasangan (Installed) : Supaya asumsi programmer dapat
dijalankan (dapat berayun) maka batang pohon ditebang dan pohon
disangga dari sisi kanan dan kiri.
•Apa yang diinginkan Pengguna : Cukup dengan menggunakan
sebuah ban yang digantungkan ke pohon supaya dapat berayun
What is a Software Process?

• A set of activities and associated results


whose goal is the development or evolution of a
software product
• Generic activities in all software processes are:
• Specification - what the system should do and its development
constraints
• Development - production of the software system
• Validation - checking that the software is what the customer wants
• Evolution - changing the software in response to changing demands
What is a Software Process Model?

• A simplified representation of a software


process, presented from a specific perspective
• Examples of process perspectives are
• Workflow perspective - sequence of activities
• Data-flow perspective - information flow
• Role/action perspective - who does what
• Generic process models
• Waterfall
• Iterative development
• Formal transformation
• Integration from reusable components
Software Process

• Software development is a complex process


needing human judgment and creativity
• therefore could not be fully automated
• There is no ‘ideal’ software process
• Many diverse processes exist
• There is room for improvement!
• Organizations select software processes based
on:
• capabilities of people in the organization
• characteristics of the system to be developed etc.
What is CASE ?
(Computer-Aided Software Engineering)
• Software systems which are intended to provide
automated support for software process
activities.

• Upper-CASE : Tools to support the early


process activities of requirements and design

• Lower-CASE : Tools to support later activities


such as programming, debugging and testing
Common Process Framework

• Communication customer collaboration and requirement


gathering
• Planning establishes engineering work plan, describes technical
risks, lists resource requirements, work products produced, and
defines work schedule
• Modeling creation of models to help developers and customers
understand the requires and software design
• Construction
code generation and testing
• Deployment
software delivered for customer evaluation and feedback
Process Assessment

Proses harus diukur untuk menjamin bahwa proses


memenuhi kriteria proses dasar untuk kesuksesan RPL

Pendekatan Pengukuran Proses :


•Standard CMMI Assessment Method for Process
•Improvement (SCAMPI)
•CMM-Based Appraisal for Internal Process
•Impprovement (CBA IPI)
•SPICE (ISO/IECI 15504)
•ISO 9001:2000 for Software, paling banyak dipakai
Process Model
Prescriptive Models Agile Process Models
•The Waterfall Model •Extreme Programming (XP)
•Incremental Models vs RAD •Adaptive Software Development
•Evolutionary Process Models (ASD)
(Prototyping, Spiral, Concurrent) •Dynamic Systems Development
Method (DSDM)
•Scrum
Specialized Process Models •Crystal
•Component-Based Development •Feature Driven Development
•Formal Methods Model (FDD)
•Aspect-Oriented Programming •Agile Modeling (AM)

The Unified Process


•Rational Unified Process (RUP)
Waterfall Model

Requirements
definition

System and
software design

Implementation
and unit testing

Integr ation and


system testing

Operation and
maintenance
Waterfall Model : Advantages

• Proses-prosesnya mudah dipahami dan jelas

• Mudah dalam pengelolaan proyek

• Dokumen dihasilkan setiap akhir fase

• Fase dijalankan setelah fase sebelumnya selesai

• Struktur sistem jelas


Waterfall Model : Problems

• Proyek dunia nyata jarang mengikuti alur proses


• Kesulitan jika terjadi perubahan kebutuhan
• Waktu pengerjaan bertambah
• Ada anggota tim yang harus menunggu
pekerjaan pekerja lain
• Kondisi tepat SDLC Waterfall
• Kebutuhan user telah sangat dipahami
• Kemungkinan terjadinya perubahan kebutuhan user kecil
Incremental Model
System/information increment 1
engineering

analysis design code test delivery of


1st increment

increment 2 analysis design code test delivery of


2nd increment

increment 3 analysis design code test delivery of


3rd increment

increment 4 analysis design code test

delivery of
4th increment

calendar time
Incremental Model

• Mengkombinasikan elemen model waterfall yang


diterapkan dengan cara iteratif

• Berfokus pada delivery dari produk operasional


setiap increment

• Delivery dari first increment digunakan untuk


perencanaan second increment, dst.
Incremental Model
Kelebihan dan Kekurangan
•Kebutuhan pengguna / customer dipenuhi pada setiap bagian yang selesai
terlebih dahulu
•Bagian yang selesai terlebih dahulu menjadi prototipe
•Resiko rendah
•Bagian yang punya prioritas tertinggi dapat dites secara intensive
•Permasalahan
•Batasan proses tidak jelas
•Sistem kurang terstruktur
•Kemampuan aplikasi
•Untuk sistem dengan interaksi skala kecil dan medium
•Untuk antarmuka user
•Untuk sistem dengan masa penggunaan pendek
Rapid Application Development (RAD)
team #3
team #2
business
mode ling

team #1 business dat a


modeling mode ling

process
business mode ling

modeling data
modeling application
generat ion

testing
&
process turnover

data modeling
modeling

application
generation
process
modeling testing
&
turnover

application
generation

testing
&
turnover

60 - 90 days
RAD Model

• RAD model adalah adaptasi high speed dari linear


sequential model (LSM).
• LSM yang menekankan pada siklus pengembangan
yang sangat pendek (60-90 hari)
• Menggunakan component based construction,
komponen program yang reusable.
• Planning sangat penting karena melibatkan banyak tim
• Tidak tepat untuk sistem yang memiliki resiko terlalu
tinggi: aplikasi baru menggunakan teknologi baru atau
software baru yang memerlukan interoperabilitas tinggi
dengan program yang sudah ada
Evolutionary Model
Concurr ent
activities

Initial
Specification
version

Outline Intermediate
Development
description versions

Final
Validation
version
Evolutionary Model

Problems
•Lack of process visibility
•Systems are often poorly structured
•Special skills (e.g. in languages for rapid prototyping) may
be required

Applicability
•For small or medium-size interactive systems
•For parts of large systems (e.g. the user interface)
•For short-lifetime systems
Evolutionary Model

• Prototyping Model good first step when customer has a


legitimate need, but is clueless about the details, developer needs
to resist pressure to extend a rough prototype into a production
product

• Spiral Model couples iterative nature of prototyping with the


controlled and systematic aspects of the linear sequential model

• Concurrent Development Model similar to spiral model


often used in development of client/server applications
Prototyping Model

listen
to build/revise
customer mock-up

customer
test-drives
mock-up
Prototyping Model

Pembuat software membuat MODEL dari SW yang akan


dibuat. Model dapat berbentuk:
•Prototipe kertas atau model berbasis komputer yang
menjelaskan bagaimana interaksi antara pemakai dan
komputer.
•Prototipe yang mengimplementasikan beberapa bagian
fungsi dari PL yang sesungguhnya. Dengan cara ini pemakai
akan lebih mendapatkan gambaran tentang program yang
akan dihasilkan.
•Menggunakan SW yang sudah ada. Seringkali pembuat PL
memiliki beberapa program yang sebagian program tersebut
mirip dengan program yang akan dibuat
Prototyping Model

Permasalahan:
•PL yang dibuat merupakan pengembangan dari model,
sehingga kualitasnya rendah (program terlalu besar, sulit
dimodifikasi, tidak terdokumentasi dengan jelas). Untuk itu
pembuat harus menulis ulang program yang dihasilkan agar
berkualitas tinggi.
•Untuk mempercepat pembuatan prototipe, terkadang
menggunakan operating system, bahasa pemrograman, dan
algoritma yang kurang tepat, dengan pertimbangan pembuat
program sudah memahami. Setelah proses pengembangan
pembuat program lupa mengapa memilih algoritma yang
kurang tepat tersebut.
Spiral Model
Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analy sis Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
next-level product
Spiral Model

• Mendefinisikan kebutuhan dengan sedetail mungkin


• Pembuatan desain untuk sistem yang baru
• Proses direpresentasikan dalam aktivitas berbentuk spiral
• Setiap perulangan (loop) dalam spiral merepresentasikan
sebuah fase dalam proses
• Fase-fase tidak fix (spesikasi -design loop) dipilih sesuai
dengan yang diperlukan
• Resiko selalu secara transparan dimonitor dan dipecahkan
selama proses berlangsung23
Spiral Model

Kelebihan
•Dapat digunakan untuk sistem yang besar
•Sangat cocok sebagai mekanisme mengurangi
resiko

Kelemahan
•Terlalu banyak memikirkan resiko yang akan
terjadi
•Masih jarang digunakan
Concurrent Development Model
none

Under Analysis activity


development

Awaiting
changes

Under revision Under review

Baselined

Done
Specialized Process Models

• Component-Based Development
– spiral model variation in which applications are built
from prepackaged software components called classes
• Formal Methods Model
– rigorous mathematical notation used to specify, design,
and verify computer-based systems
• Aspect-Oriented Programming
– provides a process for defining, specifying, designing,
and constructing software aspects like user interfaces,
security, and memory management that impact many
parts of the system being developed
Component-Based Software Engineering
(CBSE)
Based on systematic reuse where systems are
integrated from existing components or COTS
(Commercial-off-the-shelf) systems.
Requirements Component Requirements System design
specification analysis modification with reuse

Development System
and integration validation

This approach is becoming increasingly used as


component standards have emerged
CBSE Model

• Advantages
• reduces the amount of software to develop
• reduces cost and risks
• faster delivery

• Disadvantages
• requirement compromises
• lose control of system evolution (because component
evolution is not controllable)
Formal Methods Model

Requirements Formal Formal Integration and


definition specification transformation system testing

• Based on the transformation of a mathematical


specification through different representations to an
executable program
• Transformations are ‘correctness-preserving’ so it is
straightforward to show that the program conforms to its
specification
• Design, implementation and unit-testing phases are
replaced by a transformational development process
Formal Methods Model

Formal transformations
T1 T2 T3 T4

Formal R1 Executable
R2 R3
specification program

P1 P2 P3 P4

Proofs of transformation correctness


Formal Methods Model

Problems
•Need for specialised skills and training to apply the
technique
•Difficult to formally specify some aspects of the system
such as the user interface
Applicability
•Critical systems especially those where a safety, reliability
and security requirements are important
•e.g. Patient monitoring system, airplane engine control
system
Rational Unified Process (RUP)
Phases
Core Workflows Inception Elaboration Construction Transition

Requirements

An iteration in the
elaboration phase
Analysis

Design

Implementation

Test

P r e lim in a ry ite r. ite r. ite r. ite r. ite r. ite r. ite r.


Ite ra tio n (s ) #1 #2 #n #n+1 #n +2 #m #m +1

Menggunakan konsep object oriented, denganI t eaktifitas


r a t io n s yang berfokus pada
pengembangan model dengan menggunakan Unified Model Language (UML).
RUP Model
Keuntungan
•Menyediakan akses yang mudah terhadap pengetahuan dasar bagi
anggota tim.
•Menyediakan petunjuk bagaimana menggunakan UML.
•Mendukung proses pengulangan pengembangan SW.
•Memungkinkan adanya penambahan pada proses.
•Memungkinkan untuk secara sistematis mengontrol perubahan-
perubahan yang terjadi pada software selama proses pengembangannya.
•Memungkinkan untuk menjalankan test case dengan menggunakan
Rational Test
Kekurangan
•Metodologi ini hanya dapat digunakan pada pengembangan SW yang
berorientasi objek dengan berfokus pada UML
Extreme Programming (XP)

• Pengembangan perangkat lunak yang ringan termasuk salah satu


agile methods, dan paling banyak digunakan
• Sasaran XP adalah tim yang dibentuk berukuran antara kecil
sampai medium saja, tidak perlu menggunakan sebuah tim yang
besar. Hal ini dimaksudkan untuk menghadapi requirements yang
tidak jelas maupun terjadinya perubahan requirements yang cepat
XP Model
Keunggulan
•Menjalin komunikasi yang baik dengan klien. (Planning Phase)
•Menurunkan biaya pengembangan (Implementation Phase)
•Meningkatkan komunikasi dan sifat saling menghargai antar developer.
(Implementation Phase)
•XP merupkan metodologi yang semi formal. (Planning Phase)
•Developer harus selalu siap dengan perubahan karena perubahan akan
selalu diterima, atau fleksibel. (Maintenance Phase)
Kelemahan
•Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga
anjuran untuk melakukan apa yang diperlukan hari itu juga).
•XP juga memiliki keunggulan yang sekaligus menjadi kelemahannya,
yaitu XP tidak memiliki dokumentasi formal yang dibuat selama
pengembangan. Satu-satunya dokumentasi adalah dokumentasi awal
yang dilakukan oleh user.
ADA PERTANYAAN

?
Model mana yang paling baik ?

TIDAK ADA

Tergantung sistem yang dikembangkan dan


sangat dimungkiankan mengunakan
kombinasi model untuk memperoleh
efisiensi waktu dan hasil yang optimal
Latihan

• Bentuk Kelompok Kerja

• Buat kajian/ pembahasan detail tentang model proses


perangkat lunak dan perbandingannya dalam bentuk
paper (makalah)

“Pilih minimal 2 model proses (pada slide 18) yang


dieksplorasi dan dibandingkan”
Terima Kasih

You might also like