INTRODUCTION TO SOFTWARE ENGINEERING
Mata Kuliah Testing & Implementasi Sistem Program Studi Sistem Informasi 2013/2014 STMIK Dumai -- Pertemuan 1 --
This presentation is revised by HA, STMIK, 2013
Acknowledgement 2
Main materials: [Pressman, 2010] Pressman, Roger S. Software Engineering: A Practitioner’s Approach. New York:McGraw-Hill Higher Education, 2010. Print Supplements: [Alter, 2001] Alter, Steven. "Which Life Cycle --- Work System, Information System, or Software?“ Communications of the Association for Information Systems 7.17 (2001). Print [Yud, 2012] Yudhoatmojo, Satrio Baskoro. “Software & Software Engineering” IKI30202 - Rekayasa Perangkat Lunak Term 1 2011/2012. Faculty of Computer Science University of Indonesia. 2012. Print
3
Apa itu Perangkat Lunak? 4
Perangkat Lunak (Software) adalah: 1.
2. 3.
Instruksi-instruksi (program komputer) yang pada saat dijalankan akan menyajikan fitur dan fungsi yang diinginkan, dan dengan performa yang baik; Struktur data yang memungkinkan program untuk mengatur informasi di dalamnya; Dokumentasi yang mendeskripsikan cara menggunakan dan fungsi dari program.
Kurva Ideal vs. Kurva Sebenarnya 5
Software failure
6
Apa hubungannya Sistem Informasi dengan Perangkat Lunak?
Sistem Informasi vs. Perangkat Lunak 7
Sistem informasi adalah suatu sistem kerja karena terdiri dari [Alter, 2001, diterjemahkan]: Manusia sebagai partisipan (perancang maupun pengguna) Mesin yang menyajikan proses bisnis yang menggunakan informasi, teknologi, dan sumber-sumber lain untuk memproduksi produk dan/atau pelayanan (jasa) untuk pelanggan internal maupun eksternal
Perangkat lunak adalah bagian dari teknologi yang digunakan dalam sebuah sistem informasi yang terkomputerisasi.
Sistem Informasi vs. Perangkat Lunak 8
Sistem yang termasuk ke dalam Perangkat Lunak terbagi dalam 2 kategori:
1. Technical computer-based systems Meliputi komponen perangkat keras dan perangkat lunak, namun tidak melalui prosedur dan proses dari pihak lain Contoh: TV, Handphone, Personal Computer (PC) 2. Socio-technical systems Meliputi satu atau lebih teknikal sistem, namun yang terpenting juga melibatkan knowledge tentang bagaimana sistem tersebut seharusnya digunakan untuk mencapai tujuan yang disepakati Contoh: buku ‘Software Engineering’ yang dibuat melalui sistem publishing socio technical
9
Pernah mendengar istilah ‘Legacy Software’? Apa itu ‘Legacy Software’?
Legacy Software 10
Dari Dayani-Fard [Day99], diterjemahkan: “Sistem legacy software … dikembangkan beberapa (bahkan puluhan) tahun yang lalu, dan masih digunakan, dimodifikasi secara terus menerus dalam hal business requirements dan computing platforms. Pengembangan sistem ini sangat beresiko dan sangat memungkinkan ditemukannya masalah dalam proses pengembangan” Legacy software dalam bahasa sederhana: suatu sistem lama/kuno yang masih dioperasikan samapai hari ini.
Legacy Software …(2) 11
Karena masih dioperasikan, software ini secara kritikal ditandai dengan karasteristik proses bisnis yang lama Beberapa karakteristik tersebut yang termasuk poor quality adalah: Disain
yang tak dapat diperluas Kode yang tidak rapi Dokumentasi yang buruk bahkan tidak ada Test cases dan hasilnya tak pernah terarsip Data perubahan sistem tidak diatur dengan baik
Legacy Software …(3) 12
Dengan karakteristik kualitas yang buruk, mengapa perusahaan masih saja menggunakan legacy software? Karena sistem ini mendukung inti dari fungsi bisnis (core business functions) yang sangat dibutuhkan oleh perusahaan. Apakah organisasi harus menjaga untuk terus menggunakan legacy software ini? Ya, paling tidak sampai ditemukannya perubahan yang signifikan pada legacy software ini.
Legacy Software …(4) 13
Kenapa harus ada perubahan pada legacy software? Ada 4 alasan… Perangkat lunak harus mampu beradaptasi saat bertemu dengan lingkungan teknologi komputasi baru. Perangkat lunak harus dapat ditingkatkan untuk diaplikasikan ke kebutuhan bisnis yang baru. Perangkat lunak harus dapat diluaskan sehingga bisa diinteraksikan dengan banyak sistem atau database yang lebih modern. Perangkat lunak harus dapat dirancang-ulang untuk bisa berjalan dengan network environment.
14
Untuk apa kita belajar tentang PERANCANGAN PERANGKAT LUNAK (Software Engineering)?
Software Engineering …(1) 15
Beberapa realita dalam mengembangkan perangkat lunak: Besarnya
usaha yang akan dikeluarkan harus diukur sesuai besarnya permasalahan sebelum solusi software mulai dikembangkan Disain menjadi aktifitas yang sangat penting Software harus memiliki performa yang baik Software harus dapat dipelihara selanjutnya (maintainable)
Software Engineering …(2) 16
Definisi Perancangan Perangkat Lunak (Software Engineering): Perancangan yang menggunakan prinsip-prinsip keahlian teknik (engineering) untuk menghasilkan perangkat lunak yang ekonomis dan sesuai, serta mampu bekerja secara efisien didalam sebuah mesin yang nyata.
Software Engineering …(3) 17
Definisi Software Engineering versi IEEE:
1. The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. 2. The study of approaches as in (1).
Lapisan Teknologi 18
Software Engineering
Lapisan Teknologi - Proses Model 19
Lapisan proses model adalah sebagai pondasi Menjadi perekat semua lapisan teknologi Mendefinisikan kerangka Bentuk dasar untuk manajemen kontrol dari sebuah proyek perangkat lunak Lapisan dimana metode teknik digunakan, kualitas perangkat lunak dipastikan, dan perubahanperubahan diatur dengan baik
Lapisan Teknologi - Metode 20
Lapisan metode menyajikan bagaimana cara untuk membangun perangkat lunak Meliputi set dari tugas-tugas, yaitu: communication, requirement analysis, design modeling, program construction, testing, dan support Mengandalkan prinsip-prinsip dasar dalam menentukan tiap area teknologi yang digunakan termasuk pemodelan dan teknik lainnya.
Lapisan Teknologi - ‘Tools’ 21
Lapisan peralatan (tools) digunakan sebagai pendukung untuk lapisan proses dan lapisan metode.
Kerangka Proses (Process Framework) 22
• Membangun pondasi untuk proses perancangan perangkat lunak dengan mengidentifikasi sebagian kecil kerangka aktifitas yang dapat diaplikasikan ke semua proyek perangkat lunak. • Sebagai tambahan, sebuah kerangka proses mencakupi satu set umbrella acivities yang dapat diaplikasikan ke semua proses perangkat lunak (software process). • Ilustrasi dari kerangka proses dapat dilihat pada gambar berikut ini …
Kerangka Proses (Process Framework) 23
Framework Activities 24
Communication Planning Modeling ✤ Analysis of requirements ✤ Design Construction ✤ Code generation ✤ Testing Deployment
Framework Activities 25
COMMUNICATION Dilakukan sebelum pekerjaan teknikal apapun dimulai Melakukan komunikasi, bekerja sama dengan kustomer dan pihak lainnya. Untuk memahami tujuan para stakeholders di dalam proyek dan untuk mengumpulkan kebutuhan (requirements) yang membantu mendefinisikan fungsi dan fitur dari perangkat lunak yang akan dibangun.
Framework Activities 26
PLANNING “Perjalanan serumit apapun akan menjadi sederhana jika ada peta/map” Proses perencanaan menghasilkan “map” yang membantu mengarahkan tim proyek dalam pengerjaan proyek. Map ini disebut dengan istilah software project plan (perencanaan proyek perangkat lunak) yang mendefinisikan pekerjaan (job desc) dalam merekayasa perangkat lunak
Termasuk pekerjaan teknikal Resiko-resiko yang mungkin terjadi Sumber yang dibutuhkan, dan jadwal kerja
Framework Activities 27
MODELING Membuat sebuah sketsa sedemikian hingga tim mengerti gambar besar dari proyek Gambaran secara
arsitektur Bagaimana modul-modul dalam proyek bisa terhubung satu sama lain dll
Tujuan pemodelan adalah untuk mengerti lebih jauh kebutuhan perangkat lunak dan disain yang ingin dicapai dari kebutuhan tersebut.
Framework Activities 28
CONSTRUCTION Membuat kode (baik secara manual maupun otomatis) Testing yang dibutuhkan untuk menguji apakah ada error dalam kode DEPLOYMENT Perangkat lunak yang sudah selesai diterima oleh pihak kostumer untuk kemudian dievaluasi dan diberikan feedback dari hasil evaluasi tersebut.
Framework Activities 29
Kelima “generic framework activities” ini dapat digunakan di banyak jenis aplikasi perangkat lunak Namun implementasi detail tiap aktifitasnya bisa jadi berbeda di tiap proyek.
Umbrella Activities 30
Software project management Formal technical reviews Software quality assurance Software configuration management Work product preparation and production Reusability management Measurement Risk management
Membangun Sistem Informasi 31
Dalam SI, System Development Life Cycle (SDLC) memiliki 4 fase dasar yang similar (planning, analysis, design and implementation) ✤ Planning ✴ Why build the system? ✴ How the project team will go to build it? ✤ Analysis ✴ Who, what, when, where will the system be? ✤ Design ✴ How will the system will operate, in terms of the hardware, software and infrastructure? ✤ Implementation ✴ The system is actually built or purchased ✴ System delivery
Esensi dalam praktek 32
1. Understand the problem (communication and analysis) 2. Plan a solution (modeling and software design) 3. Carry out the plan (code generation) 4. Examine the result for accuracy (testing and quality assurance)
Understand the Problem 33
Siapa pihak yang akan mengajukan solusi untuk permasalahan proyek ini? Siapa pihak-pihaknya? Apa saja yang belum diketahui? Apa saja data, fungsi, dan fitur yang dibutuhkan untuk dapat menyelesaikan maslah tersebut? Apakah masalah tersebut dapat dipecah? Apakah tersebut bisa disajikan menjadi masalah-masalah kecil yang bisa lebih mudah dimengerti? Apakah masalah ini bisa direpresentasikan secara grafik? Apakah bisa dibuat ke dalam bentuk analisis model?
Plan the Solution 34
Apakah masalah ini sebelumnya sudah pernah ada? Apakah ada pola untuk solusi masalah ini? Apakah sudah ada perangkat lunak yang mengimplementasikan data, fungsi, dan fitur yang dibutuhkan? Apakah masalah yang similar dengan masalah ini sudah terpecahkan? Jika ya, apakah solusinya dapat digunakan (reuseable)? Apakah sub masalah dapat didefinisikan? Jika ya, apakah solusinya sudah dapat ditemukan untuk sub masalah tersebut? Apakah solusi yang dihasilkan tetap menjadikan proses bisnis yang efektif? Apakah disain model dapat dibuat?
Carry Out the Plan 35
Apakah solusi tersebut sesuai dengan perencanaan? Apakah kode yang dibuat sesuai dengan disain model? Apakah tiap bagian komponen solusi sudah terbukti benar? Apakah disain dan kode sudah di-review? Apakah algoritma kode sudah benar?
Examine the Result 36
Apakah memungkinkan untuk dilakukan pengujian terhadap tiap komponen dari solusi? Apakah ada strategi pengujian yang digunakan? Apakah solusi yang dihasilkan sesuai dengan data, fungsi, dan fitur yang dibutuhkan? Apakah perangkat lunak sudah divalidasi oleh semua pihak yang membutuhkan?
Hooker’s General Principles 37
1. The Reason It All Exists 2. KIS (Keep It Simple) 3. Maintain the Vision 4. What You Produce, Others Will Consume 5. Be Open to the Future 6. Plan Ahead for Reuse 7. Think!
38
The Chaos Report (Standish Group) on IT Project survey
Successful: delivered on time, on budget, with required features and functions Challenged: late, over budgeted, and/or with less than the required features and functions Failed: cancelled prior to completion or delivered and never used.
Source: http://www.pmhut.com/the-chaos-report-2009-on-it-project-failure
Terima Kasih … 39
Pertanyaan & Jawaban