Teknik Informatika S1
Pengenalan RPL
Rekayasa Perangkat Lunak
1
PENGENALAN REKAYASA PERANGKAT LUNAK
1. Kenapa kita mempelajari rekayasa perangkat lunak?2. Perkembangan Ilmu Rekayasa Perangkat Lunak
3. Pengertian Software/ perangkat lunak
4. Jenis perangkat lunak
5. Peranan perangkat lunak
6. Pengertian Rekayasa Perangkat Lunak
7. 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)
?
3
Pengertian Perangkat Lunak (Software)
“Program Komputer dan dokumentasi (User manual, dokumen kebutuhan, dokumen perancangan) yang berhubungan dengan program tersebut”.
4
Pengertian Perangkat Lunak (Software)
(1)Perintah (program komputer) yang bila dieksekusimemberikan fungsi dan unjuk kerja seperti yang diinginkan
(2)Struktur data yang memungkinkan program memanipulasi informasi secara proporsional, dan
(3)Dokumen yang menggambarkan operasi dan kegunaan program.
5
Jenis Perangkat Lunak
(Berdasarkan target Market)
1. Generic/ Public Software2. Custom/ Private Software
(Ian Sommerville, Software Engineering 8 Ed., 2006)
Jenis Perangkat Lunak (Berdasarkan target Market)
1. Generic/ Public Software
Perangkat lunak standar yang diproduksi oleh perusahaan pengembang dan dijual pada pasar terbuka ke siapapun yang bisa membelinya (Shrink-wrapped).
• Pengguna umum • Kebutuhan luas
• Lingkungan pengguna tidak terbatas
Contoh: Microsoft Office, Windows 8, Windows 7 7
Jenis Perangkat Lunak
2. Custom/ Private SoftwarePerangkat lunak yang dikembangkan khusus dan disesuaikan dengan kebutuhan pelanggan
• Pengguna khusus • Kebutuhan sempit
• Lingkungan pengguna terbatas
Contoh: Software Kasir di Supermarket ABC,
Software penggajian di perusahaan XYZ 8
Jenis Perangkat Lunak (Berdasarkan Platform)
•Software Sistem•Software Real-Time
•Software Bisnis
•Software Teknik dan Ilmu Pengetahuan
•Software Tertanam (Embedded Software)
•Software Komputer Personal
•Software Kecerdasan Buatan
•Software Mobile
(Roger Pressman, Software Engineering,: A Practitioner’s Approach 7Ed., 2009)
9
Jenis Perangkat Lunak (Berdasarkan Lisensi)
1. ProprietarySoftware2. Open Source Software
10
Proprietary Software
•Software yang source codenya tertutup dan didistribusikan dengan suatu format lisensi yang
membatasi pihak lain untuk menggunakan, memperbanyak dan memodifikasi
•Lisensi proprietary software memungkinkan orang lain menggunakan software yang kita buat dengan diikuti
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
Open Source Software
•Software yang source codenya terbuka dan didistribusikan dalam suatu format lisensi yang memungkinkan pihak lain secara
bebas memperbanyak dan memodifikasi source code didalamnya
•Hak cipta tetap ada, tapi lisensi memungkinkan orang lain bebas
untuk menggunakan dan memodifikasi software tersebut
•Jenis lisensi open source software: •GNU General Public License (GPL) •Apache License
•BSD license •MIT License
Pengertian Rekayasa Perangkat Lunak
Disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi, desain, konstruksi, testing sampai pemeliharaan setelah digunakan.
13
Mengapa Rekayasa Perangkat Lunak
•Terminologi rekayasa perangkat lunak (software engineering) pertama kali digunakan pada conference tentang software crisis tahun 1968
•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 kualitas) dalam pengembangan perangkat lunak
•Biaya hardware jatuh dan biaya perangkat lunak naik cepat 14
Perbedaan Software Engineering dan
Computer Science
•Software engineering fokus kepada praktek pembangunan dan penggunaan perangkat lunak.
•Computer science fokus kepada teori dan dasar-dasarnya.
15
Perbedaan Software Engineering dan
System Engineering
Software engineering adalah bagian dari proses yang berfokus kepada pembangunan infrastruktur perangkat lunak, kontrol, aplikasi, dan database di dalam sistem.
System engineering fokus kepada semua aspek pembangunan berbasis komputer termasuk hardware, software, dan proses rekayasa.
16
Pembangunan Perangkat Lunak
Maintenance System Design Requirements Analysis and Definition Program Design Program Implementation Unit Testing Integration Testing System Testing System Delivery S OF T W A RE DE V E L OP M E NT S T E P S DE V E L OP E R ROL E S ANALYST DESIGNER PROGRAMMER TESTER TRAINER 17
5 Masalah Pembangunan Perangkat Lunak
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
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 bug-fixing.
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.
19
Solusi Masalah Pembangunan Perangkat Lunak
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 up-to-date - preferably electronic, not paper; promote teamwork and cooperation; use prototypes and/or continuous communication with end-users if possible to clarify expectations.20
What are the attributes of good software?
• Maintainability (dapat dipelihara)•Software bisa menangani perubahan spek kebutuhan
• Dependability (dapat diandalkan)
•Aman, selamat, tidak menyebabkan keruksakan fisik
• Efficiency (Efisien)
•Software mampu mengoptimalkan resource
• Acceptability (Kemampupakaian)
•Software bisa diterima user sebagaimana rancangan. Mudah dimengerti, digunakan and compatible dengan sistem yang lain
* Software Engineering 7th ed, Ian Sommerville
21
What are the key challenges facing software
engineering?
• Heterogeneity
• Mengembangkan teknik untuk membangun
perangkat lunak yang dapat mengatasi platform heterogen dan lingkungan eksekusi;
• Delivery
• Mengembangkan teknik yang mengarah pada
pengiriman lebih cepat dari perangkat lunak; • Trust
• Mengembangkan teknik yang menunjukkan
perangkat lunak yang dapat dipercaya oleh para penggunanya.
* Software Engineering 7th ed, Ian Sommerville
22
Professional and ethical responsibility
• Software engineering melibatkan tanggung jawab yang lebihluas dari sekedar penerapan keterampilan teknis.
• Software engineer harus bertindak dengan cara yang jujur dan etis, bertanggung jawab jika mereka ingin dihormati sebagai profesional.
• Perilaku etis lebih dari sekedar penegakan hukum.
* Software Engineering 7th ed, Ian Sommerville
23
Issues of professional responsibility
• Confidentiality (Kerahasiaan)• Engineers biasanya harus menghormati
kerahasiaan majikan atau klien mereka terlepas dari apakah perjanjian kerahasiaan resmi telah ditandatangani atau tidak.
• Competence (Kompetensi)
• Engineers harus menggambarkan tingkat
kompetensi mereka. Mereka seharusnya tidak
menerima pekerjaan yang diluar dari
kompetensi mereka.
* Software Engineering 7th ed, Ian Sommerville
Issues of professional responsibility
• 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 tidak harus menggunakan keterampilan teknis mereka untuk menyalahgunakan komputer orang lain. Penyalahgunaan komputer berkisar dari yang relatif sepele (bermain game pada mesin client) dan yang sangat serius (penyebaran virus).
* Software Engineering 7th ed, Ian Sommerville
25
Target Profesi IEEE CC 2005
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
26
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
27
Target Profesi IEEE CC 2005
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)
28
TERIMA KASIH
29
TUGAS BESAR
1. Bentuk kelompok dengan 5 orang ( 1 ketua, 4 anggota)
2. Cari 1 topik yang berbeda antara 1 kelompok dengan kelompok lainnya ( jika ada 2 kelompok yang sama temanya, maka nilai di bagi 2)
3. Jika ditemukan ada indikasi plagiarisme program maupun laporan maka nilai MK ini E
Deskripsi Tugas Besar
1. Merancang software sederhana dengan default software(tambah, edit, hapus data). Contoh: Program penggajian, program perpustakaan, program rental, dll.
2. Aplikasi berbasis dekstop atau mobile (Aplikasi web tidak diperbolehkan)
3. Menggunakan bahasa pemrograman VB, Java, Delphi, ….
4. Laporan dan presentasi setelah UTS, tapi boleh dicicil dan didiskusikan dari sekarang
5. Membuat laporan mulai dari analisis, design, proses coding, dan proses testing ( template SKPL dan DPPL)
6. Presentasi (Demo Program)