26/09/2013
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
26/09/2013
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
2
26/09/2013
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
3
26/09/2013
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
26/09/2013
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 persyaratan 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 persyaratan
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
5
26/09/2013
Software Lifecycle dari Model Waterfall Analisa dan spesifikasi persyaratan o o o o o
Permasalahan apa yang dipecahkan? Apa yang dibutuhkan/diinginkan Pelanggan? Interaksi antara SE dan Pelanggan? Identifikasi dan dokumentasi persyaratan 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
6
26/09/2013
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
26/09/2013
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
5
TOP
20
15
10
5
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
26/09/2013
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
9
26/09/2013
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 persyaratan 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
26/09/2013
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
26/09/2013
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
26/09/2013
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
26/09/2013
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
26/09/2013
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
GOTS NETWORK
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
26/09/2013
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 persyaratan 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
26/09/2013
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
26/09/2013
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
26/09/2013
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