Curriculum Vitae Name: Ana Hadiana Education: Work: P2I – LIPI 1993, Bachelor Degree from Fukui Univ. Japan (Info. Eng.) 1995, Master Degree from Fukui Univ. Japan (Info. Eng.) 2004 Doctoral Degree from Shinsyu Univ. Japan (Info. Eng.) 2006 Post-Doctoral from National Institut e of Informatics Japan Work: P2I – LIPI Sport: Pingpong Hobby: Belajar bahasa arab Email: anahadiana@yahoo.com
An Introduction to Software Engineering (SE) Pengantar Rekayasa Perangkat Lunak (RPL)
Materi Kuliah RPL Pengantar RPL Konsep Dasar RPL/SE Tanggung jawab professional & etika Siklus Hidup Perangkat Lunak/SDLC Pemodelan Sistem Teknik Pengujian Sistem Manajemen Proyek Software Studi Kasus
Objectives/Tujuan To introduce SE and to explain its importance Memahami apa yg dimaksud dgn RPL dan arti pentingnya To set out the answers to key questions about SE Mengetahui jawaban terhadap pertanyaan2 kunci untuk memberikan pemahaman awal ttg RPL To introduce ethical and professional issues and to explain why they are of concern to software engineers Memahami isu etika dan profesi yg penting bagi para perekayasa perangkat lunak
Topics covered FAQs about software engineering Professional and ethical responsibility
SE The economies of ALL developed nations are dependent on software. Hampir seluruh negara tergantung pada berbasis komputer More and more systems are software controlled Semakin banyak produk menggunakan software pengendali SE is concerned with theories, methods and tools for professional software development. SE berkaitan dengan teori, metode dan tool utk pengembangan software secara professional Expenditure on software represents a significant fraction of GNP in all developed countries.
SE SE/PL muncul sejak 1968 pada saat terjadinya “Krisis Software” Permasalahan Software Proyek besar sering terlambat Memakan biaya yg jauh lebih besar drpd estimasi Tidak dapat diandalkan Sulit pemeliharaannya Kinerja buruk Biaya hardware ▼, software ▲ Sehingga teknik dan metode baru Mengendalikan kompleksitas sistem software yg besar
FAQs about SE What is software? What is SE? What is the difference between SE and Computer Science? What is the difference between SE and System Engineering? What is a Software Process? What is a Software Process Model?
FAQs about software engineering What are the costs of SE? What are SE methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Ciri-ciri software yang baik? What are the key challenges facing SE? Tantangan kunci apa yang ada dalam RPL?
What is Software? Computer programs and associated documentation such as requirements, design models and user manuals. Software/Perangkat Lunak berbeda dengan program komputer Software tidak hanya program saja, tetapi mencakup pula Dokumentasi dan konfigurasi data yg berhubungan , yg diperlukan utk membuat program beroperasi dgn benar. Sistem software terdiri dari file-file program terpisah, file-file konfigurasi, dokumentasi user yg menjelaskan penggunaan sistem, tersedia situs web sbg sarana informasi produk software terbaru Software products may be developed for a particular customer or may be developed for a general market.
What is Software? Software products may be Generic - developed to be sold to a range of different customers e.g. PC software such as Excel or Word. Produk generik (terbuka utk siapapun) ≈ database, word processor, paket utk menggambar, alat bantu manajemen proyek Spek dikontrol oleh sendiri oleh Vendor Software Bespoke (custom) - developed for a single customer according to their specification. Produk pesanan (disesuaikan dgn kebutuhan pelanggan tertentu saja) Spek dikontrol oleh pelanggan tertentu New software can be created by developing new programs, configuring generic software systems or reusing existing software.
Ukuran Software Jenis software Person Programmer ManHour Baris Modules /Subroutines Keterangan Trivial Program (sederhana) 1 Beberapa hari/minggu ± 500 10 – 20 sub e.g. Perhitungan biaya pulsa di wartel Small 1 – 4 1 – 6 bln 1000 - 2500 25 – 50 sub Terjadi interaksi antara programmer & user e.g. Aplikasi penggajian Medium 2 – 7 1 – 2 thn 10 – 50 ribu 250 – 1000 sub e.g. Aplikasi Inventory Large 5 – 10 2 – 3 thn ~100.000 Beberapa subsistem Komunikasi antara programmer, manajemen, user e.g. Paket database Very Large 100 – 1000 4 – 5 thn ~1·106 Susunan Subsistem utama, terdiri dari beberapa subsistem e.g. Software animasi film Extremely Large 2000 – 5000 ~10 thn ~1·107 Subsistem yang sangat besar e.g. Software perhitungan di Air Traffic Control atau di reaktor
Role of Software Sebagai produk Kendaraan yg mengantarkan produk Transformer informasi Kendaraan yg mengantarkan produk Membuat/mengontrol program lainnya
Software Type Software Sistem Aplikasi Pemrograman Umum Java, VB, dll OS Windows, Linux Utility Norton AV Software Sistem Umum Office, Game Khusus Aplikasi SIM, AutoCAD Aplikasi
Software License Proprietary Open Source Ber-license Harus dibeli Tidak boleh diperbanyak oleh siapa saja Open Source Ber-license (General Public License/GPL) Diperoleh secara Cuma-Cuma Bisa diperbanyak secara bebas
What is SE? SE is an engineering discipline that is concerned with all aspects of software production. Disiplin ilmu yg membahas semua aspek produksi software, dari mulai tahap awal spesifikasi sampai pemeliharaan setelah digunakan. Rekayasa tidak hanya berhubungan dgn proses teknis pengembangan software tetapi juga dgn kegiatan manajemen proyek software, pengembangan alat bantu, metode dan teori utk mendukung produksi software.
What is SE? Software Engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available. Perekayasa seharusnya memakai pendekatan yg sistematis dan teroganisir terhadap pekerjaannya karena cara ini sering kali efektif utk menghasilkan perangkat lunak berkualitas tinggi. Menggunakan tool dan teknik yg cocok utk mencari solusi masalah secara tepat. Menyadari bekerja dalam batasan organisasi dan keuangan, sehingga hrs mencari solusi dalam batasan ini
What is the difference between Software Engineering and Computer Science? Computer science is concerned with theory and fundamentals; SE is concerned with the practicalities of developing and delivering useful software. Computer science berkaitan teori dan metode yg mendasari sistem komputer dan software. Sedangkan SE berkaitan dgn masalah2 praktis utk produksi software. Pengetahuan ttg computer science penting bagi seorang perekayasa, walaupun pada kenyataannya teori tidak selalu elegan utk diterapkan.
What is the difference between SE and System Engineering? System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Rekayasa sistem berbasis komputer mencakup, pengembangan hardware, software, dan proses rekayasa sistem Sedangkan SE is part of this process concerned with developing the software infrastructure, control, applications and databases in the system.
What is the difference between SE and System Engineering? System engineers are involved in system specification, architectural design, integration and deployment. Perekayasa Sistem terlibat dalam penentuan speksifikasi sistem, pendefinisian arsitektur secara menyeluruh dan pengintegrasian berbagai bagian utk membuat sistem akhir. Perekayasa Sistem tidak peduli dengan rekayasa komponen sistem (hardware, software, dll).
What is a Software Process? A set of activities whose goal is the development or evolution of software. Serangkaian kegiatan dan hasil-hasil relevannya yg menghasilkan software. Generic activities in all software processes are: Specification – fungsionalitas software dan batasan kemampuan operasinya harus didefinisikan (kinerja, antarmuka, dll). Development – software yg memenuhi spesifikasi tersebut harus diproduksi. Validation – software haru divalidasi utk menjamin bahwa software melakukan apa yg diinginkan oleh pelanggan. Evolution – software dapat terus berkembang utk memenuhi kebutuhan pelanggan yg berubah.
Ujicoba/Testing Sistem Development Test Integration Test Installation Test
What is a Software Process Model? A simplified representation of a software process, presented from a specific perspective. Model adalah deskripsi yg disederhanakan dari proses software Model juga dipresentasikan dgn sudut pandang tertentu. Abstraksi dari proses sebenarnya Beberapa jenis model proses software yg dihasilkan Workflow perspective - sequence of activities (urutan kegiatan) Data-flow perspective - information flow (alur data) Role/action perspective - who does what (peran orang yg terlibat dalam proses software).
What is a Software Process Model? Generic process models Waterfall – pengembangan melalui fase proses yg berbeda seperti spesifikasi, persyaratan, perancangan, implementasi, pengujian, dan seterusnya. Iterative development – pendekatan tumpang tindih dengan kegiatan spesifikasi, pengembangan, dan validasi. Sistem awal dikembangkan dgn cepat dari spesifikasi abstrak, lalu disempurnakan dgn masukan dari pelanggan sampai sistem memenuhi kebutuhan pelanggan tersebut. Component-based software engineering – perakitan (assembling) sistem dari komponen-komponen yg dapat dipakai ulang
Waterfall #Fase brktnya tdk dimulai sblm fase sblmny selesai. #Bukanlah model linear sedrhana.
Iterative
Component Based
What are the costs of software engineering? Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability. Distribution of costs depends on the development model that is used.
Software costs Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost. Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. SE is concerned with cost-effective software development.
Distribusi Biaya Pengembangan
Biaya Pengembangan Produk Generik
What are SE methods? Metode RPL adalah pendekatan terstruktur terhadap pengembangan software dgn tujuan memfasilitasi produksi software yg berkualitas dgn cara efektif terutama dalam hal biaya Komponen2 metode Model descriptions Deskripsi model sistem dan notasi untuk pendefinisian Rules/Aturan Batasan yg berlaku bagi model sistem Recommendations Menghasilkan model sistem yg terorganisir dgn baik Process guidance Deskripsi kegiatan yang harus diikuti
SE Methods Analisis Terstruktur Analisis berbasis Obyek Data Flow Diagram (DFD) Entity Relationship Diagram (ER-D) Analisis berbasis Obyek Menggunakan Unified Modelling Language(UML) Use Case Diagram Class Diagram Action Diagram State Diagram dll
What is CASE (Computer-Aided Software Engineering) Software systems that are intended to provide automated support for software process activities. CASE (contoh: Power Designer) Memeriksa model sistem, membuat dokumentasi sistem, generator kode secara otomatis membuat source code dari model sistem, memberi panduan proses ke perekayasa. Upper-CASE Tools to support the early process activities of requirements and design; Lower-CASE Tools to support later activities such as programming, debugging and testing.
What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be . Maintainability (dapat dipelihara) Software must evolve to meet changing needs; Dependability (dapat diandalkan) Software must be trustworthy (aman, selamat, tdk menyebabkan keruksakan fisik); Efficiency (Efisien) Software should not make wasteful use of system resources; Acceptability (Kemampupakaian) Software must accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems.
What are the key challenges facing SE? Heterogeneity/Heterogenitas Developing techniques for building software that can cope with heterogeneous platforms and execution environments; Fleksibel terhadap berbagai platform hardware & software Delivery/Pengiriman Developing techniques that lead to faster delivery of software; Mempersingkat waktu kirim sistem besar dan kompleks, tanpa mengurangi kualitas sistem. Trust/Terpercaya Developing techniques that demonstrate that software can be trusted by its users. Legacy/Warisan Memelihara dan mengupdate software sedemikian dengan biaya ringan dan layanan bisnis penting tetap bisa dilakukan.
Professional and ethical responsibility Software engineering involves wider responsibilities than simply the application of technical skills. Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals. Ethical behaviour is more than simply upholding the law.
Issues of professional responsibility Confidentiality/Konfidentialitas Perekayasa umumnya harus menghormati konfidensialitas atasan atau klien walaupun tidak ada persetujuan konfidensialitas format yg ditandatangai Competence /Kompetensi Perekayasa tidak boleh menyalahi tingkat kompetensinya. Mereka tidak boleh dengan sadar menerima pekerjaan yang melebihi kompetensi mereka.
Issues of professional responsibility Intellectual property rights/Hak properti intelektual Perekayasa harus menyadari hukum lokal yang mengatur penggunaan properti intelektual seperti paten, hak cipta, dsb. Mereka harus hati-hati untuk memastikan bahwa properti intelektual atasan dan klien terlindungi. Computer misuse/Penyalahgunaan komputer Perekayasa perangkat lunak tidak boleh menggunakan keahlian teknis mereka untuk menyalahgunakan komputer orang lain. Penyalahgunaan komputer bisa berkisar dari hal yang relatif ringan(mis. Memainkan game pada komputer atasan) sampai yang sangat serius (mis. Menyebarkan virus).
ACM/IEEE Code of Ethics The professional societies in the US have cooperated to produce a code of ethical practice. Members of these organisations sign up to the code of practice when they join. The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession.
Code of ethics - preamble The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code. Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:
Code of ethics - principles PUBLIC Software engineers shall act consistently with the public interest.\ Konsisten dan sesuai dgn kepentingan masyarakat CLIENT AND EMPLOYER Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. Melakukan terbaik bag klien dan atasan mereka, konsis dgn kepentingan masyarakat PRODUCT Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. Memenuhi standar intenational yg tinggi
Code of ethics - principles JUDGMENT Software engineers shall maintain integrity and independence in their professional judgment. Perekayasa akan mempertahankan integritas dan independensi penilaian profesional mereka MANAGEMENT Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. Manajer dan pemimpin rekayasa akan mengikuti dan mempromosikan pendekatan etis terhadap manajemen pengembangan dan pemeliharaan software PROFESSION Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
Code of ethics - principles COLLEAGUES Software engineers shall be fair to and supportive of their colleagues. Perekayasa akan bersifat adil dan mendukung terhadap koleganya SELF Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. Perekayasa akan berpartisipasi dalam pembelajaran seumur hidup ttg prakter profesi mereka dan akan mempromosikan pendekatan etis terhadap praktek profesi tsb.
Ethical Dilemmas Disagreement in principle with the policies of senior management. Your employer acts in an unethical way and releases a safety-critical system without finishing the testing of the system. Participation in the development of military weapons systems or nuclear systems.
Key Points Software engineering is an engineering discipline that is concerned with all aspects of software production. Rekayasa perangkat lunak adalah disiplin ilmu yg berkaitan dgn semua aspek produksi perangkat lunak Software products consist of developed programs and associated documentation. Essential product attributes are maintainability, dependability, efficiency and usability. Produk perangkat lunak terdiri dari program yg dikembangkan dandokumentasi yg relevan. Atribut produk yg penting adalah dapat dipelihara, dapat diandalkan, efisien,dan kempupakaian(usability).
Key Points The software process consists of activities that are involved in developing software products. Basic activities are software specification, development, validation and evolution. Proses perangkat lunak terdiri dari kegiatan2 yg dialkukan dalam pengembangan produk perangkat lunak. Kegiatan dasarnya adalah spesifikasi, pengembangan, validasi, dan evolusi perangkat lunak. Methods are organised ways of producing software. They include suggestions for the process to be followed, the notations to be used, rules governing the system descriptions which are produced and design guidelines. Metode adalah cara yg teratur utk memproduksi perangkat lunak. Metode mencakupusulan proses g akan diikuti, notasi yg digunakan, aturan utk deskripsi sistem yg dihasilkan, dan panduan perancangan.
Key Points CASE tools are software systems which are designed to support routine activities in the software process such as editing design diagrams, checking diagram consistency and keeping track of program tests which have been run. CASE tool adalah sistem perangkat lunak yg dirancang utuk mendukung kegiatan rutin pada proses perangkat lunak spt pengeditan diagram perancangan, pemeriksaan konsistensi diagram, dan menurut pengujian program yg telah dijalankan
Key Points Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues. Perekayasa perangkat lunak mempunyai tanggung jawab terhadap profesi rekayasa dan masyarakat. Mereka tidak boleh hanya memikirkan isu etika Professional societies publish codes of conduct which set out the standards of behaviour expected of their members. Masyarakat professional menerbitkan kode perilaku yg menentukan standar perilaku yg diharapkan dari anggotanya