REKAYASA PERANGKAT LUNAK Dosen : Rinci Kembang Hapsari, S.Si, M.Kom Penilaian Kelas A : Tugas 1 : 40% (dikumpulkan mg ke 5) Quiz 1 : 30% UTS : 30% ------------------------------------- Tugas 2: 40% Quiz : 30% UAS : 30% Penilaian Kelas B : Tugas 1 : 50% (dikumpulkan mg ke 5) Quiz 1 : 20% UTS : 30% ------------------------------------ Tugas 2: 50% Quiz 2: 20% UAS : 30% Introduction to Software Engineering Evolusi Software Tentang Software Karakteristik software Komponen Software Aplikasi Software Sejarah Software Mengapa Software Engineering? Apa yang dimaksud Software Engineering? Siapa yang melakukan Softwrae Engineering? Definisi Software (PL) PL adalah sekelompok item atau objek yang membentuk “konfigurasi” dimana di dalamnya termasuk : • instruksi/program • dokumen • struktur data ... PL adalah Program-program komputer beserta dokumentasinya, seperti requirement, model desain dan user manual. Instruksi atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan. Struktur Data yang memungkinkan program memanipulasi informasi Dokumen yang menggambarkan operasi dan penggunaan program Evolution of Software (1) Kelompok pertama, tahun 1950an, ciri-ciri : Orientasi ke batch processing, proses bertumpuk dimana pemrosesan dilakukan jika sejumlah data telah dikumpulkan dalam waktu yang telah ditentukan Limited distributed, pemrosesan data kebanyakan masih dilakukan secara terpusat. Custom software, perangkat lunak yang dibuat untuk dikembangkan dan dijual kepada satu USER atau lebih Evolution of Software (2) Kelompok kedua, tahun 1960an, ciri-ciri : Multi user, Real Time Suatu sistem yang dapat mengumpulkan, menganalisa dan mentransformasikan data dari berbagai sumber, mengontrol proses dan menghasilkan output dalam mili second. Database Suatu sistem di mana satu program digunakan oleh beberapa user pada saat yang sama Perkembangan yang pesat dari alat penyimpan data yang OnLine menyebabkan muncul generasi pertama DBMS (DataBase Management System). Product software Adalah software yang dikembangkan untuk dijual kepada masyarakat luas. Evolution of Software (3) Kelompok ketiga, tahun 1980an, ciri-ciri : Distributed system, komputer yang digunakan dalam memproses data banyak dan mempunyai fungsi masing-masing dan dapat saling berkomunikasi Biaya hardware murah dengan ditandai perkembangan komputer micro Kelompok ke 4, tahun 1990an, ciri-ciri: Sistem pakar (Expert system) Mesin Kecerdasan Buatan (Artificial Intellegence Machine) Komputer paralel Karakteristik Software Software adalah komponen sistem yang logic (bukan fisik seperti elemen bangunan atau komputer) Software dikembangkan bukan dibuat oleh pabrik tertentu dan tidak masal karena memerlukan perancangan yang baik Software tidak akan pernah usang karena selalu diperbaharui Kebanyakan software dibangun berdasarkan kebutuhan. Produk Software Produk software dibuat untuk pelanggan tertentu ataupun untuk pasar umum Produk software ada dua jenis : Generik – dibuat untuk dijual ke suatu kumpulan pengguna yang berbeda atau pasar umum. Bespoke (custom) – dibuat untuk suatu pengguna tunggal sesuai dengan spesifikasi yang diinginkan pengguna. Aplikasi Software (1) System Software Real-time Software Kumpulan dari beberapa progran yang dibuat untuk memberikan service terhadap program lainnya pada setiap level Kumpulan program yang ditulis untuk menunjang pemakai atau pembuatan suatu program Contohnya : compiler, operating system Program yang dapat digunakan untuk mengukur, menganalisa, mengontrol pemasukan data dari lingkungan luar sampai menghasilkan laporan yang sesuai dengan keinginan. Business Software Program yang dapat mengakses, menganalisa dan memproses informasi bisnis. Aplikasi Software (2) Engineering and Scientific Software Software yang menggunakan algoritma “number crunching” untuk membedakan science dan aplikasi Sistem simulasi, computer –aided design Embedded Software Software terletak pada read only memory dan digunakan untuk mengontrol produk dan sistem yang akan dikirimkan untuk konsumen dan industrial markets Software yang digunakan untuk mengontrol proses pabrik dan disimpan dalam ROM komputer Aplikasi Software (3) Personal Software yang digunakan dalam aplikasi komputer mikro Artificial Computer Software Intellegence Software Software yang digunakan dalam bidang kecerdasan buatan dan metodenya digunakan untuk memecahkan masalah yang kompleks Contohnya : expert system, pengenalan pola, games Aplikasi Software (4) Internet Software Program yang mensupport pengaksesan internet Contohnya : search engine, browser, ecommerce software, dll Software Tools and CASE environment Tools dan program yang dapat membantu pembuatan aplikasi software dan sistem. Contohnya : tset tools dan version control tools. Mengapa perlu SE? (1) Untuk mendapatkan s/w yang benar dan untuk membuat s/w menjadi benar s/w adalah sesuatu yang kompleks dalam hal : Domain Problem : Bussiness Rule Data size : Digital or not digita; Solution : Algorithm Place or sites Mengapa perlu SE? (2) S/w harus benar (correct) Berdasarkan Business Rule Sejalan dengan segala sesuatu dan semua pihak yang terkait Pembuatan s/w harus dikelola dengan baik untuk menjamin kebenarannya (correctness) Apa itu Software Engineering (SE) Adalah teknologi yang harus digunakan oleh setiap orang yang akan membangun software, dengan melalui serangkaian proses menggunakan sekumpulan metode dan alat bantu (Tools). <Pressman 1997> Arti Software Engineering : Ilmu yang mempelajari teknik pembuatan software yang baik dengan pendekatan teknis (Engineering approach) Suatu disiplin rekayasa yang berkonsentrasi terhadap seluruh aspek produksi perangkat lunak. Mengadopsi pendekatan yang sistematis dan terorganisir dalam aktivitasnya dan menggunakan tool dan teknik yang sesuai yang ditentukan berdasarkan masalah yang akan dipecahkan, kendala pengembangan dan sumber daya yang tersedia Krisis Software Adalah sekumpulan masalah yang ditemukan dalam pengembangan software computer. Masalahnya tidak hanya terbatas pada software yang tidak berfungsi sebagaimana mestinya, tetapi krisis software ini terdiri dari masalah yang berhubungan dengan : Bagaimana mengembangkan software Bagaimana memelihara software yang ada, yang berkembang dalam jumlah besar Bagaimana mengimbangi permintaan software yang makin besar. Masalah Software Estimasi jadwal dan biaya yang seringkali tidak tepat Produktivitas orang-orang software(programmer) yang tidak dapat mengimbangi permintaan kebutuhan software Kualitas software yang kurang baik. Penyebab Masalah Software Karakteristik software itu sendiri Karakteristik software adalah software yang bersifat logika dibandingkan fisik, oleh karena itu mengukur software harus merupakan suatu kesatuan, tidak seperti hardware. Software yang bersifat tidak aus ini menyebabkan kesalahan yang terjadi pada software. Umumnya terjadi pada tahap pengembangan. Manajer tingkat menengah dan tingkat atas yang tidak mempunyai latar belakang software, seringkali diberi tanggung jawab untuk mengembangkan software. Padahal tidak semua manajer itu dapat me-manage semua proyek. Praktisnya : software programmer atau software engineering mendapatkan latihan formal yang sedikit dalam hal tehnik baru pengembangan software. Kegagalan mereka yang bertanggung jawab dalam pengembangan software Mitos Software Banyak permasalahan pada sebuah software datang dari asumsi-asumsi yang kebenarannya tidak dapat dipertanggungjawabkan 3 kelompok yang terkait dalam pengembangan perangkat lunak Management, Customer (Pemakai), Manajer pengembangan PL harus : mengatur anggaran, menjaga jadwal dari kelambatan, meningkatkan kualitas. Yang menginginkan PL dikembangkan, diantaranya rekan kerja, bagian lainnya (pemasaran, personalia, bag. Pembukuan, ll) Practitioner (Pengembang) Yang mengembangkan PL, diantaranya Programmer Mitos Dipihak Pemakai (1) Mitos : Tujuan sistem secara umum cukup untuk membuat PL, Rincian belakangan saja saat program dikembangkan Kenyataan : Rincian Kebutuhan sangat penting : Fungsi Performance Antar-muka Batasan rancangan Kriteria validasi, dll Hanya bisa diperoleh dengan komunikasi yang intensif Mitos Dipihak Pemakai (2) Mitos : Perangkat lunak bersifat flekibel Perubahan kebutuhan mudah diakomodasi oleh pengambang PL Kenyataan : Dampak sangat bergantung pada tahap mana perubahan terjadi Mitos Dipihak Pengembang Mitos : Program selesai, Pekerjaan selesai Kenyataan : Mitos : Kualitas hanya bisa diketahui setelah program berjalan (running) Kenyataan : 50%-70% usaha dihabiskan setelah program diserahkan ke user untuk pertama kalinya Kualitas dapat dijaga sejak dikembangkan Mitos: Yang diserahkan ke user adalah program Kenyataan: Yang diserahkan adalah konfigurasi perangkat lunak ( program + dokumentasi) Problem dalam Pengembangan Software Tingginya harga Software Sangat bervariasi dalam penerapannya Yang diinginkan adalah untuk meningkatkan produktifitas. Semula Bisa Program Sukses Bila : dieksekusi Memberi Sekarang Bisa jawaban yang diminta. : dieksekusi dengan cepat Memberi jawaban yang diminta Bisa dikembangkan Why Software Engineering?(1) Objectives Mengidentifikasi masalah baru dan solusi dari produk software Mempelajari sistematik metode terbaru, prinsip, pendekatan untuk sistem analisis, design, implementasi, testing, maintenance Menyediakan teknik kontrol terbaru, manage, dan monitoring proses software Membangun tools software terbari dan environment untuk mendukung software engineering Why Software Engineering?(2) Major Goals : Untuk meningkatkan produktivitas dan kualitas Untuk meningkatkan efektivitas dari kontrol schedule software dan planning Untuk mengurangi cost dan development proses Untuk memenuhi keinginan dan requirements dari customer Untuk menangani konduksi dari proses software engineering Untuk mengingkatkan practice software engineering Untuk memberikan dukungan pada engineering terhadap aktifitas yang sistematik dan lebih efisien