Modul RPL dasar Lengkap

8,323

Published on

Modul untuk kelas RPL atau Rekayasa Perangkat Lunak

Published in: Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,323
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3,450
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Modul RPL dasar Lengkap

  1. 1. Departemen Pendidikan NasionalDirektorat Jenderal Manajemen Pendidikan Dasar Dan MenengahRekayasaPerangkat LunakBuku Teks Sekolah Menengah KejuruanAunur R. Mulyarto 2008
  2. 2. Aunur R. Mulyarto REKAYASA PERANGKAT LUNAK Untuk SMK Direktorat Pembinaan Sekolah Menengah Kejuruan Direktorat Jenderal Manajemen Pendidikan Dasar dan Menengah Departemen Pendidikan Nasional
  3. 3. Hak Cipta pada Departemen Pendidikan NasionalDilindungi Undang-undangREKAYASAPERANGKAT LUNAKUntuk SMKPenulis : Aunur R. MulyartoIlustrasi, Tata Letak :Perancang Kulit :Ukuran Buku : ……. x ……. cm …... , Mulyarto R Aunur, ------------------------------------------------------------ … Rekayasa Perangkat Lunak : SMK/oleh Aunur R. Mulyarto/ Jakarta:Direktorat Pembinaan Sekolah Menengah Kejuruan, Departemen ---- Pendidikan Nasional, 2008. vi. ....... hlm. ISBN …..-……-……-….. 1. Rekayasa Perangkat Lunak I. JudulDiterbitkan oleh Direktorat Pembinaan Sekolah Menengah KejuruanDirektorat Jenderal Manajemen Pendidikan Dasar dan MenengahDepartemen Pendidikan NasionalTahun 2008Diperbanyak oleh….
  4. 4. KATA SAMBUTANPuji syukur kami panjatkan kehadirat Allah SWT, berkat rahmat dan karuniaNya, Pemerintah, dalam hal ini, Direktorat Pembinaan Sekolah MenengahKejuruan Direktorat Jenderal Manajemen Pendidikan Dasar dan MenengahDepartemen Pendidikan Nasional, pada tahun 2008, telah melaksanakanpenulisan pembelian hak cipta buku teks pelajaran ini dari penulis untukdisebarluaskan kepada masyarakat melalui website bagi siswa SMK.Buku teks pelajaran ini telah melalui proses penilaian oleh Badan StandarNasional Pendidikan sebagai buku teks pelajaran untuk SMK yangmemenuhi syarat kelayakan untuk digunakan dalam proses pembelajaranmelalui Peraturan Menteri Pendidikan Nasional Nomor 12 tahun 2008.Kami menyampaikan penghargaan yang setinggi-tingginya kepada seluruhpenulis yang telah berkenan mengalihkan hak cipta karyanya kepadaDepartemen Pendidikan Nasional untuk digunakan secara luas oleh parapendidik dan peserta didik SMK di seluruh Indonesia.Buku teks pelajaran yang telah dialihkan hak ciptanya kepada DepartemenPendidikan Nasional tersebut, dapat diunduh (download), digandakan,dicetak, dialihmediakan, atau difotokopi oleh masyarakat. Namun untukpenggandaan yang bersifat komersial harga penjualannya harus memenuhiketentuan yang ditetapkan oleh Pemerintah. Dengan ditayangkannya softcopy ini akan lebih memudahkan bagi masyarakat untuk mengaksesnyasehingga peserta didik dan pendidik di seluruh Indonesia maupun sekolahIndonesia yang berada di luar negeri dapat memanfaatkan sumber belajarini.Kami berharap, semua pihak dapat mendukung kebijakan ini. Selanjutnya,kepada para peserta didik kami ucapkan selamat belajar dan semoga dapatmemanfaatkan buku ini sebaik-baiknya. Kami menyadari bahwa buku inimasih perlu ditingkatkan mutunya. Oleh karena itu, saran dan kritik sangatkami harapkan. Jakarta, Direktur Pembinaan SMK
  5. 5. Pengantar Penulis Dengan segala kerendahan hati, kami mengucapkan syukur kepadaAllah SWT. Karena hanya dengan lindungan, rahmat dan karuniaNya-lahmaka buku ini dapat diselesaikan. Buku yang berjudul ’Rekayasa Perangkat Lunak’ merupakan bukuyang disusun untuk memenuhi kebutuhan buku pegangan bagi siswa SekolahMenengah Kejuruan. Khususnya pada program keahlian RekayasaPerangkat Lunak. Pada kesempatan ini kami ingin menyampaikan terima kasih yangsebesar-besarnya kepada :- Direktur Pembinaan SMK atas kesempatan yang diberikan pada penulis untuk menyusun dan menyelesaikan buku ini.- Prof.Dr.Ir. Harijono, M.App.Sc selaku Dekan Fakultas Teknologi Pertanian Universitas Brawijaya Malang, yang telah memberikan ijin dan kemudahan bagi kami dalam melaksanakan kegiatan penulisan buku.- Rekan-rekan sejawat di Jurusan Teknologi Industri Pertanian, Fakultas Teknologi Pertanian, Universitas Brawijaya Malang yang telah memberikan bantuan baik moril maupun materiil selama penulisan buku ini berlangsung.- Rekan-rekan di Direktorat Pembinaan SMK yang telah banyak membantu dalam masalah-masalah administratif selama berlangsungnya penulisan buku ini. Demi penyempurnaan buku ini, kami sangat mengharapkan saran,kritik dan masukan. Akhirnya kami berharap semoga laporan ini bermanfaat.Amien. Malang, Desember 2008 Penulis ii
  6. 6. Daftar Isi Halaman PENGANTAR PENULIS i PENGANTAR DIREKTUR PEMBINAAN SMK ii DAFTAR ISI iv DAFTAR GAMBAR xi DAFTAR TABEL xxi DAFTAR LAMPIRAN xxii DAFTAR ISTILAH / GLOSARI xxiii SINOPSIS xxvi PETA KOMPETENSI xxvii1 PENDAHULUAN 11.1. Pengertian 11.2. Tujuan Rekayasa Perangkat Lunak 21.3. Ruang Lingkup 31.4. Rekayasa Perangkat Lunak Dan Disiplin Ilmu Komputer 41.5. Rekayasa Perangkat Lunak Dan Disiplin Ilmu Lain 61.6. Perkembangan Rekayasa Perangkat Lunak 71.7. Profesi Dan Sertifikasi 81.8. Tentang Buku Ini 91.8.1. Isi 91.8.2. Bagaimana menggunakan buku ini 102 PRINSIP PEMECAHAN MASALAH DALAM 13 REKAYASA PERANGKAT LUNAK2.1. Masalah 112.1.1. Pengertian 112.1.2. Tipe-tipe masalah 132.2. Pemecahan Masalah 152.2.1. Proses 152.2.2. Strategi 162.3. Solusi Masalah 212.4. Pendekatan Sistem Dalam Pemecahan Masalah 222.4.1. Sistem 222.4.2. Pendekatan Sistem 243 METODE REKAYASA PERANGKAT LUNAK 253.1. Model Proses Rekayasa Perangkat Lunak 253.1.1. The Waterfall Model 27 iv
  7. 7. 3.1.2. Prototyping Model 283.1.3. Unified Process dan Unified Modeling Language 303.2. Tahapan Rekayasa Perangkat Lunak 333.2.1. Analisis 333.2.2. Disain 383.2.3. Konstruksi 393.2.4. Pengujian 393.2.5. Perawatan dan Konfigurasi 404 DASAR SISTEM KOMPUTER 414.1. Data 414.2. Informasi 414.3. Sistem Komputer 434.4. Perangkat Keras 444.5. Perangkat Lunak 524.5.1. Klasifikasi 525 SISTEM OPERASI 575.1. Fungsi 575.1.1. Antar muka pengguna 575.1.2. Manajemen sumberdaya 605.1.3. Manajemen file 605.1.4. Manajemen proses 615.1.5. Manajemen system masukan dan keluaran (I / O) 625.2. BIOS 635.3. Jenis-Jenis Sistem Operasi 645.3.1. DOS 645.3.2. UNIX 655.3.3. Microsoft Windows 685.3.4. Apple Mac OS 705.3.5. Linux 715.4. Menjalankan Sistem Operasi 725.4.1. Instalasi 735.4.2. Booting 765.4.3. Perintah berbasis teks 785.4.4. Bekerja dengan GUI 896 JARINGAN KOMPUTER 916.1. Topologi 916.2. Jangkauan 946.3. Protocol dan Tcp/Ip 966.4. Perangkat Keras Jaringan 986.5. Bekerja Dalam Komputer Jaringan 996.5.1. Persiapan 1006.5.2. Konfigurasi koneksi jaringan 103 v
  8. 8. 6.5.3. Berbagi file, printer, dan sumber daya lain 1037 DASAR-DASAR PEMROGRAMAN 1067.1. Program dan Bahasa Pemrograman 1067.2. Klasifikasi Bahasa Pemrograman 1077.3. Interpreter dan Compiler 1097.4. Tahapan-Tahapan Pemrograman 1107.5. Teknik Pemrograman 1137.5.1. Pemrograman Prosedural 1137.5.2. Pemrograman Terstruktur 1147.5.3. Pemrograman Berorientasi Obyek 1177.6. Pemilihan Bahasa Pemrograman 1198 TIPE DATA, VARIABEL, KONSTANTA, DAN 121 OPERATOR8.1. Tipe Data 1218.1.1. Numerik 1228.1.2. Character 1238.1.3. Boolean 1248.1.4. Array 1248.1.5. Record 1248.1.6. Image 1248.1.7. Date Time 1258.1.8. Tipe data lain 1258.2. Variabel 1278.3. Konstanta 1298.4. Operator 1308.4.1. Operator aritmatika 1308.4.2. Operator perbandingan 1318.4.3. Operator logika 1329 ALGORITMA PEMROGRAMAN DASAR 1339.1. Pengertian Algoritma 1339.2. Cara Penulisan Algoritma 1359.3. Flowchart 1369.4. Struktur berurutan 1389.5. Struktur pemilihan / percabangan 1419.5.1. Struktur pemilihan sederhana 1429.5.2. Struktur pemilihan bersarang (nested) 1439.6. Struktur Pengulangan 1479.6.1. Struktur pengulangan dengan For 1479.6.2. Struktur pengulangan dengan While, Loop, dan Repeat 15010 ALGORITMA PEMROGRAMAN LANJUTAN 15310.1. Prosedur 153 vi
  9. 9. 10.2. Array 15610.2.1. Array satu dimensi 15710.2.2. Array multi-dimensi 15811 PENERAPAN ALGORITMA DALAM BAHASA 161 PEMROGRAMAN11.1. Sekilas Tentang Bahasa Pemrograman Python 16111.1.1. Menjalankan Python 16211.2. Variabel, Konstanta, Tipe Data dan Operator 16511.3. Perintah Dasar Input - Output 16711.4. Penerapan Struktur Algoritma 16811.4.1. Struktur Berurutan 16811.4.2. Struktur Pemilihan 17011.4.3. Struktur Kendali Pengulangan 17611.5. Fungsi 18211.5.1. Fungsi built in 18211.5.2. Membuat fungsi 18311.6. Modul 18411.6.1. Modul dalam standar library 18511.6.2. Membuat Modul 18712 PEMROGRAMAN BERBASIS GUI 18912.1. Pengenalan Pada Visual Basic 18912.1.1. Memulai Visual Basic 19012.1.2. IDE Visual Basic 19112.1.3. Toolbox 19312.1.4. Mengatur Lingkungan Kerja Visual Basic 19512.2. Prinsip Pokok Pemrograman Berbasis GUI 19712.2.1. Visual Design 19712.2.2. Event-Driven Programming 19912.3. Struktur Kendali 19912.4. Mengenal Procedure dan Fungsi 20612.4.1. Sub Procedure 20712.4.2. Function Procedure 20712.4.3. Fungsi built-in 21113 PENCARIAN KESALAHAN DAN PENGUJIAN 21213.1. Jenis-Jenis Kesalahan 21213.1.1. Run Time Errors 21313.1.2. Logical Errors 21813.1.3. Precision Errors 21913.2. Teknik Pencarian Kesalahan 22013.3. Pengujian 22113.4. Dokumentasi 222 vii
  10. 10. 14 DASAR-DASAR SISTEM BASIS DATA 22314.1. Pengertian Basis Data 22314.1.1. Operasi dasar basis data 22514.1.2. Tujuan basis data 22614.2. Sistem Basis Data 22714.2.1. Komponen sistem basis data 22714.3. Tipe Basis Data 23014.4. Tahapan Disain Sistem Basis Data 23114.4.1. Data Planning 23214.4.2. Requirements Specification 23214.4.3. Conceptual Design 23214.4.4. Logical Design 23314.4.5. Physical Design 23314.5. Perangkat Lunak DBMS 23314.5.1. Microsoft Access 23314.5.2. MyQSL 23414.5.3. Microsoft SQL Server 23614.5.4. PostgreSQL 23714.5.5. Oracle Database 23715 MODEL DATA 23815.1. Diagram Entity-Relationship 23915.2. Entitas 24015.3. Atribut 24115.4. Relationship 24415.5. Kardinalitas 24516 BASIS DATA RELASIONAL 24716.1. Model Basis Data 24716.1.1. File System (Flat File) 24816.1.2. Hierarchical Model 24816.1.3. Network Model 24916.1.4. Relational Model 24916.1.5. Object Model 25016.1.6. Object-Relational Model 25016.2. Basis Data Relasional 25016.2.1. Row/Baris/Tuple 25216.2.2. Field/Kolom/Attributes 25216.3. Relasi Antar Tabel 25516.4. Normalisasi 26016.4.1. Functional Dependency 26016.4.2. Super-Key, Candidate-Key dan Primary-Key 26116.4.3. Bentuk-Bentuk Normal dan Proses Normalisasi 26316.5. Query 266 viii
  11. 11. 17 MENGELOLA BASIS DATA DENGAN DBMS 26917.1. Memulai Microsoft Access 27217.2. Tabel 27317.2.1. Pendefinisian Field dan Tipe Data. 27317.2.2. Pengisian Data Pada Tabel 27617.3. Query 27717.3.1. Membuat Relasi Antar Tabel 27817.3.2. Membuat Query 28017.4. Form 28817.4.1. Membuat Form 28917.4.2. Memodifikasi Form 29317.5. Report 29918 SQL 30818.1. Bahasa Basis Data 30818.1.1. Data Definiton Language 30818.1.2. Data Manipulation Language 30918.2. Sql 30918.2.1. Pembuatan Basis Data 31018.2.2. Pembuatan Tabel 31118.2.3. Perubahan Pada Atribut Tabel 31218.2.4. Pengisian Data Pada Tabel 31318.2.5. Membuat Query 31418.2.6. Update Data 32218.2.7. Menghapus record, table dan basis data 32318.2.8. Menggunakan opsi dan perintah tambahan 32419 DASAR-DASAR PEMROGRAMAN BERBASIS WEB 32819.1. Intranet, Ekstranet Dan Internet 32819.2. Web Dan Pemrograman Web 32919.3. Client-Side Dan Server-Side 33019.4. Pengertian Web Statis Dan Dinamis 33219.5. Perangkat Lunak untuk Pemrograman Web 33419.5.1. Sistem operasi 33419.5.2. Web server 33519.5.3. Perangkat pengembang web 34019.5.4. Sistem Manajemen Basis Data 34119.5.5. Web Browser 34119.6. Bahasa Pemrograman Berbasis Web (Script) 34319.6.6. ASP dan ASP.net 34319.6.7. PHP 34420 HTML 34520.1. Pengertian tentang HTML 345 ix
  12. 12. 20.2. Sintaks dan Struktur Umum HTML 34720.2.1. Header 34920.2.2. Body 35020.3. Format Dokumen 35020.3.3. Heading 35120.3.4. Paragraph 35120.3.5. Line Break 35120.3.6. List 35220.3.7. Font 35420.3.8. Link 35520.3.9. Horizontal Line 35620.3.10. Image 35620.3.11. Tabel 35820.4. Bekerja Dengan Form 36120.4.12. Tipe Input 36120.5. Style Sheet (CSS) 36521 PEMROGRAMAN WEB 37421.1. Pengenalan Pada PHP 37421.1.1. Aturan-aturan umum pada PHP g 37521.1.2. PHP dan HTML 37721.2. Variabel dan Tipe Data 37821.2.1. Variabel 37821.2.2. Tipe data 37921.2.3. Operator 38121.3. Translasi algoritma ke bahasa pemrograman web 38221.3.1. Struktur berurutan 38221.3.2. Struktur pemilihan 38321.3.3. Struktur pengulangan 38521.4. Require dan Include 38821.5. Fungsi 39121.6. Bekerja Dengan Sistem Manajemen Basis Data 39521.6.1. Koneksi 39521.6.2. Manipulasi data 39621.7. Contoh aplikasi PHP 398 DAFTAR PUSTAKA 413 LAMPIRAN x
  13. 13. Daftar GambarNo. Judul Gambar Halaman1.1. Tujuan rekayasa perangkat lunak. 21.2. Ruang lingkup rekayasa perangkat lunak (Abran et.al., 3 2004).1.3. Klasifikasi disiplin ilmu komputer menurut ACM (1998). 51.4. Klasifikasi disiplin ilmu komputer menurut Denning 5 (2000).1.5. Klasifikasi disiplin ilmu komputer menurut Wikipedia 6 (2007).1.6. Keterkaitan Rekayasa Perangkat Lunak dengan bidang 7 ilmu lain.1.7. Perkembangan Rekayasa Perangkat Lunak. 82.1. Kondisi aktual, target dan masalah. 122.2. Gejala dan masalah. 132.3. Tipe-tipe masalah (Deek et al, 2005). 142.4. Proses pemecahan masalah (diadopsi dari Deek et al, 15 2005)2.5. Klasifikasi strategi pemecahan masalah. 172.6. Strategi dekomposisi masalah. 182.7. Pemecahan masalah dengan library. 192.8. Strategi problem expansion. 192.9. Strategi pemecahan masalah linear. 202.10. Strategi pemecahan masalah iterative. 202.11. Strategi pemecahan masalah parallel. 212.12. Sistem. 232.13. Sistem dan komponen-komponennya (O’Brien, 1999). 232.14. Tahapan-tahapan pendekatan sistem dalam 24 penyelesaian masalah (O’Brien, 1999).3.1. System Development Life Cycle (SDLC) 263.2. The Waterfall Model 273.3. Klasifikasi prototyping model (Harris, 2003) 283.4. Tahapan-tahapan prototyping model (Harris, 2003) 313.5. RUP Life Cycle (Ambler, 2005). 313.6. Tahapan dan aktifitas dalam analisis. 343.7. Notasi pada DFD. 353.8. Tahapan pembuatan DFD. 35 xi
  14. 14. 3.9. Context diagram sistem pemesanan makanan (Hoffer et 36 al., 2002).3.10. DFD Level 0. 373.11. Tipe-tipe perawatan. 404.1. Data, proses, informasi dan pengguna 424.2. Sistem Komputer 444.3. Komponen dasar komputer 444.4. Perangkat keras komputer 464.5. Display atau monitor 474.6. Motherboard sebuah komputer 474.7. Central Processing Unit (CPU) 484.8. Berbagai jenis main memory 484.9. Pemasangan expansion card 494.10. Power Supply Unit 494.11. CD-RW Drive, salah satu contoh Optical Disc Drive 504.12. Hard Disk 514.13. Skema umum sebuah keyboard 514.14. Berbagai jenis mouse 524.15. Tampilan desktop sistem operasi Windows XP 534.16. Application software Microsoft Word (Software 54 pengolah kota).4.17. Application software Winrar (Software kompresi dan 55 ekstraksi file).4.18. Application software PowerSim (Software untuk 55 simulasi sistem)4.19. Application software Hysis (Software untuk 56 perancangan pabrik).5.1. Fungsi-fungsi sistem operasi 585.2. Antar muka pengguna model CLI pada Linux / Unix 595.3. Antar muka pengguna model GUI pada Linux Fedora 595.4. Manajemen memori pada sistem operasi Microsoft 60 Windows5.5. Windows Explorer sebagai sarana pengelolaan file 615.6. Manajemen proses pada sistem operasi Microsoft 62 Windows5.7. Manajemen I / O pada sistem operasi Microsoft 63 Windows.5.8. Tampilan BIOS utility 645.9. Contoh penggunaan DOS 655.10. Unix dan sistem operasi turunannya 665.11. Manajemen memori dan penjadwalan proses pada Unix 675.12. X windows system di UNIX 685.13. Windows versi 3.11 69 xii
  15. 15. 5.14. Windows Vista 695.15. Mac OS versi awal 705.16. Mac OS X 715.17. Linux dengan desktop KDE 725.18. Tahapan-tahapan instalasi 745.19. Testing media instalasi 745.20. Proses penentuan target instalasi 755.21. Proses copy file pada Fedora 765.22. Proses awal booting 775.23. Proses booting pada Linux Fedora 785.24. Terminal sedang menjalankan mode CLI 795.25. Perintah-perintah pada direktori sbin 795.26. Perintah-perintah pada direktori /usr/sbin. 805.27. Perintah-perintah pada direktori bin. 805.28. Perintah-perintah pada direktori /usr/bin 815.29. Contoh penggunaan perintah ls 815.30. Contoh penggunaan perintah cd 825.31. Contoh penggunaan perintah find 825.32. Contoh penggunaan perintah cat dan more 835.33. Contoh penggunaan perintah cp 835.34. Contoh penggunaan perintah mv untuk memindahkan 84 file.5.35. Contoh penggunaan perintah mv untuk mengganti 84 nama file.5.36. Contoh penggunaan perintah rm untuk menghapus file 85 atau direktori5.37. Contoh penggunaan perintah mkdir 855.38. Attribute file / folder pada Microsoft WIndows 865.39. Attribute file / direktori pada keluarga Unix 875.40. Eksekusi perintah ps 885.41. Penggunaan perintah df. 895.42. Contoh hasil eksekusi perintah man untuk melihat 89 manual suatu perintah.5.43. Membuka konteks menu dengan klik kanan. 905.44. Drag and drop 906.1. Topologi ring 926.2. Topologi bus 936.3. Topologi Star 946.4. Jaringan LAN 946.5. Jaringan MAN 956.6. Jaringan WAN 966.7. Skema Layer TCP/IP 976.8. Perangkat keras jaringan 986.9. Network Interface Card 98 xiii
  16. 16. 6.10. Cisco Router 996.11. Switch 996.12. Hub 996.13. Membuka system properties 1016.14. Device manager 1016.15. Output perintah lspci untuk memeriksa network 102 adapter..6.16. Memeriksa protocol TCP/IP 1026.17. Kondisi koneksi jaringan 1036.18. Mengatur file sharing 1046.19. Menjelajah komputer yang ada di jaringan 1056.20. Printer sharing 1057.1. Klasifikasi bahasa pemrograman berdasarkan 108 kedekatannya dengan perangkat keras7.2. Klasifikasi bahasa pemrograman berdasarkan tujuan 109 dan fungsinya7.3. Proses eksekusi interpreter 1097.4. Proses eksekusi compiler 1107.5. Tahapan-tahapan dalam pemrograman 1117.6. Pemrograman prosedural 1137.7. Top-Down Design 1157.8. Class, object, attribute dan method 1177.9. Pewarisan 1187.10. Contoh abstraction 1198.1. Pengelompokkan tipe data 1229.1. Notasi Flowchart 1379.2. Program flowchart 1389.3. Flowchart untuk penyelesain contoh 9.4. 1409.4. Flowchart penyelesaian untuk contoh 9.6 1419.5. Flowchart penyelesaian masalah nonton film 1429.6. Flowchart penyelesaian untuk contoh 9.8. 1439.7. Flowchart penyelesaian untuk contoh 9.9 1459.8. Flowchart penyelesaian untuk contoh 9.10 1469.9. Struktur algoritma pengulangan dengan For. 1489.10. Flowchart penyelesaian untuk contoh 9.13 1499.11. Struktur pengulangan dengan While..Wend 1509.12. Contoh penggunaan While .. wend 1519.13. Flowchart penyelesaian untuk contoh 9.16 15210.1. Skema penggunaan prosedur 15410.2. Penyelesaian contoh 10.2 15510.3. Lemari dengan banyak kotak laci di dalamnya 157 xiv
  17. 17. 10.4. Perbedaan array satu dimensi dan dua dimensi 15911.1. Jendela IDLE atau Python Shell 16311.2. Mode interaktif 16311.3. Jendela editor baru pada IDLE 16411.4. Proses eksekusi kode program pada mode skrip 16412.1. Tampilan awal Visual Basic 19012.2. Tampilan awal untuk pilihan Standard.EXE 19112.3. IDE Visual Basic 19212.4. Toolbox VB 6 19412.5. Jendela pengaturan editor 19612.6. Jendela pengaturan format editor 19612.7. Jendela pengaturan environment 19712.8. Obyek, Property, Method dan Event 19813.1. Jenis-jenis kesalahan 21313.2. Kesalahan penulisan reserve word 21313.3. Kesalahan penggunaan nama variable 21413.4. Cara penulisan pernyataan yang salah 21513.5. Kesalahan out of data 21513.6. Pembacaan data jika jumlah data lebih banyak 21613.7. Kesalahan penggunaan tipe data 21613.8. kesalahan karena division by zero 21713.9. Kesalahan penggunaan argument 21813.10. Tahapan-tahapan dalam pencarian kesalahan 22014.1. Lemari arsip dan basis data 22414.2. Tingkatan dalam abstaksi data (Lewis et al., 2002) 22514.3. Operasi-operasi dasar pada basis data 22614.4. Komponen-komponen sistem basis data dan 227 keterkaitannya14.5. Struktur umum DBMS 22914.6. Klasifikasi pengguna sistem basis data 23014.7. Tipe-tipe basis data (O’Brien, 1999) 23114.8. Tahapan disain basis data (diadopsi dari O’Brien, 1999) 23214.9. Logo Microsoft Access 23314.10. Tampilan Microsoft Access 23414.11. Logo MySQL 23514.12. Tampilan awal phpMyAdmin 23514.13. Logo Microsoft SQL Server 23614.14. GUI pada Microsoft SQL Server 23614.15. Logo PostgreSQL 23614.16. Logo Oracle 236 xv
  18. 18. 15.1. Notasi entitas pada ER-Diagram 23915.2. Penggunaan notasi atribut pada ER-Diagram 23915.3. Penggunaan notasi relationship pada ER-Diagram 24015.4. Entitas siswa dan atributnya 24115.5. Entitas guru dan atributnya 24215.6. Entitas mobil dan atributnya 24215.7. Relationship 24415.8. Hubungan one-to-one suami dan istri 24515.9. Hubungan one-to-many kelas dengan siswa 24516.1. Model basis data (Powell, 2006) 24716.2. Flat file 24816.3. Hierarchical model (Powell, 2006) 24916.4. Network model (Powell, 2006). 24916.5. Relational Model (Powell, 2006) 25016.6. Hubungan table/file/relation, row/record/tuple dan 251 column/field/attribute16.7. Kolom, constraint dan tipe data (Powell, 2006). 25316.8. Contoh atribut sederhana 25416.9. Contoh atribut komposit 25416.10. Contoh atribut bernilai tunggal dan atribut bernilai 255 banyak.16.11. Tabel Pengarang 25516.12. Tabel Penerbit 25616.13. Tabel buku 25616.14. ER-Diagram untuk Penerbit dan Buku 25716.15. Hubungan table Penerbit dan Buku 25716.16. ER-Diagram untuk Pengarang – Buku 25816.17. Hubungan table Pengaran dan Buku 25916.18. Relasi antar table 25916.19. Contoh ketergantungan fungsional 26116.20. Table siswa 26216.21. Table Guru dengan salah satu kolom bernilai banyak 26316.22. Table Guru dengan semua kolom sudah bernilai 264 tunggal16.23. Hasil dekomposisi tabel 26517.1. ER Diagram untuk kasus Basis Data Penjualan Buku 27017.2. Tampilan awal Microsoft Access 27217.3. Penentuan nama dan lokasi basis data 27217.4. Bagian-bagian sebuah basis data pada Microsoft 273 Access17.5. Tahap awal pembuatan table 27417.6. Pendefinisian field, tipe data, constraint dan domain 27417.7. Toolbar Microsoft Access 275 xvi
  19. 19. 17.8. Struktur table pembeli 27517.9. Struktur table buku 27517.10. Struktur table pesanan 27617.11. Struktur table item_pesanan 27617.12. Hasil pengisian data pada table pembeli 27617.13. Hasil pengisian data pada table buku 27717.14. Hasil pengisian data pada table pesanan 27717.15. Hasil pengisian data pada table item_pesanan 27717.16. Jendela Relationships 27817.17. Jendela Show Table 27817.18. Tabel-tabel yang akan direlasikan 27817.19. Jendela untuk edit relationships 27917.20. Relasi untuk keseluruhan table 27917.21. Jendela query pada mode design view 28017.22. Prosedur dan hasil query table buku 28117.23. Query nama pengarang dan bukunya 28217.24. Query judul buku dan harga dengan urutan 28317.25. Query dengan criteria tertentu 28317.26. Query dengan menggunakan operator and 28417.27. Query dengan menggunakan operator or 28417.28. Pemilihan table untuk query dua table. 28517.29. Query dua tabel 28617.30. Query tiga table. 28717.31. Query empat table 28817.32. Jenis-jenis form 28917.33. Membuka jendela Form Wizard 28917.34. Pemilihan table yang akan dibuat formnya 29017.35. Pemilihan field untuk form 29017.36. Jendela untuk memilih model tampilan form 29117.37. Jendela untuk memilih style form 29117.38. Jendela untuk memberi nama form 29217.39. Form Pembeli 29217.40. Form Buku 29317.41. Jendela Form Pembeli pada mode Design View 29317.42. Bagian-bagian suatu form 29417.43. Perubahan pada Label fields pada Form Pembeli 29517.44. Modifikasi tampilan form 29617.45. Mendefinisikan aksi untuk suatu Command Button 29617.46. Mendefinisikan teks pada Command Button 29717.47. Mendefinisikan nama Command Button 29717.48. Mendefinisikan nama Command Button 29817.49. Hasil modifikasi Form Pembelian 29917.50. Jendela query untuk sumber report 30017.51. Pemilihan query sebagai sumber data laporan. 30017.52. Pemilihan fields yang terlibat 301 xvii
  20. 20. 17.53. Jendela untuk menentukan dasar tampilan report 30217.54. Jendela untuk menentukan grouping data 30217.55. Jendela untuk menentukan urutan data 30317.56. Jendela untuk mengatur tampilan ringkasan 30317.57. Jendela untuk mengatur lay-out dan orientation 30417.58. Jendela untuk mengatur style laporan 30417.59. Hasil pembuatan laporan menggunakan Wizard 30517.60. Laporan dalam mode Design View 30517.61. Design laporan setelah dilakukan perbaikan 30617.62. Print Preview laporan setelah perbaikan 30718.1. Contoh perintah SQL untuk pembuatan basis data baru 31018.2. Perintah pembuatan pembeli 31118.3. Perintah pembuatan table buku 31118.4. Perintah show tables untuk melihat daftar table 31218.5. Penggunaan perintah describe 31218.6. Penggunaan perintah alter 31318.7. Penggunaan perintah insert 31418.8. Memasukkan beberapa record data sekaligus 31418.9. Contoh query untuk menampilkan semua data dari 316 sebuah tabel.18.10. Contoh query untuk menampilkan semua data pada 317 kolom tertentu18.11. Penggunaan pernyataan where sederhana 31718.12. Contoh lain penggunaan where 31818.13. Pernyataan where dengan menggunakan operator 319 logika18.14. Penggabungan dua table 32018.15. Contoh lain operasi join 32018.16. Operasi join tiga buah table 32118.17. Operasi join empat buah table 32218.18. Penggunaan perintah update 32318.19. Penggunaan perintah delete 32318.20. Penggunaan perintah drop table 32418.21. Penggunaan perintah drop database. 32418.22. Mengurutkan tampilan dengan opsi order by 32518.23. Penggunaan pernyataan min dan max. 32518.24. Penggunaan pernyataan sum dan avg 32618.25. Penggunaan pernyataan count 32618.26. Penggunaan pernyataan group by 32719.1. Client side dan server side 33219.2. Halaman awal situs Google 33319.3. Halaman web dinamis 33419.4. Memeriksa service Apache pada Linux 336 xviii
  21. 21. 19.5. Memeriksa service Apache pada Microsoft Windows 33719.6. Lokasi file konfigurasi Apache pada Linux (distro 338 Mandriva).19.7. Lokasi file konfigurasi Apache pada Microsoft Windows 338 (menggunakan AppServ).19.8. Memeriksa dan menginstal IIS 34019.9. Microsoft Internet Explorer 34219.10. Safari. 34219.11. Opera. 34320.1. Teks editor Notepad 34620.2. Macromedia Dreamweaver 34620.3. Quanta pada system operasi Linux 34720.4. Bluefish pada system operasi Linux 34720.5. Struktur umum dokumen HTML 34920.6. Header dokumen HTML tanpa tag title 34920.7. Header dokumen HTML dengan tag title 34920.8. Dokumen HTML dengan body content sederhana 35020.9. Dokumen HTML dengan body content yang lebih 350 kompleks20.10. Penggunaan heading 35120.11. Penggunaan paragraph 35120.12. Tag <BR> dan <P>. 35220.13. Penggunaan Ordered List 35220.14. Penggunaan Unordered List 35320.15. Penggunaan Direktori List 35320.16. Penggunaan Menu List 35320.17. Penggunaan Definition lis List 35420.18. Penggunaan tag Font 35520.19. Penggunaan tag anchor 35520.20. Penggunaan garis 35620.21. Penggunaan tag image 35720.22. Penggunaan attribute-attribute tag IMG 35720.23. Table sederhana 35820.24. Tabel dengan format yang lebih kompleks 35920.25. Cellpadding, cellspacing dan border 35920.26. Rowspan. 36020.27. Colspan. 36020.28. Tabel dengan sel berisi gambar 36120.29. Penggunaan input tipe TEXT 36220.30. Penggunaan input tipe PASSWORD 36220.31. Penggunaan input tipe CHECKBOX 36320.32. Penggunaan input tipe RADIO 36320.33. Penggunaan input tipe SUBMIT 36420.34. Penggunaan input tipe RESET 364 xix
  22. 22. 20.35. Penggunaan tipe TEXTAREA 36520.36. Penggunaan tipe SELECT 36521.1. Hasil eksekusi contoh 21.1 37421.2. Hasil eksekusi contoh 21.2 37521.3. Lokasi direktori yang bisa dibaca web server 37621.4. Cara menjalankan file dengan ekstensi .php 37721.5. Menyisipkan skrip PHP pada dokumen HTML 37821.6. Menyisipkan menyisipkan tag HTML ke dokumen PHP 37821.7. Contoh penggunaan variable 380 xx
  23. 23. Daftar TabelNo. Judul Tabel Halaman3.1. Aturan-aturan dalam DFD 384.1. Karakteristik kualitas informasi (O’Brien, 1999). 425.1. Perintah yang berhubungan dengan pengelolaan 87 file/direktori8.1. Operator Aritmatika 1308.2. Operator perbandingan 1318.3. Operator logika 13216.1. Super-key, candidate key, dan primary key untuk Table 262 Siswa16.2. Tabel-tabel hasil dekomposisi 26617.1. Tabel dan atribut pada Basis Data Penjualan Buku 27117.2. Tabel, atribut, tipe data dan constraint/domain pada 271 Basis Data Penjualan Buku20.1. Daftar attribute TYPE untuk Ordered list dan Unordered list 35420.2. Bagian-bagian pada tag Table 35820.3. Attribute-attribute tag <INPUT> 36221.1. Jenis-jenis operator 382 xxi
  24. 24. Daftar LampiranNo. Judul Lampiran Halaman1 Daftar Alamat Situs 4012 Fungsi Built-in pada Visual Basic. 403 xxii
  25. 25. Daftar Istilah / GlosariBasis data (database)Kumpulan dari data yang saling berhubungan satu dengan yang lainnya,tersimpan dalam perangkat keras komputer dan digunakan perangkat lunakuntuk memanipulasinyaConstraintBatasan-batasan dari masalahControlAktivitas monitoring dan evaluasi terhadap feedback untuk menentukanapakah system telah bekerja dengan baik atau tidakDatabase Management System (DBMS)Perangkat Lunak yang khusus / spesifik ditujukan untuk pengelolaan basisdataFeedbackData tentang kinerja systemGejalaSignal atau tanda terjadinya suatu masalahGivensRepresentasi dari fakta-fakta spesifik yang harus diidentifikasi sebelum prosespemecah masalah dilakukanGoalsSesuatu yang ingin kita tuju atau selesaikanIlmu komputerSuatu studi sistematis pada proses-proses algoritma yang menjelaskan danmentransfor-masikan informasiInputElemen-elemen yang masuk ke dalam systemMasalah (problem)Perbedaan antara situasi aktual dan situasi yang diharapkan atau perbedaanantara kondisi sekarang dengan target atau tujuan yang diinginkan xxiii
  26. 26. ModelPenyederhanaan dari suatu system atau Tiruan dari suatu system dengansedikit atau banyak penyederhanaanOutputPerpindahan elemen-elemen yang dihasilkan dari proses perubahan ke tujuanyang diinginkanPemecahan masalahSebuah proses dimana suatu situasi dianalisa kemudian solusi-solusi dibuatbila ditemukan ada masalah dengan cara pendefinisian, pengurangan ataupenghilangan, atau pencegahan masalahPendekatan sistemPendekatan yang berorientasi pada system untuk mendefinisikan masalahdan kesempatan dan mengembangkan solusinyaPerangkat lunakSeluruh instruksi yang digunakan untuk memproses informasiProsedurInstruksi yang dibutuhkan oleh pengguna dalam memproses informasiProsesPerubahan atau transformasi input menjadi outputPrototypingSalah satu pendekatan dalam pengembangan perangkat lunak yang secaralangsung mendemonstrasikan bagaimana sebuah perangkat lunak ataukomponen-komponen perangkat lunak akan bekerja dalam lingkungannyasebelum tahapan konstruksi aktual dilakukanRekayasa Perangkat Lunaksuatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak,mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukanspesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampaipemeliharaan sistem setelah digunakanSistemKumpulan dari elemen-elemen yang saling berinteraksi untuk mencapai tujuantertentu xxiv
  27. 27. Sistem basis dataKumpulan elemen-elemen seperti basis data, perangkat lunak, perangkatkeras, dan manusia yang saling berinteraksi untuk mencapai tujuan yaitupengorganisasian data.SoftwareLihat Perangkat LunakSoftware EngineeringLihat Rekayasa Perangkat LunakSolusiBagian akhir atau output dari proses pemecahan masalah.Strategi pemecahan masalahMetode atau pendekatan yang digunakan seseorang ketika menghadapimasalahUnknownsSesuatu yang harus kita dapatkan setelah proses pemecahan masalahdilakukan xxv
  28. 28. Sinopsis Buku ini diberi judul “Rekayasa Perangkat Lunak”,sama dengan salahsatu program keahlian pada Sekolah Menengah Kejuruan (SMK). Meskipundemikian, sebenarnya isi dari buku ini tidak secara khusus membahas tentangRekayasa Perangkat Lunak. Dari sisi pandang bidang Ilmu Komputer adalima sub-bidang yang tercakup dalam dalam buku ini, yaitu sub-bidangRekayasa Perangkat Lunak, Sistem Operasi dan Jaringan, Algoritma danStruktur Data, Bahasa Pemrograman dan Basis Data. Hal ini disesuaikandengan kurikulum tingkat SMK untuk Program Keahlian Rekayasa PerangkatLunak. Pokok bahasan tentang Rekayasa Perangkat Lunak secara umummembahas dasar-dasar pengertian Rekayasa Perangkat Lunak, masalah danpemecahan masalah, dan metode-metode pengembangan perangkat lunak.Pembahasan tentang sub-bidang Sistem Operasi dan Jaringan berisi systemcomputer, system operasi dan jaringan computer. Sub-bidang Algoritma danPemrograman menempati porsi terbesar dalam buku ini. Cakupan materimeliputi algoritma, Bahasa Pemrograman, Pemrogaman Terstruktur,Pemrograman berbasis GUI, dan Pemrograman berbasis web. Satu babdifokuskan pada pembahasan tentang pencarian kesalahan (debugging) danpengujian (testing). Sub-bidang terakhir yang menjadi bagian dari buku iniadalah Basis Data dengan cakupan tentang system basis data, pemodelankonseptual, basis data relasional, normalisasi, dan SQL. xxvi
  29. 29. Peta Kompetensi Secara umum, buku ini mengacu pada 9 kompetensi inti bagi SMKseperti yang disarankan dalam dokumen SKKNI untuk Bidang ProgrammerKomputer. Ke-9 unit kompetensi tersebut dapat dilihat pada Table A Sesuaidengan perkembangan dalam dunia komputer dan untuk lebih memudahkanurutan, maka pada buku ini beberapa unit kompetensi ditambahkan. Secaralengkap, unit kompetensi yang ada pada buku ini dan bab yang relevan dapatdilihat pada Table A. Sedangkan diagram pencapaian kompetensi dapatdilihat pada Gambar B.Tabel A. Unit-unit kompetensi inti Bidang Programmer Komputer yangdisarankan untuk SMK. No. Nomor Unit Judul Kompetensi 1 TIK.PR.02.001.01 Membuat algoritma pemrograman dasar 2 TIK.PR.02.002.01 Membuat algoritma pemrograman lanjutan 3 TIK.PR.02.005.01 Menulis program dasar 4 TIK.PR.02.008.01 Mengoperasikan bahasa pemrograman terstruktur / procedural 5 TIK.PR.02.012.01 Mengkompilasi dan menjalankan sebuah aplikasi dasar 6 TIK.PR.02.020.01 Mengoperasikan aplikasi basis data 7 TIK.PR.02.027.01 Menerapkan dasar-dasar pembuatan web statik dasar 8 TIK.PR.02.024.01 Membuat dokumen dengan HTML, sesuai spesifikasi 9 TIK.PR.02.028.01 Menerapkan dasar-dasar pembuatan web statik lanjut xxvii
  30. 30. Tabel B. Unit-unit kompetensi dan bab-bab yang terkait di dalam buku ini. No. Kode Kompetensi Bab Yang Terkait 1 A Memahami pengertian dan prinsip-prinsip Bab 1, 2 dan 3 rekayasa perangkat lunak 2 B Mengoperasikan system operasi dan Bab 4, 5 dan 6 jaringan komputer 3 C Memahami dasar pemrograman dan Bab 7 bahasa pemrograman 4 D Memahami tipe data, variable, konstanta Bab 8 dan operator 5 E Membuat algoritma pemrograman dasar Bab 9 6 F Membuat algoritma pemrograman Bab 10 lanjutan 6 G Menerapkan algoritma dalam bahasa Bab 11 pemrograman 7 H Membangun aplikasi pemrograman Bab 12 berbasis GUI 9 I Melakukan pencarian kesalahan dan Bab 13 pengujian program 10 J Memahami prinsip dasar sistem basis Bab 14 data 11 K Menerapkan prinsip pemodelan Bab 15 dan 16 konseptual dan basis data relasional 12 L Mengelola basis data dengan perangkat Bab 17 Database Management System 13 M Membuat query dan perintah-perintah Bab 18 SQL 14 N Memahami prinsip kerja internet dan Bab 19 pemrograman web 15 O Membuat web statis dengan HTML Bab 20 16 P Membangun aplikasi pemrograman Bab 21 berbasis web xxviii
  31. 31. Keterangan A Memahami pengertian dan prinsip-prinsip rekayasa perangkat lunak B Mengoperasikan system operasi dan jaringan komputer C Memahami dasar pemrograman dan bahasa pemrograman D Memahami tipe data, variable, konstanta dan operator E Membuat algoritma pemrograman dasar F Membuat algoritma pemrograman lanjutan G Menerapkan algoritma dalam bahasa pemrograman H Membangun aplikasi pemrograman berbasis GUI I Melakukan pencarian kesalahan dan pengujian program J Memahami prinsip dasar system basis data K Menerapkan prinsip pemodelan konseptual dan basis data relasional L Mengelola basis data dengan perangkat Database Management System M Membuat query dan perintah-perintah SQL N Memahami prinsip kerja internet dan pemrograman web O Membuat web statis dengan HTML P Membangun aplikasi pemrograman berbasis web Gambar A. Diagram pencapaian kompetensi. xxix
  32. 32. 1 Pendahuluan TUJUAN Setelah anda mempelajari bab ini diharapkan anda akan mampu : o Menjelaskan pengertian perangkat lunak, program, prosedur dan rekayasa perangkat lunak. o Memahami tujuan rekayasa perangkat lunak o Memahami ruang lingkup rekayasa perangkat lunak o Memahami posisi bidang rekayasa perangkat lunak pada disiplin ilmu komputer dan keterkaitannya dengan bidang ilmu lain o Mengetahui perkembangan ilmu rekayasa perangkat lunak o Mengetahui profesi dan sertifikasi dalam bidang rekayasa perangkat lunak.1.1. PENGERTIAN Istilah Rekayasa Perangkat Lunak secara umum disepakati sebagaiterjemahan dari istilah Software Engineering. Istilah Software Engineeringmulai dipopulerkan tahun 1968 pada Software Engineering Conference yangdiselenggarakan oleh NATO. Sebagian orang mengartikan RekayasaPerangkat Lunak hanya sebatas pada bagaimana membuat programkomputer. Padahal ada perbedaan yang mendasar antara perangkat lunak(software) dan program komputer. Perangkat lunak: Seluruh instruksi yang digunakan untuk memproses informasi. Perangkat lunak dapat berupa program atau prosedur. o Program adalah kumpulan instruksi komputer o Prosedur adalah instruksi yang dibutuhkan oleh pengguna dalam memproses informasi (O’Brien, 1999) 1
  33. 33. Rekayasa Perangkat Lunak: Suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Jelaslah bahwa Rekayasa Perangkat Lunak tidak hanya berhubungandengan teknis pembuatan program komputer. Pernyataan “semua aspekproduksi” pada definisi di atas, mempunyai arti semua hal yang berhubungandengan proses produksi seperti manajemen proyek, penentuan personil,anggaran biaya, metode, jadwal, kualitas sampai dengan pelatihan penggunamerupakan bagian dari Rekayasa Perangkat Lunak.1.2. TUJUAN REKAYASA PERANGKAT LUNAK Secara umum tujuan Rekayasa Perangkat Lunak tidak berbedadengan bidang rekayasa yang lain. Ada tiga hal utama yang ingin dituju darisuatu bentuk rekayasa seperti terlihat pada gambar 1.1. Kinerja Biaya Waktu Gambar 1.1. Tujuan rekayasa perangkat lunak.Dari gambar 1.1 dapat diartikan bahwa bidang rekayasa akan selalu berusahamenghasilkan output yang kinerjanya tinggi, biaya rendah dan waktupenyelesaian yang tepat. 2
  34. 34. Tujuan Rekayasa Perangkat Lunak a. Memperoleh biaya produksi perangkat lunak yang rendah. b. Menghasilkan perangkat lunak yang kinerjanya tinggi, andal dan tepat waktu. c. Menghasilkan perangkat lunak yang portabilitasnya tinggi. d. Menghasilkan perangkat lunak yang biaya perawatannya rendah.1.3. RUANG LINGKUP Sesuai definisi yang telah disampaikan sebelumnya, maka ruanglingkup Rekayasa Perangkat Lunak dapat digambarkan sebagai berikut. Software Software Software Requirement Design Construction Software Process Testing Software Engineering Software Software Quality Maintenance Tools & Configuration Management Method Management Gambar 1.2. Ruang lingkup rekayasa perangkat lunak (Abran et.al., 2004).- Software requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak.- Software design mencakup proses penentuan arsitektur, komponen, antarmuka, dan karakteristik lain dari perangkat lunak.- Software construction berhubungan dengan detil pengembangan perangkat lunak, termasuk algoritma, pengkodean, pengujian, dan pencarian kesalahan.- Software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak.- Software maintenance mencakup upaya-upaya perawatan ketika perangkat lunak telah dioperasikan. 3
  35. 35. - Software configuration management berhubungan dengan usaha perubahan konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu.- Software engineering management berkaitan dengan pengelolaan dan pengukuran rekayasa perangkat lunak, termasuk perencanaan proyek perangkat lunak.- Software engineering tools and methods mencakup kajian teoritis tentang alat bantu dan metode rekayasa perangkat lunak.- Software engineering process berhubungan dengan definisi, implementasi, pengukuran, pengelolaan, perubahan dan perbaikan proses rekayasa perangkat lunak.- Software quality menitikberatkan pada kualitas dan daur hidup perangkat lunak.1.4. REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU KOMPUTER Disiplin ilmu komputer (Computer Science) lahir pada awal tahun 1940an yang merupakan integrasi dari teori algoritma, logika matematika danditemukannya cara penyimpanan program secara elektronik pada komputer.Sejak itu ilmu komputer mengalami perkembangan yang terus menerussehingga cakupannya menjadi semakin meluas. Cakupan pengetahuan dalam ilmu komputer seringkali didiskripsikansebagai suatu studi sistematis pada proses-proses algoritma yangmenjelaskan dan mentransformasikan informasi (Denning, 2000). Termasukdi sini adalah teori, analisis, disain, efisiensi, penerapan dan aplikasinya. Ada beberapa model klasifikasi sub-bidang ilmu dalam disiplin ilmukomputer seperti terlihat pada Gambar 1.3, 1.4 dan 1.5. 4
  36. 36. Computer Science Section A Section B Komputasi Perangkat Umum Keras Section C Section D Organisasi Sistem Perangkat Komputer Lunak Section E Section F Data Teori Komputasi Section G Section H Matematika Sistem Komputasi Informasi Section I Section J Metodologi Aplikasi Komputer Komputasi di Bidang Lain Section K Aspek Lain Gambar 1.3. Klasifikasi disiplin ilmu komputer menurut ACM (1998). Computer Science Algoritma & Bahasa Struktur Data Pemrograman Arsitektur Sistem Operasi Komputer dan Jaringan Rekayasa Basis Data & Perangkat Lunak Pencarian Informasi Inteligensia Buatan Grafis dan Robotika Interaksi Ilmu Pengetahuan Komputer - Manusia Komputasi Pengorganisasian Bio-Informatics InformatikaGambar 1.4. Klasifikasi disiplin ilmu komputer menurut Denning (2000). 5
  37. 37. Computer Science Dasar Teori Matematika Komputasi Komputasi Algoritma Bahasa dan Pemrograman Struktur Data dan Compilers Concurrent, Rekayasa Parallel dan Perangkat Sistem Terdistribusi Lunak Komunikasi Basis Data Intelijensia Komputer Buatan Grafis dan Visual Interaksi Komputasi Manusia - Untuk Komputer Ilmu Pengetahuan Gambar 1.5. Klasifikasi disiplin ilmu komputer menurut Wikipedia (2007). Berdasarkan klasifikasi Denning (2000) dan Wikipedia (2007),Rekayasa Perangkat Lunak merupakan sub-bidang ilmu komputer yangsetara dengan sub-bidang lainnya. Sedangkan menurut ACM (Association forComputing Machinery), Rekayasa Perangkat Lunak merupakan bagian dariSection D (Perangkat Lunak). Meskipun terlihat terpisah-pisah, namun dalampenerapannya, sub-bidang Rekayasa Perangkat Lunak selalu membutuhkandukungan dari sub-bidang lain, terutama sub-bidang Algoritma dan StrukturData, Bahasa Pemrograman, Basis Data, Sistem Operasi dan Jaringan, danSistem Informasi.1.5. REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU LAIN Cakupan ruang lingkup yang cukup luas, membuat RekayasaPerangkat Lunak sangat terkait dengan disiplin bidang ilmu lain. Tidak sajadengan sub-bidang dalam disiplin ilmu komputer namun dengan beberapadisiplin ilmu lain di luar ilmu komputer. Secara skematis keterkaitan RekayasaPerangkat Lunak dengan ilmu lain dapat dilihat pada Gambar 1.6. 6
  38. 38. Manajemen Matematika Ergonomika Rekayasa Perangkat Lunak Manajemen Manajemen Rekayasa Kualitas Proyek SistemGambar 1.6. Keterkaitan Rekayasa Perangkat Lunak dengan bidang ilmu lain.- Bidang ilmu manajemen meliputi akutansi, finansial, pemasaran, manajemen operasi, ekonomi, analisis kuantitatif, manajemen sumber daya manusia, kebijakan dan strategi bisnis.- Bidang ilmu matematika meliputi aljabar linier, kalkulus, peluang, statistik, analisis numeric dan matematika diskrit.- Bidang ilmu manajemen proyek meliputi semua hal yang berkaitan dengan proyek, seperti ruang lingkup proyek, anggaran, tenaga kerja, kualitas, manajemen resiko, dan penjadwalan proyek.- Bidang ilmu manajemen kualitas meliputi pengembangan sistem kualitas, manajemen resiko dan keandalan, perbaikan kualitas, dan metode- metode kuantitatif.- Bidang ilmu ergonomika menyangkut hubungan (interaksi) antara manusia dengan elemen-elemen lain dalam sistem komputer.- Bidang ilmu rekayasa sistem meliputi teori sistem, analisis biaya- keuntungan, pemodelan, simulasi, proses dan operasi bisnis.1.6. PERKEMBANGAN REKAYASA PERANGKAT LUNAK Meskipun baru dicetuskan pada tahun 1968, namun RekayasaPerangkat Lunak memiliki akar sejarah yang cukup panjang. Gambar 1.7menyajikan intisari perkembangan Rekayasa Perangkat Lunak. Meskipun telah mempunyai sejarah yang cukup panjang, namun darisisi disiplin ilmu, Rekayasa Perangkat Lunak masih relatif muda dan akanterus berkembang. Arah perkembangan yang saat ini sedang dikembangkanantara lain meliputi : Agile Software Development, Experimental SoftwareDevelopment, Model-Driven Software Development dan Software ProductLines. 7
  39. 39. Tahun Kejadian 1940an Komputer pertama yang membolehkan pengguna menulis kode program langsung 1950an Generasi awal interpreter dan bahasa macro Generasi pertama compiler Generasi kedua compiler 1960an Komputer mainframe mulai dikomersialkan Pengembangan perangkat lunak pesanan Konsep Software Engineering mulai digunakan 1970an Perangkat pengembang perangkat lunak Perangkat minicomputer komersial 1980an Perangkat Komputer Personal (PC) komersial Peningkatan permintaan perangkat lunak Pemrograman berorientasi obyek (OOP) 1990an Agile Process dan Extreme Programming Peningkatan drastis kapasitas memori Peningkatan penggunaan internet 2000an Platform interpreter modern (Java, .Net, PHP, dll) Outsourcing Gambar 1.7. Perkembangan Rekayasa Perangkat Lunak.1.7. PROFESI DAN SERTIFIKASI Profesi sebagai seorang Software Engineer mungkin masih terasaasing di telinga orang Indonesia. Sebagian besar orang Indonesia mungkinlebih familiar dengan sebutan Ahli Teknologi Informasi, Analis SistemInformasi, Programmer, Operator atau sebutan profesi lainnya. Hal ini karenaadanya kerancuan tentang istilah Rekayasa Perangkat Lunak seperti telahdisebutkan di awal bab. Namun di Negara-negara yang maju dalam bidangteknologi informasi, sebutan Software Engineer telah mulai banyak digunakan. Sertifikasi kompetensi dalam bidang Rekayasa Perangkat Lunak, saatini masih menjadi perdebatan di kalangan ahli dan penyedia perangkat lunak.Sebagian besar sertifikasi dalam industri perangkat lunak biasanya sangatspesifik untuk perangkat lunak tertentu. Sebagai contoh, Perusahaanperangkat lunak seperti Redhat Linux Inc., Adobe Inc., Oracle, atau Microsoft,memberikan sertifikasi kemampuan pada seseorang yang menguasaiperangkat lunak yang diproduksinya. ACM (Association for Computing Machinery) pernahmenyelenggarakan sertifikasi untuk program Software Engineer pada tahun 8
  40. 40. 1980an, namun dihentikan karena kurangnya peminat. IEEE (Institute ofElectrical and Electronics Engineers) telah mengeluarkan lebih dari 500sertifikat profesi perangkat lunak. Di Canada, telah dikeluarkan sebuahsertifikat legal untuk Rekayasa Perangkat Lunak yang disebut sebagai ISP(Information Systems Profesional). Saat ini, sertifikasi untuk Rekayasa Perangkat Lunak di Indonesia jugabelum tersedia, namun telah disusun Standar Kompetensi Kerja NasionalIndonesia untuk Bidang Programmer Komputer. Meskipun belummemenuhi cakupan bidang Rekayasa Perangkat Lunak secara keseluruhan,namun paling tidak dapat digunakan sebagai pendekatan sertifikasi bidangRekayasa Perangkat Lunak.1.8. TENTANG BUKU INI1.8.1. Isi Buku ini diberi judul “Rekayasa Perangkat Lunak”,sama dengan salahsatu program keahlian pada Sekolah Menengah Kejuruan (SMK). Meskipundemikian, sebenarnya isi dari buku ini tidak secara khusus membahas tentangRekayasa Perangkat Lunak. Dari sisi pandang bidang Ilmu Komputer yangtelah disebutkan sebelumnya, ada lima sub-bidang Ilmu Komputer yangtercakup dalam dalam buku ini, yaitu sub-bidang Rekayasa Perangkat Lunak,Sistem Operasi dan Jaringan, Algoritma dan Struktur Data, BahasaPemrograman dan Basis Data. Hal ini disesuaikan dengan kurikulum tingkatSMK untuk Program Keahlian Rekayasa Perangkat Lunak. Pokok bahasan tentang Rekayasa Perangkat Lunak secara umumdisampaikan pada Bab 1, 2, dan 3. Bab 1, 2, dan 3 membahas dasar-dasarpengertian Rekayasa Perangkat Lunak, masalah dan pemecahan masalah,dan metode-metode pengembangan perangkat lunak. Pembahasan tentang sub-bidang Sistem Operasi dan Jaringandisampaikan pada Bab 4, 5 dan 6. Bab 4 merupakan dasar dari bab 5 dan 6,karena pada bab ini berisi pembahasan tentang dasar-dasar pengetahuantentang sistem komputer yang mencakup data dan informasi, perangkat kerasdan perangkat lunak. Bab 5 secara khusus membahas sistem operasi yangmeliputi fungsi, BIOS, jenis-jenis sistem operasi dan bagaimana bekerjadengan sistem operasi. Bab 6 berisi pembahasan tentang jaringan komputerdengan materi utama meliputi topologi dan jenis jaringan, protocol, konsepTCP/IP, dan perangkat keras. Sub-bidang Algoritma dan Pemrograman menempati porsi terbesardalam buku ini. Bab 9 dan 10 membahas detil tentang algoritma dan strukturdata. Dimulai dengan pengenalan pada algoritma sederhana (Bab 9),kemudian dilanjutkan dengan algoritma yang lebih kompleks (Bab 10). 9
  41. 41. Sedangkan Bahasa Pemrograman dibahas pada Bab 7, 8, 11, 12, 19, 20, dan21. Bab 7, dan 8, berisi dasar-dasar pengetahuan tentang BahasaPemrograman yang meliputi dasar-dasar pemrograman, pengenalan padabahasa pemrograman dan pembahasan tentang tipe data, variable, konstanta,dan operator. Bab 11, 12, 19, 20 dan 21 secara khusus membahas beberapateknik pemrograman yang popular digunakan dibidang teknologi informasi,yaitu penerapan algoritma dalam bahasa pemrograman (Bab 11),pemrograman berbasis GUI (Bab 12), dan pemrograman berbasis web (Bab19, 20, dan 21). Satu bab yaitu Bab 13 difokuskan pada pembahasan tentangpencarian kesalahan (debugging) dan pengujian (testing). Sub-bidang terakhir yang menjadi bagian dari buku ini adalah BasisData. Pada buku ini, Basis Data disampaikan pada Bab 14, 15, 16, 17, dan18. Bab 14 memberikan dasar pengertian tentang sistem basis data,kemudian dilanjutkan dengan bab 15 yang membahas tentang pemodelankonseptual. Bab 16, 17, dan 18 secara berturut-turut membahas tentangbasis data relasional, penggunaan Database Management System (DBMS),dan SQL.1.8.2. Bagaimana Menggunakan Buku Ini. Buku ini secara khusus ditujukan kepada siswa dan guru SMK untukprogram keahlian Rekayasa Perangkat Lunak. Namun demikian, buku inijuga terbuka bagi pembaca umum yang berminat dalam dunia RekayasaPerangkat Lunak, Algoritma dan Pemrograman, Basis Data dan Internet. Bagisiswa, buku ini dapat dijadikan buku pegangan, karena ini buku inimenyediakan bahan-bahan pelajaran yang cukup lengkap untuk matapelajaran selama tiga tahun di bangku sekolah. Beberapa bagian dari buku inimungkin memerlukan buku-buku bantu lainnya untuk lebih memperkayawawasan dan peningkatan kemampuan. Sedangkan bagi guru, buku ini dapatdigunakan sebagai buku referensi untuk menyusun modul-modul ajar bagianak didiknya. Buku ini disusun sedemikian rupa agar siswa dapat belajar secaramandiri dan terdorong untuk mencoba secara langsung. Oleh karena itudalam buku ini, akan banyak dijumpai ilustrasi baik yang berupa gambar,skema maupun listing program. Hal ini dimaksudkan agar siswa dapatdengan mudah memahami penjelasan ataupun penerapan suatu konseptertentu. Bahkan pada bagian akhir bab-bab tertentu diakhiri denganbeberapa contoh aplikasi dari pokok bahasan pada bab tersebut. 10
  42. 42. 2 Prinsip-Prinsip Pemecahan Masalah TUJUAN Setelah anda mempelajari bab ini, diharapkan anda akan mampu : o Menjelaskan pengertian masalah dan gejala. o Menjelaskan tipe-tipe masalah o Menerapkan prinsip-prinsip pemecahan masalah meliputi proses dan strategi pada masalah-masalah sederhana o Memahami apa yang disebut sebagai solusi o Menjelaskan pengertian sistem dan kerja sistem o Memahami prinsip pemecahan masalah dengan pendekatan sistem Bab ini secara khusus akan membahas hubungan antara prinsip-prinsip pemecahan masalah dan rekayasa perangkat lunak. Hal ini karenasecara konsep, rekayasa perangkat lunak memiliki kedekatan dengan prinsip-prinsip pemecahan masalah. Pemahaman tentang masalah, strategi danproses pemecahan masalah, serta pendekatan sistem pada pemecahanmasalah akan sangat membantu proses rekayasa perangkat lunak.2.1. MASALAH2.1.1. Pengertian Masalah (problem) Perbedaan antara situasi yang terjadi dan situasi yang diharapkan. Atau Perbedaan antara kondisi sekarang dengan target atau tujuan yang diinginkan. 11
  43. 43. Secara skematis, masalah dapat dilihat pada gambar 2.1. Darigambar tersebut dapat dilihat proses pemecahan masalah merupakan prosesuntuk memperpendek jarak antara situasi aktual dengan situasi yangdiharapkan. Gambar 2.1. Kondisi aktual, target dan masalah. Seringkali kita kesulitan membedakan antara gejala dan masalah. Gejala : Signal atau tanda terjadinya suatu masalah, Masalah : Kondisi yang dapat menyebabkan timbulnya hasil yang tidak diinginkan. Seperti halnya orang sakit flu, maka pusing, demam, batuk, dan pilekmerupakan gejalanya, sedangkan masalahnya adalah sakit flu. Apabila kitamengobati hanya dengan obat sakit kepala, maka penyakit flu tidak akansembuh. Lebih mudah menentukan gejala dari pada masalah, karena gejalaselalu tampak, bahkan seringkali dalam bentuk yang terukur (kuantitatif).Sebagai contoh, penurunan nilai rata-rata semester terakhir pada rapor andamerupakan gejala yang tampak dan mudah diukur karena kita tinggalmembandingkan nilai rata-rata semester sebelumnya dengan nilai rata-ratasemester terakhir. Namun untuk mengetahui masalah apa yangmenyebabkan terjadinya penurunan penjualan, perlu kajian yang lebihmendalam. Satu buah masalah mungkin mempunyai satu gejala, tapi jugamungkin lebih dari satu gejala. Kesulitan utama dalam menentukan masalahyang sebenarnya adalah karena satu atau lebih gejala mungkin dimiliki olehbeberapa masalah secara bersamaan (Gambar 2.2). 12
  44. 44. Gambar 2.2. Gejala dan masalah. Problem yang didefinisikan dengan baik, menurut Deek et al (2005),minimal akan memuat goals, givens, dan unknowns. Goals: Sesuatu yang ingin kita tuju atau selesaikan. Givens : Representasi dari fakta-fakta spesifik yang harus diidentifikasi sebelum proses pemecah masalah dilakukan. Unknowns : Sesuatu yang harus kita dapatkan setelah proses pemecahan masalah dilakukan. Sebagai contoh, pada masalah pengurutan bilangan, Goals – nyaadalah mengatur letak bilangan sesuai urutan yang diinginkan, Givens – nyaadalah bilangan-bilangan yang letaknya acak tak berurutan, sedangkanunknowns – nya adalah urutan bilangan. Selain tiga hal tersebut, biasanyajuga ditambahkan constraint, yaitu batasan-batasan dari masalah. Padakasus pengurutan bilangan, constraint – nya adalah masalah ini hanyaterbatas pada bilangan-bilangan yang telah disediakan tidak pada bilangan-bilangan lain.2.1.2. Tipe-Tipe Masalah Ada beberapa tipe masalah dapat dikenali. Klasifikasi masalah dapatdilihat pada gambar 2.3. Klasifikasi ini didasarkan pada pendekatan dalampendefinisian masalah. 13
  45. 45. Gambar 2.3. Tipe-tipe masalah (Deek et al, 2005).- Masalah pemenuhan standar Tipe masalah dalam kelompok ini adalah masalah-masalah yang berhubungan dengan pencapaian standar yang telah ditentukan dalam sebuah organisasi. Biasanya tujuan seperti ini berlaku dalam jangka yang relative panjang.- Masalah pemilihan alternative Masalah dalam kelompok ini berhubungan dengan bagaimana memilih solusi terbaik dari berbagai alternative berdasarkan kriteria-kriteria tertentu. Permasalahan ini seringkali kita jumpai dalam kehidupan sehari-hari, seperti bagaimana memilih sekolah yang tepat, memilih lokasi tempat tinggal, memilih bidang pekerjaan. Masing-masing alternatif dan kriteria memiliki bobot yang telah disepakati.- Masalah pemenuhan kepuasan konsumen Pada organisasi-organisasi yang bersifat profit (mencari keuntungan), masalah-masalah pada kelompok ini merupakan tipe yang seringkali muncul. Konsumen memiliki berbagai macam keinginan yang satu sama lain berbeda. Memenuhi seluruh keinginan konsumen sangat tidak mungkin dan sangat memberatkan sebuah organisasi. Oleh karena itu perlu dicari pemecahan yang sama-sama menguntungkan, baik bagi konsumen maupun organisasi tersebut.- Masalah pencapaian tujuan Tipe ini mirip dengan tipe pertama (masalah pemenuhan standar). Yang berbeda adalah, pada tipe ini tujuan yang ingin dicapai dapat berubah-ubah dan bersifat jangka pendek. 14
  46. 46. 2.2. PEMECAHAN MASALAH Pemecahan masalah : sebuah proses dimana suatu situasi dianalisa kemudian solusi-solusi dibuat bila ditemukan ada masalah, dengan cara pendefinisian, pengurangan atau penghilangan, atau pencegahan masalah.2.2.1. Proses Ada banyak urutan proses pemecahan masalah yang diajukan olehpara ahli, salah satunya seperti terlihat pada Gambar 2.4. Gambar 2.4. Proses pemecahan masalah (diadopsi dari Deek et al, 2005) Pada gambar 2.4 terlihat serangkaian tahapan proses yang berbedayang dapat digunakan dalam berbagai tingkatan, tergantung dari karakteristikproblemnya. Masalah yang berbeda membutuhkan penggunaan elemen yangberbeda, bahkan mungkin urutan yang berbeda. Tahapan kritis dari prosespemecahan masalah adalah Pendefinisian Masalah. Apabila masalah tidakcukup jelas didefinisikan maka tahapan-tahapan berikut sulit untuk dijalankan.Bahkan apabila dipaksakan, kemungkinan besar solusi yang tepat tidak akandiperoleh. Secara umum proses pemecahan masalah dapat dilakukan denganempat tahapan utama yaitu : Memahami dan mendefinisikan masalah Bagian ini merupakan bagian yang sangat penting karena menjadi awal dari seluruh proses pemecahan masalah. Pada bagian ini harus sudah teridentifikasi goals, givens, unknowns, dan constraint dari suatu masalah. 15
  47. 47. Tujuan pada bagian ini adalah mengorganisasi masalah dengan baik dan menghilangkan bagian-bagian yang dirasa kurang penting. Membuat rencana untuk pemecahan masalah Pada bagian ini ada dua aktifitas penting yaitu : a) identifikasi berbagai alternatif solusi yang mungkin b) membuat rencana pemecahan masalah Solusi pada suatu masalah biasanya tidak hanya satu tapi mungkin bisa beberapa macam solusi. Sebagai ilustrasi, apabila kita berada di kota Surabaya dan ingin pergi ke Jakarta, maka banyak alternatif solusi yang mungkin bisa dilakukan, misalnya kita bisa menempuh dengan angkutan darat, laut atau udara. Dengan angkutan darat kita bisa menggunakan kereta api, bus atau angkutan yang lain. Jalurnya pun kita bisa lewat jalur utara, tengah atau selatan. Jadi banyak sekali alternatif solusi yang bisa kita kembangkan. Masing-masing mempunyai karakteristik sendiri- sendiri. Dari sekian banyak alternative solusi ini kita harus memilih satu alternatif solusi yang berdasarkan kriteria tertentu merupakan alternatif solusi yang paling potensial dapat menyelesaikan permasalahan. Setelah terpilih, maka kita dapat membuat rencana kasar (outline) penyelesaian masalah dan membagi masalah dalam bagian-bagian yang lebih kecil. Rencana kasar (outline) penyelesaian masalah hanya berisi tahapan- tahapan utama penyelesaian masalah. Merancang dan menerapkan rencana untuk memperoleh solusi Pada bagian ini rencana kasar penyelesaian masalah diperbaiki dan diperjelas dengan pembagian dan urutan rinci yang harus ditempuh dalam penyelesaian masalah. Memeriksa dan menyampaikan hasil dari pemecahan masalah Bagian ini bertujuan untuk memeriksa apakah akurasi (ketepatan) hasil dari alternatif solusi yang dipilih telah memenuhi tujuan yang diinginkan. Selain itu juga untuk melihat bagaimana efektifitas dan kinerja dari alternatif solusi yang dipilih.2.2.2. Strategi Strategi pemecahan / Skema Pemecahan Masalah : Metode atau pendekatan yang digunakan seseorang ketika menghadapi masalah. 16
  48. 48. Ada banyak strategi pemecahan masalah yang coba diterapkan olehpara ahli. Masing-masing memiliki keunggulan dan kekurangan, sehinggakadang-kadang untuk memecahkan suatu masalah tidak cukup dengan satumetode. Hal ini ditujukan untuk mendapat solusi yang optimal. Deek et al(2005) telah membuat klasifikasi strategi pemecahan masalah seperti terlihatpada Gambar 2.5. Gambar 2.5. Klasifikasi strategi pemecahan masalah. Strategi pemecahan masalah berdasarkan tingkat kompleksitas masalah a) Problem reduction Strategi ini sering juga disebut sebagai dekomposisi (decomposition). Pada strategi ini masalah yang kompleks dipecah-pecah menjadi bagian-bagian yang lebih kecil dan lebih sederhana (Gambar 2.6). Satu per satu bagian-bagian kecil ini kemudian dievaluasi dan dicarikan pemecahan masalahnya. Strategi ini banyak sekali digunakan terutama karena sangat mempermudah proses pemecahan masalah. 17
  49. 49. Beberapa teknik pemrograman perangkat lunak menggunakan pendekatan ini. Gambar 2.6. Strategi dekomposisi masalah.b) Reusable problem Kadang kala sebuah masalah memiliki kesamaan pada bagian- bagian tertentu dengan masalah lain. Pada kasus seperti ini apabila strategi problem reduction diterapkan, maka akan sangat memakan biaya dan waktu. Strategi yang dapat digunakan adalah dengan menggunakan solusi-solusi yang sudah pernah digunakan untuk masalah lain dan menerapkan dengan atau tanpa perubahan pada masalah yang akan kita selesaikan. Solusi-solusi yang sudah pernah dibuat ini dalam dunia pemrograman biasa disebut sebagai library (Gambar 2.7).c) Problem expansion Strategi problem reduction menganut prinsip bahwa masalah yang akan diselesaikan sudah dikenali dengan baik dan hanya dapat diselesaikan dengan dekomposisi, tapi pada masalah yang sumbernya dari berbagai macam hal (interdisciplinary) maka strategi ini tidak dapat digunakan. Strategi problem expansion dapat digunakan untuk mengatasi masalah ini. Strategi ini dilakukan dengan cara mengkombinasikan masalah-masalah kecil menjadi masalah yang agak besar agar kejelasan masalah semakin tampak. Setelah dirasa cukup jelas maka pemecahan masalah baru dilakukan (Gambar 2.8). 18
  50. 50. Gambar 2.7. Pemecahan masalah dengan library. Gambar 2.8. Strategi problem expansion.d) Problem misrepresentation Strategi ini dilakukan untuk mengurangi ketidaktepatan (misrepresentation) dalam mendefinisikan masalah. Beberapa ketidaktepatan yang sering muncul adalah: 1) Penggunaan istilah/kata/kalimat yang tidak tepat. 2) Ruang lingkup masalah yang tidak jelas. 19
  51. 51. 3) Penempatan hubungan antara masalah satu dengan masalah lain yang kurang tepat. 4) Penggunaan standar dalam notasi atau diagram pemecahan masalah yang tidak sesuai.Strategi pemecahan masalah berdasarkan struktur pemecahan masalah a) Linear Strategi linear dilakukan dengan mengerjakan tahapan-tahapan proses pemecahan masalah secara berurutan (Gambar 2.9). Tahapan ke 3 misalnya sangat bergantung pada tahap ke 2, sedangkan tahapan ke 3 sendiri menjadi dasar tahapan ke 4. Gambar 2.9. Strategi pemecahan masalah linear. b) Iterative Strategi iterative digambarkan dengan bentuk lingkaran (Gambar 2.10). Pada gambar tersebut sebenarnya pola yang dipakai tetap berurutan, namun setelah tahapan terakhir, proses berulang kembali ke tahapan 1 untuk memperbaiki kekurangan yang mungkin ada. Proses ini berulang terus sampai suatu masalah dirasa sudah terselesaikan. Gambar 2.10. Strategi pemecahan masalah iterative. 20
  52. 52. c) Parallel Berbeda dengan strategi linear, strategi parallel mengerjakan tahapan-tahapan proses secara bersama-sama dalam bentuk parallel (Gambar 2.11). penggabungan strategi linear dan parallel sering kali digunakan. Pada bagian-bagian tertentu, tahapan harus dikerjakan secara linear dan pada bagian lain yang memungkinkan, dapat diterapkan strategi parallel. Gambar 2.11. Strategi pemecahan masalah parallel. d) Dynamic Strategi ini tidak mengikuti pola-pola tertentu seperti yang telah disebutkan. Pola dapat bersifat acak tergantung pada interaksi dan hubungan antar tahapan. Strategi pemecahan masalah berdasarkan tingkat kapabilitas Strategi ini didasarkan pada ketersediaan sumberdaya pada sebuah organisasi. Salah satu yang menjadi pertimbangan penting dalam ketersediaan dan kemampuan teknologi yang dimiliki. Semakin baik dan maju teknologi maka akan berpengaruh pada bagaimana proses pemecahan masalah dilakukan.2.3. SOLUSI MASALAH Solusi : Bagian akhir atau output dari proses pemecahan masalah. Idealnya ketika solusi telah diperoleh, tujuan pemecahan masalahharusnya telah didapatkan dan problem dapat dihilangkan atau dikurangi.Namun dalam prakteknya, ketika solusi diperoleh berarti tahapan baru dalampemecahan masalah akan muncul, yaitu tahapan evaluasi, pemeriksaan,perbaikan dan seterusnya. Sehingga sebenarnya tidak ada masalah yang 21
  53. 53. benar-benar bisa dihilangkan. Sebagai contoh ketika kita merancangperangkat lunak untuk menyelesaikan suatu permasalahan dan perangkatlunak kita telah jadi, maka kita akan dihadapkan pada proses-prosessehubungan dengan perangkat lunak tersebut, seperti evaluasi kinerjaperangkat lunak, perbaikan pada bagian-bagian tertentu, perubahan tampilandan sebagainya.2.4. PENDEKATAN SISTEM DALAM PEMECAHAN MASALAH Rekayasa perangkat lunak secara alamiah akan selalu menggunakanpendekatan sistem. Hal ini karena perangkat lunak sendiri adalah sebuahsistem.2.4.1. Sistem Sistem : Kumpulan dari elemen-elemen yang saling berinteraksi untuk mencapai tujuan tertentu yang tidak diinginkan. Jadi pada setiap sistem harus terdapat elemen, interaksi dan tujuan(Gambar 2.12). Suatu sistem biasanya mempunyai tiga komponen dasaryang saling berinteraksi, yaitu input, proses dan output. Input : Elemen-elemen yang masuk ke dalam sistem. Proses : Perubahan input menjadi output. Output : Perpindahan elemen-elemen yang dihasilkan dari proses perubahan ke tujuan yang diinginkan. 22
  54. 54. Gambar 2.12. Sistem. Selain tiga komponen ini, biasanya juga ditambahkan komponenfeedback dan control. Feedback : data tentang kinerja sistem sedangkan Control : aktivitas monitoring dan evaluasi terhadap feedback untuk menentukan apakah sistem telah bekerja dengan baik atau tidak Gambar 2.13 menunjukkan bagaimana interaksi dari kelima komponenini. Gambar 2.13. Interaksi komponen-komponen dalam sistem (O’Brien, 1999). 23
  55. 55. 2.4.2. Pendekatan sistem Pendekatan sistem : Pendekatan yang berorientasi pada sistem untuk mendefinisikan masalah dan kesempatan dan mengembangkan solusinya. Tahapan-tahapan pendekatan sistem dalam penyelesaian masalahdapat dilihat pada Gambar 2.14. Kalau dicermati, gambar ini hampir serupadengan Gambar 2.4 karena memang secara prinsip, pemecahan masalahakan selalu menempuh tahapan-tahapan seperti pada kedua gambartersebut. Yang berbeda adalah orientasinya. Pada pendekatan sistem suatumasalah dapat dirunut dari interaksi antara elemen-elemen di dalam sistematau interaksi antara elemen di dalam sistem dengan lingkungannya.Masalah yang terjadi akan menyebabkan kerja sistem menjadi terhambat ataugagal dalam mencapai tujuan. Pada pendekatan sistem, untuk setiapmasalah apapun harus dicari mana sistemnya, mana sub-sistemnya, apa sajaelemen sistemnya, dan bagaimana interaksinya. Gambar 2.14. Tahapan-tahapan pendekatan sistem dalam penyelesaian masalah (O’Brien, 1999). 24
  56. 56. 3 Metode Rekayasa Perangkat Lunak TUJUAN Setelah anda mempelajari bab ini, diharapkan anda akan mampu : o Memahami karakteristik umum model proses dalam rekayasa perangkat lunak. o Menyebutkan beberapa model rekayasa perangkat lunak . o Mengetahui prinsip-prinsip dari metode waterfall, prototyping, dan unified process. o Memahami tahapan-tahapan dalam rekayasa perangkat lunak. Rekayasa perangkat lunak (software engineering) merupakan reaksiyang muncul dari kompleksnya permasalahan dalam pengembanganperangkat lunak. Rekayasa perangkat lunak yang sukses tidak hanyamembutuhkan kemampuan komputasi seperti algoritma, pemrograman, danbasis data yang kuat, namun juga perlu penentuan tujuan yang baik,identifikasi alternative-alternatif yang berpotensi, metode pengembangan,urutan aktifitas, identifikasi kebutuhan sumberdaya, dan faktor-faktor lain.Hal-hal seperti ini terkait dengan apa yang disebut dengan metode rekayasaperangkat lunak. Bab ini secara ringkas akan membahas model-modelrekayasa perangkat lunak dan tahapan dalam rekayasa perangkat lunak.3.1 MODEL PROSES REKAYASA PERANGKAT LUNAK Pada rekayasa perangkat lunak, banyak model yang telahdikembangkan untuk membantu proses pengembangan perangkat lunak.Model-model ini pada umumnya mengacu pada model proses pengembangansistem yang disebut System Development Life Cycle (SDLC) seperti terlihatpada Gambar 3.1. 25

×