Pengenalan Software Engineering PDF
Pengenalan Software Engineering PDF
Engineering
Arna Fariza
Politeknik Elektronika Negeri Surabaya
1
Rekayasa Perangkat Lunak
Materi
Apa yang dimaksud Perangkat Lunak?
Apa yang dimaksud Rekayasa Perangkat Lunak?
Apa yang dilakukan Rekayasa Perangkat Lunak
Bagaimana Perangkat Lunak direkayasa
(Proses)?
Software Engineering vs Computer Science
2
Rekayasa Perangkat Lunak
Definisi
o Aplikasi yang menggunakan pendekatan sistematis, disiplin,
terukur untuk mengembangkan, mengoperasikan dan
memelihara perangkat lunak (IEEE 1990)
o Pembangunan oleh banyak orang (multi-person) dari perangkat
lunak multi-version (Parnas 1978)
5
Rekayasa Perangkat Lunak
Sejarah RPL
Early Days
o Th 1950 programmer menulis program
o Awal 1960 Pembangunan project software skala sangat besar
oleh Expert
o Pertengahan-Akhir 1960 - muncul aplikasi software komersial
skala besar
Sistem besar melibatkan tim
Muncul istilah Software Engineering
Disiplin RPL
o Induvidu tidak dapat melihat Big Picture
o Meningkatnya waktu komunikasi
o Perubahan personal berakibat pada produktifitas
Pengaruh RPL
Harga software terus meningkat, membutuhkan
produksi software yang lebih efisien
o Software acquisition vs outsourcing
o Software reuse vs build-from-scratch
Programmer vs RPL
Individu dengan skill yang baik
Pemrograman kecil
Pengetahuan dalam
o Struktur data
o Algoritma
Menterjemahkan kebutuhan
ke dalam spesifikasi
Lebih akrab dalam area
multiple application
Berlawanan dengan user
Melihat Big picture
Dapat memodelkan aplikasi
Skill komunikasi dan
interpersonal yang baik
9
Coding dan
Testing Modul
50 %
Integrasi dan
System Testing
Delivery dan
Maintenance
50 %
10
13
Rekayasa Perangkat Lunak
14
Rekayasa Perangkat Lunak
ADT Stack
Public
Interface
Private Implementation
Head: Int;
ST: Array[100] of Int;
User
PUSH
POP
TOP
EMPTY
Designer
Push(X Int)
End;
Int Pop()
End;
PUSH
5
10
15
20
20 15
10
5
ST
TOP
20
15
10
15
Rekayasa Perangkat Lunak
Konsep Object-Oriented
Class
o Tipe agen
o Menggambarkan perilaku
Object
o Instance dari class
o Merepresentasikan data aktual yang dimanipulasi oleh agen
o Memelihara state dari object
Method
o Operasi yang didefinisikan dalam class
o Operasi terhadap SEMUA instance dari Class
Message
o Mengindikasikan bahwa method dari object dikerjakan
17
Rekayasa Perangkat Lunak
Main()
{
//Declare Objects
Employee emp1(Steve,100.0);
Employee emp2(Lois, 120.0);
//Pass Messages
//Invoke Methods
emp1.print_name();
emp1.print_salary();
emp2.update_salary(10);
emp2.print_name();
emp2.print_salary();
}
Kesimpulan:
Setiap Object (emp1,emp2)
mempunyai Independent State
sendiri yang diakses melalui
Shared Public Interface dari Class
18
Modul vs ADT/Class
Modul
o Menggambarkan baik state dan perilaku
o Modul Employee terdiri dari Instance Variable, Operasi dan
Program Variable
o Single instance di-share oleh semua user
Class
o Menggambarkan hanya perilaku
o Class Employee mengabaikan Program Variabel
o Multiple Independent Instance membagi deklarasi class yang
sama tetapi membedakan state
Konsep Lanjutan OO
Inheritance
o Menggunakan Class bersama-sama dengan Generalisasi dan
Spesialisasi
o Memperlakukan instance dari class yang berbeda dalam bentuk
seragam
Polymorphism/Dynamic Binding
o Pemilihan Run-Time dari Method dijalankan berdasarkan tipe
pemanggilan instance
o Message dilewatkan dalam tipe yang dependent
10
Contoh inheritance
Person
Name, SSN
Print_Info()
Specialisasi
Employee::Person
Dept, Salary
Update_Salary()
Faculty::Employee
Rank
Promote_Fac()
Generalisasi
Student::Person
Dorm, GPA
Print_Transcript
Dean::Employee
School
21
Keuntungan OO
Mendukung komponen software yang Reusable
o Pembuatan dan testing dalam isolasi
o Integrasi dari komponen yang bekerja
o Desainer/developer melihat permasalahan pada
level abstraksi lebih tinggi
Mempromosikan/Memfasilitasi Evolusi/Reuse
software
o Inheritance ke desain lebih lanjut / Class Library
o Multiple instance dari Class yang sama
22
Rekayasa Perangkat Lunak
11
Dalam 10 tahun
o Muncul Java (dan sekarang .NET)
o Muncul Java Beans
o Component-Based Development Tools
23
Rekayasa Perangkat Lunak
24
Rekayasa Perangkat Lunak
12
Konsep Komponen
Komponen terdiri dari satu atau lebih Class (atau
komponen lain) dan diperuntukkan untuk mendukung
Pembentukan unit fungsionalitas
Peruntukkan class dalam multiple component
mempertahankan semantic yang sama dalam semua
keadaan
Contoh komponen
o Graphical User Interface Widget
o Major Reused Functionality
Algoritma untuk Searching/Sorting
Database Connection/Querying
o Aplikasi khusus
Komponen Cost Accounting
Komponen Computational Fluid Dynamics
25
Rekayasa Perangkat Lunak
Contoh Komponen
Two Sample Components:
o Komponen Tanggal (selalu tanggal valid)
o Komponen alamat (Konsistensi dalam presentasi)
26
Rekayasa Perangkat Lunak
13
Komponen vs Object
Object
Komponen
o Berorientasi bisnis
o Berorientasi teknologi
o Bentuk kasar
o Bentuk halus
o Berbasis standard
o Berbasis bahasa
o Multiple Interfaces
o Single Interface
o Menyediakan servis
o Menyediakan operasi
o Dibungkus penuh
o Menggunakan inheritance
o Dimengerti Developer
27
Rekayasa Perangkat Lunak
2000-Web-Based/Distributed Computing
Komputasi/aplikasi terdistribusi adalah
o
o
o
o
o
14
DB Client
Legacy
Client
Legacy
Database
Java
Client
Legacy
Java
Client
Server
Server
COTS
Lingkungan
Dinamis
High-Availability
Performansi
Database
COTS
COTS
Client
Meningkatkan Produktivitas
Interoperasi yg transparan Penggunaan Informasi
baru/inovasi
29
Rekayasa Perangkat Lunak
Database
Alasan: User
COTS
Legacy
Aplikasi Terdistribusi
Legacy
Client
Java
Client
o Artifacts + User
GOTS
NETWORK
GOTS
Client
Legacy
Database
Database
Client
COTS
Client
30
15
CASE
CASE (Computer-Aided Software Engineering) adalah berbagai
macam program yang digunakan untuk mendukung semua kegiatan
perangkat lunak seperti analisa persyaratan, permodelan sistem,
debugging, dan pengujian.
CASE bisa terdiri dari
o Editor untuk notasi yang digunakan,
o Modul analisis untum memeriksa model sistem dan membuat
dokumentasinya
CASE bisa mencakup generator kode, CASE yang hanya terdiri dari
editor dinamakan Lower-CASE.
31
Rekayasa Perangkat Lunak
32
Rekayasa Perangkat Lunak
16
Interfacing
Operating System
Perangkat Lunak Aplikasi
CASE Tools
33
Rekayasa Perangkat Lunak
34
Rekayasa Perangkat Lunak
17
35
Rekayasa Perangkat Lunak
36
Rekayasa Perangkat Lunak
18
Program Office
Program Graphics Design
Program Multimedia
Dan Lain-lain
37
Rekayasa Perangkat Lunak
19