Anda di halaman 1dari 37

BAB I

INTRODUKSI
REKAYASA PERANGKAT LUNAK EDISI KE-9
IAN SOMMERVILLE LANCASTER UNIVERSITY
ADDISON – WESLEY 2011

DITERJEMAHKAN OLEH:

OLIVER MANAHAN PASARIBU,S.T.


JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS BRAWIJAYA
MALANG 2018
Saat ini sedang bekerja sebagai Tenaga Harian Lepas/Karyawan Honorer Bagian Adm. Keuangan dan Asset
Sekretariat Daerah Kota Pematangsiantar Propinsi Sumatera Utara Republik Indonesia
2 Bab I  Introduksi

Tujuan Pembelajaran

Tujuan pembelajaran bab ini adalah untuk memperkenalkan disiplin ilmu Rekayasa Perangkat Lunak dan
menyediakan suatu kerangka kerja bagi para mahasiswa yang mengambil jurusan ilmu komputer atau teknik
informatika untuk dapat memahami seluruh bagian buku ini. Setelah selesai membaca bab ini, para mahasiswa
diharapkan akan dapat:

 Memahami apa yang dimaksud dengan Rekayasa Perangkat Lunak dan mengapa
disiplin ilmu rekayasa perangkat lunak saat ini menjadi sesuatu yang penting.
 Memahami bahwa untuk mengembangan berbagai jenis sistem perangkat lunak yang
berbeda memerlukan teknik rekayasa perangkat lunak yang berbeda pula.
 Memahami masalah-masalah etika dan profesionalisme yang penting bagi para
insinyur perangkat lunak.
 Mahasiswa diperkenalkan kepada tiga jenis sistem yang berasal dari jenis yang berbeda
yang akan dipergunakan sebagai contoh-contoh di dalam buku ini.

Struktur Konten

1.1 Pengembangan Perangkat Lunak Profesional


1.2 Etika Rekayasa Perangkat Lunak
1.3 Studi Kasus
3 Rekayasa Perangkat Lunak

Kita tidak dapat hidup dalam dunia yang modern tanpa perangkat lunak. Seluruh infrastruktur nasional
dan utilitasnya dikendalikan dengan menggunakan sistem komputer, dan hampir semua produk memerlukan
perangkat komputer dan juga suatu perangkat lunak untuk mengendalikannya. Proses manufaktur dan distribusi
industrial pun seluruhnya terkomputerisasi, sebagai contoh adalah suatu sistem keuangan atau sistem finansial.
Demkian juga dalam bidang hiburan yang mencakup industri musik, permainan komputer, perangkat TV,
perangkat lunak digunakan secara intensif.

Sistem perangkat lunak bersifat abstrak dan tangible. Sistem perangkat lunak tidak dibatasi oleh sifat
material, hukum fisika dan juga proses manufakturing. Secara sederhana dapat dikatakan bahwa sifat alami tidak
membatasi potensi suatu perangkat lunak. Meskipun demikian, ketertinggalan batasan fisik akan mengakibatkan
suatu sistem perangkat lunak menjadi sangat rumit, susah untuk dipahami dan memerlukan biaya yang tinggi.

Ada beragam jenis sistem perangkat lunak yang berbeda, mulai dari sistem tertanam (embedded) yang
sederhana hingga yang rumit di dunia sistem informasi yang luas. Tidak ada gunanya untuk melihat notasi, metode
atau teknik universal untuk rekayasa perangkat lunak, karena jenis perangkat lunak yang berbeda memerlukan
pendekatan yang berbeda-beda pula. Pengembangan suatu sistem informasi secara organisasional sangat
berbeda dibandingkan dengan pengembangan sebuah pengendali instrument sins. Kedua sistem ini pun tidak
memiliki persamaan dengan suatu permainan komputer yang intensif. Semua aplikasi memerlukan rekayasa
perangkat lunak; dan tidak semuanya menggunakan teknik rekayasa perangkat lunak yang sama.

Ada banyak laporan mengenai proyek perangkat lunak yang mengalami kerusakan atau mengalami
kegagalan perangkat lunak atau software failures. Software Engineering menuai banyak kritik dan dianggap
kurang dapat untuk dimanfaatkan dalam pengembangan perangkat lunak modern. Meskipun demikian, dalam
pandangan penulis, banyak kegagalan perangkat lunak (software failure ) terjadi akibat dua faktor:

1. Bertambahnya permintaan. Saat suatu teknik rekayasa perangkat lunak yang baru menolong kita untuk
membangun sistem perangkat lunak yang lebih besar, yaitu sistem-sistem yang lebih kompleks,
permintaan akan berubah. Sistem-sistem harus dibangun dan di-antarkan lebih cepat; lebih besar,
bahkan memerlukan sistem-sistem yang lebih kompleks; Sistem-sistem harus memiliki kapabilitas-
kapabilitas baru yang di waktu lampau dipikirkan sebagai suatu hal yang mustahil untuk dilakukan.
Metode-metode rekayasa perangkat lunak yang ada saat ini tidak dapat memenuhi tuntutan ini, oleh
sebab itu diperlukan teknik-teknik rekaya perangkat lunak yang baru untuk memenuhi permintaan yang
semakin meningkat.
4 Bab I  Introduksi

2. Tingkat ekspektasi yang rendah. Aktivitas menulis progam komputer itu relatif mudah tanpa
menggunakan metode dan teknik rekaya perangkat lunak. Banyak perusahaan telah terbawa ke dalam
pengembangan perangkat lunak saat produk dan jasanya mengalami perkembangan. Mereka tidak benar-
benar menggunakan metode-metode standar rakayasa perangkat lunak dalam pekerjaannya sehari-hari.
Sebagai akibatnya, software atau perangkat lunak yang dihasilkan menjadi kurang handal (less reliable)
dan memerlukan biaya produksi yang lebih tinggi (more expensive / high cost). Oleh sebab itu diperlukan
pendidikan dan pelatihan rekayasa perangkat lunak (Software Engineering Education and Training) untuk
menyelesaikan masalah ini.

Software engineer dapat berbangga hati melihat tingkat pencapaian mereka dalam disiplin ilmu rekayasa
perangkat lunak. Tentu saja kita masih tetap mengalami masalah untuk mengembangkan perangkat lunak
yang lebih kompleks; tetapi tanpa disiplin ilmu software engineering atau rekayasa perangkat lunak maka
kita tidak mungkin dapat mengksplorasi ruang angkasa, kita tidak akan dapat menikmati layanan
komunikasi canggih seperti internet. Semua bentuk perjalanan akan menjadi lebih berbahaya dan mahal
harganya. Software Engineering telah memberikan kontribusi yang besar dan saya yakin bahwa kontribusi
itu akan menjadi lebih besar lagi di abad ke-21.

Sejarah Perkembangan Rekayasa Perangkat Lunak

Istilah ‘software engineering’ pertama kali dipergunakan pada tahun 1968 pada konferensi yang diadakan
untuk mendiskusikan apa yang selanjutnya disebut ‘software crisis’ atau krisis perangkat lunak (Naur dan
Randell, 1969). Kita tahu bahwa pendekatan individual terhadap pengembangan perangkat lunak pada
saat itu tidak diperuntukkan untuk memenuhi kebutuhan sistem perangkat lunak yang besar dan rumit.
Permasalahan yang timbul pada saat itu adalah sistem perangkat lunak bersifat unreliable, memerlukan
biaya yang tinggi melebihi dari yang diharapkan, dan delivery time yang selalu mengalami keterlambatan.

Selama dekade 1970 hingga 1980, berbagai jenis teknik dan metode baru untuk disiplin ilmu teknik yang
berhubungan dengan rekayasa perangkat lunak telah dikembangkan: seperti pemrograman terstruktur,
penyembunyian informasi dan pengembangan berorientasi objek. Alat bantu dan notasi-notasi standar
telah dikembangkan dan saat ini digunakan secara luas.

http://www.softwareengineering-9.com/web/history
5 Rekayasa Perangkat Lunak

1.1 Pengembangan Perangkat Lunak Profesional


Banyak orang menulis berbagai program. Orang-orang dalam dunia bisnis menulis program aplikasi
spreadsheet untuk menyederhanakan pekerjaan mereka, para insinyur dan ilmuwan menulis program
untuk mengolah data percobaan yang mereka peroleh, dan ada juga para hobbyist yang menulis program
karena hobby atau minat dan kesenangan saja. Bagaimanapun juga mayoritas software development
merupkan suatu aktivitas profesional dimana perangkat lunak dikembangkan untuk tujuan bisnis khusus,
diproduksi bersama perangkat lainnya atau sebagai produk perangkat lunak seperti sistem informasi,
sistem CAD (penggunaan komputer untuk membuat desain), dsb. Perangkat lunak profesional
dikembangkan untuk digunkan oleh seseorang yang berada jauh dari pengembang (Biasanya perangkat
lunak ini dikembangkan oleh tim dan bukan individual atau perseorangan). Perangkat lunak yang telah
dikembangkan ini akan dipertahankan dan akan mengalami perubahan-perubahan sepanjang masa
hidupnya.
Rekayasa perangkat lunak lebih dimaksudkan untuk mendukung pengembangan perangkat lunak
profesional dan bukan pemrograman pribadi. Rekayasa perangkat lunak menggunakan teknik-teknik yang
mendukung spesifikasi program, desain, dan evolusi; secara normal tidak ada satupun hal-hal yang baru
disebutkan berhubungan dengan pengembangan perangkat lunak. Untuk membantu pembaca
mendapatkan gambaran pemahaman yang lebih luas mengenai apa itu Software Engineering , penulis
telah membuat kesimpulan untuk menjawab pertanyaan-pertanyaan yang sering muncul dalam gambar
1.1.

Apa yang dimaksud dengan perangkat lunak? Program-program komputer dan dokumentasi yang
berhubungan. Produk-produk perangkat lunak dikembangkan
oleh pelanggan khusus atau dikembangkan untuk dipasarkan
secara umum.
Apa saja yang menjadi atribut perangkat lunak yang baik? Perangkat lunak yang baik seharusnya mampu melakukan
fungsionalitas dan unjuk kerja yang diharapkan oleh pengguna
Apa yang dimaksud dengan Rekayasa Perangkat Lunak atau Rekayasa perangkat lunak merupakan disiplin ilmu teknik yang
Software Engineering? berhubungan dengan semua aspek produksi perangkat lunak.
Apa saja yang termasuk aktivitas fundamental dalam software Spesifikasi perangkat lunak, pengembangan perangkat lunak,
engineering? validasi perangkat lunak, dan evolusi perangkat lunak.
Apakah perbedaan antara disiplin ilmu Rekayasa Perangkat Lunak Ilmu komputer memusatkan pada teori dan fundamental;
(Software Engineering) dan Ilmu Komputer (Computer Science) sedangkan rekayasa perangkat lunak berhubungan dengan
praktek pengembangan dan delivery suatu perangkat lunak yang
berguna.
6 Bab I  Introduksi

Apakah perbedaan antara disiplin ilmu Rekayasa Perangkat Lunak Teknik sistem berhubungan dengan semua aspek pengembangan
(Software Engineering) dan Rekayasa Sistem (System Engineering) sistem yang berdasarkan komputer, termasuk perangkat keras,
perangkat lunak dan rekayasa proses. Software engineering
adalah bagian dari sistem engineering.
Apa saja tantangan utama yang sedang dihadapi dalam bidang ilmu Berhubungan dengan peningkatan keragaman, permintaan untuk
Rekayasa Perangkat Lunak saat ini? mengurangi delivery time dan pengembangan software yang
terpercaya.
Apa saja komponen biaya yang timbul dalam bidang ilmu rekayasa Secara kasar, 60% dari total biaya yang dikeluarkan merupakan
perangkat lunak? biaya pengembangan, dan 40% biaya pengujian. Untuk software
yang dapat dikustomisasi biaya evolusi seringkali melebihi biaya
pengembangan.
Apa saja metode dan teknik yang digunakan dalam pengembangan Ada berbagai macam teknik-teknik yang sesuai untuk berbagai
rekayasa perangkat lunak? jenis sistem yang berbeda. Sebagai contoh, suatu permainan
komputer (games) dikembangkan menggunakan sederetan
prototipe; persyaratan keselamatan sistem kendali yang penting
memerlukan spesifikasi persyaratan yang lengkap dan dapat
dianalisis untuk dikembangkan. Kita tidak dapat menjustifikasi
bahwa suatu metode pengembangan lebih baik dari metode
lainnya.
Apa saja perbedaan yang disebabkan oleh keberadaan Web bagi Keberadaan layanan web telah menyebabkan ketersediaan
disiplin ilmu Rekayasa Perangkat Lunak? layanan perangkat lunak dan memberikan kemungkinan untuk
mengembangkan sistem berorientasi pada layanan yang
terdistribusi/ Pengembangan aiatem berbasis web telah
memberikan efek positif bagi kemajuan bahasa pemrograman
(programming language) dan penggunaan kembali perangkat
lunak (software reuse)

Gambar 1.1

Pertanyaan umum yang sering dikemukakan sehubungan dengan Disiplin Ilmu Rekayasa Perangkat
Lunak (Software Engineering)

Ada dua jenis produk perangkat lunak:

1. Produk generik; merupakan sistem perangkat lunak yang berdiri sendiri (standalone system),
diproduksi oleh suatu organisasi pengembangan perangkat lunak (software developer) dan
diperdagangkan secara bebas di pasaran kepada konsumen. Contoh: program perangkat lunak untuk
sebuah PC seperti aplikasi pengolah kata, aplikasi basis data, aplikasi spreadsheet dan untuk
manajemen proyek.
7 Rekayasa Perangkat Lunak

2. Produk yang dapat dikustomisasi/bespoke yaitu sistem yang dibuat berdasarkan pesanan untuk
memenuhi kebutuhan pelanggan tertentu. Contoh produk ini adalah perangkat lunak yang
disertakan dalam suatu sistem kendali perangkat elektronik tertentu atau sistem pengendali lalu
lintas udara. Dalam kedua sistem ini, sistem ditulis untuk mendukung proses bisnis tertentu.

Suatu perbedaan penting antara kedua jenias perangkat lunak ini adalah untuk produk generik organisasi
yang mengembangkan perangkat lunak yang menentukan spesifikasi perangkat lunak, sedangkan untuk
produk yang dapat dikustomisasi, spesifikasi biasanya dikembangkan dan dikendalikan oleh organisasi
yang membeli perangkat lunak tersebut. Para pengembang perangkat lunak harus bekerja sesuai dengan
spesifikasi persyaratan yang telah ditentukan.

Bagaimanapun juga, perbedaan antara kedua produk sistem ini menjadi semakin tidak jelas.
Semakin banyak sistem yang saat ini dikembangkan bersama dengan produk generik, yang selanjutnya
disesuaikan dengan persyaratan yang diinginkan pelanggan. Sistem Perencanaan Sumber Daya
Perusahaan /Enterprise Resources Planning ERP seperti SAP merupakan contoh terbaik untuk produk
generik. Sistem ini merupakan sistem besar dan kompleks yang diadaptasi oleh perusahaan dengan
menyertakan informasi tentang aturan-aturan dan proses-proses bisnis, laporan dan sebagainya.

Jika kita berbicara mengenai kualitas atau mutu dari suatu software profesional, kita harus
memprhitungkan bahwa perangkat lunak digunakan dan diubah oleh orang yang ‘terpisah jauh dari’’
pengembangnya. Oleh sebab itu kualitas bukan sekadar apa yang dapat dilakukan oleh software , tetapi
juga menyangkut perilaku perangkat lunak saat sedang melakukan eksekusi, struktur program, organisasi
program-program sistem dan dokumentasi. Ini merefleksikan apa yang disebut atribut non-fungsional
dari suatu perangkat lunak. Contoh atribut non-fungsional adalah response time query pengguna dan
kode program yang mudah untuk dipahami.

Sekumpulan atribut khusus yang diharapkan dari suatu sistem perangkat lunak, bergantung dari
aplikasinya. Suatu sistem perbankan harus memperhatikan faktor keamanan, suatu game komputer
interaktif harus responsif, suatu sistem switching jaringan telepon harus memiliki kehandalan, dan
sebagainya. Atribut atribut penting yang harus dimiliki oleh suatu sistem ditunjukkan dalam gambar 1.2.
8 Bab I  Introduksi

Karakteristik Produk Deskripsi


Maintainability Perangkat lunak seharusnya ditulis dalam suatu cara tertentu sedemikian
sehingga dapat berkembang untuk memenuhi perubahan kebutuhan
pelanggan. Ini mrupakan atribut penting karena perubahan perangkat
lunak merupakan hal yang pasti terjadi dalam lingkungan bisnis yang
berubah.
Dependability dan Security Dependabilitas perangkat lunak menyertakan sejumlah jangkauan
karakteristik seperti realibilitas atau kehandalan, keamanan atau sekuriti
dan keselamatan atau safety. Perangkat lunak yang depenable
seharusnya tidak menyebabkan kerusakan fisik atau ekonomi jika terjadi
kegagalan sistem/ system failure.
Efiesiensi Software seharusnya tidak menghasilkan sampah atau permasalahan
tambahan saat menggunakan sumber daya sistem seperti memori dan
siklus prosesor. Oleh sebab itu efisiensi juga menyangkut responsiveness,
waktu pemrosesan/ processing time, pemanfaatan memori dan
sebagainya.
Acceptability Software harus dapat diterima oleh berbagai macam jenis penggunanya.
Ini berarti suatu perangkat lunak harus dapat dimengerti, dapat
digunakan dan kompatibel atau memiliki kesesuaian dengan sistem lain
yang mereka gunakan.

Gambar 1.2
Atribut Penting dari suatu perangkat lunak yang baik

1.1.1. Rekayasa Perangkat Lunak

Rekayasa perangkat lunak didefinisikan sebagai suatu disiplin ilmu teknik yang berhubungan dengan
semua aspek produksi perangkat lunak mulai dari tahap awal spesifikasi sistem sampai kepada
pemeliharaan sistem setelah memasuki masa penggunaan. Ada dua frase kunci dalam definisi ini yaitu:

1. Disiplin Ilmu Teknik. Merupakan bagian dari ilmu teknik, dimana para engineer menciptakan sesuatu
yang berguna dengan menerapkan teori-teori, metode-metode dan menggunakan alat bantu /tools
yang sesuai. Para insinyur mengetahui bahwa mereka harus bekerja dengan memperhatikan kendala
organisasional dan finansial.
2. Semua aspek yang berhubungan dengan produksi perangkat lunak. Rekayasa perangkat lunak tidak
hanya berhubungan dengan proses-proses teknikal dari pengembangan perangkat lunak, tetapi juga
9 Rekayasa Perangkat Lunak

melibatkan aktivitas-aktivitas seperti manajemen proyek perangkat lunak dan alat bantu yang
digunakan dalam pengembangan, metode-metode dan teori-teori untuk mendukung produksi
perangkat lunak.

Secara umum, para insinyur perangkat lunak mengadopsi suatu pendekatan yang teroranisasi dan
sistematis dalam melakukan pekerjaan mereka. Ini merupakan cara yang paling efektif untuk
memproduksi perangkat lunak berkualitas tinggi. Bagaimanapun juga, engineering adalah semua yang
berhubungan dengan pemilihan kumpulan metode yang paling sesuai untuk suatu kumpulan keadaan
supaya lebih kreatif/ Pendekatan informal dalam pengembangan perangkat lunak hanya efektif untuk
beberapa keadaan. Pengembangan informal khususnya sangat sesuai untuk pengembangan sistem
berbasis web yang memerlukan keahlian desain grafis dan perangkat lunak.

Ada 2 alasan utama mengapa software engineering menjadi sesuatu yang penting:

1. Jumlah individu dan masyarakat yang menggunakan sistem perangkat lunak yang semakin
bertambah. Hal ini menyebabkan timbulnya kebutuhan untuk memproduksi sistem yang handal dan
cepat serta terpercaya ditinjau dari aspek ekonomi.
2. Dalam jangka panjang, sistem-sistem perangkat lunak yang dikembangkan menggunakan metode dan
teknik rekayasa perangkat lunak biasanya lebih murah jika dibandingkan dengan sekadar menulis
program sebagaimana dulunya sering dilakukan dalam menyelesaikan proyek pemrograman untuk
tujuan pribadi.

Suatu pendekatan sistematis yang digunakan dalam rekayasa perangkat lunak kadang-kadang disebut
juga sebagai suatu proses perangkat lunak (software process) . Proses perangkat lunak adalah tahapan
aktivitas yang dilakukan untuk menghasilkan suatu produk software atau perangkat lunak. Ada 4 aktivitas
mendasar yang terdapat dalam setiap proses perangkat lunak, yaitu:

1. Proses spesifikasi perangkat lunak. Pelanggan dan para insinyur pengembangan perangkat lunak
mendefinisikan perangkat lunak yang akan dibuat dan kendala pelaksanaannya.
2. Proses pengembangan perangkat lunak. Pada tahap ini perangkat lunak didesain dan
diprogram.
3. Proses validasi perangkat lunak. Perangkat lunak diperiksa untuk meyakinkan kesesuaian dengan
persyaratan pengguna.
4. Proses evolusi perangkat lunak. Modifikasi perangkat lunak untuk merefleksikan perubahan
persyaratan pasar dan pengguna.
10 Bab I  Introduksi

Jenis sistem yang berbeda memerlukan proses pengembangan yang berbeda pula. Sebagai contoh,
perangkat lunak waktu nyata dalam sebuah pesawat udara harus ditentukan secara lengkap sebelum
mulai dikembangkan. Dalam sistem perdagangan elektronik, spesifikasi dan program biasanya dilakukan
secara simultan atau bersamaan. Sebagai akibatnya, aktivitas-aktivitas generik ini harus diorganisasikan
dalam cara yang berbeda dan dijelaskan dalam tingkatan detail yang berbeda pula bergantung pada jenis
perangkat lunak yang akan dikembangkan.

Hubungan rekayasa perangkat lunak dengan ilmu komputer dan teknik sistem adalah sebagai berikut:

1. Ilmu komputer berhubungan dengan teori-teori dan metode yang mendasari sistem perangkat lunak
dan sistem komputer sedangkan rekayasa perangkat lunak berhubungan dengan masalah-masalah
praktis untuk memproduksi perangkat lunak. Beberapa pengetahuan dalam ilmu komputer
merupakan hal yang esensial bagi para software engineer seperti beberapa pengetahuan mengenai
ilmu fisika merupakan hal yang penting untuk para insinyur elektro. Teori ilmu komputer seringkali
hanya dapat diterapkan untuk program-program komputer yang berukuran relatif kecil. Teori-teori
ilmu komputer tidak dapat diterapkan untuk sistem yang lebih besar dan memiliki tingkat
kompleksitas yang tinggi.
2. Teknik rekayasa sistem berhubungan dengan seluruh aspek pengembangan dan evolusi sistem yang
lebih kompleks yang diatur oleh perangkat lunak. Teknik rekayasa sistem juga menyangkut
pengembangan perangkat keras (hardware),kebijakan (policy), proses desain dan pengembangan
sistem sebagaimana rekayasa perangkat lunak. Teknik rekayasa sistem itu berkaitan dengan
menentukan spesifikasi sistem, membuat arsitektur keseluruhan, dan selanjutnya menyatukan
bagian-bagian yang berbeda menjadi suatu sistem yang utuh.

Dalam bagian selanjutnya, kita akan mendiskusikan bahwa ada berbagai jenis perangkat lunak
komputer. Tidak ada teknik atau metode rekayasa perangkat lunak yang universal untuk memenuhi
tuntutan pengembangan berbagai jenis sistem perangkat lunak tersebut. Meskipun demikian , ada 3
permasalahan umum yang mempengaruhi berbagai jenis perangkat lunak yang berbeda ini:

1. Pertambahan heterogenitas; sistem-sistem diperlukan untuk bekerja sebagai sistem yang


terdistribusi melintasi jaringan yang memiliki jenis perangkat mobile dan komputer yang
berbeda. Sifat heterogenitas ini menuntut adanya suatu standar kompatibilitas yang
memungkinkan bagi perangkat lunak yang dependable untuk dapat berinteraksi dengan baik.
11 Rekayasa Perangkat Lunak

2. Perubahan sosial dan bisnis. Seiring dengan perkembangan ekonomi , kondisi bisnis dan
masyarakat pun berubah secara pesat dan memungkinkan tersedianya teknologi-teknologi yang
baru. Mereka perlu untuk mengubah perangkat lunak yang telah ada dan melakukan
pengembangan perangkat lunak secara cepat. Banyak teknik rekayasa perangkat lunak
memerlukan waktu pengembangan dan waktu pengantaran yang lama dari yang telah
direncanakan. Para insinyur perangkat lunak perlu untuk mengembangkan suatu metode baru
sedemikian sehingga waktu penghantaran kepada pelanggan menjadi lebih cepat.
3. Aman dan Terpercaya. Perangkat lunak telah mempengaruhi setiap aspek kehidupan manusia,
oleh sebab itu sangat penting untuk memiliki perangkat lunak yang terpercaya, terutama untuk
sistem perangkat lunak yang berada di remote area dan diakses dengan menggunakan
antarmuka web. Kita harus dapat meyakinkan bahwa pengguna-pengguna yang mencurigakan
tidak menyerang sistem perangkat lunak yang kita miliki dan menjaga keamanan informasi
sistem.

1.1.2. Keanekaragaman Rekayasa Perangkat Lunak


Rekayasa perangkat lunak adalah suatu pendekatan sistematis untuk menghasilkan software yang
memiliki biaya praktis, jadwal, dan isu-isu dependabilitas seperti kebutuhan produser dan konsumen
perangkat lunak. Implementasi dari pendekatan sistematis ini berubah secara dramatis tergantung pada
organisasi pengembang perangkat lunak tersebut, jenis perangkat lunak, dan orang yang terlibat dalam
proses pengembangan perangkat lunak. Tidak ada metode dan teknik universal dalam rekayasa perangkat
lunak yang sesuai untuk seluruh sistem dan perusahaan, melainkan berbagai himpunan metode dan tools
yang telah berkembang selama lebih dari 50 tahun.
Faktor penting yang menentukan pemilihan metode dan teknik software engineering adalah jenis
aplikasi yang sedang dikembangkan. Ada berbagai jenis aplikasi yang berbeda antara lain:

1. Stand-alone application yaitu aplikasi yang berdiri sendiri. Aplikasi ini dapat dijalankan pada PC lokal
dan dilengkapi fungsional tertentu agar dapat terhubung ke jaringan internet.
2. Aplikasi yang berbasis transaksi interaktif (Interactive transaction-based applications). Aplikasi ini
mengeksekusi komputer yang berada di tempat yang jauh dan diakses oleh pengguna dari PC mereka.
Jelas, aplikasi ini menyertakan aplikasi web seperti aplikasi e-commerce yang memungkinkan
pengguna berinteraksi dengan sistem lain yang terpisah jauh untuk membeli barang atau jasa
tertentu. Aplikasi jenis ini juga menyertakan sistem-sistem bisnis, dimana suatu bisnis menyediakan
12 Bab I  Introduksi

akses ke dirinya sendiri melalui web browser atau program lainnya yang memiliki tujuan khusus dan
layanan berbasis cloud seperti surat elektronik dan sharing foto. Aplikasi interaktif biasanya memiliki
media penyimpanan dengan kapasitas untuk menyimpan data berukuran besar yang diakses dan
diperbaharui setiap kali melakukan transaksi.

3. Sistem kendali Tertanam (Embedded control system) merupakan aplikasi yang digunakan untuk
mengatur dan mengendalikan suatu perangkat keras tertentu. Contohnya perangkat lunak dalam
perangkat HP, perangkat lunak untuk mengatur fungsi sistem pengereman anti penguncian (anti lock-
bracking system) dalam kendaraan roda empat yang mutakhir, perangkat lunak dalam perangkat oven
gelombang mikro untuk mengendalikan dan mengatur proses memasak makanan.

4. Sistem pemrosesan batch (Batch processing system). Sistem bisnis ini didesain untuk memproses data
yang memiliki batch berukuran besar. Sistem ini memproses sejumlah masukan individual dan
menciptakan keluaran yang bersesuaian. Contoh sistem ini adalah sistem-sistem tagihan elektronik
periodik seperti sistem tagihan telepon, dan sistem pembayaran upah karyawan di suatu perusahaan.

5. Sistem Hiburan (Entertainment system). Sistem jenis ini terutama ditujukan untuk penggunaan yang
bersifat pribadi untuk tujuan entertainment atau hiburan. Kualitas interaksi pengguna yang
ditawarkan adalah karakteristik yang membedakan sistem jenis ini dari sistem lainnya.

6. Sistem untuk pemodelan dan situasi (System for modelling and simulation). Sistem ini dikembangkan
oleh ilmuwan dan para engineer untuk membuat model proses-proses fisik atau situasi yang meliputi
objek-objek yang saling beriteraksi dalam jumlah banyak dan terpisah.

7. Sistem Pengumpulan Data (Data collection systems). Sistem jenis ini adalah sistem yang bertujuan
untuk mengumpulkan data dari lingkungan sekitarnya dengan menggunakan sejumlah sensor dan
kemudian mengirimkan data tersebut ke sistem lainnya untuk diolah. Perangkat lunak harus
berinteraksi dengan sensor dan seringkali dipasangkan dalam suatu lingkungan yang kurang nyaman
atau kurang bersahabat dalam mesin atau suatu lokasi yang terpisah oleh jarak yang jauh.
13 Rekayasa Perangkat Lunak

8. System of systems. Sistem-sistem jenis ini merupakan sistem yang tersusun dari sejumlah sistem
perangkat lunak lainnya. Beberapa jenis sistem ini dapat berupa produk perangkat lunak generik,
seperti program spreadsheet. Sistem lain yang menggunakan bahasa aras rendah assembly dapat
dibuat secara khusus untuk lingkungan tertentu.

Suatu pendekatan berdasarkan pengembangan iteratif dan delivery bisa jadi sesuai untuk
mengembangkan sistem-sistem berbasis web; dengan sistem yang tersusun atas komponen-komponen
yang dapat digunakan kembali (reusable components.) Pendekatan ini tidak praktis untuk sistem dari
sistem lainnya, karena spesifikasi detail dari interaksi sistem harus ditentukan terlebih dahulu sehingga
masing-masing sistem dapat dikembangkan secara terpisah.

Tentu saja, seiring dengan perkembangan disiplin ilmu rekayasa perangkat lunak yang semakin luas,
kompartemen batasan-batasan definisi yang penggolongan masing-masing sistem yang disebutkan di atas
menjadi semakin kabur. Sebagai contoh dalam proses pengembangan perangkat lunak permainan untuk
suatu telepon seluler, developer harus memasukkan kendala-kendala yang sama (misalnya suplai
daya,interaksi perangkat keras) sama seperti saat developer mengembangkan sistem piranti lunak untuk
sebuah telepon seluler. Sistem pemrosesan batch sering kali digunakan berhubngan dengan sistem berbasis
web. Sebagai contoh, dalam suatu perusahaan, klaim biaya perjalanan bisa saja dikirimkan melalui aplikasi
web, tetapi diproses dalam aplikasi batch sebagai pembayaran bulanan.

Para ahli rekayasa perangkat lunak menggunakan teknik-teknik rekayasa perangkat-lunak yang
berbeda untuk setiap jenis sistem. Hal ini disebabkan karena suatu perangkat lunak (software) memiliki
karakteristik-karakteristik yang berbeda. Sebagai contoh, suatu sistem kendali dengan chip tertanam
(embedded control system) yang ada dalam suatu automobile keselamatan merupakan faktor penting.
Sistem ini dibakar (dimasukkan dan disimpan) dalam sebuah keping memori yang hanya dapat dibaca (Read
Only Memory atau biasa dikenal sebagai ROM) pada saat instalasi dalam kendaraan automobile tersebut.
Itulah sebabnya untuk melakukan perubahan diperlukan biaya yang mahal. Suatu sistem membutuhkan
proses verifikasi dan validasi yang sangat luas, sehingga kemungkinan untuk melakukan reparasi perangkat
pada layanan purna jual dapat diminimalisasi. Interaksi pengguna sangat minimal dan dapat dikatakan tidak
ada, sehingga tidak memerlukan penggunaan proses pengembangan yang mengandalkan pada pembuatan
prototipe antar-muka pengguna (user interface prototyping).
14 Bab I  Introduksi

Prinsip-prinsip dasar software engineering yang digunakan dalam mengembangkan semua jenis
sistem perangkat lunak adalah:

1. Sistem perangkat lunak harus dikembangkan dengan menggunakan proses pengembangan yang dapat
dikendalikan dan dipahami. Pengembang perangkat lunak seharusnya merencanakan proses
pengembangan dan memiliki ide yang jelas menyangkut apa yang akan diproduksi dan kapan itu akan
diselesaikan. Tentu saja, proses yang berbeda digunakan untuk tipe-tipe perangkat lunak yang berbeda.
2. Dependabilitas dan unjuk kerja sangat penting untuk semua jenis sistem. Perangkat lunak seharusnya
berlaku sesuai dengan yang diharapkan, tanpa kegagalan dan seharusnya tersedia untuk digunakan saat
diperlukan. Sistem perangkat lunak harus aman saat beroperasi, dan aman terhadap serangan dari luar.
Sistem harus bekerja secara efisien dan tidak ada sumber daya yang terbuang.
3. Pemahaman dan pengaturan spesifikasi persyaratan sangat penting. Pengembang harus mengetahui
dengan jelas mengenai apa yang diharapkan oleh pelanggan dan pengguna dari sistem perangkat lunak
tersebut dan harus mampu mengatur ekspektasi mereka sedemikian sehingga sistem yang berguna
dapat dihasilkan sesuai batasan anggaran dan jadwal yang telah ditentukan.
4. Gunakan setiap sumber daya yang ada secara efektif. Hal ini berarti jika memungkinkan gunakan prinsip
software reuse yang telah dikembangkan daripada menulis kode perangkat lunak yang baru.

Istilah-istilah dasar seperti proses, dependabilitas, persayaratan, manajement dan reuse merupakan
tema penting dari buku ini. Metode-metode yang berbeda mencerminkan istilah-istilah ini dalam cara yang
berbeda-beda, tetapi pada prinsipnya istilah-istilah ini mendasari seluruh aktivitas proses pengembangan
perangkat lunak secara profesional.

Pembaca perlu memperhatikan bahwa dasar-dasar ini tidak mencakup implementas dan
pemrograman. Penulis tidak menerangkan menjelaskan teknik-teknik pemrograman dalam buku ini karena
ini akan berubah secara dramatis antara satu sistem dengan sistem lainnya. Sebagai contoh, bahasa
scripting seperti Ruby digunakan untuk pemrograman sistem berbasis web akan tetapi sangat tidak sesuai
untuk rekayasa sistem embedded.

1.1.3. Rekayasa Perangkat Lunak dan Web


Pengembangan world wide web telah telah membawa pengaruh yang sangat besar dalam seluruh
aspek kehidupan manusia. Pada awalnya, web merupakan tempat penyimpanan informasi yang dapat
diakses dan hanya memiliki pengaruh yang sangat kecil pada sistem-sistem perangkat lunak. Sistem-sistem
ini dapat dijalankan pada komputer lokal dan dulunya hanya dapat diakses untuk keperluan internal suatu
15 Rekayasa Perangkat Lunak

organisasi. Pada tahun 2000, teknologi web mulai berkembang dan semakin banyak fungsionalitas yang
ditambahkan dalam browser. Hal ini berarti bahwa sistem-sistem berbasis web dapat dikembangkan
sebagai alternatif. Alih-alih menggunakan antar-muka pengguna untuk tujuan khusus, sistem ini dapat
diakses dengan menggunakan suatu perangkat lunak aplikasi web browser. Hal ini memungkinkan
terjadinya pengembangan dengan jangkauan yang luas dari sebuah produk sistem baru yang menyediakan
layanan inovatif yang dapat diakses melalui web. Ini seringkali didanai oleh perusahaan sponsor yang
profilnya ditampilkan pada layar pengguna. Sistem ini tidak menggunakan mekanisme pembayaran
langsung oleh pengguna melainkan menggunakan jasa perbankan online.
Sebagaimana produk-produk sistem perangkat lunak lainnya, pengembangan perangkat lunak aplikasi
browser web yang dapat menjalankan program-program kecil dan melakukan beberapa pemrosesan lokal
yang menyebabkan terjadinya evolusi dalam perangkat lunak aplikasi bisnis dan organisasional. Perangkat
lunak web browser dtempatkan pada server dan bukan pada tiap-tiap komputer pengguna atau client.
Dengan demikian, biaya yang diperlukan untuk mengubah dan melakukan peningkatan (upgrade)
perangkat lunak, karena kita tidak perlu memasang perangkat lunak pada tiap komputer client. Hal ini juga
akan mengurangi biaya, karena pengembangan antarmuka pengguna memelukan biaya yang mahal. Sistem
perangkat lunak berbasis web ini memungkinkan untuk melakukan hal tersebut di atas. Berbagai jenis bisnis
telah berpindah ke perusahaan perangkat lunak sistem yang berbasis web.
Tahap selanjutnya dalam pengembangan sistem-sistem berbasis web adalah penggunaan istilah
layanan-layanan web. Layanan-layanan web adalah komponen-komponen yang mengantarkan
fungsionalitas yang berguna dan spesifik yang diakses melalui web. Aplikasi-aplikasi dirancang dengan
menyatukan layanan-layanan web ini, yang disediakan oleh perusahaan-perusahaan yang berbeda. Secara
prinsip, hubungan antara layanan-layanan web ini bersifat dinamis sedemikian sehingga suatu aplikasi
dapat menggunakan layanan-layanan web yang berbeda setiap kali dieksekusi. Penulis akan membahas
pendekatan layanan berbasis web dalam bab 19.
Beberapa tahun belakangan ini, penggunaan istilah ‘’perangkat lunak sebagai sebuah layanan’’ telah
dikembangkan. Hal ini sudah pernah dinyatakan bahwa software tidak dapat berjalan secara normal pada
komputer lokal tetapi akan berjalan pada ’’computing clouds’’ yang diakses melalu jaringan internet. Jika
user menggunakan suatu layanan seperti web-based mail, maka berarti anda sedang menggunakan sistem
berbasis cloud. Komputasi Cloud (Cloud computing) adalah sejumlah besar dari sistem-sistem komputer
yang terhubung satu sama lainnya dan digunakan secara bersama dengan prinsip berbagai sumber daya
oleh banyak pengguna (multi user). Para pengguna jasa cloud computing ini tidak perlu membeli perangkat
lunak melainkan membayar sesuai dengan seberapa besar porsi software yang digunakan, atau bisa juga
16 Bab I  Introduksi

diberikan hak akses gratis sebagai balas jasa karena sudah menonton iklan sponsor yang ditampilkan pada
layar pengguna.
Keberadaan teknologi web ini telah membawa perubahan yang signifikan dalam organisasi perangkat
lunak bisnis. Sebelum adanya teknologi sistem berbasis web, aplikasi-aplikasi bisnis pada masa lalu bersifat
monolitik, yaitu program tunggal yang dijalankan pada suatu komputer tunggal atau cluster-cluster
komputer. Pada masa itu komunikasi bersifat lokal terbatas untuk keperluan internal suatu organisasi. Kini,
perangkat lunak telah terdistribusi bahkan meluas ke seluruh dunia. Aplikasi-aplikasi bisnis tidak diprogram
dari awal melainkan melibatkan penggunaan kembali (reuse paradigm atau reuse concept) komponen dan
program secara luas.
Perubahan yang radikal dalam organisasi perangkat lunak ini, jelaslah telah mengubah cara rekayasa
sistem-sistem berbasis web. Sebagai contoh:

1. Prinsip penggunaan kembali perangkat lunak menjadi pendekatan dominan untuk pembangunan
sistem-sistem berbasis web. Saat membangun sistem-sistem ini, seorang insinyur berpikir tentang
bagaimana dia dapat melakukan pengembangan dengan menggunakan sistem-sistem dan komponen-
komponen perangkat lunak yang telah ada.
2. Pada umumnya kita semua telah mengetahui bahwa menentukan seluruh persyaratan suatu sistem
terlebih dahulu itu merupakan hal yang tidak praktis. Sistem berbasis web seharusnya dikembangkan
dan diantarkan secara bertahap atau secara inkrimental.
3. Antar muka pengguna dibatasi oleh kapabilitas browser web. Meskipun teknologi-teknologi seperti
AJAX (Holdener, 2008) menyatakan bahwa antarmuka yang bayak dapat dibuat dalam sebuah browser
web, teknologi-teknologi ini masih tetap sulit untuk dipergunakan. Form-form aplikasi web dengan
scripting local lebih umum untuk digunakan. Antarmuka aplikasi pada sistem-sistem berbasis web
seringkali lebih ‘’miskin’’ daripada antarmuka pengguna yang dibuat secara khusus pada produk-
produk sistem PC (Personal computer).

Ide-ide dasar rekayasa perangkat lunak ini, dibahas dalam bagian sebelumnya, menerapkan prinsip
pengembangan perangkat lunak berbasis web dengan cara yang sama seperti pada sistem-sistem
perangkat lunak yang lainnya. Pengalaman yang didapat memberikan penguatan dengan pengembangan
sistem besar dalam abad XX masih tetap relevant dengan perangkat lunak berbasis web.
17 Rekayasa Perangkat Lunak

1.2 Etika Rekayasa Perangkat Lunak


Sebagaimana disiplin ilmu teknik lainnya, rekayasa perangkat lunak dilakukan dalam suatu kerangka
kerja legal dan sosial yang membatasi kebebasan orang yang bekerja dalam bidang itu. Sebagai seorang
software engineer, anda harus menerima bahwa pekerjaan anda melibatkan tanggung jawab yang lebih
luas daripada aplikasi keahlian teknis yang sederhana. Seorang insinyur perangkat lunak memilik tanggung
jawab moral dan etika profesional.
Seorang software engineer harus senantiasa menegakkan standar kebenaran, kejujuran dan integritas.
Software engineer seharusnya tidak menggunakan keahlian dan kemampuanyna untuk berlaku tidak jujur
karena akan merusak reputasi profesi sosftware engineer. Bagaimanapun juga ada area-area dimana
standar tingkah laku yang dapat diterima tidak dibatasi oleh hukum-hukum tetapi lebih kepada tanggung
jawab profesional, antara lain:

1. Kerahasiaan (confidentiality). Software engineer seharusnya menghormati kerahasiaan pekerja atau


klien tanpa memperhatikan apakah persetujuan kerahasiaan resmi secara tertulis telah
ditandatangani.
2. Kompetensi (competence). Seorang insinyur perangkat lunak seharusnya menghindari terjadinya
kesalahan dalam menjelaskan level kompetensi yang dimilikinya. Seorang software engineer
seharusnya tidak menerima pekerjaan di luar kompetensi yang dimilikinya.
3. Hak Atas Kekayaan Intelektual (Intellectual Property Rights). Pahami aturan-aturan hukum yang
mengatur tentang penggunaan properti intelektual seperti hak patent dan hak cipta. Seorang
Software Engineer harus menjaga dan melindungi properti intelektual perusahaan dan client.
4. Penyalahgunaan komputer (Computer Misuse). Seorang Software Engineer seharusnya tidak
menggunakan kemampuan teknikalnya untuk menyalahgunakan komputer milik orang lain.
Penyalahgunaan komputer bisa terjadi mulai dari tingkat ringan (bermain game dengan menggunakan
sumberdaya komputer yang dimiliki perusahaan) hingga ke tingkat yang sangat serius (menyebarkan
virus atau malware lainnya).
18 Bab I  Introduksi

Kode Etik dan Pelatihan Profesional Rekayasa Perangkat Lunak


ACM/IEEE Komite Gabungan pada Kode Etik dan Pelatihan Profesional Rekayasa Perangkat Lunak

PEMBUKAAN
Versi yang lebih singkat dari kode etik merupakan intisari dari berbagai aspirasi pada abstraksi tingkat tinggi. Klausa-
klausa yang digunakan dalam versi lengkap dari kode etik dan pelatihan profesional rekayasa perangkat lunak ini
memberikan contoh-contoh dan rincian bagaimana aspirasi ini mengubah cara seseorang bertindak sebagai
seorang engineer perangkat lunak profesional. Tanpa adanya aspirasi, rincian bisa menjadi sesuatu yang bersifat
legalistik dan menyebabkan kejenuhan;sebaliknya tanpa rincian aspirasi ibarat tong kosong nyaring bunyinya;
aspirasi dan rincian digabungkan bersama-sama keduanya akan membentuk suatu kode yang sinergis.
Para insinyur perangkat lunak harus memiliki komitmen pribadi untuk membuat analisis, spesifikasi,
desain, pengembangan, pengujian dan pemeliharaan perangkat lunak menjadi suatu profesi yang berguna dan
dihormati di masyarakat. Sehubungan dengan komitmen mereka untuk kesehatan, keselamatan dan kesejahteraan
masyarakat, para insinyur perangkat lunak harus senantiasa berpegang teguh sesuai dengan delapan prinsip utama:
1. PUBLIK – Seorang Software Engineer harus bertindak konsisten dan
memperhatikan kebutuhan masyarakat umum.
2. PERUSAHAAN DAN KLIEN – Seorang software engineer bertingkah laku dengan
cara sedemikian sehingga ekspektasi perusahaan dan ekspektasi klien
sejalan dengan ekspektasi masyarakat luas.
3. PRODUK – Software Engineer harus dapat meyakinkan bahwa produk perangkat
lunak yang diproduksi dan modifikasi-modifikasi yang dilakukan memenuhi
standar profesional yang setinggi mungkin.
4. JUSTIFIKASI – Para software engineer harus memelihara integritas dan independensi dalam membuat
suatu justifikasi profesional.
5. MANAJEMEN – Manager dan Leader perusahaan yang bergerak dalam bidang pengembangan perangkat
lunak harus berlangganan dan mempromosikan suatu pendekatan etikal kepada pihak manajemen
perusahaan pengembang dan pemeliharaan perangkat lunak.
6. PROFESI – Software engineer harus menjaga integritas dan reputasi profesi secara konsisten dengan
harapan masyarakat lias.
7. KOLEGA – Software Engineer harus bersikap fair dan mendukung kolega atau rekan sejawatnya.
8. MOTIVASI DIRI – Setiap software engineer harus senantiansa berpartisipasi dalam proses pembelajaran
seumur hidup mengenai pelatihan profesional dan mengutamakan pendekatan etikal terhadap pelatihan
profesional rekayasa perangkat lunak.
19 Rekayasa Perangkat Lunak

Gambar 1.3
Kode Etik ACM/IEEE (©IEEE/ACM 1999).

Institusi dan komunitas masyarakat profesional memiliki peranan penting untuk memainkan
pengaturan standar-standar etikal. Organisasi seperti ACM, IEEE (Institute of Electrical and Electronics
Engineers), dan The British Computer Society telah mempublikasikan sebuah kode etik profesional.
Anggota-anggota organisasi diwajibkan untuk mengikuti aturan tersebut saat mereka bergabung dan
menjadi anggota institus tersebut.
Asosiasi-asosiasi profesional seperti ACM dan IEEE telah menjalin kerjasama untuk menghasilkan kode
etik dan latihan profesional gabungan. Kode ini dibuat dalam bentuk singkat seperti ditunjukkan dalam
gambar 1.3, dan bentuk panjang (Gotterbarn et al.,1999) yang menambahkan detail dan substansi dari versi
yang lebih singkat. Alasan utama dibalik pembuatan kode ini di simpulkan dalam dua paragraf pertama dari
bentuk yang lebih panjang:
Komputer telah memainkan peran penting dan perkembagnan dalam bidang perdagangan, industri,
pemerintahan, medis, pendidikan hiburan dan lingkup masyarakat yang lebih luas. Software engineer
adalah individu yang berkontribusi dalam partisipasi langsung atau oleh pengajaran hingga kepada
analisis, spesifikasi, desain, pengembangan, sertifikasi, perawatan dan pengujian sistem perangkat
20 Bab I  Introduksi

lunak. Oleh karena peran mereka dalam pengembangan sistem-sistem perangkat lunak, para
software engineer memiliki kesempatan penting untuk melakukan kebaikan atau menyebabkan
kerusakan atau kerugian, yang memungkinkan orang lain untuk melakukan kebaikan atau
menyebabkan kerusakan atau kerugian. Untuk memberikan kepastian semaksimal mungkin bahwa
pekerjaan mereka akan digunakan untuk hal-hal yang baik, para insinyur perangkat lunak harus
memiliki komitmen dalam diri mereka sendiri untuk menjadikan rekayasa perangkat lunak menjadi
suatu profesi yang berguna dan dihormati. Sesuai dengan komitmen tersebut, software engineer
akan memperoleh Panduan Kode Etik dan Pelatihan Profesional.
Kode etik mengandung delapan prinsip yang berhubungan dengan tingkah laku dan keputusan
yang diambil oleh para ahli rekayasa perangkat lunak profesional, terdiri dari praktisi, tenaga
kependidikan, manager, supervisor dan pembuat kebijakan serta peserta pelatihan dan mahasiswa
yang mempelajari disiplin ilmu rekayasa perangkat lunak. Prinsip-prinsip ini mengidentifikasi jenis
relasi tanggung jawab etika baik secara individu, kelompok dan organisasi-organisasi yang
berpartisipasi di dalamnya dan kewajiban utama yang melekat sehubungan dengan profesi ini.
Klausa-klausa setiap prinsip merupakan ilustrasi dari beberapa jenis kewajiban yang melekat dalam
profesi insinyur perangkat lunak. Kewajiban-kewajiban ini dituangkan sebagai wujud peri
kemanusiaan insinyur perangkat lunak sebagai bentuk kepedulian terhadap orang-orang yang
dipengaruhi oleh pekerjaan software engineer dan element-elemen unik dari pelatihan bidang ilmu
rekayasa perangkat lunak. Kode etik ini merupakan aturan dan kewajiban yang harus dipatuhi oleh
setiap orang yang menekuni profesi rekayasa perangkat lunak.

Dalam keadaan dimana setiap orang memiliki pandangan serta sasaran yang berbeda, seorang
software engineer mengkin saja akan menghadapi masalah-masalah dilematis yang berhubungan dengan
etika. Sebagai contoh, jika anda secara prinsip tidak setuju dengan kebijakan yang diambil oleh manajemen
perusahaan yang lebih senior, bagaimana seharusnya anda menghadapi hal ini? Sudah jelas reaksi anda
akan bergantung pada masing-masing individu dan sifat dari pernyataan ketidaksukaan tersebut. Apakah
memperdebatkan suatu masalah mengenai posisi atau jabatan anda dalam perusahaan atau untuk mundur
dan ‘’meletakkan’’ jabatan anda? Jika anda merasa bahwa ada masalah dengan sebuah proyek perangkat
lunak, kapankah saat yang tepat untuk menyampaikan masalah tersebut kepada pihak manajemen
perusahaan anda? Jika saudara mendiskusikan hal ini sementara pihak perusahaan hanya menaruh
kecurigaan, bisa jadi anda menunjukkan sikap over reacting terhadap suatu masalah; Jika anda tidak segera
pergi, mungkin mustahil untuk menyelesaikan kembali permasalahan tersebut.
Setiap orang pada suatu saat akan berhadapan dengan masalah-masalah yang berhubungan dengan
etika dalam kehidupan profesionalnya. Beruntung, dari seluruh kasus hanya sebagian kecil saja masalah
yang berhubungan dengan masalah etika dan dapat diselesaikan kembali tanpa mengalami banyak kendala.
Jika masalah itu tidak dapat dipecahkan, seorang engineer mungkin akan menghadapi masalah yang lain.
Tindakan utama yang diambil boleh jadi dengan mengundurkan diri dari pekerjaan yang sekarang, tetapi
hal ini akan mempengaruhi orang lain seperti rekan kerja atau anak mereka.
21 Rekayasa Perangkat Lunak

Suatu dilema bagi para insinyur profesional timbul saat perusahaan mengambil langkah-langkah yang
tidak etis. Sebagai contoh misalkan saja suatu perusahaan sedang mengembangkan sistem penting yang
mengutamakan aspek keselamatan, dan oleh karena kendala waktu, mengabaikan faktor keamanan
validasi rekord. Apakah pada engineer bertanggung jawab untuk menjaga kerahasiaan informasi atau untuk
memberi peringatan kepada publik atau melakukan publikasi dengan berbagai cara bahwa produk sistem
yang dikeluarkan oleh perusahaan tidak aman?
Bagaimanapun juga, penulis menemukan bahwa pendekatan filosofis ini terlalu abstrak dan susah
untuk dihubungkan dengan pengalaman sehari-hari. Penulis lebih suka untuk memasukkan pendekatan
yang lebih kongkret dalam suatu kode dan pelatihan. Penulis berpendapat bahwa persoalan-persoalan yang
berkenaan dengan etika sebaiknya dibahas dalam konteks software engineering, bukan untuk kepentingan
pribadi. Oleh sebab itu, penulis tidak membahas masalah-masalah etika yang abstrak melainkan
memberikan contoh dalam latihan-latihan yang diharapkan dapat menjadi titik awal untuk diskusi
kelompok menyangkut masalah-masalah yang berhubungan dengan etika.

1.3 Studi Kasus


Untuk memberikan gambaran konsep-konsep yang berhubungan dengan rekayasa perangkat lunak,
penulis menggunakan contoh-contoh dari tiga jenis sistem yang berbeda di dalam buku ini. Alasan mengapa
penulis tidak menggunakan single case studyadalah pesan-pesan kunci dalam buku ini adalah bahwa
pelatihan rekayasa perangkat lunak bergantung pada jenis sistem yang akan dihasilkan. Oleh sebab itu
penulis memilih suatu contoh yang sesuai saat mendiskusikan konsep-konsep seperti keamanan (safety)
dan dependability, pemodelan sistem, konsep reuse, dsb.
Tiga jenis sistem yang akan digunakan dalam studi kasus dalam seluruh bagian buku ini adalah:
1. Sistem-sistem tertanam (embedded system). Embedded sistem merupakan suatu sistem dimana
perangkat lunak yang mengendalikan perangkat keras ditanamkan dalam perangkat keras tersebut.
Masalah-masalah dalam sistem tertanam biasanya menyangkut ukuran fisik, kemampunan untuk
memebrikan tanggapan/respon, manajemen daya, dan sebagainya. Contoh sistem tertanam yang
digunakan penulis buku Software Engineering edisi ke-9 ini adalah sistem tertanam yang
menggunakan perangkat lunak untuk mengendalikan peralatan medis.
2. Sistem informasi. Sistem informasi merupakan suatu sistem yang tujuan utama pengembangannya
adalah untuk mengatur dan menyediakan akses ke dalam basis data informasi. Masalah-masalah
dalam sistem informasi menyangkut keamanan (security), tingkat kegunaan (usability) , privacy dan
22 Bab I  Introduksi

mempertahankan integritas data (data integrity). Contoh dari sistem informasi adalah sistem
rekaman medis (medical record system)
3. Sistem-sistem pengumpulan data berdasarkan sensor. Sistem ini adalah sistem yang dirancang untuk
mengumpulkan data dengan menggunakan sejumlah sensor-sensor dan memproses data itu dalam
beberapa cara. Persyaratan utama dari suatu sistem adalah kehandalan (realibility), bahkan dalam
kondisi lingkungan yang tidak menyenangkan, dan maintainability. Contoh sistem pengumpulan data
yang digunakan dalam buku ini adalah stasiun pengamat cuaca yang berada di gurun.

1.3.1 Sistem Kendali Pompa Insulin Untuk Pengobatan Pasien Penderita Diabetes.
Pompa insulin adalah sistem-sistem medis yang merangsang pankreas (sebuah organ yang
terdapat dalam tubuh manusia). Perangkat lunak yang mengendalikan sistem ini merupakan suatu sistem
embedded, yang mengumpulkan informasi-informasi dari sebuah sensor dan mengendalikan sebuah
pompa yang berfungsi untuk mensuplai pemberian insulin dengan dosis yang dapat dikendalikan bagi
pasien penderita diabetes.
Sistem ini digunakan oleh para penderita penyakit kencing manis atau diabetes. Penyakit diabetes
merupakan suatu kondsi umum dimana pankreas tidak dapat menghasilkan hormon insulin dalam jumlah
yang cukup. Insulin menyebabkan terjadinya metabolisme glukosa dalam darah. Perawatan konvensional
bagi penderita diabetes memerlukan injeksi insulin yang direkayasa secara genetika secara teratur ke
dalam tubuh penderita penyakit diabetes. Penderita diabetes mengukur kadar gula darah dengan
menggunakan peralatan pengukur eksternal dan kemudian menghitung dosis insulin yang harus
disuntikkan ke dalam tubuh.
Masalah yang timbul dengan metode perawatan ini adalah kadar insulin yang diperlukan tidak
hanya bergantung pada kadar gula darah tetapi juga pada waktu injeksi insulin terakhir. Ini dapat
menyebabkan menurunnya kadar gula darah menjadi sangat rendah (jika terlalu banyak insulin) atau
sebaliknya kadar gula darah yang semakin tinggi (jika kadar insulin terlalu sedikit). Jika kadar gula darah
menjadi terlalu rendah dalam waktu yang cepat, dapat menyebabkan terjadinya kondisi yang lebih serius
seperti otak tidak dapat berfungsi untuk beberapa waktu, sehinga pada akhirnya akan menyebabkan
penderita kehiolangan kesadaran dan kematian. Dalam jangka panjang, kadar gula darah yang tinggi dapat
menyebabkan kerusakan pada fungsi mata,kerusakan ginjal dan gangguan jantung.
Kemajuan teknologi telah mampu menciptakan sensor-sensor yang berukuran sangat
kecil. Hal ini memberikan kemungkinan untuk mengembangkan sistem yang dapat menghantarkan insulin
dalam tubuh manusia. Sistem-sistem ini memonitor kadar gula darah dan mensuplai dosis insulin yang
23 Rekayasa Perangkat Lunak

sesuai pada saat dibutuhkan. Sistem penyuplai insulin seperti ini telah ada untuk membantu perawatan
pasien di rumah sakit. Pada masa yang akan datang, bisa jadi akan ada teknologi yang memungkinkan
untuk melakukan implantasi sistem pompa insulin ke dalam tubuh manusia.
Sistem pemasok insulin yang dikendalikan oleh perangkat lunak ini bisa bekerja denan
menggunakan sensor mikro yang ditanamkan dalam tubuh pasien untuk mengukur beberapa parameter
darah yang mempengaruhi kadar gula darah. Hasil pengukuran ini
dikirimkan ke pengendali yang menggerakkan pompa. Pengendali akan menghitung kadar gula dan dosis
atau takaran insulin yang diperlukan. Peralatan pengendali kemudian akan mengirimkan sinyal-sinyal
kepada pompa insulin untuk memasok insulin yang dibutuhkan ke dalam tubuh penderita diabetes.
24 Bab I  Introduksi

Tangki Insulin

Pewaktu/Clock
Pompa

Pengendali/
Sensor Alarm
Controller

Tampilan 1 Tampilan 2

Catu Daya

Gambar 1.4

Blok diagram Perangkat Keras Pompa Insulin.


25 Rekayasa Perangkat Lunak

Analisis Menghitung
Sensor Tekanan Gula Darah Log Insulin
Pembacaan Insulin
Darah
Sensor

Dosis
Insulin

Mengendalikan Memompa Perintah untuk Data Log Dosis


Pompa Insulin
Pompa Insulin sesuai Data melakukan Insulin
perhitungan
pompa

Gambar 1.5

Model Aktivitas Pompa Insulin

Gambar 1.4 menunjukkan komponen-komponen dan organisasi dari suatu pompa insulin. Untuk dapat
memahami dengan baik contoh-contoh yang ada dalam buku ini, pembaca harus memahami bahwa sensor darah
mengukur konduktivitas elektrik darah pada berbagai keadaan dan bahwa nilai-nilai ini dapat dikaitkan dengan
kadar gula darah. Pompa insulin menghantarkan satu satuan insulin sebagai tanggapan terhadap pulsa tunggal
dari controller. Oleh sebab itu, untuk dapat menghantarkan 10 satuan insulin, controller mengirimkan 10 pulsa
kepada pompa. Gambar 1.5 merupakan model aktivitas UML yang menggambarkan bagaimana suatu perangkat
lunak mengubah masukan berupa informasi kadar gula darah menjadi urutan perintah yang mengendalikan
operasi pompa insulin tersebut.

Dengan demikian, jelaslah sistem ini merupakan sistem yang mengutamakan faktor keamanan. Jika pompa gagal
untuk beroperasi atau tidak dapat beroperasi dengan benar, maka kesehatan pengguna akan terganggu atau
pasien penderita diabetes akan kehilangan kesadaran karena kadar gula darah terlalu tinggi atau terlalu rendah.
Oleh karena itu, ada dua persyaratan penting yang harus dipenuhi:

1. Sistem harus selalu dalam keadaan tersedia untuk memompa insulin saat diperlukan
26 Bab I  Introduksi

2. Sistem harus dapat melakukan delivery dosis insulin yang tepat dan handal sebagai respon terhadap
hasil pembacaan sensor yang menunjukkan level gula darah saat ini.

MHC/PMS MHC/PMS MHC PMS


LOKAL LOKAL LOKAL

MHC PMS SERVER

BASIS DATA
PASIEN

Gambar 1.76

Diagram Blok Arsitektur Pemeliharaan Kesehatan Jiwa Sistem Manajemen Pasien

Oleh sebab itu sistem yang didesain harus mampu untuk meyakinkan bahwa sistem selalu
memenuhi persyaratan-persyaratan ini. Persyaratan yang lebih rinci dan pembahasan bagaimana untuk
meyakinkan bahwa sistem itu aman akan didiskusikan dalam bab-bab selanjutnya.

1.3.2 Sistem Informasi Pemeliharan Kesehatan Pasien Penderita Gangguan Kejiwaan.

Sistem informasi pasien bertujuan untuk mendukung sistem layanan pemeliharaan kesehatan jiwa.
Sistem ini menyediakan informasi mengenai data pasien penderita gangguan jiwa dan perawatan yang
telah dilakukan. Kebanyakan pasien kesehatan jiwa tidak memerlukan perawatan di rumah sakit,
melainkan membutuhkan klinik khusus dan konsultasi secara teratur dengan dokter yang memiliki
pengetahuan detil mengenai masalah kesehatan jiwa yang mereka alami.Untuk mempermudah pasien,
27 Rekayasa Perangkat Lunak

klinik ini tidak hanya ada di rumah sakit saja, melainkan ada di praktek dokter atau pusat-pusat .
Sistem Manajemen Pasien-Pemeliharaan Kesehatan Jiwa merupakan suatu sistem informasi yang
berujuan untuk digunakan di sebuah klinik. Sistem ini didesain untuk dijalankan pada suatu PC dengan
menggunakan basis data informasi pasien yang terpusat, sehingga dapat diakses dan digunakan dari
lokasi-lokasi yang memiliki konektivitas jaringan dengan keamanan jaringan yang relatif rendah. Saat
suatu sistem lokal memiliki akses jaringan yang aman ke dalam sistem, pengguna menggunakan informasi
passien dalam basis data. Pengguna sistem juga dimungkinkan untuk mengunduh dan menggunakan
salinan rekaman pasien dari komputer lokal setelah koneksi diputuskan. Sistem ini bukanlah merupakan
sistem rekaman medis yang lengkap yang dapat memelihara informasi mengenai kondisi medis lainnya.
Meskipun demikian sistem ini dapat berinteraksi dan melakukan pertukaran data dengan sistem informasi
lainnya yang ada di suatu klinik kesehatan. Gambar 1.6 memberikan suatu ilustrasi arsitektur organisasi
MHC-PMS. MHC-PHS ini memiliki dua tujuan yang utama sebagai berikut:

1. membangkitkan informasi manajemen yang mengijinkan manager layanan kesehatan untuk


melakukan assesment kinerja terhadap target pemerintah dan target lokal.
2. Menyediakan informasi yang diperlukan oleh staf medis untuk mendukung perawatan pasien secara
berkala.

Sifat alami yang menyangkut masalah-masalah kesehatan jiwa adalah seringkali pasien menjadi tidak
teratur dan melupakan perjanjian perjanjian-perjanjian, terlalu banyak pertimbangan dan ragu dalam
mengambil keputusan, secara tidak sengaja kehilangan resep obat, melupakan instruksi-instruksi, dan
meminta hal-hal yang tidak masuk akal kepada dokter atau perawat yang ada di rumah sakit. Bisa jadi
pasien yang mengalami gangguan kejiwaan ini diantarkan ke klinik yang tidak diharapkan. Dalam sebagian
kecil kasus, para penderita gangguan jiwa ini melakukan hal-hal yang membahayakan diri mereka sendiri
dan orang lain di sekitarnya. Mereka mengganti alamat tempat tinggalnya secara teratur, bahkan menjadi
gelandangan yang tidak punya rumah sehingga berkeliaran di jalan untuk jangka pendek maupun jangka
panjang. Ketika pasien melakukan tindakan yang berbahaya, mereka perlu untuk ‘’dikarantina’’ –
ditempatkan di rumah sakit yang aman untuk mendapatkan perawatan dan observasi. Para pengguna
sistem ini termasuk staf klinik seperti dokter, perawat dan health-visitor (perawat yang mengunjungi
pasien untuk melakukan pemeriksaan kesehatan pasien di rumah). Para pengguna non-medis termasuk
resepsionis yang membuat perjanjian, staf rekaman medis yang memelihara sistem rekaman, dan staf
administrasi yang membuat laporan. Sistem digunakan untuk merekam informasi mengenai informasi
pribadi pasien penderita gangguan kejiwaan (nama, alamat,umur,keluarga dekat, dsb), konsultasi (tanggal
28 Bab I  Introduksi

konsultasi, kehadiran dokter, keluhan pasien atas penyakit yang dideritanya), kondisi-kondis dan
perawatan/Laporan dibuat sesuai selang waktu atau interval waktu tertentu oleh paramedis dan manager
memimpin rumah sakit tersebut. Pada umumnya, laporan untuk medical staf yang berhubungan dengan
informasi tentang informasi pasien disamarkan. Selain itu, laporan ini juga mencatat kondisi, biaya
perawatan, dsb.
Fitur utama sistem ini adalah:
1. Manajemen kepedulian individu. Paramedis yang bekerja di klinik atau rumah sakit dapat membuat
rekaman untuk pasien, mengubah informasi yang direkam dalam sistem, menampolan riwayat
pasien, dsb. Sistem ini mendukung pembuatan summary atau ikhtisar sehingga para dokter yang
belum pernah bertemu dengan pasien ersebut dapa mempelajari dengan segera mengenai pokok
permasalahan dan tindakan perawatan yang telah dilakukan.
2. Memantau pasien. Sistem ini mampu melakukan pemanauan berkala rekaman data pasien yang
sedang menjalani perawatan dan mengeluarkan peringatan jika masalah dideteksi. Oleh sebab itu,
jika pasien tidak berkonsultasi dengan dokter untuk beberapa waktu, maka sistem akan
mengeluarkan notifikasi peringatan. Elemen terpenting dari sistem monitoring ini adalah untuk
mencatat pasien penderita gangguan jiwa yang dikarantina dan meyakinkan bahwa secara legal
pemeriksaan yang diperlukan dilakukan pada waktu yang tepat.
3. Laporan administratif. Sistem membuat laporan manajemen bulanan untuk menunjukkan jumlah
pasien yang telah di rawat di klinik, jumlah pasien yang masuk dan keluar sistem perawatan, jumlah
pasien yang menjalani rawat inap atau karantina, jenis obat yang diresepkan oleh dokter dan biaya
perawatan yang telah dikeluarkan.

Ada dua undang-undang yang berbeda yang mempengaruhi sistem MHC-PMS ini,yaitu undang-
undang perlindungan data yang mengatur tentang kerahasiaan informasi pribadi dan undang-undang
kesehatan jiwa yang mengatur tentang tempat penampungan wajib yang disediakan untuk penderita
gangguan jiwa yang membahayakan dirinya sendiri dan orang lain. Kesehatan mental itu unik dan oleh
karena itu hanya paramedis khusus yang dapat memberikan rekomendasi untuk menahan pasien
gangguan jiwa yang melakukan tindakan melawan hukum. Ini menjadi subjek yang tegas dari uandang-
undang keamanan. Ini menjadi suatu tujuan dari MHC-PMS untuk menyakinkan bahwa staf paramedis
selalu bertindak sesuai dengan koridor hukum yang berlaku, dan bahwa keputusan yang mereka ambil
dicatat untuk keperluan penyidikan hukum oleh aparat yang berwenang.
29 Rekayasa Perangkat Lunak

Sebagaimana layaknya dalam seluruh sistem medis, privasi merupakan persyaratan yang sangat
penting. Informasi pasien bersifat rahasia dan tidak pernah diungkapkan kepada seseorang yang jauh dari
kewenangan staf medis dan pasien yang bersangkutan itu sendiri. MHC-PMS juga bersifat safety critical
system. Bebarapa penyakit jiwa menyebabkan pasien hendak melakukan indakan bunuh diri atau
membahayakan orang lain. Dimana mungkin, sistem seharusnya memberi peringaan pada staf medis
mengenai potensi pasien melakukan tindakan bunuh diri atau tindakan lain yang membahayakan
keselamatan jiwanya sendiri.

Desain keseluruhan sistem ini sangat memperhitungkan faktor persyaratan privasi dan keselamatan.
Sistem harus available saat dibutuhkan. Jika tidak, keselamatan menjadi suatu hal yang dapat
dikompromisasi dan menjadi hal yang mustahil untuk melakukan metode pengobatan termasuk
menuliskan resep obat yang benar kepada pasien. Ada dua hal yang berpotensi menimbulkan konflik-
privasi, mudah sekali untuk memperahankan privasi jika hanya ada satu salinan data sistem. Meskipun
demikian, untuk meyakinkan ketersediaan sisem pada saat server mengalami kegagalan (server failure)
atau ketika koneksi terputus dari jaringan, ada banyak jumlah salinan data yang harus dipertahankan.
Penulis akan mendiskusikan trade-off antara persyaraan-persyaratan ini dalam bab-bab berikutnya.

1.3.3 Stasiun Pengamat Cuaca


Untuk membantu memantau perubahan iklim dan meningkatkan akurasi ramalan cuaca di area-
area terpencil, pemerintah negara yang memiliki area kawasan alam liar yang luas memutuskan unuk
membangun ratusan stasiun cuaca di tempat-tempat terpencil. Stasiun-stasiun ini mengumpulkan data
dari sejumlah instrumen (dibaca : sensor) yang mengukur suhu dan tekanan , intensitas cahaya matahari,
curah hujan, kecepatan angin dan arah angin.

<<SISTEM>> <<SYSTEM>>
STASIUN CUACA
ARSIP DAN MANAJEMEN DATA

<<SISTEM>>

BASIS DATA
PASIEN
30 Bab I  Introduksi

Stasiun pengamat meteorologi dan geofisika ini merupakan bagian dari sistem lain yang lebih besar
(gambar 1.7), yaitu sistem informasi prakiraan cuaca yang mengumpulkan data dari sejumlah stasiun
cuaca untuk diproses oleh sistem lainnya. Sistem-sistem dalam Gambar 1.7 adalah:
1. Sistem stasiun cuaca. Sistem ini bertanggungjawab untuk pengumpulan data informasi cuaca,
melakukan beberapa pemrosesan awal, dan mengirimkannya ke sistem manajemen data.
2. Sistem Arsip dan Manajemen Data. Sistem ini mengumpulkan data dari stasiun pengama cuaca,
melakukan pemrosesan data dan analisis, dan selanjunya membuat arsip data yang telah diproses
untuk dapat digunakan oleh sistem lainnya.
3. Stasiun Sistem Perawatan. Sistem ini berkomunikasi dengan menggunakan satelit dengan semua
stasiun untuk memonitor ‘’kesehatan’’ seluruh sistem dan menyediakan laporan permasalahan yang
sedang terjadi. Stasiun Sistem Perawatan memiliki otoritas untuk memperbaharui perangkat lunak
sistem tertanam, atau mengambil alih kendali sistem kendali stasiun pengamat cuaca secara remote.

Ilustrasi gambar 1.7 menggunakan notasi simbol-simbol yang terdapat dalam UML untuk
menunjukkan bahwa setiap sistem merupakan kumpulan komponen dan dapat diidentifikasi sebagai
sisem yang terpisah dengan menggunakan notasi simbol UML <<system>>. Asosiasi natara iap enitas yang
digambarkan sebagai sebuah kotak menunjukkan ada pertukaran informasi. Tetapi pada tahap ini, tidak
diperlukan definisi yang lebih terperinci.
Setiap stasiun cuaca memasukkan sejumlah instrumen yang mengukur parameter-parameter cuaca
seperti kecepatan dan arah angin, suhu udara dan permukaan bumi, tekanan barometer, dan intensitas
hujan selama periode 24 jam. Setiap instrumen ini dikendalikan oleh suatu sistem perangkat lunak yang
melakukan pembacaan parametr secara periodik dan mengatur data yang dikumpulkan oleh perangkat
sensor. Interval waktu tertentu
Sistem stasiun cuaca beroperasi dengan mengumpulkan pengamatan cuaca pada interval waktu
tertentu-sebagai contoh: temperatur diukur setiap menit. Meskipun demikian, karena lebar pita satelit
adalah relatif sempit, stasiun pengamat cuaca melakukan beberapa jenis pemrosesan lokal dan agregasi
data ketika diminta oleh sistem pengumpulan data. Jika untuk alasan apapun, tidak mungkin untuk
membangun suatu koneksi, maka sejumlah stasiun pengamat cuaca akan mempertahankan data secara
lokal sampai komunikasi dapat dilanjutkan kembali.
Setiap stasiun cuaca memperoleh suplai daya dari sebuah baterai- idak ada daya eksternal atau pun
kabel jaringan yang tersedia. Semua aktivitas komunikasi dilakukan melalui sambungan satelit yang
memiliki kecepatan relatif rendah. Stasiun cuaca juga memiliki mekanisme pengisian ulang data baterai
31 Rekayasa Perangkat Lunak

dengan memanfaatkan energi matahari atau energi angin. Stasiun pengamat cuaca ini dibangun di remote
areaatau di daerah yang jarang dihuni oleh manusia, oleh sebab itu kemungkinan akan timbul akibat-
akibat negatif yang disebabkan oleh kondisi lingkungan dan bisa saja stasiun tersebut dirusak oleh
binatang liar. Oleh sebab itu perangkat lunak stasiun tidak hanya berhubungan dengan pengumpulan
informasi atau data pengamatan cuaca semata, tetapi juga:
1. Memonitor instrument, daya dan perangkat keras yang digunakan untuk keperluan komunikasi dan
melaporkan terjadinya kesalahan pada sistem.
2. Mengatur daya sistem, meyakinkan bahwa baterai di isi kembali saat keadaan mengijinkan, dan
generator dimatikan dalam kondisi alam dan cuaca yang berpot.ensi menyebabkan terjadinya
kerusakan, seperti angin kencang, badai dan sambaran petir.
3. Mengijinkan penataan ulang kembali sistem dimana bagian dari perangkat lunak digantikan dengan
vrsi yang lebih baru dan dimana peralatan backup dihubungkan kepada sistem sebagai langkah
antisipatif jika sistem mengalami kegagalan.

Karena stasiun cuaca bersifats self-contained dan unattended, berarti perangkat lunak yang
dipasangkan memiliki kerumitan yang cukup tinggi alias kompleks. Meskipun demikian fungsionalitas
koleksi datanya cukup sederhana.
32 Bab I  Introduksi

KESIMPULAN

 Rekayasa perangkat lunak merupakan bagian dari disiplin ilmu teknik yang
berhubungan dengan seluruh aspek untuk memproduksi perangkat lunak

 Perangkat lunak bukan hanya sekadar sebuah program atau kumpulan dari
program-progam tetapi juga menyangkuat dokumentasi . Atribut=atribu penting
dari suatu perangkat lunak adalah maintainability, dependability, security,
efisiensi dan acceptability.

 Proses perangkat lunak memasukkan seluruh kumpulan aktivitas yang


berhubungan dengan pengembangan perangkat lunak . Abstraksi aktivitas
tingkat tinggi seperti spesifikasi, development, validasi, dan evolusi merupakan
bagian dari proses perangkat lunak.

 Ada banyak jenis-jenis sistem yang berbeda; masing-masing sistem memerlukan


peralatan dan teknik rekayasa perangkat lunak atau software engineering yang
sesuai. Sebaliknya hanya sedikit, jka ada desain spesifik dan teknik-teknik
implementasi yang dapat diterapkan pada semua jenis sistem.

 Ide pokok dari rekayasa perangkat lunak dapat diaplikasikan untuk digunakan
oleh seluruh jenis perangkat lunak. Ide dasar tersebut meliputi proses-proses
perangkat lunak yang dapat diatur (manageable software processes) yang
meliputi: dependabilitas dan keamanan, requirement engineering, dan software
reuse.

 Software engineer memiliki tanggung jawab moral kepada profesi engineering dan
masyarakat. Para insinyur perangkat lunak ini harus memperhatikan
permasalahan yang timbul sehubungan dengan isu-isu teknis.

 Masyarakat profesional mempublikasikan kode etik yang merupakan panduan


standar tingkah laku yang harapkan dari seorang software engineer.

 [Cite your source here.]


33 Rekayasa Perangkat Lunak

LATIHAN
1.1 Jelaskan mengapa software profesional itu bukan hanya sekadar program yang dikembangkan untuk
memenuhi kebutuhan konsumen atau user.
1.2 Apakah perbedaan utama antara pengembangan perangkat lunak generik dan pengembangan
produk secara kustom?
1.3 Ada 4 faktor atribut penting yang harus dimiliki oleh perangkat lunak profesional. Coba saudara
jelaskan. Sebutkan 4 atribut lainnya yang juga kadang-kadang bisa menjadi atribut yang penting.
1.4 Selain tantangan heterogenitas, perubahan bisnis dan sosial, terpercaya dan aman, coba saudara
identifikasi permasalahan dan tantangan lain yang kemungkinan akan dihadapi dalam abad ke-21.
(Saran: pikirkan mengenai lingkungan)
1.5 Berdasarkan pada pengetahuan yang saudara milikimengenai jenis-jenis aplikasi yang telah dibahas
dalam bagian 1.1.2. jelaskan dengan menggunakan contoh mengapa jenis aplikasi yang berbeda
memerlukan teknik rekayasa perangkat yang berbeda pula untuk mendukung desain dan
pengembangan.
1.6 Berikan penjelasan saudara mengapa idea dasar rekayasa perangkat lunak dapat diterapkan kepada
seluruh jenis sistem-sistem perangkat lunak.
1.7 Jelaskan bagaimana penggunaan universal web dapat mengubah sistem perangkat lunak.
1.8 Diskusikan apakah seorang insinyur yang profesional seharusnya disertifikasi sama seperti seorang
dokter atau pengacara?
1.9 Berikan contoh yang sesuai untuk setiap klause yang ada dalam Kode Etik sebagaimana ditunjukkan
dalam Kode Etik ACM/IEEE (Gambar 1.3)
1.10 Untuk membantu memerangi terorisme, banyak negara sedang melaksanakan atau telah
mengembangkan sistem komputer yang memeriksa sejumlah besar tindakan warganegaranya,
Jelaslah ini berhubungan dengan privasi. Coba saudara diskusikan etika yang berhubungan dengan
pengembangan sistem jenis ini.

JAWABAN

1.1 Karena perangkat lunak profesional itu memang bukan hanya sekadar menulis kode program
berdasarkan alur logika pemrograman tertentu saja, melainkan juga menyangkut aktivitas dokumentasi
dan konfigurasi data agar program dapat beroperasi dengan baik sesuai fungsional yang diinginkan.

1.2 Perbedaan utama antara pengembangan produk perangkat lunak generik dan pengembangan produk
perangkat lunak kustom: pada pengembangan perangkat lunak generik seluruh persyaratan yang
mengatur fungsional dan non-fungsinal sistem ditentukan sepenuhnya oleh perusahaan yang
mengembangkan perangkat lunak tersebut (softwarehouse developer) dan digunakan oleh semua
pengguna umum. Sedangkan pada pengembangan produk perangkat lunak yang dapat dikustomisasi
spesifikasi perangkat lunak yang dikembangkan ditentukan oleh organisasi yang akan
memesan,membeli dan menggunakan sistem itu.

1.3
34 Bab I  Introduksi

1.4 4 atribut penting yang harus dimiliki oleh sebuah perangkat lunak yang baik (gambar 1.2)
Karakteristik Produk Deskripsi
Maintainability Perangkat lunak seharusnya ditulis dalam suatu cara tertentu sedemikian
sehingga dapat berkembang untuk memenuhi perubahan kebutuhan
pelanggan. Ini mrupakan atribut penting karena perubahan perangkat
lunak merupakan hal yang pasti terjadi dalam lingkungan bisnis yang
berubah.
Dependability dan Security Dependabilitas perangkat lunak menyertakan sejumlah jangkauan
karakteristik seperti realibilitas atau kehandalan, keamanan atau sekuriti
dan keselamatan atau safety. Perangkat lunak yang depenable
seharusnya tidak menyebabkan kerusakan fisik atau ekonomi jika terjadi
kegagalan sistem/ system failure.
Efiesiensi Software seharusnya tidak menghasilkan sampah atau permasalahan
tambahan saat menggunakan sumber daya sistem seperti memori dan
siklus prosesor. Oleh sebab itu efisiensi juga menyangkut responsiveness,
waktu pemrosesan/ processing time, pemanfaatan memori dan
sebagainya.
Acceptability Software harus dapat diterima oleh berbagai macam jenis penggunanya.
Ini berarti suatu perangkat lunak harus dapat dimengerti, dapat
digunakan dan kompatibel atau memiliki kesesuaian dengan sistem lain
yang mereka gunakan.

Tantangan yang dihadapi dalam pengembangan perangkat lunak pada abad ke-21 berhubungan
dengan aspek lingkungan adalah masalah internetworking yang menggunakan sistem komunikasi
dengan wire dan wireless, pembangunan infrastruktur untuk menyediakan layanan koneksi
internet berkecepatan tinggi. Selain itu juga perlu dikaji aspek kesehatan dan keselamatan
penggunaan teknologi baru untuk mendukung interkoneksi dan transmisi data berkecepatan
tinggi.

1.5 Aplikasi yang berbeda memerlukan metode dan teknik pengembangan yang berbeda pula. Faktor
penting yang paling menentukan pemilihan metode dan teknik software engineering adalah jenis
aplikasi yang sedang dikembangkan. Sebagai contoh jenis aplikasi misalnya standalone itu adalah
aplikasi yang dirancang untuk dapat berjalan pada komputer lokal dan umumnya tidak
memerlukan konektivitas jaringan, meskipun tersedia fungsionalitas untuk membangun koneksi
ke jaringan internet. Aplikasi hiburan itu merupakan aplikasi yang dikembangkan untuk tujuan
hiburan semata. Biasanya memerlukan persyaratan grafis yang tinggi. Aplikasi pemrosesan batch
itu adalah aplikasi untuk memproses batch yaitu otomasi pekerjaan yang berhubungan dengan
aktivitas rutin setiap hari atau setiap bulan secara periodik, misalnya sistem pembayaran gaji,
sistem tagihan telepon otomatis, sistem tagihan internet dan TV berlangganan, dsb.
Pengembangan aplikasi transaksi iteratif development itu membutuhkan koneksi internet dan
arsitektur client-server, perlu merespon transaksi user untuk akses database yang ada pada
35 Rekayasa Perangkat Lunak

server. Aplikasi pengumpulan data merupakan aplikasi yang mengumpulkan data informasi
tertentu dengan menggunakan perangkat sensor dari lingkungan sekitarnya. Aplikasi pemodelan
dan simulasi bertujuan untuk memodelkan dan mensimulasikan suatu objek nyata yang ada di
dunia untuk tujuan penelitian dan learning tool secara visual-interaktif. Sistem kendali tertanam
embedded system adalah sistem perangkat lunak yang dikembangkan untuk tujuan kontrol atau
mengendalikan operasionalitas dari suatu perangkat keras dan ‘’ditanamkan’’ pada perangkat
keras atau sistem itu sendiri.. Jadi karena tujuan pengembangan sistem berbeda, maka bisa jadi
arsitekturnya pun akan berbeda satu dengan yang lain. Ada proses yang terjadi secara simultan
dan ada yang terpisah.
1.6 Karena ide dasar ini merupakan kerangka berpikir bersifat umum dan dapat digunakan untuk
pengembangan semua aplikasi. Ini merupakan himpunan dari metode dan teknik serta pengalaman
semua pengembangan perangkat lunak. Jadi semacam suatu contoh best praktis, Guidelines atau
handbook untuk software engineering. Contoh semua proses development ada tahap spesifikasi
requirements, kemudian menulis kode, kemudian proses testing, kemudian distribusi dan ada
pemeliharaan dan evolusi untuk kebutuhan masa yang akan datang.
1.7 Keberadaan teknologi web ini telah membawa perubahan yang signifikan dalam organisasi perangkat
lunak bisnis. Sebelum adanya teknologi sistem berbasis web, aplikasi-aplikasi bisnis pada masa lalu
bersifat monolitik, yaitu program tunggal yang dijalankan pada suatu komputer tunggal atau cluster-
cluster komputer. Pada masa itu komunikasi bersifat lokal terbatas untuk keperluan internal suatu
organisasi. Kini, perangkat lunak telah terdistribusi bahkan meluas ke seluruh dunia. Aplikasi-aplikasi
bisnis tidak diprogram dari awal melainkan melibatkan penggunaan kembali (reuse paradigm atau reuse
concept) komponen dan program secara luas
1.8 Ya bisa jadi sertifikasi itu di perlukan. Hal ini untuk membuktikan tingkat penguasaan kompetensi
seorang engineer terhadap keilmuan dan kode etik dan pelatihan profesional software engineering,
serta semacam panduan bertingkah laku. Serttifikasi diharapkan dapat membuat profesi ini menjadi
lebih berguna dan diakui dalam masyarakat.

1.9
36 Bab I  Introduksi

Kode Etik dan Pelatihan Profesional Rekayasa Perangkat Lunak


ACM/IEEE Komite Gabungan pada Kode Etik dan Pelatihan Profesional Rekayasa Perangkat Lunak

PEMBUKAAN
Versi yang lebih singkat dari kode etik merupakan intisari dari berbagai aspirasi pada abstraksi tingkat
tinggi. Klausa-klausa yang digunakan dalam versi lengkap dari kode etik dan pelatihan profesional
rekayasa perangkat lunak ini memberikan contoh-contoh dan rincian bagaimana aspirasi ini
mengubah cara seseorang bertindak sebagai seorang engineer perangkat lunak profesional. Tanpa
adanya aspirasi, rincian bisa menjadi sesuatu yang bersifat legalistik dan menyebabkan
kejenuhan;sebaliknya tanpa rincian aspirasi ibarat tong kosong nyaring bunyinya; aspirasi dan rincian
digabungkan bersama-sama keduanya akan membentuk suatu kode yang sinergis.
Para insinyur perangkat lunak harus memiliki komitmen pribadi untuk membuat analisis,
spesifikasi, desain, pengembangan, pengujian dan pemeliharaan perangkat lunak menjadi suatu
profesi yang berguna dan dihormati di masyarakat. Sehubungan dengan komitmen mereka untuk
kesehatan, keselamatan dan kesejahteraan masyarakat, para insinyur perangkat lunak harus
senantiasa berpegang teguh sesuai dengan delapan prinsip utama:
1. PUBLIK – Seorang Software Engineer harus bertindak konsisten
dan memperhatikan kebutuhan masyarakat umum.
2. PERUSAHAAN DAN KLIEN – Seorang software engineer bertingkah
laku dengan cara sedemikian sehingga ekspektasi perusahaan dan
ekspektasi klien sejalan dengan ekspektasi masyarakat luas.
3. PRODUK – Software Engineer harus dapat meyakinkan bahwa produk
perangkat lunak yang diproduksi dan modifikasi-modifikasi yang
dilakukan memenuhi standar profesional yang setinggi mungkin.
4. JUSTIFIKASI – Para software engineer harus memelihara integritas dan independensi dalam
membuat suatu justifikasi profesional.
5. MANAJEMEN – Manager dan Leader perusahaan yang bergerak dalam bidang
pengembangan perangkat lunak harus berlangganan dan mempromosikan suatu
pendekatan etikal kepada pihak manajemen perusahaan pengembang dan pemeliharaan
perangkat lunak.
6. PROFESI – Software engineer harus menjaga integritas dan reputasi profesi secara konsisten
dengan harapan masyarakat lias.
7. KOLEGA – Software Engineer harus bersikap fair dan mendukung kolega atau rekan
sejawatnya.
8. MOTIVASI DIRI – Setiap software engineer harus senantiansa berpartisipasi dalam proses
pembelajaran seumur hidup mengenai pelatihan profesional dan mengutamakan
pendekatan etikal terhadap pelatihan profesional rekayasa perangkat lunak.
37 Rekayasa Perangkat Lunak

Seorang software engineer harus senantiasa menegakkan standar kebenaran, kejujuran dan integritas.
Software engineer seharusnya tidak menggunakan keahlian dan kemampuanna untuk berlaku tidak jujur
karena akan merusak reputasi profesi software engineer. Bagaimanapun juga ada area-area dimana standar
tingkah laku yang dapat diterima tidak dibatasi oleh hukum-hukum tetapi lebih kepada tanggung jawab
profesional, antara lain:

1. Kerahasiaan (confidentiality). Software engineer seharusnya menghormati kerahasiaan pekerja atau


klien tanpa memperhatikan apakah persetujuan kerahasiaan resmi secara tertulis telah
ditandatangani.
2. Kompetensi (competence). Seorang insinyur perangkat lunak seharusnya menghindari terjadinya
kesalahan dalam menjelaskan level kompetensi yang dimilikinya. Seorang software engineer
seharusnya tidak menerima pekerjaan di luar kompetensi yang dimilikinya.
3. Hak Atas Kekayaan Intelektual (Intellectual Property Rights). Pahami aturan-aturan hukum yang
mengatur tentang penggunaan properti intelektual seperti hak patent dan hak cipta. Seorang
Software Engineer harus menjaga dan melindungi properti intelektual perusahaan dan client.
4. Penyalahgunaan komputer (Computer Misuse). Seorang Software Engineer seharusnya tidak
menggunakan kemampuan teknikalnya untuk menyalahgunakan komputer milik orang lain.
Penyalahgunaan komputer bisa terjadi mulai dari tingkat ringan (bermain game dengan menggunakan
sumberdaya komputer yang dimiliki perusahaan) hingga ke tingkat yang sangat serius (menyebarkan
virus atau malware lainnya).

1.10 Etika ini harus mengacu kepada UU Anti Terorisme yang ada dalam suatu negara dan juga UU
menyangkut kewarganegaraan yang mengatur tentang hak dan kewajiban seorang warganegara, atau
UU yang mengatur tentang transaksi elektronik ITE, dimana berpotensi terjadinya kejahatan misalnya
saja pornografi, kejahatan perbankan, kejahatan pemalsuan identitas diri, kejahatan dalam transaksi
perdagangan elektronik, penyebaran hoax, tindakan hacking yang meretas situs organisasi tertentu
menyusup ke dalam sistem dan merusak sistem tersebut, mengirimkan thread-thread semacam bom
waktu yang dapat meledak setiap saat,menyebarkan virus komputer yang merusak jaringan komputer
atau ancaman melalui media sosial yang berkaitan erat dengan tindakan-tindakan terorisme, atau
pembajakan perangkat lunak, dan masih banyak contoh kejahatan komputer yang berhubungan
dengan ancaman terorime.

Anda mungkin juga menyukai