REKAYASA PERANGKAT LUNAK Defri Kurniawan defri.kurniawan@dsn.ac.id
RENCANA KEGIATAN PERKULIAHAN SEMESTER W Pokok Bahasan 1 Pengenalan Teknologi Informasi 2 Konsep Sistem Komputer & Pengenalan Perangkat Keras 3 4 Data Storage 5 Perangkat Lunak 6 7 Data dan Informasi 8 Ujian Tengah Semester W Pokok Bahasan 9 Komputasi Pemrograman 10 11 Rekayasa Perangkat Lunak 12 13 Komunikasi data & Jaringan Komputer 14 Etika dan dampak sosial teknologi informasi 15 Teknologi Terkini / Advance Topik 16 Ujian Akhir Semester
Reference Bruce K William, Stacey C. Sawyer – Using Information Technology : A Practical Introduction to Computers & Communications 9th Edition (2010) J. Glenn Brookshear – Computer Science : An Overview 11th Edition (2011)
Content The Software Engineering Discipline The Software Life Cycle Software Engineering Methodologies Tools Quality Assurance
The Software Engineering Discipline
The Software Engineering Discipline Rekayasa Perangkat Lunak (RPL) = software engineering (SE) Rekayasa Perangkat Lunak merupakan Disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi, desain, konstruksi, testing sampai pemeliharaan setelah digunakan
The Software Engineering Discipline Software engineering adalah cabang computer science dengan prinsip pengembangan system software yang besar dan kompleks Pengembangan sistem membutuhkan upaya banyak orang Software engineering terdiri dari personel dan project management yang berkaitan dengan business management
The Software Engineering Discipline Problem selama pengembangan sistem : How can you estimate the cost in time, money and other resource to complete the project ? How can you divide the project into manageable pieces ? How can you ensure that the pieces produced are compatible ? How can those working on the various pieces communicate? How can you measure progress?
The Software Engineering Discipline Penelitian dalam software engineering saat ini terdiri dari dua level : practitioners dan theoreticians Practitioners bekerja ke arah pengembangan teknik untuk aplikasi Theoreticians bekerja berdasarkan prinsip dan teori dimana teknik lebih stabil dapat dibangun nantinya
Perjalanan Software Engineering Peter J Dennings yang memimpin satuan tugas disiplin ilmu computing memasukkan software engineering sebagai satu disiplin ilmu (Dennings, 1999) IEEE Computer Society membentuk tim khusus untuk menyusun pohon ilmu Software Engineering (Software Engineering Body of Knowledge, SWEBOK) http://swebok.org Software Engineering termasuk nama jurusan atau fakultas yang diakui menurut IEEE Computing Curricula 2005
Matriks Dennings 1999 Algoritma dan Struktur Data Bahasa Pemrograman Arsitektur Komputer Sistem Operasi dan Jaringan Software Engineering Database dan Sistim Retrieval Informasi Artificial Intelligence dan Robotik Grafik Human Computer Interaction Ilmu Komputasi Organizational Informatics BioInformatik
SWEBOK 2004
IEEE Computing Curricula 2005 Computer Engineering (CE, Teknik Komputer) Computer Science (CS, Ilmu Komputer) Information Systems (IS, Sistem Informasi) Information Technology (IT, Teknologi Informasi) Software Engineering (SE, Rekayasa Perangkat Lunak)
The Software Life Cycle Software Engineering
The Software Life Cycle Konsep dalam software engineering adalah software life cycle Software life cycle menggambarkan bahwa dalam pengembangan software masuk ke dalam sebuah cycle yang digunakan (development, use, maintenance)
The Software Life Cycle Perangkat lunak memiliki siklus hidup yang dikenal dengan siklus hidup perangkat lunak (Software Life Cycle) Siklus hidup perangkat lunak (Software Life Cycle) adalah urutan dari kegiatan yang ada di dalam sebuah pengembangan perangkat lunak (Gustafson, 2002)
Software Development Process Software Development Process, juga dikenal sebagai Software Development Life-Cycle / siklus hidup pengembangan perangkat lunak, adalah struktur yang dikenakan pada pengembangan produk perangkat lunak. Software Life Cycle dan Software Process merupakan bagian dari siklus hidup pengembangan sistem (System Development Life Cycle)
System Development Life Cycle (SDLC) System Development life cycle (SDLC) / Siklus Hidup Pengembangan Sistem adalah proses memahami bagaimana sistem informasi (IS) dapat mendukung kebutuhan bisnis, perancangan sistem, membangunnya dan memberikannya kepada pengguna (Dennis, 2005).
Kelebihan dan Kekurangan SDLC Penerapan SDLC memiliki kekurangan dan kelebihan. Kelebihan dari SDLC adalah menyediakan tahapan yang dapat digunakan sebagai pedoman pengembangan sistem, sedangkan Kekurangannya: hasil dari SDLC tergantung pada hasil analisis, sehingga jika terdapat kesalahan di tahap analisis akan terbawa terus ke hasil sistem
The Traditional Development Phase
The Traditional Development Phase Tahap Requirement Analysis : Menganalisa kebutuhan user Negoisasi dengan stakeholder mengenai kebutuhan, harga dan kemungkinan yang terjadi pada sistem Membangun seperangkat kebutuhan untuk identifikasi apa saja fitur yang ada dalam sistem software
The Traditional Development Phase Tujuan Requirement Analysis : Menentukan apa saja kebutuhan sistem yang diusulkan Identifikasi kebutuhan sistem yang diusulkan Mendefinisikan bagaimana user berinteraksi dengan sistem
The Traditional Development Phase Tahap Design : Membuat rancangan untuk system yang diusulkan Fokus pada pengembangan solusi Fokus pada “Bagaimana sistem akan melakukannya” ? Hasil dari design adalah tahapan struktur sistem secara detail yang akan dikonversikan ke program Diagram dan pemodelan penting dalam tahapan desain
The Traditional Development Phase Tahap Implementasi : Implementasi melibatkan penulisan program, pembuatan file, dan database Programmer memiliki beban pada penulisan program dimana sebelumnya telah didesain oleh software analyst Programmer menerjemahkan hasil dari design menjadi suatu program (aplikasi)
The Traditional Development Phase Tahap Testing : Proses debug program dan konfirmasi apakah software sesuai dengan spesifikasi kebutuhan software Testing digunakan untuk mengetahui kualitas dari software Beberapa kesalahan mungkin tidak terdeteksi pada saat tahap implementasi
Software Engineering Methodologies
Software Engineering Methodologies Waterfall Model Prototyping RAD Extreme Programming (XP)
Waterfall Mengidentifikasi kebutuhan jauh sebelum pemrograman dimulai Meminimalkan perubahan kebutuhan selama project
Waterfall Tahap Planning : Tahap Analysis Tahap Design Dalam form permintaan sistem, menjelaskan ringkasan dari kebutuhan bisnis Analisa kemungkinan aspek dari project yang diusulkan Bagaimana tim project berjalan selama pengembangan sistem Tahap Analysis Tahap Design Tahap Implementation
Parrarel Development Mengatasi masalah penundaan yang lama antara tahap analisis dan pengiriman sistem. Membagi proyek menjadi serangkaian sub proyek yang berbeda yang dapat dirancang dan implementasi secara paralel
RAD (Rapid Application Development) Pemahaman yang lebih baik terhadap sistem dan revisi langsung dengan membawa sistem lebih cepat apa yang diinginkan user Problem dari RAD adalah mengelola keinginan pengguna terhadap kemungkinan perubahan yang terjadi Phased development (a series of versions) Prototyping (system prototyping) Throw-away prototyping (design prototyping)
Prototyping Sangat cepat untuk mendefinisikan kebutuhan Sangat cepat menyediakan sistem User dapat langsung berinteraksi dengan prototype untuk mengetahui apa yang dapat dan tidak dilakukan oleh sistem
Throw-away Prototyping Masalah yang muncul diujicobakan/diselesaikan dengan menganalisa, mendesign, & membangun sebuah prototype (yang dinamakan design prototype) Membangun fitur yang belum dipahami dengan jelas Membuat design prototype untuk memahami kebutuhan
Phased Development Mendapatkan sistem yang berguna untuk pengguna dengan cepat Sistem awal sengaja tidak lengkap System requirements berkembang tergantung pandangan dari versi user
Extreme Programming (XP) XP terdiri dari empat nilai inti : komunikasi, kesederhanaan, umpan balik, dan keberanian Pengembang harus menyediakan umpan balik secara cepat Pengembang harus membuat perubahan tambahan untuk perkembangan sistem
Criteria for Selecting a Methodology
Tools Software Engineering
Tools Tool digunakan untuk membuat pemodelan selama tahapan analisis dan desain Pemodelan bertujuan untuk menggambarkan bagaimana data berpindah melalui sistem, meningkatkan komunikasi antara stakeholder dan software engineer Contoh : Data Flow Diagram (DFD), UML
Data Flow Diagram (DFD) Data flow diagram menggambarkan informasi yang diperoleh dari data flow (aliran data) Memudahkan untuk memahami sistem yang diusulkan selama tahap analisis Identifikasi prosedur selama tahap desain
UML (Unified Modeling Language) Sebuah tool yang dikembangkan dengan paradigma Object – Oriented Contoh : Use Case Diagram, Class Diagram Sama seperti DFD, use case menggambarkan interaksi antara user dan sistem Class diagram menggambarkan struktur kelas dan hubungan antar kelas
Use Case Diagram
Class Diagram Person Car 1 own 1..*
Tools (Software) Pada fase analisis dan design, kita bisa menggunakan program-program di bawah ini: Rational Rose Enterprise Architect Microsoft Visio Star UML dsb
Quality Assurance Software Engineering
Software Quality Software Quality berkesesuaian dengan: Persyaratan fungsional dan kinerja dinyatakan dengan jelas Standar dokumen pengembangan jelas Karakteristik implisit yg diharapkan dari semua perangkat lunak dikembangkan secara profesional
Software Quality Assurance Software Quality Assurance (SQA) adalah aktivitas yang digunakan untuk menjamin bahwa proses-proses pengembangan software dilakukan dengan benar. Adanya aktivitas SQA ini diharapkan kebutuhan dan target software yang dikembangkan dapat tercapai.
Software Quality Attributes (1) Correctness Sebuah sistem adalah benar jika berperilaku sesuai dengan spesifikasinya Reliability Keandalan adalah probabilitas bahwa sistem akan beroperasi seperti yang diharapkan selama interval tertentu Robustness Sebuah sistem yang kuat jika berperilaku cukup bahkan dalam keadaan yang tidak ditentukan
Software Quality Attributes (2) Efficiency (Performance) Memperhatikan penggunaan sumber daya seperti waktu komputasi, memori Usability (User Friendliness, Human Factors) Sejauh mana para pengguna (manusia) menemukan sistem dengan "mudah digunakan" dan berguna Maintainability Bagaimana mudahnya untuk mengubah/melakukan perubahan sistem setelah rilis awal
Software Quality Attributes (3) Repairability Berapa banyak pekerjaan yang diperlukan untuk memperbaiki cacat Evolvability (Adaptability) Berapa banyak pekerjaan yang diperlukan untuk beradaptasi dengan perubahan kebutuhan (baik sistem dan proses) Portability Berapa banyak pekerjaan yang diperlukan untuk port ke lingkungan atau platform baru
Software Quality Attributes (4) Verifiability Bagaimana mudahnya untuk memverifikasi apakah atribut yang diinginkan ada Understandability Bagaimana mudahnya untuk memahami sistem Productivity Jumlah produk yang dihasilkan oleh suatu proses untuk sejumlah resource tertentu Visibility (Transparency) Langkah-langkah proses saat ini dan status proyek dapat diakses