1. What and Why
1. What and Why
Sofware Engineering ?
Sofware Engineering ?
I. INTRODUCTION TO
I. INTRODUCTION TO
SOFTWARE
SOFTWARE
ENGINEERING
ENGINEERING
1.1 Software Engineering
1.1 Software Engineering
(
(
Rekayasa Perangkat Lunak
Rekayasa Perangkat Lunak
)
)
EkonomiEkonomi dari semua bangsa-bangsa maju dari semua bangsa-bangsa maju
tergantung pada perangkat lunak tergantung pada perangkat lunak
Semakin banyak Semakin banyak sistem yang dikendalikansistem yang dikendalikan oleh oleh
perangkat lunak perangkat lunak
Rekayasa Perangkat Lunak mempunyai Rekayasa Perangkat Lunak mempunyai kaitan kaitan
dengan teori, metode, dan perkakas (tools)
dengan teori, metode, dan perkakas (tools) untuk untuk pengembangan perangkat lunak profesional
pengembangan perangkat lunak profesional
Rekayasa Perangkat Lunak sudah menjadi bagian Rekayasa Perangkat Lunak sudah menjadi bagian
yang penting untuk menghadirkan
yang penting untuk menghadirkan pendapatan pendapatan nasional pada semua negara maju
1.2 Software Costs
1.2 Software Costs
(
(
Biaya-Biaya Perangkat Lunak
Biaya-Biaya Perangkat Lunak
)
)
Biaya-biaya perangkat lunak sering Biaya-biaya perangkat lunak sering mendominasi mendominasi
biaya-biaya sistem
biaya-biaya sistem. Biaya-biaya perangkat lunak . Biaya-biaya perangkat lunak pada suatu PC sering
pada suatu PC sering lebih besarlebih besar dari harga dari harga perangkat keras.
perangkat keras.
Biaya-biaya Biaya-biaya perawatan perangkat lunak lebih besarperawatan perangkat lunak lebih besar
dibanding dengan pengembangan perangkat dibanding dengan pengembangan perangkat
lunak, karena sistem dengan masa pakai lama, lunak, karena sistem dengan masa pakai lama,
biaya pemeliharaan mungkin beberapa kali biaya pemeliharaan mungkin beberapa kali
biaya-biaya pengembangan. biaya pengembangan.
Rekayasa Perangkat Lunak mempunyai kaitan Rekayasa Perangkat Lunak mempunyai kaitan
dengan biaya-biaya pengembangan perangkat dengan biaya-biaya pengembangan perangkat
lunak yang
1.3 FAQs about Software
1.3 FAQs about Software
Engineering
Engineering
(Pertanyaan-pertanyaan
(Pertanyaan-pertanyaan
Seputar SE)
Seputar SE)
Apakah
Apakah
software
software
itu?
itu?
Apakah
Apakah
software engineering
software engineering
itu?
itu?
Apa perbedaan antara
Apa perbedaan antara
software engineering
software engineering
dan
dan
computer science
computer science
?
?
Apa perbedaan antara
Apa perbedaan antara
software engineering
software engineering
dan
dan
system engineering
system engineering
?
?
Apakah
Apakah
software process
software process
itu?
itu?
FAQs about Software Engineering
FAQs about Software Engineering
(Lanjutan)
(Lanjutan)
Apa saja yang merupakan Apa saja yang merupakan
biaya-biaya rekayasa perangkat lunak
biaya-biaya rekayasa perangkat lunak itu?itu?
Apa saja Apa saja metode rekayasa perangkat lunak metode rekayasa perangkat lunak itu?itu? Apakah Apakah CASECASE (Computer-Aided Software (Computer-Aided Software
Engineering) itu? Engineering) itu?
Apa saja Apa saja atribut dari perangkat lunak atribut dari perangkat lunak yang baik?yang baik? Apakah yang merupakan Apakah yang merupakan tantangan kunci tantangan kunci dalam dalam
menghadapi rekayasa perangkat lunak? menghadapi rekayasa perangkat lunak?
What is software?
What is software?
perintahperintah (program komputer) yang bila dieksekusi (program komputer) yang bila dieksekusi
memberikan fungsi dan unjuk kerja seperti yang memberikan fungsi dan unjuk kerja seperti yang
diinginkan; diinginkan;
struktur datastruktur data yang memungkinkan program yang memungkinkan program
memanipulasi informasi secara proporsional; dan memanipulasi informasi secara proporsional; dan
dokumendokumen yang menggambarkan operasi dan yang menggambarkan operasi dan
kegunaan program. kegunaan program.
Produk Perangkat lunak mungkin :Produk Perangkat lunak mungkin :
– GenericGeneric ( (UmumUmum) - yang dikembangkan untuk dijual ke ) - yang dikembangkan untuk dijual ke bidang pelanggan berbeda;
bidang pelanggan berbeda;
– Bespoke/CustomBespoke/Custom ( (PesananPesanan) - dikembangkan untuk ) - dikembangkan untuk pelanggan tunggal menurut spesifikasi mereka.
What is software engineering?
What is software engineering?
Software engineering
Software engineering
adalah suatu disiplin
adalah suatu disiplin
rekayasa (rancang-bangun) yang terkait
rekayasa (rancang-bangun) yang terkait
dengan semua
dengan semua
aspek produksi
aspek produksi
perangkat
perangkat
lunak.
lunak.
Engineer perangkat lunak mengadopsi
Engineer perangkat lunak mengadopsi
pendekatan
pendekatan
sistematis
sistematis
dan
dan
terorganisir
terorganisir
untuk
untuk
pekerjaan mereka dan menggunakan
pekerjaan mereka dan menggunakan
teknik
teknik
dan tools
dan tools
yang disesuaikan dengan masalah
yang disesuaikan dengan masalah
yang dihadapi untuk dipecahkan, batasan
yang dihadapi untuk dipecahkan, batasan
pengembangan, dan sumber daya tersedia.
IEEE Definition
IEEE Definition
(IEEE = Institute of Electrical and Electronic Engineers)
(IEEE = Institute of Electrical and Electronic Engineers)
Software engineering adalah:
Software engineering adalah:
2.
2.
Aplikasi
Aplikasi
dari sebuah pendekatan yang
dari sebuah pendekatan yang
bersifat kuantifiabel, disiplin, dan
bersifat kuantifiabel, disiplin, dan
sistematis bagi pengembangan, operasi,
sistematis bagi pengembangan, operasi,
dan pemeliharaan perangkat lunak.
dan pemeliharaan perangkat lunak.
3.
3.
Studi
Studi
tentang pendekatan-pendekatan
tentang pendekatan-pendekatan
seperti pada (
seperti pada (
1
1
)
)
Bidang Penelitian Software Engineering
Bidang Penelitian Software Engineering
mengacu pada kedua hal tsb.
What is the difference between
What is the difference between
software
software
engineering
engineering
and
and
computer science
computer science
?
?
Computer science
Computer science
mempunyai kaitan dengan
mempunyai kaitan dengan
theory and fundamentals
theory and fundamentals
;
;
software engineering
software engineering
mempunyai kaitan dengan
mempunyai kaitan dengan
practicalities
practicalities
of
of
developing and delivering useful software
developing and delivering useful software
.
.
Computer science
Computer science
sekarang ini tidak cukup
sekarang ini tidak cukup
lengkap untuk bertindak sebagai tiang
lengkap untuk bertindak sebagai tiang
penyokong
What is the difference between
What is the difference between
software
software
engineering
engineering
and
and
system engineering
system engineering
?
?
System engineeringSystem engineering mempunyai kaitan dengan mempunyai kaitan dengan
semua aspek pengembangan sistem semua aspek pengembangan sistem
berbasis-komputer
komputer yang mencakup perangkat keras, yang mencakup perangkat keras,
perangkat lunak ,dan yang terkait dengan proses perangkat lunak ,dan yang terkait dengan proses
bisnis. bisnis.
Software engineeringSoftware engineering berkonsentrasi pada komponen berkonsentrasi pada komponen
perangkat lunak
perangkat lunak sistem yang lebih besar. sistem yang lebih besar.
System engineersSystem engineers mencakup spesifikasi sistem, mencakup spesifikasi sistem,
desain arsitektur, pengintegrasian, dan desain arsitektur, pengintegrasian, dan
penyebaran. penyebaran.
What is a software process?
What is a software process?
Software processSoftware process merupakan himpunan merupakan himpunan aktivitas aktivitas
tujuan pengembangan atau evolusi
tujuan pengembangan atau evolusi perangkat perangkat lunak.
lunak.
Aktivitas umum dalam semua proses perangkat Aktivitas umum dalam semua proses perangkat
lunak adalah: lunak adalah:
– SpecificationSpecification (Spesifikasi)- hal-hal yang diperlukan oleh (Spesifikasi)- hal-hal yang diperlukan oleh sistem dan batasan pengembangannya.
sistem dan batasan pengembangannya.
– DevelopmentDevelopment (Pengembangan)- produksi sistem perangkat (Pengembangan)- produksi sistem perangkat lunak.
lunak.
– ValidationValidation (Pengesahan) - pemeriksaan perangkat lunak (Pengesahan) - pemeriksaan perangkat lunak sesuai dengan keinginan pelanggan.
sesuai dengan keinginan pelanggan.
– EvolutionEvolution (Evolusi) - pengubahan perangkat lunak sesuai (Evolusi) - pengubahan perangkat lunak sesuai dengan permintaan pelanggan.
What is
What is
a software process model?
a software process model?
Software process model merupakan Software process model merupakan representasirepresentasi
sederhana suatu
sederhana suatu software processsoftware process, yang , yang
diperkenalkan dari suatu perspektif spesifik. diperkenalkan dari suatu perspektif spesifik.
Contoh perspektif proses adalahContoh perspektif proses adalah
– Workflow Perspektif -Workflow Perspektif - Urutan aktivitas Urutan aktivitas
– Data-Flow PerspektifData-Flow Perspektif - Arus Informasi - Arus Informasi
– Role/Action Perspektif –Role/Action Perspektif – Peran dan Aksi Peran dan Aksi
Proses umum modelProses umum model
– WaterfallWaterfall
– Evolutionary developmentEvolutionary development – Formal transformationFormal transformation
What are the costs of software
What are the costs of software
engineering?
engineering?
Perkiraan kasar adalah 60% untuk biaya
pengembangan, sedangkan 40% untuk biaya
pengujian. Untuk custom sofware, biaya-biaya evolusi sering melebihi biaya-biaya pengembangan.
Biaya-biaya berubah-ubah tergantung pada jenis
sistem yang dikembangkan dan kebutuhan atribut sistem seperti kehandalan dan reliabilitas sistem.
Distribusi biaya-biaya tergantung pada model
What are software
What are software
engineering methods?
engineering methods?
Software engineering methodsSoftware engineering methods merupakan merupakan pendekatan terstruktur
pendekatan terstruktur dalam pengembangan dalam pengembangan
perangkat lunak yang meliputi model sistem, notasi, perangkat lunak yang meliputi model sistem, notasi,
aturan, desain
aturan, desain advice,advice, dan panduan proses. dan panduan proses.
Model Descriptions Model Descriptions (Uraian Model)(Uraian Model)
Uraian tentang model grafis yang harus diproduksi. Uraian tentang model grafis yang harus diproduksi.
Rules Rules (Aturan-aturan)(Aturan-aturan)
Batasan yang berlaku pada model sistem. Batasan yang berlaku pada model sistem.
RecommendationsRecommendations (Rekomendasi) (Rekomendasi)
Rekomendasi untuk praktik desain yang baik. Rekomendasi untuk praktik desain yang baik.
Process guidanceProcess guidance (Panduan Proses) (Panduan Proses)
Aktivitas yang mengikuti. Aktivitas yang mengikuti.
What is CASE
What is CASE
(Computer-
(Computer-Aided Software Engineering)
Aided Software Engineering)
?
?
CASE CASE adalah adalah System softwareSystem software yang digunakan untuk yang digunakan untuk
mendukung otomatisasi aktivitas proses
mendukung otomatisasi aktivitas proses perangkat lunak. perangkat lunak. CASE sering digunakan untuk
CASE sering digunakan untuk mendukung metodemendukung metode..
Upper-CaseUpper-Case
Tools untuk mendukung aktivitas proses
Tools untuk mendukung aktivitas proses awal kebutuhan dan awal kebutuhan dan desain.
desain.
Lower-CaseLower-Case
Tools untuk mendukung aktivitas selanjutnya seperti
Tools untuk mendukung aktivitas selanjutnya seperti programming
What are the attributes of
What are the attributes of
good software?
good software?
Software perlu memiliki fungsi kebutuhan dan kemampuan yang
Software perlu memiliki fungsi kebutuhan dan kemampuan yang
diperlukan oleh pemakai dan harus
diperlukan oleh pemakai dan harus maintainable, dependable , maintainable, dependable , efficient,
efficient, dandan usable. usable.
MaintainabilityMaintainability
Software harus dapat ditingkatkan dan diubah sesuai dengan
Software harus dapat ditingkatkan dan diubah sesuai dengan
kebutuhan.
kebutuhan.
DependabilityDependability
Software harus dapat dipercaya (trustworthy).
Software harus dapat dipercaya (trustworthy).
EfficiencyEfficiency
Software seharusnya tidak membuat penggunaan sumber
Software seharusnya tidak membuat penggunaan sumber
daya sistem menjadi boros.
daya sistem menjadi boros.
UsabilityUsability
Software harus dapat dipakai oleh para pemakai yang
Software harus dapat dipakai oleh para pemakai yang
direncanakan.
What are the key challenges
What are the key challenges
facing software engineering?
facing software engineering?
Tantangan
Tantangan : mengatasi sistem warisan ( : mengatasi sistem warisan (legacy systemslegacy systems), ), meningkatnya heterogenitas (
meningkatnya heterogenitas (HeterogenityHeterogenity) sistem, dan ) sistem, dan tuntutan permintaan percepatan penyerahan(
tuntutan permintaan percepatan penyerahan(DeliveryDelivery)) sistem. sistem.
Legacy systemsLegacy systems
Sistem warisan
Sistem warisan (sistem lama) harus dirawat dan dibaharui. (sistem lama) harus dirawat dan dibaharui.
HeterogenityHeterogenity
Sistem terdistribusikan dalam bentuk
Sistem terdistribusikan dalam bentuk campuran antara campuran antara perangkat keras dan lunak.
perangkat keras dan lunak.
DeliveryDelivery
Adanya peningkatan
Adanya peningkatan tekanantekanan untuk penyerahan perangkat untuk penyerahan perangkat lunak lebih cepat.
1.4 Professional and
1.4 Professional and
Ethical Responsibility
Ethical Responsibility
Software engineering
Software engineering
melibatkan tanggung-
melibatkan
tanggung-jawab
jawab
lebih luas
lebih luas
dibanding hanya aplikasi
dibanding hanya aplikasi
kecakapan
kecakapan
teknis
teknis
.
.
Software engineer
Software engineer
harus bertindak secara
harus bertindak secara
etis, bertanggung jawab, dan jujur
etis, bertanggung jawab, dan jujur
jika
jika
mereka diharapkan untuk terhormat sebagai
mereka diharapkan untuk terhormat sebagai
seorang profesional.
seorang profesional.
Perilaku etis tidak hanya sekedar
Perilaku etis tidak hanya sekedar
menegakkan hukum saja tetapi harus lebih
menegakkan hukum saja tetapi harus lebih
dari itu (lih. hal. berikutnya).
Issues of professional
Issues of professional
responsibility
responsibility
ConfidentialityConfidentiality (Kerahasiaan) (Kerahasiaan)
Engineer
Engineer seharusnya seharusnya menghormati kerahasiaanmenghormati kerahasiaan dari dari klien mereka tanpa tergantung dengan ya atau
klien mereka tanpa tergantung dengan ya atau tidaknya suatu persetujuan kerahasiaan formal tidaknya suatu persetujuan kerahasiaan formal
ditandatangani. ditandatangani.
CompetenceCompetence (Kemampuan) (Kemampuan)
Engineer
Engineer mestinya tidak salah menggambarkan mestinya tidak salah menggambarkan tingkatan kemampuannya. Mereka mestinya tidak tingkatan kemampuannya. Mereka mestinya tidak
dengan sadar menerima pekerjaan yang
dengan sadar menerima pekerjaan yang di luar di luar kemampuannya.
Issues of professional
Issues of professional
responsibility (lanjutan)
responsibility (lanjutan)
Intellectual property rightsIntellectual property rights (Hak milik intelektual) (Hak milik intelektual)
Engineers harus
Engineers harus sadar akan hukum lokalsadar akan hukum lokal yang yang mengatur penggunaan dari properti intelektual mengatur penggunaan dari properti intelektual seperti hak paten, hak cipta, dll. Mereka harus seperti hak paten, hak cipta, dll. Mereka harus seksama untuk memastikan bahwa intelektual seksama untuk memastikan bahwa intelektual
properti klien harus dilindungi. properti klien harus dilindungi.
Computer misuseComputer misuse (Penyalahgunaan Komputer) (Penyalahgunaan Komputer)
Software engineers mestinya tidak menggunakan Software engineers mestinya tidak menggunakan
kecakapan teknis mereka untuk
kecakapan teknis mereka untuk menyalahgunakan menyalahgunakan komputer orang lain
komputer orang lain. Penyalahgunaan komputer . Penyalahgunaan komputer
dari yang relatif sepele (misal untuk bermain game) dari yang relatif sepele (misal untuk bermain game)
sampai yang serius (pemberian virus). sampai yang serius (pemberian virus).
*** ***