Tim RPL Program Studi Teknik Informatika Introduction Tim RPL Program Studi Teknik Informatika
What is Software ? Software adalah sekumpulan item-item atau objek yang membentuk konfigurasai yang melibatkan program, dokumen, data dan lain-lain.
What is Software ? Definisi Software menurut IEEE : Computer programs, procedures, and possibly associated, documentation and data partaining to the operation of a computer system ( IEEE Standard Glossary of Software Engineering Therminology, 1990 )
What is Software ? Software dirancang dan dibangun oleh software engineer Software digunakan oleh siapapun dalam masyarakat Software engineer mempunyai kewajiban moral untuk membangun software yang dapat diandalkan yang tidak merugikan orang lain. Pengguna perangkat lunak hanya fokus pada produk software apa yang mereka butuhkan dan membuat tugas mereka lengkap
What is Software ? Software adalah dua hal, produk dan kendaraan untuk menyampaikan sebuah produk (informasi)
Software Evolution Unified theory untuk evolusi software (Lehman) : The Law of Contuining Change (1974) The Law of Increasing Complexity ( 1974) The Law of Self-Regulation (1974) The Law of Conservation of Organizational Stability (1980) The Law of Conservation of familiarity ( 1980) *SEPA 6th ed.Roger S.Pressman
Software Problems (1) Software used after modification 3% Software used, but criticized or dropped 19% Software paid for but never delivered 29.7% Software delivered and used as it is 2% Software delivered but never used 47% 1982: Nine DOD contracts amounting to $6.8 million (source: GAO, quoted in CMU/SEI-93-EM-8)
Software Problems (2) Distribution of effort : what happens Distribution of effort : what is believed specification testing specification design encoding testing design encoding maintenance
The Cost of Change Definition development After release
Kurva Kesalahan Failure curve Failure curve For software For hardware rate time time Failure curve For software Failure curve For hardware *Software Engineering. Module 3. Richard Conn. University of Cincinnati, May 1993
Software Application Type System Software Application Software Embedded Software Engineering/ Scientific Software Product Software Web Application Software Artificial Intelligence Software *SEPA 6th ed.Roger S.Pressman Hal 37, Pressman edisi 8
New Software Challenges Ubiquitous computing ( ada dimana-mana) Membuat software untuk semua jenis perangkat yang memungkinkan berkomunikasi satu dengan yang lain secara jaringan. Netsourcing Sederhana arsitekturnya dan aplikasinya canggih yang diperuntukan pasar end user di dunia. Open Source Source code yang di distribusikan sebagai aplikasi komputasi dan konsumen bisa melakukan modifikasi secara mudah dan handal. New economy Pembangunan aplikasi yang memfasilitasi pendistribusian komunikasi masa dan produk masa dengan mengunakan konsep perubahan. *SEPA 8th ed.Roger S.Pressman
Legacy Software Software harus bisa disesuaikan untuk memenuhi kebutuhan lingkungan komputasi atau teknologi baru. Software harus harus ditingkatkan untuk diterapkan dengan menyeseuaikan kebutuhan bisnis baru. Software harus bisa diperluas agar bisa di masukkan ke dalam system atau database yang lebih modern. Software harus bisa di ulang arsitekturnya untuk membuat variabel dalam lingkungan jaringan. *SEPA 8th ed.Roger S.Pressman
The essence of Software Engineering Memahami masalah (komunikasi dan analisis) Merencanakan solusi (design modeling n software) Melaksanakan rencana (pembuatan kode) Memeriksa akurasi hasil (pengujian dan jaminan kualitas)
"Saya mengerti, mari kita bersama bisa memecahkan hal ini“ 1. Memahami Masalah "Saya mengerti, mari kita bersama bisa memecahkan hal ini“ Sayangnya, pemahaman tidak selalu mudah. Siapa yang memiliki wewenang untuk memecahkan masalah? (Siapakah stakeholder ?) Apa yang tidak diketahui? Apakah data, fungsi, dan fitur yang diperlukan secara benar untuk memecahkan masalah ? Bisakah masalah terkotak?
2. Merencanakan sebuah solusi Pernahkah Anda melihat masalah yang sama sebelumnya? Apakah masalah yang sama bisa dipecahkan? Bisakah submasalah didefinisikan? Bisakah anda dapat merepresentasi sebuah solusi dengan suatu cara yang bisa mengarahkan kepada pelaksanaan yang efektif? Bisakah desain model dibuat?
3. Melaksanakan Rencana Apakah solusinya sesuai dengan rencana? Apakah Source Code dapat dilacak dari desain modenya? Apakah setiap bagian komponen merupakan kemungkinan dari solusi yang benar? Apakah desain dan kode sudah diperiksa, atau lebih baik, dan telah dikoreksi secara benar sesuai dengan algoritma?
4. Memeriksa akurasi hasil Apakah mungkin untuk menguji setiap komponen? Apakah solusi hasil sudah sesuai dengan data, fungsi dan fitur yang diperlukan diproduksi?
Software Myths Masih dipercaya oleh banyak manager dan praktisi Berbahaya karena mereka dipercaya. Setiap praktisi dan manajer seharusnya memahami realitas dari bisnis proses *SEPA 6th ed.Roger S.Pressman
Software Myths: Customer Myths Sebuah pernyataan umum dari tujuan cukup untuk memulai menulis program, mengisi rincian nantinya. Kebutuhan proyek terus berubah, tetapi perubahan dapat dengan mudah ditampung karena software bersifat fleksibel Reality : Miskin definisi di awal adalah penyebab utama dari software yang kurang baik. Biaya perubahan software untuk memperbaiki kesalahan meningkat secara dramatis pada tahap selanjutnya dari siklus perangkat lunak
Software Myths : Practitioner’s myths Setelah program ditulis dan bekerja, pekerjaan secara praktek dianggap selesai. Tidak ada cara untuk menilai kualitas software sampai sebuah program dijalankan. Reality : 60% -80% dari usaha yang dikeluarkan pada program terjadi setelah disampaikan kepada pelanggan. Software adalah review yang lebih efektif dalam menemukan kesalahan dari pengujian untuk sebuah kesalahan tertentu.
Software Mhyts Management myhts Myths : Buku standar yang ada di software house akan bisa untuk mengembangkan software secara memuaskan. Komputer dan peralatan perangkat lunak dirasa sudah cukup. Selalu bisa menambahkan lebih banyak programmer jika proyek ditambah. Reality : Buku mungkin ada, tetapi mereka biasanya tidak up to date dan tidak digunakan. KASUS (**) alat-alat yang diperlukan tapi tidak biasanya diperoleh atau digunakan. "Menambahkan orang untuk sebuah proyek software membuatnya terlambat." - Brooks
“ You said I should spend more time with our children, so I turned their faces into icons “
Apakah Software Engineering ? Software Engineering 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)
Why Software Engineering ? Untuk mendapatkan software yang benar dan untuk membuat software menjadi benar Software adalah sesuatu yang kompleks dalam hal: Domain problem: Business Rule Data size: Digital and Non Digital Solution: Algorithm Place or Sites
Why Software Engineering ? Software harus benar (correct): Berdasarkan business rule Sejalan dengan segala sesuatu dan semua pihak yang terkait Pembangunan software harus dikelola dengan baik untuk memelihara kebenarannya (correctness)
Bagaimana seharusnya SE dijalankan ? 2 hal yang harus dipertimbangkan dalam SE: Product = Software: Programs Documents Data Process of how the software is build: Management process Technical process
Perbedaan Software Engineering dan Computer Science Computer science fokus pada teori dan dasar-dasar; software engineering fokus pada praktek dan pembangunan dan pengiriman penggunaan software. Teori Computer science masih belum cukup untuk menetapkan sebagai sebuah tiang fondasi untuk software engineering. * Software Engineering 7th ed, Ian Sommerville
Perbedaan Software Engineering dan System Engineering System engineering fokus pada semua aspek pembangunan sistem dasar komputer meliputi hardware, software and process engineering. Software engineering adalah bagian dari proses ini yang berfokus pada pembangunan prasarana perangkat lunak, kontrol, aplikasi dan database pada sistem. System engineers terlibat dalam spesifikasi sistem, perancangan arsitektur, integrasi dan penyebaran. * Software Engineering 7th ed, Ian Sommerville
Important Questions of Software Engineer Mengapa begitu lama waktu untuk mendapatkan software selesai? Mengapa biaya pengembangan begitu tinggi? Mengapa kita tidak bisa menemukan semua kesalahan sebelum kami memberikan perangkat lunak untuk pelanggan kami? Mengapa kita menghabiskan begitu banyak waktu dan usaha mempertahankan program yang ada? Mengapa kita terus memiliki kesulitan dalam mengukur kemajuan sebagai perangkat lunak yang sedang dikembangkan dan dipelihara? *SEPA 6th ed.Roger S.Pressman