Perancangan Perangkat Lunak I. Pendahuluan II. Siklus Pengembangan Perangkat Lunak Dr. Ahmad Sabri Universitas Gunadarma
Software tidak hanya mengacu kepada program komputer Software mencakup 3 hal Dokumentasi: mencakup spesifikasi kebutuhan fungsional, spesifikasi kebutuhan sistem, dokumen disain, dan dokumen pengujian Manual prosedur operasi standar mencakup manual instalasi software, manual operasi software, dan manual administrator sistem File-file konfigurasi software agar software dapat beroperasi dengan benar.
Berdasarkan peruntukannya, terdapat 3 jenis software: 1. Software generik: adalah produk standalone yang dikembangkan oleh perusahaan software seperti Microsoft, Oracle, IBM, dll, untuk dijual di pasaran. Software ini umumnya dapat beroperasi pada berbagai sistem operasi. Contoh: MS Office. 2. Software kustomisasi: diproduksi oleh perusahaan pengembang software berdasarkan kebutuhan spesifik klien mereka. Contoh: software ticketing untuk PT KAI, aplikasi m-banking untuk Bank XYZ, software kependudukan untuk Pemprov, dll. 3. Software tertanam (embedded): software yang sudah built-in pada perangkat elektronik sehingga dapat berjalan secara otomatis, seperti mesin cuci, oven microwave, dll.
Software besar Membutuhan lebih banyak waktu, usaha, dan dana untuk mendisain dan mengembangkannya Membutuhkan sumber daya manusia yang banyak Membutuhkan kode-kode program yang banyak Artinya: pengembangan software membutuhkan SDM, proses, dan teknologi, serta membutuhkan serangkaian tahapan aktivitas. Sehingga: Software Development adalah sebuah proyek.
Berdasarkan perkembangan saat ini, software tidak hanya terdiri dari OS dan aplikasi Kategori yang sedang berkembang saat ini: open world computing open source software NoSQL software Multitenant software
Semakin besar ukuran software (>100.000 baris coding), maka pengembangannya melibatkan banyak orang. Oleh karena itu harus mengikuti tahapan-tahapan rekayasa yang sistematis. Selama program ditangani secara manual dan tanpa tahapan yang benar, maka persentasi error sangat tinggi. Programmer jenius saja tidak cukup. Mereka harus mengikuti metodologi software engineering untuk menghasilkan software berkualitas.
Krisis Software Studi di AS pada 1979 mengungkap: Tidak ada standar dalam pemrograman menyebabkan sulitnya melakukan debugging atas error yang terjadi. Tidak adanya standar dalam pemrograman komputer menyebabkan kenaikan biaya software sebesar 45%, karena software tidak sepenuhnya memenuhi kebutuhan user. Studi oleh IBM tahun 1994 mengungkap: 55% dari proyek software melebihi biaya yang ditetapkan 68% melampaui jadwal yang telah ditetapkan 88% memerlukan modifikasi setelah penyerahan kepada user. Hal ini akibat kebutuhan user tidak dipahami secara utuh oleh developer
Setelah berkembangnya aplikasi berbasis Web, masalah ini semakin berlipat ganda. Sekitar 63% aplikasi web melampaui budget Sekitar 73% melampaui jadwal Sekitar 53% tidak memberikan fungsi yang diinginkan Sekitar 84% tidak memberikan keuntungan (Cutter Consortium, 2000)
Para profesional dan peneliti menyadari bahwa problem ini dapat teratasi dengan menggunaan metodologi ilmiah dalam pengembangan software. Metodologi ini menerapkan metode, tools, dan prosedur yang terdefinisi dengan baik dan diterapkan secara terorganisir dan disiplin Penerapan metodologi ini dalam pengembangan software disebut software engineering
Software Engineering (SE) terdiri dari: Metode: mecakup aturan, langkah-langkah, dan teknik dalam menyelesaikan siklus pengembangan software (software development life cycle) Tools: digunakan untuk mengotomasi metode. Tools ini berguna untuk membuat model dari disain software Prosedur: merupakan variasi urutan dari metode (waterfall, spiral, iteratif, dll)
Singkatnya: Software Engineering menerapkan prinsip-prinsip rekayasa, manajemen, metode, tools, dan prosedur untuk menghasilkan software berkualitas tinggi dalam periode dan batasan-batasan yang telah ditentukan.
Sasaran dari software engineer adalah menghasilkan software berkualitas tinggi Beberapa contoh produk software: Accounts receivable processing Order processing Inventory monitoring and maintenance Decision support for overnight funds investment Collateralized mortgage obligatien cost determination Insurance reimbursement processing Funds transfer processing Early warning system for problems with critical success factors
Produk SE yang berkualitas adalah yang... tepat waktu terjangkau budget fungsional (sesuai dengan apa yang diinginkan) ramah pengguna bebas kesalahan fleksibel mudah diadaptasikan
Siklus Pengembangan Perangkat Lunak/SPPL (Software Development Life Cycle /SDLC) SPPL adalah serangkaian tahapan yang dilalui dalam mengembangkan perangkat lunak
Tahapan SPPL 1. Analisa kelayakan Feasibility: apakah proyek ini dapat dilakukan? Analisa pasar: apakah ada potensi pasar untuk proyek ini? 2. Kebutuhan fungsional dan non-fungsional menghimpun kebutuhan yang diinginkan pelanggan 3. Perencanaan analisa biaya: berapa perkiraan biayanya? work-breakdown: membagi kegiatan menjadi sub-subkegiatan yang lebih kecil penjadwalan: membuat jadwal untuk tahapan pengembangan Pendefinisian software quality assurance: memastikan bahwa setiap tahap dilalui dengan standar yang ditetapkan.
4. Disain disain arsitektural: struktur dari sistem disain interface antar sistem disain algoritma untuk setiap bagian 5. Implementasi: proses coding 6. Pengujian/testing uji unit: pengujian setiap unit software oleh masing-masing developer uji integrasi: pengujian terhadap penggabungan unit-unit software uji sistem: pengujian software pada lingkungan yang sesuai dengan lingkungan operasinya uji alpha: pengujian oleh pelanggan di tempat developer uji beta: pengujian oleh pelanggan di tempat pelanggan uji akseptasi: pengujian apakah s/w ini dapat diterima oleh pelanggan uji regresi
7. Delivery instalasi di lokasi pengguna pelatihan bagi pengguna layanan help desk 8. Maintenance memperbaharui dan meningkatkan kemampuan software untuk memastikan pemanfaatan yang berkelanjutan.
1. Code and Fix Biasanya digunakan untuk software kecil, atau dengan deadline yang sangat singkat. Developer menulis kode dan memperbaiki error yang muncul. Tidak ada analisa kebutuhan dan disain Beberapa model SPPL
2. Waterfall
3. V-model
4. Iteratif
Aplikasi Aplikasi adalah kumpulan dari program yang mengotomasi suatu tugas
Aspek-aspek dalam Aplikasi Karakteristik Ketanggapan (responsiveness) Jenis
Aspek Karakteristik Karakteristik adalah aspek umum yang ada pada semua aplikasi, yaitu: 1. Data 2. Proses 3. Batasan 4. Antarmuka (interface)
1. Data Semua aplikasi: Bekerja atas data dan membutuhkan input, output, penyimpanan dan penarikan data. memuat perintah-perintah (proses) yang mentransformasikan data menjadi informasi berdasarkan batasan-batasan yang ditetapkan memiliki beberapa antarmuka manusia dan antarmuka komputer
Entitas adalah objek yang dinyatakan dalam sebuah deskripsi Data adalah deskripsi spesifik atas entitas Kumpulan deskripsi sejenis membentuk atribut Contoh entitas: pelanggan, mahasiswa Contoh atribut: alamat, tanggal lahir
Data Input Output relasional hirarkis Penyimpanan dan penarikan logikal fisik jaringan berorientasi objek
Contoh hubungan Entitas - Atribut
Contoh relasi antar-entitas
Contoh detail relasi antarentitas
Pemodelan data secara hirarki antar entitas
Pemodelan data secara networked
Pemodelan data secara object oriented
2. Proses Proses adalah barisan instruksi ataupun sekumpulan kejadian yang dioperasikan pada data
3. Batasan Batasan didefinisikan dalam 5 kategori: 1. Prerequisites: kondisi yang harus terpenuhi agar proses dijalankan 2. Postrequisites: kondisi yang harus dipenuhi agar proses dinyatakan lengkap 3. Waktu 4. Struktur 5. Kontrol 6. Inferensi
Contoh batasan prerequisites
Contoh batasan berdasar waktu
Contoh batasan berdasar struktur
Jenis: 1. Manusia 2. Komputer/terotomasi 4. Antarmuka
Antarmuka manusia adalah cara aplikasi berkomunikasi dengan manusia sebagai pengguna. Paling sulit dirancang dan sangat rentan terhadap perubahan teknologi
rancangan yang buruk rancangan yang baik
Antarmuka komputer/terotomasi adalah cara komputer berinteraksi dengan komputer/perangkat lain Antarmuka komputer cenderung berbeda-beda untuk pabrikan yang berbeda. Untuk mengatasinya, diperlukan standarisasi Contoh: standar untuk antarmuka LAN didefinisikan oleh IEEE standar untuk open system interface (OSI) didefinisikan oleh ISO Tidak terstandarkan: GUI
Aspek ketanggapan Ketanggapan aplikasi (application responsiveness) berkaitan dengan berapa lama waktu yang dibutuhkan sistem untuk bereaksi dan memberi respon atas tindakan dari pengguna.
3 jenis desain ketanggapan aplikasi: 1. berorientasi batch 2. on-line 3. real-time
Aplikasi batch Aplikasi berdasar batch memproses transaksi secara berkelompok (batch). Transaksi yang masuk ditampung dalam periode waktu tertentu, setelah itu diproses pada jadwal yang telah ditentukan.
Alur pemrosesan aplikasi berdasar batch
Aplikasi on-line Pengertian on-line dalam konteks ini berbeda dengan pengertian on-line dalam konteks jaringan Pemrosesan secara on-line berarti: program tetap berada dalam memori, sehingga dapat langsung merespon transaksi tanpa loading kembali
Alur pemrosesan aplikasi dengan pendekatan on-line
Batch vs on-line Aplikasi berdasar batch: passing data antar modul dilakukan dengan menggunakan file tidak ada syntax controlling pada entri transaksi Aplikasi on-line: passing data antar modul dilakukan secara langsung ada syntax controlling pada entri transaksi
Aplikasi real-time Aplikasi real-time adalah aplikasi on-line di mana perubahan data direspon langsung oleh sistem, sehingga aplikasi memberikan informasi berdasarkan kondisi terkini dari data. Contoh: mesin ATM, mesin barcode, reservasi tiket pesawat, dll.