Software Engineering I Oleh Indrias Budi Utami Introduction
Software Engineering I Oleh: Indrias Budi Utami
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 software engineering?
Evolution of Software -beberapa tahun lalu: - Batch(kumpulan)orientation - Limited distribution - Custom software -era tahun ke -2: - Multiuser - Real-time - Database - Product software -era tahun ke - 3: - Distributed systems - Embedded “intelligence” - Low cost hardware - Consumer impact -era tahun ke - 4: - Powerful desk-top systems - Object-oriented technologies - Expert systems - Artificial neural networks - Parallel computing - Network computers Era tahun ke - 2 Era tahun ke - 3 Beberapa tahun lalu 1950 1960 1970 1980 Era tahun ke - 4 1990 2000
Karakteristik Software • Software memiliki fungsi ganda. Software dapat disebut sebagai produk, tetapi juga dapat disebut sebagai sarana yang dapat mengantarkan produk itu sendiri • Software bersifat logical dibanding elemen fisik dari sistem • Software memiliki beberapa karakteristik yang dapat membedakan dari hardware • Software dikembangkan atau dibangun, tetapi tidak menghasilkan classical sense • Banyak software yang sudah bisa digunakan secara langsung atau bersifat custom built, tetapi ada pula yang masih menggabungkan antar beberapa komponen.
Failure rate Continues at same rate until obsolescence Time Failure curve for hardware Failure rate Time Failure curve for software (idealized) Increased failure rate due to side effects change actual curve idealzied curve Failure curve for software Time
Failure rate • Laju kegagalan sbg fungsi waktu • “kurva bathub” • H/W mengalami laju kegagalan(perancangan/cacat pembuatan) sangat tinggi pada awal hidupnya • Cacat tsb terus diperbaiki shg laju kegagalan turun ke steady state (kondisi yang diharapkan) • Seiring perjalanan waktu, laju kegagalan bertambah lagi H/w Usang, disebabkan oleh lingkungan : - Debu - Getaran - Suhu tinggi - perkembangan teknologi Time Failure curve for hardware
Failure rate • Laju kegagalan sbg fungsi waktu • Model kegagalan aktual pada PL • Error / bug yang tidak dpt ditemukan menyebabkan tingkat kegagalan sangat tinggi pada awal hidup program • Perbaikan yg continue tdk ditemukan kesalahan, shg kurva mjd mendatar • PL tidak usang tetapi semakin lama semakin memburuk. Continues at same rate until obsolescence Time Failure curve for software (idealized)
Increased failure Failure rate due to side effects change actual curve • Laju kegagalan sbg fungsi waktu • Kontradiksi dengan kurva sebelumnya • PL selalu mengalami maintenance • Sekali maintenance dilakukan error muncul kurva kegagalan naik scr cepat • Sebelum kurva kembali kekeadaan semula maintenance kembali kurva naik kembali idealzied curve Failure curve for software Time
Aplikasi Software System Software - Kumpulan dari beberapa program yang dibuat untuk memberikan servis terhadap program lainnya pada setiap level. Contohnya : compiler, operating sistem Real-time Software - Program yang dapat memonitor/menganalisa/mengontrol kejadian nyata yang terjadi di dunia ini Business Software - Program yang dapat mengakses, menganalisa dan memproses informasi bisnis. Engineering and Scientific Software - Software yang menggunakan algoritma “number crunching” untuk membedakan science dan applications. Sistem simulation, 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. Artificial Intelligence (AI) Software - program yang digunakan untuk teknik AI dan metodenya digunakan untuk memecahkan masalah yang kompleks. Contohnya : expert sistem, pengenalan pola, games. Internet Software - program yang mensupport pengaksesan internet. Contohnya : search engine, browser, e-commerce software, authoring tools. Software Tools and CASE environment - tools dan program yang dapat membantu pembuatan aplikasi software dan sistem. contohnya : test tools dan version control tools.
Software Crisis In the software industry, we have had a “crisis” that has been with us for close to 30 years. Meaning of the word “crisis” --> a turning point in the course of anything; decisive or crucial time, stage or event. --> the turning point in the course of a disease, when it becomes clear whether the patient will live or die. What we actually have in software industry is a “chronic affliction”. It means --> lasting a long time, recurring often, continuing indefinitely. Software crisis or software affliction --> a set of problems encountered in software production. --- Problems in developing software --- Problems in maintain a growing volume of existing S/W Typical examples: Build a wrong product. - Project schedule problems - Cost estimation problems -
Masalah dalam Pengembangan PL • Pl tidak bisa berjalan dengan baik bugs • HOW TO : – Deploy – Maintenance – Improve user requirement – Manage Project Management : Schedule, estimation cost (human, proses, product) • Human capability restrictiveness
MITOS PL • Mitos awal perkembangan PL • Mitos muncul karena berkembangnya INFORMASI dan KERAGUAN yang BELUM TENTU BENAR • Mitos beredar di kalangan: – Manajemen mitos: untuk mentaati jadwal project menambah analis dan programmer Fakta: ? Tambah orang—perlu training, penyesuaian—tambah waktu dan biaya
MITOS PL 2 – Pelanggan Mitos: memberikan definisi REQUIREMENT yang minim Fakta: ? Penjelasan detail, formal tentang domain informasi, fungsi, unjuk kerja, design constraint, kriteria validasi merupaka hal PENTING dan MENDASAR – Praktisi Mitos: Sekali menulis program running dan bekerja maka pekerjaan selesai Fakta: lebih cepat Anda mulai coding semakin lama Selesainya 50%-70% dari semua usaha yang dilakukan (coding) akan terus dilakukan sampai program diantar ke tangna konsumen
PROSES
What is Software Engineering? Walaupun ratusan pengarang telah mengembangkan definisi tersendiri tentang software engineering, definisi ini diusulkan oleh Fritz Bauer[NAU 69] yang menyediakan basis : “[Software engineering adalah] prinsip yang digunakan pada sound engineering yang digunakan untuk mendapatkan software yang bersifat ekonomis dan dapat bekerja secara efisien pada real machines” The IEEE [IEE 93] telah mengembangkan definisi yang lebih lengkap dengan pernyataan : “Software Engineering : (1) aplikasi yang bersifat sistematik, disipilin dengan mendekati metode pengembangan, operasi, dan maintenance dari software; (2) studi dengan pendekatan pada definisi nomor (1)”
What is Software Engineering? Pressman’s view: “Software engineering is a layered technology (Figure 2. 1)” Tools Methods Process A quality focus Software methods: Metode Software engineering menyediakan teknik “how to” untuk membangun software. Metode --> meliputi bagaimana menyelesaikan task : - requirement analisis, design, coding, testing dan maintenance
LAPISAN RPL 1 A QUALITY FOCUS PROCESS • Batu landasan yg menopang RPL fokus pada kualitas q Area proses kunci • Fondasi ini merupakan bentangan dari Proses q membentuk dasar bagi kontrol manajemen proyek q membangun konteks metode teknis diaplikasikan q Produk usaha (model, dokumen, data, laporan, form. . . ) q Fondasi dibangun, kualitas dijamin, perubahan diatur rapi
LAPISAN RPL 2 METODE TOOLS • Merupakan TEKNIK utk membangun PL • Task : – Analisis kebutuhan – Konstruksi program – Desain – Pengujian – Pemeliharaan • Prinsip dasar aktivitas dan teknik pemodelan • menyediakan sistem otomatis atau semi otomatis untuk proses dan metode • Tool-tool diintegrasikan sehingga informasi yang diciptakan satu tool bisa digunakan oleh yg lain • Tools: CASE (SW-HW-DB RPL) database RPL: repository analisisdesain-konstruksi program-testing
What is Software Engineering? - A Generic View Engineering --> analysis, design, construction, verification, and management of technical (or social) entities. Tiga phase dalam production software - phase definition WHAT - phase development HOW - phase maintenance Phase definition : (dilakukan dalam tahap pendefinisian dan perencenaan dari software sistem) Phase definition terfokus pada apa yang terjadi dalam software sistem. - informasi apa yang harus diproses pada sistem? - fungsi apa saja yang harus disediakan oleh sistem? - performance sistem dan kriteria yang diperlukan oleh sistem? - apa yang diperlukan pada sistem behavior? - dengan cara apa requirement akan direpresentasikan? Tiga tugas utama pada phase definisi : - sistem atau informasi engineering - software project planning - requirement analisis
What is Software Engineering? - A Generic View Phase Development : (terjadi selama proses pengembangan dari software sistem) Phase development terfokus pada bagaimana. - bagaimana sistem menjadi terstruktur? - bagaimana data-data yang ada menjadi terstruktur? - bagaiman informasi dapat diproses? - bagaimana fungsi dapat diimplementasikan? - bagaiamana karakteristik dari interface? - bagaimana design dapat menjadi lebih spesifik? - bagaimana testing dapat ditunjukkan? Terdapat tiga tipe task dari phase development : - software design - code generation, dan - software testing
What is Software Engineering? - A Generic View Phase maintenance : -> evaluasi dari produk software setelah sistem testing. Phase maintenance mengulang kembali langkah-langkah pada phase definisi dan pengembangan Phase development terfokus pada perubahan software sistem. -Error correction – apabila ini terjadi maka dilakukan perubahan software sehingga software menjadi benar. -Adaptation – memodifikasi software untuk mengakomodasi perubahan yang terjadi terhadap lingkungan. -Enhancement – mengembangkan software dengan melakukan penambahan fungsi -fungsi yang baru untuk customer/user. -Prevention - preventive maintenance, called software reengineering. dengan membuat perubahan pada software sehingga dapat lebih mudah dikoreksi, ditangani.
Why Software Engineering? Objectives: -Mengidentifikasi masalah baru dan solusi dari produk software -Mempelajari sistematik petode terbaru, prinsisp, pendekatan untuk sistem analisis, design, implementasi, testing, maintenance. -Menyediakan teknik kontrol terbaru, manage, dan monitor proses software -Membangun tools software terbaru dan environment untuk mendukung software engineering. Major Goals: -Untuk meningkatkan produktivitas dan kualitas -Untuk meningkatkan efektivitas dari kontrol schedule software dan planning. --Untuk mengurangi cost dari development proses -Untuk memenuhi keinginan dan requirements dari customer. -Untuk menangani konduksi dari proses software engineering. -Untuk meningkatkan practice software engineering. -Untuk memberikan dukungan pada engineers terhadap aktivitas yang sistematik dan lebih efisien.
- Slides: 22