Rekayasa Perangkat Lunak PERTEMUAN 3 KONSEP MANAJEMEN PROYEK 3.1. Spektrum Manajemen Manajemen proyek perangkat lunak yang efektif berfokus pada tiga P : People (manusia), problem (masalah), process (proses). Urutan ini tidak dapat berubah. 3.1.1. Manusia Faktor manusia sangat penting sehingga Software Engineering Institute telah mengembangkan sebuah model kematangan kemampuan manajemen manusia (PM-CMM) ”untuk mempertinggi kesiapan organisasi perangkat lunak untuk mengerjakan aplikasi yang semakin kompleks dengan membantu menarik, menumbuhkan, memotivasi, menyebarkan, dan memelihara bakat yang dibutuhkan untuk mengembangan kemampuan perkembangan perangkat lunak mereka” Model kematangan manajemen manusia membatasi area praktikj berikut kunci bagi masyarakat perangkat lunak : rekruitmen, seleksi, manajemen unjuk kerja, pelatihan, kompensasi, perkembangan karir, desain kerja dan organisasi, dan perkembangan tim/kultur. 3.1.2. Masalah Sebelum proyek direncanakan, obyektivitas dan ruang lingkupnya harus ditetapkan, pemecahan alternatifnya harus dipertimbangkan, teknik dan bataspun harus didefinisikan. Tanpa informasi ini tidak mungkin melakukan estimasi biaya yang dapat dipertanggungjawabkan (akurat); penilaian yang efektif terhadap resiko; merinci secara realistis tugas-tugas proyek; atau jadwal proyek yang dapat dikelola yang memberikan indikasi kemajuan yang berarti. Lecture-Note Hal : 1 Rekayasa Perangkat Lunak Pengembang dan pemakai perangkat lunak harus bertemu untuk menentukan tujuan dan ruang lingkup proyek. Di dalam banyak kasus, aktivitas ini dimulai sebagai bagian dari proses rekayasa sistem dan berlanjut sebagai langkah pertama dalam analisis kebutuhan perangkat lunak. 3.1.3. Proses Proses perangkat lunak memberikan suatu kerangka kerja di mana rencana komprehensif bagi pengembangan perangkat lunak dapat dibangun. Sejumlah kumpulan tugas yang berbeda – tugas-tugas milestone, kemampuan penyampaian, dan jaminan kualitas – memungkinkan aktivitas kerangka kerja disesuaikan dengan karakteristik proyek perangkat lunak serta kebutuhan tim proyek. Akhirnya aktivitas pelindung seperti jaminan kualitas perangkat lunak, manajemen konfigurasi perangkat lunak, dan pengukurannya – melapisi model proses yang ada. 3.2. Manusia Hasil dari wawancara dengan beberapa wakil president direktur menandakan pentingnya manusia dalam proses rekayasa perangkat lunak. 3.2.1. Para Pemain Proses perangkat lunak diisi oleh para pemain yang dapat dikategorikan ke dalam salah satu dalam lima konstituen berikut ini : 1. Manajer Senior, yang menentukan isu-isu bisnis yang sering memiliki pengaruh penting di dalam proyek. 2. Manajer (teknik) Proyek, yang harus merencanakan, memotivasi, mengorganisir, dan mengontrol sebuah produk atau aplikasi. Lecture-Note Hal : 2 Rekayasa Perangkat Lunak 3. Pelaksana, yang menaympaikan ketrampilan teknik yang diperlukan untuk merekayasa sebuah produk atau aplikasi. 4. Pelanggan, yang menentukan jenis kebutuhan bagi perangkat lunak yang akan direkayasa. 5. Pemakai Akhir, yang berinteraksi dengan perangkat lunak bila perangkat lunak telah dikeluarkan untuk digunakan. 3.2.2. Pimpinan Tim Jerry Weinberg cenderung mengusulkan model kepemimpinan MOI : Motivasi. Kemampuan untuk memberi dorongan orang teknik untuk menghasilkan sesuatu dengan kemampuan terbaiknya. Organisasi. Kemampuan untuk membentuk proses yang sedang berlangsung yang memungkinkan konsep dasar diterjemahkan ke dalam suatu hasil akhir. Gagasan dan inovasi. Kemampuan untuk mendorong manusia untuk menciptakan dan bertindak kreatif meskipun mereka bekerja di dalam suatu ikatan yang dibangun untuk suatu produk atau aplikasi perangkat lunak yang spesifik. Pandangan lain tentang karakteristik seorang manajer proyek yang efektif memberikan tekanan pada empat kata kunci : Pemecahan masalah. Seorang manajer proyek yang efektif dapat mendiagnosis isu-isu organisasi dan teknis yang paling relevan, yang secara sistematis membentuk sebuah pemecahan atau dengan tepat memotivasi para pelaksana yang lain untuk membuat pemecahan. Identitas manajerial. Seorang manajer proyek yang baik harus bersentuhan secara langsung dengan proyeknya. Dia harus memilki rasa percaya diri untuk melakukan kontrol bila perlu dan membolehkan orang-orang teknik yang baik untuk mengikuti insting mereka. Prestasi. Untuk mengoptimasi produktivitas sebuah tim proyek, seorang manajer harus memiliki Lecture-Note inisiatif dan prestasi, serta dengan caranya sendiri Hal : 3 Rekayasa Perangkat Lunak memperlihatkan bahwa pengambilan risiko yang terkontrol tidak akan dikenai hukuman. Pengaruh dan pembentukan tim. Seorang manajer proyek yang efektif harus mampu “membaca” manusia; dia harus mampu memahami sinyal verbal dan nonverbal serta bereaksi terhadap kebutuhan-kebutuhan orang-orang yang mengirimkan sinyal tersebut. Manajer harus dapat menguasai diri meskipun berada pada situasi tekanan yang sangat tinggi. 3.2.3. Tim Perangkat Lunak Mantei mengusulkan tiga organisasi tim yang umum : Demokratis terdesentralisasi (DD). Tim rekayasa perangkat lunak ini tidak memiliki pemimpin yang permanen. Tetapi “koordinator” dipilih untuk bertugas di dalam durasi waktu yang pendek, yang kemudian diganti oleh yang lain yang mungkin bertugas untuk mengkoordinasi tugas-tugas yang berbeda. Keputusan terhadap masalah dan pendekatan yang dilakukan dibuat oleh konsensus kelompok. Komunikasi di antara anggota tim bersifat horisontal. Terkontrol terdesentralisasi (CD). Tim rekayasa perangkat lunak memiliki pemimpin tertentu yang mengkoordinasi tugas-tugas khusus serta memiliki pemimpin-pemimpin sekunder yang bertanggung jawab atas masalah sub-sub tugas. Pemecahan masalah merupakan aktivitas dari kelompok, tetapi implementasi dari pemecahan masalah dipecah di antara sub-sub kelompok oleh pimpinan tim. Komunikasi antar kelompok dan orang bersifat horisontal, tetapi komunikasi vertikal sepanjang hirarki kontrol juga terjadi di sini. Terkontrol terdesentralisasi (CC). Koordinasi pemecahan masalah tingkat puncak dan internal tim diatur oleh pimpinan tim. Komunikasi antara pimpinan dan anggota tim bersifat vertikal. Tabel 3.1. merangkum pengaruh karakteristik proyek terhadap organisasi tim. Karena struktur tersentralisasi dapat menyelesaikan tugas dengan lebih cepat, struktur tsb paling banyak digunakan pada penanganan masalah-masalah yang Lecture-Note Hal : 4 Rekayasa Perangkat Lunak sederhana. Tim terdesentralisasi memberikan solusi yang lebih banyak dan lebih baik daripada individual sehingga tim semacam itu memiliki kemungkinan keberhasilan lebih banyak pada saat bekerja pada masalah yang sulit. Karena tim CD tersentralisasi untuk penyelesaian masalah, baik struktur tim CD ataupun CC dapat diterapkan dengan baik pada masalah-masalah yang sederhana. Struktur DD merupakan yang terbaik untuk masalah-masalah yang sulit. Tabel 3.1 Pengaruh karakteristik Proyek Pada Struktur Tim Tipe tim : DD CD CC X X X X X X X X Tingkat kesulitan Tinggi X Rendah Ukuran Besar Kecil X Umur tim Singkat Panjang X Modularitas Tinggi Rendah X Keandalan Tinggi X X Rendah X Tanggal pengiriman Ketat/pasti Longgar X X X Sosiabilitas Tinggi Rendah Lecture-Note X X X Hal : 5 Rekayasa Perangkat Lunak Karena unjuk kerja dari sebuah tim berbanding terbalik dengan jumlah komunikasi yang harus dilakukan, proyek-proyek yang sangat besar paling baik bila diserahkan kepada tim dengan struktur CC atau CD bila kelompok-kelompok sub dapat diakomodasi dengan baik. Telah dibuktika bahwa struktur tim DD menghasilkan kepuasan kerja dan moral yang tinggi sehingga baik untuk tim dengan jangka waktu hidup yang lama. Struktur tim DD paling baik diaplikasikan pada masalah-masalah dengan modularitas relatif rendah karena di sini dibutuhkan volume komunikasi yang lebih tinggi. Bila modularitas tinggi dimungkinkan (dan manusia dapat melakukan tugas-tugas mereka sendiri), struktur CC dan DD akan bekerja dengan baik. Tim CC dan CD terbukti menghasilkan cacat yang lebih sedikit dibanding struktur tim DD, tetapi berhubungan erat dengan aktivitas jaminan kualitas khusus yang diaplikasikan oleh tim tersebut. Tim yang terdesentralisasi biasanya membutuhkan lebih banyak waktu untuk menyelesaikan sebuah proyek daripada struktur yang tersentralisasi, dan pada saat yang sama merupakan pilihan yang terbaik bila sosiabilitas yang tinggi diperlukan. Constantine mengusulkan empat “paradigma organisasional” bagi tim rekayasa perangkat lunak : 1. Paradigma tertutup membentuk sebuah tim di sepanjang hirarki otoritas tradisional (sama dengan tim CC). Tim semacam ini dapat bekerja dengan baik pada saat memproduksi perangkat lunak yang sangat mirip dengan apa yang dilakukan sebelumnya; tetapi tim ini kurang inovatif ketika bekerja dalam paradigma tertutup. 2. Paradigma random membentuk sebuah tim secara longgar dan tergantung pada inisiatif individual anggota tim. Pada saat terobosan inovasi atau teknologi dibutuhkan, tim yang mengikuti paradigma random akan unggul. Tetapi tim semacam ini dapat berjuang keras bila “unjuk kerja yang teratur” diperlukan. 3. Paradigma terbuka cenderung membentuk tim dengan cara tertentu sehingga tercapai banyak kontrol yang berhubungan dengan paradigma Lecture-Note Hal : 6 Rekayasa Perangkat Lunak tertutup, tetapi sekaligus juga banyak inovasi pada saat menggunakan paradigma random. Kerja dilakukan secara kolaboratif dengan komunikasi yang sarat serta konsensus yang didasarkan pada pengambilan keputusan. Struktur tim paradigma terbuka sesuai bagi pemecahan masalah-masalah yang kompleks, tetapi tidak akan bekerja seefisien tim yang lain. 4. Paradigma sinkron bertumpu pada pemggolongan alami dari suatu masalah serta mengorganisasi anggota tim untuk bekerja pada bagianbagian kecil masalah dengan komunikasi aktif di antara mereka sendiri. 3.2.4. Masalah Koordinasi dan Komunikasi Kraul dan Streeter menguji sekumpulan teknik koordinasi proyek yang dikategorikan dalam kelompok berikut : Pendekatan impersonal, formal. Mencakup penyampaian dan dokumen rekayasa perangkat lunak (seperti kode sumber), memo-memo teknis, kejadian penting pada proyek, jadwal dan piranti kontrol proyek, kebutuhan akan perubahan dan dokumentasi yang berhubungan, laporan pelacakan kesalahan dan data cadangan. Prosedur interpersonal, formal. Berfokus pada aktivitas jaminan kualitas yang diterapkan kepada produk kerja rekayasa perangkat lunak. Hal ini menyangkut pertemuan status pengkajianserta perancangan dan inspeksi kode. Prosedur interpersonal, informal. Menyangkut pertemuan kelompok untuk penyebaran informasi dan pemecahan masalah serta “alokasi kebutuhan dan pengembangan staf”. Komunikasi elektronik. Mencakup surat elektronik, papan buletin elektronik, web sites, serta sistem konferensi berbasis video. Jaringan interpersonal. Diskusi informal dengan orang-orang di luar proyek yang mungkin memiliki pengalaman atau pengetahuan yang dalam yang dapat mendukung anggota tim. Lecture-Note Hal : 7 Rekayasa Perangkat Lunak 3.3. Masalah Seorang manajer proyek perangkat lunak dihadapkan pada sebuah dilema pada awal proyek rekayasa perangkat lunak. Kebutuhan terkadang berubah-ubah, berubah secara reguler pada saat proyek berjalan. Tetapi walau bagaimanapun diperlukan suatu rencana, “sekarang!” 3.3.1. Ruang lingkup Aktivitas manajemen proyek perangkat lunak yang pertama adalah menentukan ruang lingkup perangkat lunak. Ruang lingkup dibatasi dengan menjawab pertanyaan-pertanyaan berikut : Konteks. Bagaimana perangkat lunak yang akan dibangun dapat memenuhi sebuah sistem, produk, atau konteks bisnis yang lebih besar, serta batasan apa yang ditentukan sebagai hasil dari kontek tersebut? Tujuan informasi. Objek data pelanggan apa yang dihasilkan sebagai output dari perangkat lunak? Objek data apa yang diperlukan sebagai input? Fungsi dan unjuk kerja. Fungsi apa yang dilakukan oleg perangkat lunak untuk mentransformasi input data menjadi output? Adakah ciri kerja khusus yang akan ditekankan? Ruang lingkup proyek perangkat lunak harus tidak ambigu dan dapat dipahami pada tingkat teknis maupun manajemen. 3.3.2 Dekomposisi Masalah Dekomposisi masalah sering disebut juga partitioning (pembagian), merupakan sebuah aktivitas yang mendudukan inti dari analisis kebutuhan perangkat lunak. Dekomposisi diterapkan pada dua area utama : (1). Fungsionalitas yang harus disampaikan, dan (2). Proses yang akan dipakai untuk menyampaikannya. Lecture-Note Hal : 8 Rekayasa Perangkat Lunak Secara sederhana, masalah yang kompleks dibagi ke dalam sejumlah masalah yang lebih kecil yang dapat lebih dikendalikan. 3.4. Proses Fase-fase generik yang menandai proses perangkat lunak – definisi, pengembangan dan pemeliharaan – dapat diaplikasikan pada semua perangkat lunak. Masalahnya adalah bagaimana memilih model proses yang sesuai bagi perangkat lunak yang akan direkayasa oleh sebuah tim proyek. Berikut ini beberapa jenis paradigma yang dapat dipergunakan dalam rekayasa perangkat lunak : Model sekuensial linier Model prototipe Model RAD Model inkremental Model spiral Model asembli komponen Model pengembangan kongkuren Model metode formal Model teknik generasi keempat Manajer proyek harus memutuskan model proses mana yang paling sesuai untuk proyek tertentu. Perencanaan proyek dimulai dengan menggabungkan masalah dan proses. Setiap fungsi yang akan direkayasa oleh tim perangkat lunak harus melampaui sejumlah aktivitas kerangka kerja yang sudah ditentukan bagi sebuah organisasi perangkat lunak. Misal organisasi sudah mengadopsi serangkaian aktivitas kerangka kerja sebagai berikut : Komunikasi pelanggan – tugas-tugas yang diperlukan untuk membangun komunikasi yang efektif diantara pengembang dan pelanggan. Lecture-Note Hal : 9 Rekayasa Perangkat Lunak Perencanaan – tugas-tugas yang diperlukan untuk menentukan sumbersumber daya, ketepatan waktu, dan informasi proyek yang lain. Analisis resiko – tugas-tugas yang diperlukan untuk memperkirakan resikoresiko manajemen dan teknis. Rekayasa – tugas-tugas yang diperlukan untuk membangun satu perwakilan aplikasi atau lebih. Konstruksi dan rilis – tugas-tugas yang diperlukan untuk membangun, menguji, memasang, dan memberikan dukungan kepada pemakai (seperti dokumentasi dan pelatihan) Evaluasi pelanggan – tugas-tugas yang diperlukan untuk memperoleh umpan balik dari pelanggan. Anggota-anggota tim yang bekerja pada masing-masing fungsi akan menerapkan setiap aktivitas kerangka kerja pada fungsi. Lecture-Note Hal : 10