Rancangan Perangkat Lunak
Rancangan Perangkat Lunak
Rancangan Perangkat Lunak
Tujuan :
Indikator keberhasilan :
Materi :
Definisi Komputer
Komputer merupakan suatu perangkat elektronika yang memiliki
kemampuan untuk menerima dan mengolah data menjadi informasi,
menjalankan program yang tersimpan dalam memori, serta dapat bekerja
secara otomatis berdasarkan perangkat aturan tertentu. Berdasarkan
uraian di atas, maka dapat diuraikan bahwa setidaknya suatu komputer
harus memenuhi kaidah-kaidah berikut ini:
a. Komputer dapat melakukan pengolahan data
b. Komputer dapat memberikan/menghasilkan informasi
c. Komputer merupakan alat elektornik
d. Komputer dapat menerima input data (teks, angka, suara, signal, dll)
e. Komputer menggunakan program yang tersimpan dalam memori
komputer
f. Komputer bekerja secara otomatis
g. Komputer dapat menyimpan program dan data hasil olahannya.
Sistem Komputer
Sebuah sistem komputer tersusun atas tiga elemen yang saling terkait satu
sama lainnya, yaitu :
1. Hardware (Perangkat Keras), merupakan kumpulan segala piranti
atau komponen dari sebuah komputer yang sifatnya bisa dilihat
secara kasat mata dan bisa diraba secara langsung. Dengan kata
lain hardware merupakan komponen yang memiliki bentuk nyata
secara fisik. Beberapa komponen perangkat keras mudah dikenali,
seperti casing komputer, keyboard, dan monitor. Namun, ada
banyak jenis komponen perangkat keras yang lainnya untuk
membentuk sebuah komputer.
Perangkat Lunak
Pada mata kuliah Rekayasa Perangkat Lunak (RPL) ini, sebelumnya kita
harus mengerti dan memahami terlebih dahulu, apa yang dimaksud dengan
perangkat lunak. Perangkat lunak saat ini telah menjadi kekuatan baru
yang sangat menentukan dalam mendukung suatu aktifitas. Perangkat
lunak menjadi mesin yang mengendalikan proses pengambilan
keputusan di dalam dunia bisnis, berfungsi sebagai basis dari berbagai
bentuk pelayanan serta penelitian keilmuan modern. Saat ini perangkat
lunak memiliki dua peran. Di satu sisi berfungsi sebagai sebuah
produk, dan di sisi lain sebagai media yang mengantarkan sebuah
produk.
1. Software Requirements.
Dalam proses rekayasa perangkat lunak, fase ini adalah aktifitas
pertama yang harus dilakukan. Fase ini didominasi oleh peran
pengguna dalam menerjemahkan ide atau pandangannya ke
dalam dokumen persyaratan. Hal yang harus diperhatikan bahwa
mendefinisikan dan mendokumentasikan kebutuhan pengguna
secara singkat dan tidak ambigu adalah langkah besar pertama
untuk mencapai produk berkualitas tinggi.
Fase ini meliputi serangkaian tugas, yang membantu
menentukan dampak perangkat lunak pada organisasi,
kebutuhan pelanggan, dan bagaimana pengguna akan
berinteraksi dengan perangkat lunak yang dikembangkan.
Persyaratan yang telah ditentukan adalah dasar dari desain
sistem. Jika persyaratan tidak benar, produk akhir juga akan
mengandung kesalahan. Perlu dicatat bahwa aktifitas penetapan
persyaratan adalah sama seperti semua aktifitas rekayasa
perangkat lunak lainnya di mana harus disesuaikan dengan
kebutuhan proses, proyek, produk, dan orang-orang yang terlibat
di dalamnya. Juga, persyaratan harus ditentukan pada tingkat
detail yang berbeda. Hal ini karena persyaratan tersebut
dimaksudkan untuk personil seperti pengguna, manajer bisnis,
sistem engineer, dan sebagainya. Sebagai contoh, manajer bisnis
tertarik untuk mengetahui fitur apa yang dapat
diimplementasikan dalam anggaran yang dialokasikan sedangkan
pengguna akhir tertarik untuk mengetahui betapa mudahnya
menggunakan fitur perangkat lunak.
2. Software Design.
Secara umum yang meliputi proses penampilan arsitektur,
komponen, antar muka (interface), dan karakteristik lain dari
suatu perangkat lunak. Software design adalah salah satu fase
dalam rekayasa perangkat lunak, di mana terdapat cetak biru
yang dikembangkan untuk memberikan layanan sebagai dasar
untuk membangun sistem perangkat lunak. IEEE mendefinisikan
software design sebagai aktifitas mendefinisikan: arsitektur,
komponen, antarmuka, dan karakteristik lain dari suatu sistem
atau komponen dan hasil dari proses itu.
Pada tahap desain, banyak keputusan penting dan strategis yang
dibuat untuk mencapai fungsionalitas dan kualitas sistem yang
diinginkan. Keputusan ini harus diperhitungkan agar berhasil
dalam mengembangkan perangkat lunak dan melaksanakan
pemeliharaannya sehingga kualitas produk akhir ditingkatkan.
3. Software Construction.
Kegiatan ini meliputi aktifitas yang berhubungan dengan hal-hal
detil dalam pengembangan perangkat lunak, termasuk algoritma,
pengkodean, pencarian kesalahan (debug) dan pengujian (testing).
4. Software Testing.
Secara umum kegiatan ini meliputi pengujian pada kinerja
perangkat lunak secara keseluruhan. Pengujian perangkat lunak
ditujukan untuk menentukan kebenaran, kelengkapan dan
kualitas perangkat lunak yang sedang dikembangkan. IEEE
mendefinisikan pengujian sebagai proses melaksanakan atau
mengevaluasi sistem atau komponen sistem dengan cara manual
atau otomatis untuk memverifikasi bahwa hal itu memenuhi
persyaratan yang ditentukan atau untuk mengidentifikasi
perbedaan antara hasil yang diharapkan dan fakta yang
ditemukan.
Pengujian perangkat lunak terkait erat dengan verifikasi syarat
dan validasi. Verifikasi mengacu pada proses memastikan bahwa
perangkat lunak dikembangkan sesuai dengan spesifikasinya.
Untuk verifikasi, teknik seperti ulasan, analisis, insfeksi, dan
penelusuran umum digunakan. Sedangkan validasi mengacu
pada proses pengecekan bahwa perangkat lunak yang
dikembangkan memenuhi persyaratan yang ditentukan oleh
pengguna.
5. Software Maintenance. Secara umum aktifitasnya mencakup
upaya-upaya perawatan ketika perangkat lunak telah
dioperasikan. Perangkat lunak tidak pernah usang. Namun, perlu
adanya peningkatan untuk memenuhi persyaratan pengguna
yang terus berubah secara dinamis. Untuk melakukan
pembaharuan seperti itu maka sistem perangkat lunak harus
dilakukan maintenance (pemeliharaan). IEEE mendefinisikan
maintenance sebagai suatu proses memodifikasi sistem perangkat
lunak atau komponen setelah di-delivery untuk memperbaiki
kesalahan, untuk meningkatkan kinerja atau atribut lainnya
atau untuk menyesuaikan produk ke lingkungan yang berubah
secara dinamis. Tujuannya adalah untuk memastikan bahwa
perangkat lunak dapat mengakomodasi perubahan setelah sistem
telah di-delivery dan digunakan.
6. Software Configuration Management (SCM).
Software Configuration Management (SCM) adalah suatu disiplin
yang secara sistematis mengendalikan perubahan yang terjadi
selama pengembangan. SCM adalah proses yang terpisah dari
proses pengembangan karena sebagian besar model
pengembangan tidak dapat mengakomodasi perubahan kapan
saja selama pengembangan.
7. Software Engineering Management yang berkaitan dengan
pengelolaan dan pengukuran RPL, termasuk perencanaan proyek
perangkat lunak.
8. Software Engineering Tools and Methods yang mencakup
kajian teoritis tentang alat bantu (tools) dan metode RPL.
9. Software Quality yang menitikberatkan pada kualitas dan daur
hidup perangkat lunak.
10. Software Engineering Process berhubungan dengan
implementasi, definisi, pengukuran, pengelolaan, perubahan dan
perbaikan proses Rekayasa Perangkat Lunak.
Indikator Keberhasilan :
Materi :
Bentuk aktifitas dalam perusahaan yang bergerak dalam bidang IT, terkait
dengan pengembangan perangkat lunak, dapat diklasifikasikan ke dalam
dua bentuk, yaitu:
1. Pembuatan Perangkat Lunak
2. Manajemen Proyek Perangkat Lunak
Suatu proyek merupakan tugas yang terdefenisikan dengan baik, yang
terdiri dari sekumpulan kegiatan yang dilakukan dengan kondisi terbatas
untuk mencapai suatu tujuan yang spesifik. Suatu proyek memiliki
karakteristik sebagai berikut:
a. Setiap proyek memiliki tujuan yang unik/ spesifik.
b. Proyek bukanlah merupakan kegiatan rutin, atau operasional harian
c. Setiap proyek memiliki waktu mulai dan selesai.
d. Proyek berakhir apabila tujuan telah tercapai.
e. Proyek membutuhkan sumber daya selama ia berlangsung, seperti
waktu, sumber daya manusia, keuangan, material, dan ilmu
pengetahuan.
Gambar 2.1 menunjukkan tiga kendala yang ada dalam proyek perangkat
lunak. Hal ini adalah bagian penting dari organisasi perangkat lunak untuk
menghasilkan produk berkualitas, menjaga biaya dalam batasan
anggaran/kemampuan klien dan menyelesaikan proyek sesuai jadwal. Ada
beberapa faktor, baik internal maupun eksternal, yang dapat berdampak
pada segitiga tiga kendala ini. Salah satu dari ketiga faktor tersebut dapat
berdampak buruk pada dua lainnya.
Oleh karena itu, manajemen proyek perangkat lunak sangat penting untuk
memasukkan kebutuhan pengguna bersama dengan batasan anggaran dan
waktu.
Manajer Proyek Perangkat Lunak
Seorang manajer proyek perangkat lunak adalah orang yang bertanggung
jawab melaksanakan proyek perangkat lunak. Manajer proyek perangkat
lunak sangat memahami semua fase SDLC (Software Development Life Cycle)
yang akan dilalui dalam mengembangkan perangkat lunak. Manajer proyek
mungkin tidak pernah terlibat langsung dalam menghasilkan produk akhir
berupa perangkat lunak, tetapi ia mengendalikan dan mengelola kegiatan
yang dilaksanakan dalam produksi secara keseluruhan.
Berikut ini adalah tanggung jawab yang dimiliki oleh seorang manajer
proyek perangkat lunak:
a. Mengelola Manusia, meliputi:
- Bertindak sebagai leader proyek
- Mengkomunikasikan pekerjaan dengan pihak-pihak terkait
- Mengelola sumber daya manusia
- Menyusun hirarki pelaporan
b. Mengelola Proyek, meliputi:
- Mendefenisikan dan menetapkan ruang lingkup proyek
- Mengelola kegiatan proyek
- Memantau kemajuan dan kinerja proyek
- Menganalisis resiko setiap tahapan
- Mengambil langkah penting untuk menghindari resiko atau
mengatasi masalah
- Berlaku sebagai juru bicara proyek
Aktifitas Manajemen Proyek Perangkat Lunak
Manajemen proyek perangkat lunak terdiri dari sejumlah kegiatan, yang
berisi perencanaan proyek, menentukan ruang lingkup produk perangkat
lunak, menyusun perkiraan biaya, penjadwalan tugas dan kegiatan, dan
manajemen sumber daya. Kegiatan manajemen proyek meliputi:
C. Estimasi Proyek
Untuk pengelolaan yang efektif, perkiraan akurat berbagai tindakan
adalah suatu keharusan. Dengan estimasi yang benar, manajer dapat
mengelola dan mengendalikan proyek dengan lebih efisien dan efektif.
Estimasi proyek meliputi hal-hal sebagai berikut:
a. Estimasi Ukuran (size) Perangkat Lunak
Ukuran perangkat lunak dapat diperkirakan baik dalam hal KLOC
(Kilo Line of Code) atau dengan menghitung jumlah fungsi dalam
perangkat lunak. Baris kode (line of code) bergantung pada aktifitas
pengkodean. Jumlah fungsi bervariasi sesuai dengan kebutuhan
pengguna atau perangkat lunak.
b. Estimasi usaha (efforts)
Manajer proyek memperkirakan usaha (efforts) dalam hal kebutuhan
personil dan jam kerja yang diperlukan untuk menghasilkan
perangkat lunak. Untuk suatu ukuran perangkat, estimasi usaha
harus diketahui. Hal ini dapat diturunkan berdasarkan pengalaman
manajer, data historis organisasi, atau ukuran perangkat lunak dapat
diubah menjadi upaya dengan menggunakan beberapa rumus
standar.
c. Estimasi Waktu
Setelah ukuran dan usaha diperkirakan, waktu yang diperlukan
untuk menghasilkan perangkat lunak juga dapat diperkirakan.
Usaha yang dibutuhkan dipisahkan ke dalam sub kategori sesuai
spesifikasi kebutuhan dan interdependensi dari berbagai komponen
perangkat lunak. Tugas pengerjaan perangkat lunak dibagi menjadi
tugas-tugas yang lebih kecil, kegiatan atau aktifitas oleh Work
Breakthrough Structure (WBS). Tugas dijadwalkan dari hari ke hari
atau dalam bulan kalender. Jumlah waktu yang diperlukan untuk
menyelesaikan semua tugas dalam beberapa jam atau hari adalah
total waktu yang diinvestasikan untuk menyelesaikan proyek.
d. Estimasi Biaya
Bagian ini mungkin dianggap sebagai yang paling sulit karena
tergantung pada lebih banyak elemen daripada yang sebelumnya.
Untuk memperkirakan biaya proyek, perlu dipertimbangkan hal-hal
sebagai berikut:
- Ukuran dari perangkat lunak
- Kualitas perangkat lunak
- Perangkat keras
- Perangkat lunak tambahan (tool), lisensi dan sebagainya
- Tenaga ahli dengan keahlian yang spesifik
- Perjalanan yang dilakukan
- Komunikasi
- Pelatihan dan bantuan teknis.
Cara Menggunakannya:
1. Saat Proyek sedang berlangsung, isikan gambar Intan (diamond)
ataupun Grafik Batang pada Gantt Chart untuk menunjukan
bahwa tugas yang bersangkutan telah diselesaikan. Jika ada tugas
masih berjalan (in progress), estimasikan kemajuan tugas yang
bersangkutan dan isikan grafik batang sesuai dengan kemajuan
tersebut.
2. Letakkan tanda vertikal untuk menunjukan sejauh mana proyek
tersebut sedang berlangsung.
Contoh:
- Change sizing.
- Digunakan jika PL yang ada harus dimodifikasi dengan banyak cara sebagai bagiandari
proyek.
COCOMO
Barry Boehm memperkenalkan hirarki model estimasi PL dengan nama COCOMO
(COnstructive COst MOdel = Model Biaya Konstruktif).
COCOMO adalah sebuah model yang didesain oleh Barry Boehm untuk memperoleh perkiraan
dari jumlah orang-bulan yang diperlukan untuk mengembangkan suatu produk perangkat
lunak. Satu hasil observasi yang paling penting dalam model ini adalah bahwa motivasi dari tiap
orang yang terlibat ditempatkan sebagai titik berat. Hal ini menunjukkan bahwa kepemimpinan
dan kerja sama tim merupakan sesuatu yang penting, namun demikian poin pada bagian ini
sering diabaikan.
b
E = ab (KLOC) b (1)
d
D = cb (E) b (2)
P = E/D (3)
Dimana :
Sedangkan koefisien ab, bb, cb, dan db diberikan pada Tabel 1 berikut :
Tabel 3.1. Koefisien untuk Model COCOMO
Pada aplikasi PL, dari segi biaya sering lebih efektif membeli daripada mengembangkansendiri.
Pada keputusan make-buy dengan pilihan :
- PL dapat dibeli (atau lisensi) off-the-self.
- Komponen PL full-experiencedan partial-experience.
- PL dapat dibuat custom-built oleh kontraktor luar.
(4)
Dimana :
(5)
Dimana :
OM = 40 OJ (6)
OT = 12 OB (7)
OT = 52 OM (8)
3. Model COCOMO II
Model COCOMO II, pada awal desainnya terdiri dari 7 bobot pengali yang relevan dan
kemudian menjadi 16 yang dapat digunakan pada arsitektur terbarunya.
Sama seperti COCOMO Intermediate, masing-masing sub katagori dapat digunakan untuk
aplikasi tertentu pada kondisi very low, low, manual, nominal, high maupun very high. Masing-
masing kondisi memiliki nilai bobot tertentu. Nilai yang lebih besar dari 1 menunjukkan usaha
pengembangan yang meningkat, sedangkan nilai di bawah 1 menyebabkan usaha yang
menurun. Kondisi Laju nominal (1) berarti bobot pengali tidak berpengaruh pada estimasi.
Maksud dari bobot yang digunakan dalam COCOMO II, harus dimasukkan dan direfisikan di
kemudian hari sebagai detail dari proyek aktual yang ditambahkan dalam database.