Anda di halaman 1dari 19

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

Apakah Perangkat Lunak itu?


Perangkat lunak adalah definisi dan organisasi
dari sekumpulan task dan fungsi yang
dienkapsulasi dalam bentuk yang dapat dieksekusi 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
o
o
o

Individu menulis keseluruhan program


Satu orang, satu komputer
Well-defined Problem
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

Apakah Rekayasa Perangkat Lunak itu?


Aplikasi dari merekayasa perangkat lunak
Wilayah Computer Science Engineering yang
berhubungan dengan Sistem Perangkat Lunak
o
o
o
o
o

Besar dan kompleks


Dibangun oleh tim
Terdapat beberapa versi
Berakhir beberapa tahun
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
o
o
o

Membangun aplikasi perangkat lunak besar


Mendefinisikan permasalahan dengan jelas dan komplit
Perangkat dan teknik untuk mendukung proses
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

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

Programmer vs RPL
Individu dengan skill yang baik
Pemrograman kecil
Pengetahuan dalam
o Struktur data
o Algoritma

Bagian dari tim


Pemrograman skala besar
Pendekatan desain
o OO, modul dll
o Top-Down/Bottom-Um

Menguasai beberapa bahasa


pemrograman
Ketiadaan training formal
Penggunaan CS minimal

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

Rekayasa Perangkat Lunak

Model Proses Waterfall


Analisa dan
Spesifikasi
Kebutuhan

Apa kekurangan dari sistem ini?


Desain dan
Spesifikasi

Coding dan
Testing Modul

50 %

Integrasi dan
System Testing

Delivery dan
Maintenance

50 %
10

Rekayasa Perangkat Lunak

Software Lifecycle dari Model Waterfall


Analisa dan spesifikasi kebutuhan
o
o
o
o
o

Permasalahan apa yang dipecahkan?


Apa yang dibutuhkan/diinginkan Pelanggan?
Interaksi antara SE dan Pelanggan?
Identifikasi dan dokumentasi kebutuhan sistem
Membangkitkan user manual dan test plan

Desain dan spesifikasi


o
o
o
o
o

Bagaimana permasalahan dipecahkan


Desain High-Level
Menentukan komponen/modul
Transisi ke desain secara detil
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

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

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

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

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
{
//Hidden Implementation
Private: //Instance Vars
char[30] name;
float
salary;
//Public Interface
Public:
void print_name();
void print_salary();
void update_salary(float i);
Employee(char *n, float s);
}

Apa Output dari Main()?


Steve
100.0
Lois
130.0

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

Rekayasa Perangkat Lunak

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

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

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

1990- Component-Based D & D


ADT sebagai unit abstraksi/konseptualisasi
Class adalah OO yang ekuivalen dengan ADT
Tetapi, dalam 10 tahun
o
o
o
o

Kekuatan komputasi meledak


Kompleksitas aplikasi meningkat
Class adalah bagian dari hirarki inheritance
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
o
o
o
o

Menggunakan Class individu


Menggunakan Package atau subset dari Package
Menggunakan porsi utama dari hirarki inheritance
Tool menggunakan beberapa Package dan/atau hirarki terpilih
Tool yang menjangkau Application Class merupakan software
yang didesain dengan jelek

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 semua orang

o Dimengerti Developer

27
Rekayasa Perangkat Lunak

2000-Web-Based/Distributed Computing
Komputasi/aplikasi terdistribusi adalah
o
o
o
o
o

Sistem dari sistem


Interoperasi dari aplikasi baru dan yang sudah ada
Pewarisan, database, COTS, New Client dll
Network Centric Environment
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

Apakah Aplikasi Terdistribusi?


Sistem dari sistem
Hardware
OS, PLs yang
heterogen

Network Centric Environment

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

Realitas Saat ini


Alasan: Artifact - kumpulan
o DB, Legacy, COTS, GOTS, Each
w/ API

Database

Alasan: User

COTS
Legacy

o Baru dan sudah ada


o Memanfaatkan Artifact API

Aplikasi Terdistribusi

Legacy
Client

Java
Client

o Artifacts + User

GOTS
NETWORK

Isu yang terjadi?


o Bagaimana mereka
berinteraksi?
o Heterogenitas
o Masalah keamanan
o Model program yang berbeda
o Dll

GOTS
Client
Legacy
Database
Database
Client

COTS
Client

30

Rekayasa Perangkat Lunak

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

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

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
o
o
o

Interfacing
Operating System
Perangkat Lunak Aplikasi
CASE Tools

33
Rekayasa Perangkat Lunak

Perangkat Lunak Berdasarkan Pemakai


Generik: Perangkat lunak yang digunakan secara
umum. Sebagai contoh:
o
o
o
o

operating system seperti Microsoft Windows,


Word processing seperti Microsoft Word, WordPad
Spreadsheet seperti Microsoft Excell
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

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

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
o
o
o

Program Office
Program Graphics Design
Program Multimedia
Dan Lain-lain

37
Rekayasa Perangkat Lunak

19

Anda mungkin juga menyukai