♦ Modul
• Prinsip dasar untuk menangani kerumitan dalam perancangan perangkat lunak adalah dengan melakukan dekomposisi terhadap sistem yang berukuran besar ke
dalam beberapa subsistem yang lebih kecil. • Unit dekomposisi tersebut dinamakan modul.
• Dalam dekomposisi tersebut harus ditetapkan pengantarmukaan interfacing antar setiap subunit, baik pengantarmukaan kendali maupun data.
• Pengantarmukaan kendali dilakukan dengan mekanisme hubungan pemanggilan calling antar modul.
• Pengantarmukaan data dilakukan dengan mekanisme penyampaian parameter parameter passing antar modul.
♦ Programmer
Programer adalah individu yang bertugas dalam hal rincian implementasi, pengemasan, dan modifikasi algoritma serta struktur data, dituliskan dalam sebuah
bahasa pemrograman tertentu.
♦ Software Engineer
• Software engineer bertugas melakukan analisa, rancangan, uji dan verifikasi, dokumentasi, pemeliharaan perangkat lunak, serta pengelolaan proyek.
• Software engineer harus mempunyai keterampilan dan pengalaman seorang programmer
♦ Kualitas Produk Perangkat Lunak Beberapa atribut yang merupakan ukuran kualitas perangkat lunak adalah :
• kegunaan, yaitu pemenuhan terhadap kebutuhan pengguna, • keandalan, yaitu kemampuan melaksanakan fungsi yang diinginkan,
• kejelasan, yaitu penulisan program dilakukan secara jelas dan mudah dimengerti, • efisiensi, terutama dalam waktu eksekusi dan penggunaan memory,
II. Beberapa Ukuran Yang Berkaitan Proyek
♦ Total Upaya Yang Dicurahkan Untuk Perangkat Lunak
100 Hardware
80 Pengembangan sw
60 40
Pemeliharaan sw 20
1955 1960 1978
1985
Perubahan rasio biaya untuk hw terhadap biaya untuk sd 1985
♦ Distribusi Upaya
• Masa hidup sebuah produk perangkat lunak adalah 1 sd 3 tahun dalam pengembangan dan 5 sd 15 tahun dalam pemakaiannya pemeliharannya.
• Distribusi upaya antara pengembangan dan pemeliharaan bervariasi antara 4060, 3070, dan bahkan 1090.
• Tiga aktivitas pengembangan perangkat lunak adalah : analisa dan perancangan, implementasi dan pengujian.
• Tiga aktivitas pemeliharaan perangkat lunak adalah : peningkatan kemampuan produk, penyesuaian produk dengan lingkungan pemrosesan baru, dan perbaikan.
Upaya pengembangan pemeliharaan
Relatif 40 60
36 16
16 8
12 12
analisa dan implementasi uji penyesuaian peningkatan perbaikan perancangan
Diagram distribusi upaya dalam putaran hidup sebuah perangkat lunak software life cycle, SLC
♦ Katagori Ukuran Proyek
Katagori Jumlah Lama Jumlah Contoh
proyek programmer
pengerjaan Baris
Trivial 1
1-4 minggu 500
keperluan pribadi seorang programmer Kecil
1 1-6 bulan
1K-2K penyelesaian numerik masalah sains
Menengah 2-5 1-2
tahun 5K-50K
compiler berukuran tidak terlalu besar Besar 5-20
2-3 tahun
50K-100K paket
data base Sangat Besar
100-1K 4-5 tahun
1M sistem operasi besar
Extra Besar 2K-5K
5-10 tahun 1M-10M
sistem pertahanan balistik
♦ Penggunaan Waktu Seorang Programmer
Tabel aktivitas programmer Bell Lab. Study, sampel : 70 programmer
Aktivitas Waktu
Keterangan
Penulisan program 13
waktu efektif Membaca program dan membuat manual
16 upaya perbaikan atas
Mengkomunikasi pekerjaan 32
kegagalan 48 Kegiatan pribadi libur, sakit, dsb
13 Lain-lain kamar kecil, telefon pribadi, rehat kopi, dsb
15 waktu
Pelatihan 6 overhead 39
Surat menyurat 5
Proyek 1 40
Proyek 2 30
20 10
Baca Rancang Rencana Program Dokumen Uji Review Rapat Perbaikan
Diagram distribusi aktivitas programer untuk dua buah proyek perangkat lunak. Perhatikan bahwa sekitar 40 aktivitas adalah : baca, review, rapat, dan
perbaikan
♦ Faktor Yang Mempengaruhi Kualitas Produk dan Produktivitas Programmer
• Kemampuan pribadi : - dua aspek dasar kemampuan : kecakapan umum dan terbiasa dengan aplikasi
tertentu. - seorang yang cakap dalam pemrograman belum tentu cakap pula dalam aplikasi
sains, atau sebaliknya. - ketidakakraban dengan lapangan aplikasi akan menghasilkan produktivitas
rendah dan kualitas yang buruk. - yang dimaksud dengan kecakapan umum adalah kemampuan dasar dalam
menulis program komputer dengan benar sedangkan ukuran produktivitas seorang programmer adalah banyak baris yang dihasilkan oleh programmer
tersebut per hari. • Komunikasi team
- meningkatnya ukuran produk yang dihasilkan akan menurunkan produktivitas programmer akibat meningkatnya kerumitan antara komponen-komponen
program dan akibat meningkatnya komunikasi yang perlu dilakukan antara programmer, manajer, dan pelanggan.
- jumlah lintasan komunikasi antar programmer yang terjadi dalam sebuah proyek adalah nn-12, dimana n adalah jumlah programmer yang terlibat
dalam proyek tersebut. - penambahan lebih banyak programmer dalam sebuah proyek yang sedang ber-
jalan akan menurunkan produktivitas, kecuali jika para programmer baru tersebut mempunyai tugas yang tidak bergantung kepada hasil kerja
programmer lama. - Hukum Brooks : Adding more programmers to a late project may make it later.
• Kerumitan produk - tiga level kerumitan produk : program aplikasi, program utility, program level
sistem.
level produktivitas relatif
contoh bahasa
produk terhadap level
sistem produk
pemrograman
aplikasi 25 sd 100
pengolahan data Pascal, Cobol
utility 5 sd 10
compiler Pascal, C
sistem 1 sistem
operasi bahasa
rakitan • Notasi yang tepat
- bahasa pemrograman menetapkan notasi baca : token, reserve word baku, terutama untuk hal-hal yang berkaitan dengan matematika.
- penetapan notasi antar programer baca : perancang produk harus dilakukan sehingga dapat dimengerti dengan jelas.
• Pendekatan sistematis - sistem menetapkan teknik dan prosedur baku.
- pembakuan dalam pengembangan dan pemeliharaan perangkat lunak masih belum mantap.
• Kendali perubahan - kelenturan sebuah produk perangkat lunak merupakan sebuah kekutan, tetapi di
pihak lain juga merupakan sumber kesulitan dalam proses perancangannya. - perubahan terhadap produk harus tetap meminta persetujuan manajer sebagai
penanggung jawab proyek. - dampak perubahan harus dapat ditelusuri, diuji, dan didokumentasikan.
• Tingkat teknologi - peran penggunaan teknologi dalam proyek perangkat lunak misalnya menyangkut
bahasa pemrograman, lingkungan mesin yang digunakan, teknik pemrograman, dan penggunaan tools tertentu.
- bahasa pemrograman modern menyediakan fasilitas penyesuaian pendefinisisan dan penggunaan data, konstruksi aliran kendali, fasilitas modular, dan concurent
programming • Tingkat keandalan
- setiap produk harus mempunyai keandalan standar. - peningkatan keandalan dihasilkan melalui perhatian yang sangat besar pada tahap
analisa. - peningkatan keandalan akan menurunkan produktivitas.
- Boehm : rasio produktivitas antara dua produk dengan keandalan terendah dengan yang tertinggi adalah 2:1.
• Pemahaman permasalahan - pelanggan adalah penyumbang utama terhadap kegagalan dalam memahami
masalah adalah : 1 tidak memahami permasalahan perusahaannya, 2 tidak mengerti kemampuan dan keterbatasan komputer, 3 tidak mempunyai
pengetahuan dasar tentang logika dan algoritma. - software engineer tidak memahami lapangan aplikasi, gagal mendapatkan informasi
kebutuhan pelnggan karena pelanggan bukan seorang end user.
• Ketersediaan waktu - penetapan lama proyek dan jumlah programmer terlibat harus mempertimbangkan
kemampuan pribadi setiap programmer serta kemapuan komunikasi antar mereka. - jumlah programmer yang makin banyak akan meningkatkan overhead di antaranya
akibat keperluan komunikasi. - jumlah programmer yang makin sedikit berarti memperbanyak beban kerja kepada
setiap programmer. - proyek 1 bulan dengan 6 programmer bisa saja diganti dengan proyek 6 bulan
dengan 1 programmer ata proyek 3 bulan dengan 3 programmer. • Persyaratan keterampilan
- berbagai keterampilan harus ada dalam sebuah proyek perangkat lunak, misalnya : 1 keterampilan berkomunikasi dengan pelanggan untuk memastikan keinginannya
dengan sejelas-jelasnya, 2 kemampuan dalam pendefinisian masalah dan perancangan, 3 kemampuan implementasi dengan penulisan program yang benar,
4 kemampuan debugging secara deduktif dengan kerangka “what if ”, 5 dokumentasi, 6 kemampuan bekerja dengan pelanggan.
- semua keterampilan tersebut harus senantiasa dilatih. • Fasilitas dan sumber daya
Fasilitas non teknis yang tetap perlu diperhatikan yang berkaitan dengan motivasi programmer misalnya : mesin yang baik, serta tempat yang tenang, atau ruang
kerjanya dapat ditata secara pribadi. • Pelatihan yang cukup
Banyak programmer yang dilati dalam bidang-bidang : ilmu komputer, teknik elektro, akuntansi, matematika, tetapi jarang yang mendapat pelatihan dalam bidang teknik
perangkat lunak. • Kemampuan manajemen
- seringkali manajer proyek tidak mempunyai, atau hanya sedikit mengetahui, latar belakang teknik perangkat lunak.
- di sisi lain terjadi promosi jabatan menjadi manajer dimana yang berpromosi tidak atau kurang mempunyai kemampuan manajemen.
• Sasaran yang tepat Sasaran utama dari tekni perangkat lunak adalah pengembangan produk-produk
perangkat lunak yang tepat untuk digunakan. • Peningkatan kualitas
Dua aspek yang menimbulkan keinginan untuk meningkatkan kualitas produk adalah : 1 seberapa banyak fungsi, keandalan, dan kemampuan dapat diberikan melalui
sejumlah pengembangan, 2 masalah mendasar dariketerbatasan teknologi perangkat lunak.
• Faktor lain Faktor lain di antaranya adalah : keakraban, akses, dan stabilitas terhadap sistem
komputer dalam mengembangkan atau memodifikasi perangkat lunak.
♦ Masalah Manajerial
• Sejumlah masalah yang seringkali muncul : 1. buruknya perencanaan proyek
2. buruknya prosedur dan teknik pemilihan manajer proyek 3. tidak diketahui dengan tepat siapa penanggung jawab buruknya hasil proyek
4. buruknya kemampuan untuk menetapkan sumber daya yang dibutuhkan
proyek 5. kriteria keberhasilan proyek tidak tepat
6. buruknya struktur organisasi proyek 7. pemilihan teknik menajemen yang tidak tepat
8. tidak diterapkan prosedur, metoda, dan teknik dalam perancangan sistem
kendali yang memungkinkan manajer dapat mengontrol proyeknya dengan baik
9. tidak digunakannya prosedur, teknik, dan strategi yang dapat menyediakan kejelasan perkembangan proyek
10. standar dan teknik untuk mengukur kualitas kerja dan produktivitas programmer dan analis pengolahan data tidak dijalankan
• Beberapa solusi yang dapat dilakukan : 1. lakukan pendidikan dan pelatihan terhadap menejen puncak dan manajer
proyek 2. laksanakan penggunaaan standar, prosedur, dan pendokumentasian
3. lakukan analisa data dari proyek sebelumnya untuk menentukan metda efektif 4. tetapkan tujuan dengan menyatakan kualitas yang diinginkan
5. tetapkan kualitas dengan acuan standar peluncuran produk 6. tetapkan kriteria keberhasilan proyek
7. siapkan rencana darurat 8. kembangkan kejujuran, akurasi biaya, dan perkiraan jadwal proyek yang dapat
diterima manajemen dan pelanggan 9. pilih manajer proyek berdasarkan kemampuannya memimpin proyek, bukan
berdasarkan kemampuan teknik atau apalgi memang tidak ada orang lain lagi
10. buat penetapan kerja yang spesifik untuk setiap pelaksana dan tetapkan standar kerja.
PERANCANGAN PERANGKAT LUNAK
Oleh : Asep Juarna, SSi, MKom
II. Perencanaan Proyek Perangkat Lunak