PENGENALAN REKAYASA PERANGKAT LUNAK
Teknik Informatika S1 Rekayasa Perangkat Lunak 1
Pengenalan RPL
1. 2. 3. 4. 5. 6. 7.
Kenapa kita mempelajari rekayasa perangkat lunak? Perkembangan Ilmu Rekayasa Perangkat Lunak Pengertian Software/ perangkat lunak Jenis perangkat lunak Peranan perangkat lunak Pengertian Rekayasa Perangkat Lunak Perbedaan software, software engineering, system engineering, dan system computer 8. Tahap-tahap pembangunan perangkat lunak 9. Masalah dan solusi pembangunan perangkat lunak 10. Isu dan tanggung jawab Engineer serta target Profesi yang berkaitan dengan rekayasa perangkat lunak 2
Pengertian Perangkat Lunak (Software)
Pengertian Perangkat Lunak (Software)
?
“Program
Komputer
dokumen
kebutuhan,
dan
dokumentasi
dokumen
(User
perancangan)
4
Jenis Perangkat Lunak (Berdasarkan target Market)
Pengertian Perangkat Lunak (Software) (program
komputer)
yang
berhubungan dengan program tersebut”.
3
(1) Perintah
manual,
yang
bila
dieksekusi
1.
memberikan fungsi dan unjuk kerja seperti yang diinginkan
Generic/ Public Software
2. Custom/ Private Software
(2) Struktur data yang memungkinkan program memanipulasi informasi secara proporsional, dan (3) Dokumen
yang
menggambarkan
operasi
dan
kegunaan
program.
5
6
(Ian Sommerville, Software Engineering 8 Ed., 2006)
1
Jenis Perangkat Lunak
Jenis Perangkat Lunak (Berdasarkan target Market) 1. Generic/ Public Software
2. Custom/ Private Software
Perangkat lunak standar yang diproduksi oleh perusahaan
Perangkat lunak yang dikembangkan khusus dan disesuaikan dengan
pengembang dan dijual pada pasar terbuka ke siapapun yang
kebutuhan pelanggan
bisa membelinya (Shrink-wrapped). • Pengguna khusus • Pengguna umum
• Kebutuhan sempit
• Kebutuhan luas
• Lingkungan pengguna terbatas
• Lingkungan pengguna tidak terbatas Contoh: Software Kasir di Supermarket ABC, Contoh: Microsoft Office, Windows 8, Windows 7
Software penggajian di perusahaan XYZ
7
Jenis Perangkat Lunak (Berdasarkan Platform)
8
Jenis Perangkat Lunak (Berdasarkan Lisensi)
• Software Sistem
1.
Proprietary Software
• Software Real-Time
2.
Open Source Software
• Software Bisnis • Software Teknik dan Ilmu Pengetahuan • Software Tertanam (Embedded Software) • Software Komputer Personal • Software Kecerdasan Buatan • Software Mobile 9
10
(Roger Pressman, Software Engineering,: A Practitioner’s Approach 7Ed., 2009)
Proprietary Software • Software
yang
didistribusikan
source dengan
codenya
suatu
format
Open Source Software
tertutup
dan
• Software yang source codenya terbuka dan didistribusikan
lisensi
yang
dalam suatu format lisensi yang memungkinkan pihak lain secara
membatasi pihak lain untuk menggunakan, memperbanyak
bebas memperbanyak dan memodifikasi source code didalamnya
dan memodifikasi
• Hak cipta tetap ada, tapi lisensi memungkinkan orang lain bebas
• Lisensi proprietary software memungkinkan orang lain
untuk menggunakan dan memodifikasi software tersebut
menggunakan software yang kita buat dengan diikuti
• Jenis lisensi open source software:
penyerahan royalti (uang) ke pemilik hak ciptanya • Shareware dan Freeware adalah proprietary software. Free for use belum tentu free for (redistribute) atau free for modify!
11
• • • • •
GNU General Public License (GPL) Apache License BSD license MIT License Mozilla Public License
12
2
Pengertian Rekayasa Perangkat Lunak
Mengapa Rekayasa Perangkat Lunak • Terminologi
Disiplin ilmu yang membahas semua aspek produksi perangkat
rekayasa
engineering)
lunak, mulai dari tahap awal spesifikasi, desain, konstruksi,
pertama
perangkat kali
lunak
(software
pada
conference
digunakan
tentang software crisis tahun 1968
testing sampai pemeliharaan setelah digunakan.
• Krisis perangkat lunak merupakan akibat langsung dari lahirnya komputer generasi ke 3 yang canggih pada waktu itu • Perangkat lunak yang dihasilkan menjadi menjadi beberapa kali lebih besar dan kompleks • Pendekatan informal tidak cukup efektif (cost, waktu dan 13
kualitas) dalam pengembangan perangkat lunak
14
• Biaya hardware jatuh dan biaya perangkat lunak naik cepat
Perbedaan Software Engineering dan System Engineering
Perbedaan Software Engineering dan Computer Science • Software engineering fokus kepada praktek pembangunan
Software engineering adalah bagian dari proses yang
dan penggunaan perangkat lunak.
berfokus kepada pembangunan infrastruktur perangkat lunak, kontrol, aplikasi, dan database di dalam sistem.
• Computer science fokus kepada teori dan dasar-dasarnya. System
engineering
pembangunan
berbasis
fokus
kepada
komputer
semua
termasuk
aspek
hardware,
software, dan proses rekayasa. 15
Requirements Analysis and Definition System Design Program Design
ANALYST
DESIGNER PROGRAMMER
Program Implementation Unit Testing
5 Masalah Pembangunan Perangkat Lunak DEVELOPER ROLES
SOFTWARE DEVELOPMENT STEPS
Pembangunan Perangkat Lunak
TESTER
Integration Testing System Testing TRAINER System Delivery
16
17
1. Poor Requirements - if requirements are unclear, incomplete, too general, and not testable, there may be problems. 2. Unrealistic Schedule - if too much work is crammed in too little time, problems are inevitable. 3. Inadequate Testing - no one will know whether or not the software is any good until customers complain or systems crash. 4. Featuritis - requests to add on new features after development goals are agreed on. 5. Miscommunication - if developers don't know what's needed or customer's have erroneous expectations, problems can be expected.
18
Maintenance
3
Solusi Masalah Pembangunan Perangkat Lunak
Solusi Masalah Pembangunan Perangkat Lunak
1. Solid Requirements - clear, complete, detailed, cohesive, attainable, testable requirements that are agreed to by all players. 2. Realistic Schedules - allow adequate time for planning, design, testing, bug fixing, re-testing, changes, and documentation; personnel should be able to complete the project without burning out. 3. Adequate Testing - start testing early on, re-test after fixes or changes, plan for adequate time for testing and bugfixing. 4. Stick to Initial Requirements where Feasible - be prepared to defend against excessive changes and additions once development has begun, and be prepared to explain consequences.
5. Communication - require walkthroughs and inspections when
appropriate;
make
extensive
use
of
group
communication tools - groupware, wiki's, bug-tracking tools and change management tools, intranet capabilities, etc.; ensure that information/documentation is available and upto-date - preferably teamwork
and
electronic, not paper; promote
cooperation;
use
prototypes
and/or
continuous communication with end-users if possible to clarify expectations. 19
20
What are the key challenges facing software engineering?
What are the attributes of good software? •
Maintainability (dapat dipelihara) •
• Software bisa menangani perubahan spek kebutuhan •
Heterogeneity
•
Dependability (dapat diandalkan) • Aman, selamat, tidak menyebabkan keruksakan fisik
•
Efficiency (Efisien)
•
•
Delivery
•
• Software mampu mengoptimalkan resource Acceptability (Kemampupakaian)
•
• Software bisa diterima user sebagaimana rancangan. sistem yang lain
21
* Software Engineering 7 th ed, Ian Sommerville
Mengembangkan teknik yang menunjukkan perangkat lunak yang dapat dipercaya oleh para penggunanya.
Issues of professional responsibility
• Software engineering melibatkan tanggung jawab yang lebih
•
dengan
Confidentiality (Kerahasiaan)
•
luas dari sekedar penerapan keterampilan teknis. cara yang
jujur dan etis, bertanggung jawab jika mereka ingin dihormati sebagai profesional.
•
Engineers biasanya harus menghormati kerahasiaan majikan atau klien mereka terlepas dari apakah perjanjian kerahasiaan resmi telah ditandatangani atau tidak.
Competence (Kompetensi)
•
• Perilaku etis lebih dari sekedar penegakan hukum.
Engineers kompetensi menerima kompetensi
harus menggambarkan tingkat mereka. Mereka seharusnya tidak pekerjaan yang diluar dari mereka.
23 * Software Engineering 7 th ed, Ian Sommerville
22
* Software Engineering 7 th ed, Ian Sommerville
Professional and ethical responsibility
• Software engineer harus bertindak
Mengembangkan teknik yang mengarah pada pengiriman lebih cepat dari perangkat lunak;
Trust
•
Mudah dimengerti, digunakan and compatible dengan
Mengembangkan teknik untuk membangun perangkat lunak yang dapat mengatasi platform heterogen dan lingkungan eksekusi;
24 * Software Engineering 7 th ed, Ian Sommerville
4
Target Profesi IEEE CC 2005
Issues of professional responsibility •
1. Computer Engineering (CE) 1. Indonesia: Jurusan Sistem Komputer atau Teknik Komputer 2. Target: Lulusan mampu mendesain dan mengimplementasikan sistem yang terintegrasi baik software maupun hardware 2. Computer Science (CS) 1. Indonesia: Jurusan Ilmu Komputer 2. Target: Lulusan memiliki kemampuan yang cukup luas dimulai dari penguasaan teori (konsep) dan pengembangan software
Intellectual property rights (Hak kekayaan intelektual) •
Engineers harus menyadari hukum lokal yang mengatur penggunaan kekayaan intelektual seperti paten, hak cipta, dll. Mereka harus berhati-hati untuk memastikan bahwa kekayaan intelektual pengusaha dan klien dilindungi.
•
Computer misuse (penyalahgunaan komputer) •
Software
engineers
keterampilan
teknis
tidak mereka
harus untuk
menggunakan
menyalahgunakan
komputer orang lain. Penyalahgunaan komputer berkisar dari yang relatif sepele (bermain game pada mesin client) dan yang sangat serius (penyebaran virus). * Software Engineering
7 th
25
26
ed, Ian Sommerville
Target Profesi IEEE CC 2005
Target Profesi IEEE CC 2005
3. Information System (IS) 1. Indonesia: Jurusan Sistem Informasi 2. Target: Lulusan mampu menganalisa kebutuhan (requirement) dan proses bisnis (business process), serta mendesain sistem berdasarkan tujuan dari organisasi 4. Information Technology (IT) 1. Indonesia: Tidak ada (masuk ke jurusan teknik informatika) 2. Target: Lulusan mampu merencanakan, mengimplementasikan, mengkonfigurasi dan memaintain infrastruktur teknologi informasi dalam organisasi
5. Software Engineering (SE)
1. Indonesia: Tidak ada (masuk ke Jurusan Teknik Informatika) 2. Lulusan mampu mengelola aktifitas pengembangan software berskala besar dalam tiap tahapannya (software development life cycle)
27
28
TUGAS BESAR 1. 2. 3.
1. 2. 3. 4.
TERIMA KASIH
5. 6.
29
Bentuk kelompok dengan 5 orang ( 1 ketua, 4 anggota) Cari 1 topik yang berbeda antara 1 kelompok dengan kelompok lainnya ( jika ada 2 kelompok yang sama temanya, maka nilai di bagi 2) Jika ditemukan ada indikasi plagiarisme program maupun laporan maka nilai MK ini E Deskripsi Tugas Besar Merancang software sederhana dengan default software(tambah, edit, hapus data). Contoh: Program penggajian, program perpustakaan, program rental, dll. Aplikasi berbasis dekstop atau mobile (Aplikasi web tidak diperbolehkan) Menggunakan bahasa pemrograman VB, Java, Delphi, …. Laporan dan presentasi setelah UTS, tapi boleh dicicil dan didiskusikan dari sekarang Membuat laporan mulai dari analisis, design, proses coding, dan proses testing ( template SKPL dan DPPL) Presentasi (Demo Program)
30
5