Beberapa Ukuran Yang Berkaitan Proyek

♦ 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