INTRODUCTION TO
SOFTWARE ENGINEERING
This presentation is revised by HA, STMIK, 2013
Mata Kuliah Testing & Implementasi Sistem Program Studi Sistem Informasi 2013/2014 STMIK Dumai Pertemuan 1
--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
Apa itu Perangkat Lunak?
 Perangkat Lunak (Software) adalah:
1. Instruksi-instruksi (program komputer) yang pada
saat dijalankan akan menyajikan fitur dan fungsi yang diinginkan, dan dengan performa yang baik;
2. Struktur data yang memungkinkan program untuk
mengatur informasi di dalamnya;
3. Dokumentasi yang mendeskripsikan cara
menggunakan dan fungsi dari program.
Kurva Ideal vs. Kurva Sebenarnya
5
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’?
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
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
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
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.
Lapisan Teknologi
18
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
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
)
Framework Activities
24  Communication  Planning  Modeling ✤ Analysis of requirements ✤ Design  Construction ✤ Code generation ✤ Testing  DeploymentFramework 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
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
Framework Activities
29
 Kelima “generic framework activities” ini dapat
digunakan di banyak jenis aplikasi perangkat lunak  Namun implementasi detail tiap aktifitasnya bisa
Umbrella Activities
30
 Software project management  Formal technical reviews
 Software quality assurance
 Software configuration management
 Work product preparation and production  Reusability management
 Measurement
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?
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!
The Chaos Report (Standish Group)
on IT Project survey
38
 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.
Terima Kasih …
39