Pengenalan Rekayasa Perangkat Lunak
Pertemuan II
Konsep Dasar Rekayasa
Perangkat Lunak
• Ilmu yang mempelajari tehnik pembuatan software yang baik dengan pendekatan
tehnik ( Engineering ap-proach)
• Ada beberapa cara / fase 1. Fase Perencanaan
2. Fase Pengembangan 3. Fase Pemeliharaan
Software Engineering ?
• Tantangan ?
àmengembangkan hardware komputer yang dapat mengurangi biaya pengolahan dan
penyimpanan data
àmengurangi biaya dan memperbaiki kualitas solusi berbasis komputer
• Solusi ?
àSoft. merupakan faktor kunci dlm keberhasilan suatu usaha, soft. dpt membedakan satu
perusahaan dari perus ahan saingannya
Soft. and Soft. Engineering
• Tahun-tahun awal : - Batch orientation
- Limmited distribution - Custummer software
Evolusi Software
1950 1960 1970 1980 1990 2000
• Era ke-2 : Era ke-3 :
- Multi user - Distibuted system
- Real time - Embedded intellegence - Database - Low cost hardware
- Consumer infact
• Era ke-4 :
- Expert system - A I Machine
- Parallel architecture
Evolusi Software
• Instruksi
Atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan.
• Struktur data
Yang memungkinkan program memanipulasi informasi
• Dokumen
Yang menggambarkan operasi dan penggunaan
Arti Software ?
• Software merupakan elemen sistem logik dan bukan elemen sistem fisik seperti
hardware
• Elemen itu tidak aus, tetapi bisa rusak.
• Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardware
• Software itu tidak bisa dirakit.
Sifat & Karakteristik Software ?
• Bentuk Bahasa
• Bentuk Translator
• Bentuk Mesin :
Komponen Software ?
LANGUAGE FORM
TRANSLATOR
MACHINE LANGUAGE
HIGH LEVEL MIDDLE LEVEL
1. Sistem Software
2. Real Time Software
Perlu dicatat bahwa istilah real time berbeda dari istilah interactive atau time sharing. Sistem real time harus memberikan respons pada waktu yang ditentukan, sedangkan pada sistem interactive atau time sharing respons time biasanya melebihi batas waktu yang ditentukan tanpa merusak hasil.
3. Business Software
4. Engineering and Sciencetific Sofware 5. Emdebed Software
6. PC Software
7. Artificial Intelegent Software
Aplikasi Software ?
• Krisis Software ?
• Masalah ?
• Penyebab ?
Model Software Engineering
à Fritz Badar (soft. yg ekonomis), terdiri dari 3 elemen : 1. Metode
2. Peralatan 3. Prosedur
Aplikasi Software ? (cont.)
Software engineering paradigma (ada 3) : 1. Classic Life Cycle Paradigma
Model Software Engineering (cont.)
SISTEM ENGINEERING ANALYS
DESIGN
CODE
TESTING
MAINTENANCE
2. Prototype Paradigma
Model Software Engineering (cont.)
REQUIMENTS GATHERING
"QUICK DESIGN"
BUILD PROTOTYPE
EVALUAT ED AND REFINEMENTS
ENGINEER PRODUCT
3. Fourth Generati on Technique Paradi gma
Model Software Engineering (cont.)
REQUIMENTS GATHERING
"DESIGN STRATEGICS"
IMPLEMENTATION USING 4GT PRODUCT
4. Model Kombinasi
Model Software Engineering (cont.)
REQUIMENTS GATHERINGS
PROTOTYPING
PROTOTYPE APPLY
4GL
EVALUATE
ENGINEER PRODUCT
CLASSIC LIFE CYCLE DAPAT LANGSUNG JIKA PENDEKATANNYA JELAS
• Gas Oksigen dapat dibuat oleh : - Sebuah Laboratorium
- Industri Pabrik Gas
• Perangkat lunak dapat dikembangkan oleh : - Sekelompok programmer
- Sebuah organisasi yang
mengembangkannya melalui rekayasa
• Apa yang membedakan antara keduanya ?
Sebuah Analogi
• Apa perbedaan antara software engineering (rekayasa perangkat lunak) dengan
computer science (ilmu komputer) ?
Berhubungan dengan :
Computer Science Software Engineering
- Teori-teori
- Dasar-dasar Ilmu Komputer
- Pengetahuan praktis untuk pengembangan
Perbedaan SE & CS
• Comp. Science terkait dgn teori-teori &
dasar-dasar dari ilmu komputer, sedangkan software engineering terkait pada
pengetahuan & penyerahan perangkat lunak yg berguna.
• Teori-teori ilmu komputer biasanya tidak cukup digunakan sebagai pendukung yang lengkap dari software engineering.
Perbedaan SE & CS (cont.)
• Masalahnya adalah kompleksitas
• Banyak dibutuhkan sumber-sumber, tetapi kuncinya adalah ukuran (size) :
- UNIX berisi 4 juta lines of code
- Windows 2000 berisi 108 lines of code dikerjakan oleh Tim dengan 1400 orang
Soft. Engineering adalah bagaimana
mengelola komplesitas tsb. dan dpt bekerja
Mengapa perlu Soft. Engineering
• Bagaimana bekerja dalam suatu proyek skala besar, kompleks & melibatkan banyak orang ? 1. Spesifikasi Kebutuhan ( requirement
specification )
2. Analisis ( anlysis )
3. Perancangan ( design )
4. Implementasi & Pengujian ( implementastion &
testing )
5. Perawatan & Up-grade ( maintenance &
upgrade )
Tahap-tahap Proses Pengembangan Soft.
Tanggung Jaw ab
Profesional Dan Etika
Mengapa Perlu Kode Etika Profesi TI ?
• Kita memiliki kebanggaan pada pekerjaan kita dan ingin pekerjaan kita diberikan pengakuan dan rasa hormat.
• Kita ingin melindungi mata pencaharian kita.
• Komputer memiliki potensi untuk menghasilkan manfaat yang positif maupun dampak yang
negatif atau mempengaruhi ke arah yang positif
maupun negatif.
Etika Profesional Komputer
• Secara umum, perilaku etis yang diharapkan dari para profesional komputer:
• Jujur dan adil; memegang kerahasiaan; memelihara kompetensi
• profesi; memahami hukum yang terkait; menghargai dan
• melindungi kerahasiaan pribadi; menghindari merugikan pihak
• lain; dan menghargai hak milik.
• Berbagai contoh kode etik profesi komputer:
• IEEE-CS/ACM (Software Engineering Code of Ethics and Professional Practice) (http://www.acm.org/about/se-code)
• ACM Code of Ethics and Professional Conduct (http://www.acm.org/about/code-of-ethics)
IEEE-CS/ACM Code of Ethi cs
and Professional Practice IEEE-CS/ACM Code of Ethi cs and Professional Practice
• Dikembangkan berdasarkan 8 prinsip:
1. Kepentingan umum 2. Klien dan atasan 3. Produk
4. Keputusan 5. Manajemen 6. Profesi
7. Rekan sejawat 8. Diri sendiri
1. Kepentingan Umum
• Pengembang sistem seharusnya bertindak konsisten dengan kepentingan umum
• Menyetujui sistem jika memiliki keyakinan yang kuat bahwa sistem aman, memenuhi standar, melewati berbagai pengujian dan tidak mengurangi kualitas hidup, privasi, atau mengganggu lingkungan .
• Menyingkap setiap bahaya potensial pada pengguna .
• Adil dan hindari kecurangan dalam setiap
2. Klien dan Atasan
• Pengembang sistem seharusnya bertindak
dalam cara yang memberikan perhatian terbesar pada klien atau atasannya, konsisten dengan
kepentingan umum.
• Jujur akan keterbatasan pengetahuan dan pengalamannya .
• Simpan setiap informasi rahasia, konsisten
dengan kepent ingan umum dan hukum.
3. Produk
• Pengembang sistem seharusnya meyakinkan bahwa
produknya dan segala perubahannya memenuhi standar profesional tertinggi yang mungkin.
• Berupaya untuk mutu yang tinggi, biaya yang wajar, dan jadwal yang beralasan .
• Lakukan pengujian, penghapusan bug, dan
pengkajian yang memadai terhadap sistem dan dokumen yang terkait.
• Hadapi setiap perawatan sistem dengan
4. Keputusan
• Pengembang sistem seharusnya memelihara
integritas dan independens inya dalam membuat suatu keputusan profesional
• Tidak terikat dengan praktik keuangan yang keliru.
• Perlihatkan ke semua pihak yang terkait,
konflik kepentingan yang terjadi yang tidak
dapat dibiarkan begitu saja.
5. Manajemen
• Manajer/pemimpin pengembanga n sistem
seharusnya mengikuti dan mendorong pendekatan etis terhadap manajemen pengembangan sistem.
• Yakini bahwa para pengembang sistem telah diberitahukan standar-standar yang akan
digunakan.
• Memberikan honor yang adil dan memadai.
• Tidak memberikan sanksi kepada siapapun yang
6. Profesi
• Pengembang sistem seharusnya menaikkan integritas dan reputasinya konsisten dengan kepentingan umum.
• Memasyarakatkan pengetahuan umumakan pengembangan sistem.
• Akurat dalam menyatakan karakteristik perangkat lunak yang dikerjakannya .
• Bertanggung jawab untuk mendapatkan ,
memperbaiki , dan melaporkan kesalahan dalam sistem dan dokumentasi yang terkait yang sedang dikerjakannya .
7. Rekan Sejawat
• Pengembang sistem seharusnya adil dan
memberi dukungan kepada rekan sejawatnya.
• Hargai pekerjaan orang lain
• Berikan pemahaman yang adil akan
pendapat, perhatian, dan keberatan dari rekan sejawat.
• Untuk hal-hal di luar kompetensi yang
dimiliki, minta pendapat dari profesional yang
8. Diri Sendiri
• Pengembang sistem seharusnya belajar terus terkait dengan praktik profesinya dan seharusnya mendukung pendekatan etis dalam praktik profesinya.
• Menambah pengetahuannya
• Meningkatkan kemampuannya dalam
mengembangkan sistem berkualitas yang aman, andal, dan berguna
• Meningkatkan kemampuannya untuk menghasilkan dokumentasi yang akurat, informatif, dan ditulis
dengan baik.
Pedoman Tambahan Untuk Profesional TI
• Pahami apa itu keberhasilan
• Pengembang (terutama) dan pengguna sistem komputer harus melihat keberhasilan sebagai sesuatu yang melampaui
sekedar penulisan kode program
• Kembangkan untuk pengguna
• Untuk menghasilkan sistem yang berguna dan aman,
pengguna harus dilibatkan dalam tahap-tahap pengembangan sistem.
• Rencanakan dan jadwalkan secara seksama
• Memperhatikan kedetilan, lakukan dengan seksama dan hati-
Pedoman Tambahan Untuk Profesional TI (cont.)
• Mengkaji penggunaan kembali perangkat lunak
• Jangan mengasumsikan bahwa perangkat lunak
yang sudah ada aman dan dapat digunakan kembali
• Melindungi
• Perlu jaminan yang meyakinkan akan keamanan sistem
• Jujur
• Jujur dan terbuka mengenai kemampuan ,
keamanan , dan keterbatasan dari perangkat lunak
Bagaimana MenghadapiMasalah Profesional yang terkait Etika?
• Brainstorming
• Daftarkan risiko, isu, masalah, dan akibat yang ada
• Daftarkan pihak-pihak yang terlibat
• Daftarkan tindakan/perbuatan yang mungkin
• Analisis
• Identifikasi tanggung jawab dari pembuat keputusan
• Identifikasi hak-hak dari pihak-pihak yang terlibat
• Pertimbangk an dampak dari pilihan-pilihan tindakan terhadap pihak- pihak tersebut
• Temukan pedoman dalam kode etik profesi anda (jika ada).
Kategori kan tiap pilihan tindakan sebagai “wajib secara etis”, “dilarang