1. Pengenalan Software
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
1
2. Apakah Perangkat Lunak itu?
Perangkat lunak adalah definisi dan organisasi
dari sekumpulan task dan fungsi yang
dienkapsulasi dalam bentuk yang dapat di-
eksekusi oleh komputer
Beberapa tipe perangkat lunak:
o Commercial-Off-the-Shelf (COTS)
o Government-Off-the-Shelf (GOTS)
o Legacy: ditulis dalam bahasa pemrograman ‘sebelumnya’
• Cobol, PL/1 (Y2k/SNET), Fortran, etc.
• C and C++!
o Customized New Software
o Client vs. Server Software
o Database Management Systems/Applications
3
Rekayasa Perangkat Lunak
Apakah Rekayasa Perangkat Lunak itu?
Rekayasa: aplikasi keilmuan untuk penyelesaian
permasalahan praktis
Rekayasa Perangkat Lunak: aplikasi ilmu komputer
untuk membangun sistem perangkat lunak praktis
Pemrograman
o Individu menulis keseluruhan program
o Satu orang, satu komputer
o Well-defined Problem
o Programming-in-the-Small
Rekayasa Perangkat Lunak
o Individu menulis komponen program
o Tim membangun keseluruhan prgram
o Programming-in-the-Large
4
Rekayasa Perangkat Lunak
2
3. Apakah Rekayasa Perangkat Lunak itu?
Aplikasi dari merekayasa perangkat lunak
Wilayah Computer Science Engineering yang
berhubungan dengan Sistem Perangkat Lunak
o Besar dan kompleks
o Dibangun oleh tim
o Terdapat beberapa versi
o Berakhir beberapa tahun
o Undergo changes
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
Mengapa Rekayasa Perangkat Lunak?
Kompleksitas program melebihi programmer individu
atau sendiri
Rekayasa perangkat lunak ditarget untuk
o Membangun aplikasi perangkat lunak besar
o Mendefinisikan permasalahan dengan jelas dan komplit
o Perangkat dan teknik untuk mendukung proses
o Team-Oriented experience
Rekayasa perangkat lunak harus berkembang menjadi
Engineering discipline
Rekayasa perangkat lunak harus memajukan dan
mendukung konstruksi multi-person dari perangkat
lunak multi-version
6
Rekayasa Perangkat Lunak
3
4. 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
RPL: manajemen, organisasi, perangkat, teori,
metodologi, teknik dll
7
Rekayasa Perangkat Lunak
Pengaruh RPL
Harga software terus meningkat, membutuhkan
produksi software yang lebih efisien
o Software acquisition vs outsourcing
o Software reuse vs build-from-scratch
Kompleksitas perangkat lunak besar berubah dalam
bentuk perspektif pengembangan
Konsep Desain Pengembangan
Integrasi Distribusi Dokumentasi
Pemeliharaan Evolusi Perluasan
Pertumbuhan RPL/Computer Science
o 350.000 pekerjaan teknologi informasi terbuka
o 100.000 pekerjaan baru setiap tahun selama 10 tahun
8
Rekayasa Perangkat Lunak
4
5. Programmer vs RPL
Individu dengan skill yang baik Bagian dari tim
Pemrograman kecil Pemrograman skala besar
Pengetahuan dalam Pendekatan desain
o Struktur data o OO, modul dll
o Algoritma o Top-Down/Bottom-Um
Menguasai beberapa bahasa Menterjemahkan kebutuhan
pemrograman ke dalam spesifikasi
Ketiadaan training formal Lebih akrab dalam area
Penggunaan CS minimal multiple application
Berlawanan dengan user
Melihat “Big picture”
Dapat memodelkan aplikasi
Skill komunikasi dan
interpersonal yang baik
9
Rekayasa Perangkat Lunak
Model Proses Waterfall
Analisa dan
Spesifikasi Apa kekurangan dari sistem ini?
Kebutuhan
Desain dan
Spesifikasi
Coding dan
Testing Modul 50 %
Integrasi dan
System Testing
Delivery dan 50 %
Maintenance
10
Rekayasa Perangkat Lunak
5
6. Software Lifecycle dari Model Waterfall
Analisa dan spesifikasi kebutuhan
o Permasalahan apa yang dipecahkan?
o Apa yang dibutuhkan/diinginkan Pelanggan?
o Interaksi antara SE dan Pelanggan?
o Identifikasi dan dokumentasi kebutuhan sistem
o Membangkitkan user manual dan test plan
Desain dan spesifikasi
o Bagaimana permasalahan dipecahkan
o Desain High-Level
o Menentukan komponen/modul
o Transisi ke desain secara detil
o Fungsional detil dari komponen/modul
11
Rekayasa Perangkat Lunak
Software Lifecycle dari Model Waterfall
Coding dan Testing Modul
o Menulis kode sesuai spesifikasi desain
komponen/modul
o Memisahkan testing modul individu
o Simulasi perilaku sistem dengan driver dan stub
Integrasi dan System Testing
o Integrasi komponen/modul ke dalam sub sistem
o Integrasi sub sistem ke dalam program akhir
Delivery dan Maintenance
o Memberikan sistem ke Konsumen/Market
o Memperbaiki buk dan version release sepanjang
waktu
12
Rekayasa Perangkat Lunak
6
7. Sejarah Perangkat Lunak
Abstract Data Types (ADTs) – 1970-an
Object-Oriented Paradigm – 1980-an
Component-Based D & D – 1990-an
Web-Based/Distributed Computing – 2000-an
13
Rekayasa Perangkat Lunak
1970 - Abstract Data Types (ADTs)
Diusulkan oleh B. Liskov (MIT) tahun 1975
ADTs mempromosikan pengembangan aplikasi dari
pandangan informasi dan penggunaannya
Prosesn desain ADT
o Identifikasi “jenis” atau “tipe” informasi
o Membungkus informasi dan menyediakan public interface dari
metode
o Menyembunyikan informasi dan kode metode dalam private
implementation
ADT berhubungan dengan User-Defined Data Types
Analogi dengan Integer Data Type dan +, -, *, dll
14
Rekayasa Perangkat Lunak
7
8. ADT Stack
Public
Interface Private Implementation
Head: Int;
User Designer
ST: Array[100] of Int;
PUSH
POP Push(X Int)
…
TOP End;
EMPTY
Int Pop()
…
End;
PUSH
5 20 15 10 5
10 ST
15 5
TOP 20 15 10 5
20
15
Rekayasa Perangkat Lunak
1980 - Object-Oriented Paradigm
Object-Oriented Decomposition
o Dekomposisi permasalahan ke dalam agen yang
membentuk operasi
o Penekanan agen yang menyebabkan aksi
Agen terdiri dari 2 bagian
o Hidden Implementation: data dan operasi hanya
tersedia pada agen
o Public Interface: operasi tersedia untuk client dari
agen
Agen hanya dapat dimodifikasi dengan operasi
yang ditentukan dengan Hidden Implementation
atau Public Interface
16
Rekayasa Perangkat Lunak
8
9. 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
Contoh Class Employee
Class Employee Main()
{ {
//Hidden Implementation //Declare Objects
Private: //Instance Vars Employee emp1(Steve,100.0);
char[30] name; Employee emp2(Lois, 120.0);
float salary;
//Public Interface //Pass Messages
Public: //Invoke Methods
void print_name(); emp1.print_name();
void print_salary(); emp1.print_salary();
void update_salary(float i); emp2.update_salary(10);
Employee(char *n, float s); emp2.print_name();
} emp2.print_salary();
}
Apa Output dari Main()? Kesimpulan:
Steve Setiap Object (emp1,emp2)
100.0 mempunyai Independent State
Lois sendiri yang diakses melalui
130.0 Shared Public Interface dari Class
18
Rekayasa Perangkat Lunak
9
10. 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
Kunci perbedaan : sifat dinamis class memungkinkan
instance dibuat sesuai kebutuhan
19
Rekayasa Perangkat Lunak
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
Generic: A Type Parameterizable Class
o Stack mempunyai parameter untuk tipe elemen
o Pembuatan Program Variable mengikat data dan Method stack
ke tipe khusus dari elemen
o Stack(Real), Stack(Int), Stack(Employee)
20
Rekayasa Perangkat Lunak
10
11. Contoh inheritance
Specialisasi Person
Generalisasi
Name, SSN
Print_Info()
Employee::Person Student::Person
Dept, Salary Dorm, GPA
Update_Salary() Print_Transcript
Faculty::Employee Dean::Employee
Rank School
Promote_Fac()
Supertype, Superclass, Parent Class, Base Class
Subtype, Subclass, Child Class, Derived Class
Descendants, Ancestors, Siblings 21
Rekayasa Perangkat Lunak
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
Mengontrol konsistensi informasi
o Public Interface membatasi akses ke data
o Private Implementation tidak tersedia
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
12. 1990- Component-Based D & D
ADT sebagai unit abstraksi/konseptualisasi
Class adalah OO yang ekuivalen dengan ADT
Tetapi, dalam 10 tahun
o Kekuatan komputasi meledak
o Kompleksitas aplikasi meningkat
o Class adalah bagian dari hirarki inheritance
o Hirarki inheritance bagian dari Aplikasi Class Library
Dalam 10 tahun
o Muncul Java (dan sekarang .NET)
o Muncul Java Beans
o Component-Based Development Tools
23
Rekayasa Perangkat Lunak
Apakah komponen itu?
Bagaimana aplikasi dikonsepkan?
o Inheritance Hierarchies Partition Domain
o Package sebagai kumpulan atau class yang berhubungan
o Kumpulan class, Package, hirarki inheritance membentuk
Application Class Library
Bagaimana Class Library dimanfaatkan?
o Menggunakan Class individu
o Menggunakan Package atau subset dari Package
o Menggunakan porsi utama dari hirarki inheritance
o Tool menggunakan beberapa Package dan/atau hirarki terpilih
o Tool yang menjangkau Application Class merupakan software
yang didesain dengan jelek
24
Rekayasa Perangkat Lunak
12
13. 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
14. Komponen vs Object
Komponen Object
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 semua orang o Dimengerti Developer
27
Rekayasa Perangkat Lunak
2000-Web-Based/Distributed Computing
Komputasi/aplikasi terdistribusi adalah …
o Sistem dari sistem
o Interoperasi dari aplikasi baru dan yang sudah ada
o Pewarisan, database, COTS, New Client dll
o Network Centric Environment
o Multi-Tier Solutions
Aplikasi komputasi terdistribusi harus …
o Mengatur, mengontrol, mengakses dan memodifikasi
data
o Memungkinkan manusia berinteraksi dengan data
o Menyediakan High-Availability dan Performansi
o dapat berkembang sepanjang waktu
28
Rekayasa Perangkat Lunak
14
15. Apakah Aplikasi Terdistribusi?
Sistem dari sistem Network Centric Environment
Hardware Performansi High-Availability
OS, PLs yang
heterogen Legacy DB Client
Client Java
Legacy Server Client
Database
Server
COTS Database
COTS
Java Legacy COTS Client
Lingkungan Client
Dinamis Meningkatkan Produktivitas
Interoperasi yg transparan Penggunaan Informasi
baru/inovasi
29
Rekayasa Perangkat Lunak
Realitas Saat ini
Alasan: Artifact - kumpulan
o DB, Legacy, COTS, GOTS, Each Database COTS
w/ API
Alasan: User Legacy Legacy
o Baru dan sudah ada Client
o Memanfaatkan Artifact API Java
Client
Aplikasi Terdistribusi GOTS
o Artifacts + User NETWORK
Isu yang terjadi?
o Bagaimana mereka GOTS
berinteraksi? Client
o Heterogenitas Legacy
Database
o Masalah keamanan
o Model program yang berbeda
Database COTS
o Dll Client Client 30
Rekayasa Perangkat Lunak
15
16. 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
Attribut-Attribut Perangkat Lunak
Perangkat lunak harus:
memberikan fungsionalitas dan kinerja yang dibutuhkan
user,
dapat dipelihara: perangkat lunak dapat diubah sesuai
perubahan kebutuhan user.
Dapat diandalkan: perangkat lunak harus memiliki
keandalan, keamanan dan keselamatan. Perangkat
lunat yang baik tidak menyebabkan kerusakan fisik atau
ekonomi bila terjadi kegagalan sistem
Dapat digunakan: perangkat lunak harus memiliki user
interface yang baik dan dokumentasi yang mencukupi
32
Rekayasa Perangkat Lunak
16
17. Macam-Macam Perangkat Lunak
Perangkat Lunak Berdasarkan Pemakai
o Generik: Perangkat lunak yang bisa digunakan secara
umum
o Spesifik: Perangkat lunak yang dibuat berdasarkan
pesanan
Perangkat Lunak Berdasarkan Fungsional
o Interfacing
o Operating System
o Perangkat Lunak Aplikasi
o CASE Tools
33
Rekayasa Perangkat Lunak
Perangkat Lunak Berdasarkan Pemakai
Generik: Perangkat lunak yang digunakan secara
umum. Sebagai contoh:
o operating system seperti Microsoft Windows,
o Word processing seperti Microsoft Word, WordPad
o Spreadsheet seperti Microsoft Excell
o Beberapa aplikasi khusus bisa dibuat menjadi generik dengan
membuatnya general dan mudah digunakan siapa saja seperti
aplikasi akuntansi, aplikasi sekolah dan lain-lain
Spesifik: Perangkat lunak yang dibuat berdasarkan
pesanan. Banyak Software House yang menghasilkan
perangkat lunak ini berdasarkan proyek/pesanan
tertentu. Sebagai contoh aplikasi Rumah Sakit, aplikasi
Pendidikan, Aplikasi Kesehatan dan lain-lain.
34
Rekayasa Perangkat Lunak
17
18. Perangkat Lunak Berdasarkan
Fungsionalnya
INTERFACING: Perangkat lunak ini
menghubungkan suatu perangkat keras
tertentu, seperti hardware driver,
interfaces dengan perangkat keras lain.
Contoh:
o Driver untuk Kamera, Handphone datau
perangkat keras lainnya
o Program interface seperti sensor suhu dengan
LM555, PPI 8255, Komunikasi Serial RS232.
35
Rekayasa Perangkat Lunak
Perangkat Lunak Berdasarkan
Fungsionalnya
OPERATING SYSTEM: Perangkat lunak yang menjalankan
sistem komputer dan merupakan interface dari sistem
komputer dan program aplikasi yang berjalan di
atasnya.
Beberapa OS yang dikenal secara luas:
o Windows
o Linux dan variansnya, seperti Redhat, Suse, Mandrake, Debian
dll.
o Unix
o FreeBSD
o Machintos (Apple)
36
Rekayasa Perangkat Lunak
18
19. Perangkat Lunak Berdasarkan
Fungsionalnya
PROGRAM APLIKASI, program ini digunakan untuk
keperluan tertentu, yang tujuan membantu pekerjaan
manusia menjadi lebih mudah. Progranm ini yang
banyak dibahas dalam pembuatan perangkat lunak.
Program Aplikasi ini tergantung pada kebutuhan dari
program itu sendiri, seperti
o Program Office
o Program Graphics Design
o Program Multimedia
o Dan Lain-lain
37
Rekayasa Perangkat Lunak
19