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 Desain dan Spesifikasi

Apa kekurangan dari sistem ini?

Coding dan Testing Modul

50 %

Integrasi dan System Testing

Delivery dan Maintenance


Rekayasa Perangkat Lunak

50 %
10

Software Lifecycle dari Model Waterfall


Analisa dan spesifikasi kebutuhan
o o o o o 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 Bagaimana permasalahan dipecahkan Desain High-Level Menentukan komponen/modul Transisi ke desain secara detil Fungsional detil dari komponen/modul
11 Rekayasa Perangkat Lunak

Desain dan spesifikasi

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 User PUSH POP TOP EMPTY Private Implementation
Head: Int; ST: Array[100] of Int; Push(X Int) End; Int Pop() End;

Designer

PUSH 5 10 15 20 20 15 5 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); } 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(); }

Apa Output dari Main()? Steve 100.0 Lois 130.0

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
Specialisasi Person Name, SSN Print_Info() Generalisasi

Employee::Person Dept, Salary Update_Salary()

Student::Person Dorm, GPA Print_Transcript

Faculty::Employee Rank Promote_Fac()

Dean::Employee School

Supertype, Superclass, Parent Class, Base Class Subtype, Subclass, Child Class, Derived Class Descendants, Ancestors, Siblings
Rekayasa Perangkat Lunak

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

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
Komponen
o Berorientasi bisnis o Bentuk kasar o Berbasis standard o Multiple Interfaces o Menyediakan servis o Dibungkus penuh o Dimengerti semua orang

Object
o Berorientasi teknologi o Bentuk halus o Berbasis bahasa o Single Interface o Menyediakan operasi o Menggunakan inheritance 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 High-Availability Performansi
Legacy Client DB Client Legacy Database COTS Java Client Server Legacy COTS Server Database COTS Client Java Client

Lingkungan 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 w/ API
Database Legacy Java Client NETWORK COTS Legacy Client GOTS

Alasan: User
o Baru dan sudah ada o Memanfaatkan Artifact API

Aplikasi Terdistribusi
o Artifacts + User

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