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
o Customized New Software o Client vs. Server Software o Database Management Systems/Applications
3 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
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
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
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
50 %
50 %
10
ADT berhubungan dengan User-Defined Data Types Analogi dengan Integer Data Type dan +, -, *, dll
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
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
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
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
10
Contoh inheritance
Specialisasi Person Name, SSN Print_Info() Generalisasi
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
11
Dalam 10 tahun
o Muncul Java (dan sekarang .NET) o Muncul Java Beans o Component-Based Development Tools
23 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)
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
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
14
Lingkungan Dinamis
Alasan: User
o Baru dan sudah ada o Memanfaatkan Artifact API
Aplikasi Terdistribusi
o Artifacts + User
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.
16
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.
17
18
19