Isi kandungan:
anggaran projek perisian
Pixabay
Pengenalan
Anggarannya sukar. Malangnya, ia juga sangat diperlukan. Syarikat menggunakan anggaran untuk memproyeksikan jadual pelepasan, membuat komitmen kepada pelanggan mereka, memutuskan apakah ciri yang dicadangkan layak dilaksanakan, mengesan kecepatan pasukan, dan mengutamakan pekerjaan dengan berkesan. Para eksekutif sering ingin mengetahui bila ciri atau penyampaian akan siap untuk dihasilkan. Lagipun, pembangunan perisian bukanlah pelaburan yang remeh. Tanpa anggaran, bagaimana pengurus projek membuat penilaian? Sekiranya manusia dapat meramalkan masa depan dengan tepat, orang tidak akan menang pada pacuan kuda 2% sepanjang masa. Anggaran adalah teka-teki yang hebat. Adalah mustahak dan perlu bagi syarikat untuk meminta orang-orang mereka melakukan yang mustahil: ramalkan masa depan.
Pertama, mari kita kaji beberapa kaedah anggaran yang popular (sekiranya anda terlepas beberapa kegembiraan). Kemudian kita dapat melihat apa maksudnya ini bagi kita dan projek kita.
Model Fortune Teller
Model ini hampir tidak memerlukan usaha untuk menghasilkan anggaran. Penganggar berfikir sedikit tentang apa yang perlu dilakukan untuk melaksanakan dan menguji suatu ciri, lalu mereka membuang sejumlah. Kedengarannya seperti "… (jeda panjang)… Ummmmm… 6 minggu." Kemudian semua orang mengangguk dan kami terus bergerak. Mereka boleh menghabiskan masa agak lama di bahagian depan untuk membincangkan apa yang mereka tahu mengenai syarat-syarat (yang mungkin bukan gambaran lengkap). Analisis yang teliti ini menjadikan anggaran mereka lebih dipercayai. Pada akhir projek, selalu ada alasan yang dapat diterima mengapa anggaran itu jauh dari kenyataan. Selalu ada keadaan yang tidak dijangka yang dapat dijadikan kambing hitam. Sering kali tidak terjadi pada siapa pun bahawa model itu sangat cacat.
Oleh itu, bagaimana kita dapat menjadikan proses ini lebih baik? Saya tahu! Kita boleh menggunakan Teknik Penguraian (iaitu memecah dan menakluki). Pendekatan ini mengandaikan bahawa anda mengetahui skop ciri atau projek yang lengkap di bahagian depan. Setiap ciri dipecah menjadi potongan kecil. Setiap bahagian dianggarkan (gaya peramal), kemudian kami menambahkannya untuk mendapatkan anggaran keseluruhan fitur / projek. Ini tentunya pendekatan yang lebih rumit, tetapi nampaknya lebih baik kerana dua sebab:
- Potongan kerja yang lebih kecil cenderung lebih mudah untuk dianggarkan dengan pasti.
- Walaupun masih ada peluang untuk kesilapan (+/- sejumlah), terdapat anggapan bahawa kesalahan akan saling membatalkan apabila anda menambahkan semuanya dan anda akan mendapat anggaran keseluruhan yang lebih dipercayai.
Kelemahan asas dengan pendekatan ini adalah bahawa penyumbang individu (orang yang benar-benar melakukan kerja) memandang rendah secara universal. Mereka masih jauh lebih baik daripada yang berada di atas dan di sekelilingnya, tetapi itu bukan palang tinggi. Nampaknya ini tidak berlaku kerana kita semua telah melihat kes-kes di mana pembangun mengejutkan diri mereka dengan mencapai sesuatu lebih awal dari jadual. Tetapi ini adalah titik data tunggal, bukan trend. Orang sebenarnya sesekali menang di kasino; membelanjakan wang di kasino setiap hari selama setahun dan anda akan mempunyai lebih sedikit wang daripada yang anda mulakan. Sekiranya anda mengesan anggaran berbanding yang sebenarnya selama satu atau dua tahun, anda akan dapati bahawa anggaran itu tidak mencapai kenyataan. Walaupun ramai pengusaha benar-benar yakin bahawa pemaju dengan malas memenuhi anggaran mereka dan menggunakan masa tambahan untuk "plat emas" atau memeriksa stok mereka,data menunjukkan sebaliknya. Strategi "membatalkan keluar" tidak berfungsi.
Jadi, sekarang apa? Mari membuang model peramal dan beralih ke pendekatan berdasarkan ukuran. Ternyata, walaupun manusia cukup mengerikan dalam menganggarkan masa penyelesaian, kita sebenarnya cukup pandai mengatakan betapa besarnya sesuatu. Kami sangat mahir dalam ukuran perbandingan ("lebih besar daripada itu, tetapi lebih kecil daripada yang ada di sana"). Sekiranya kita berfikir dari segi ukuran atau kerumitan dan bukannya masa, otak kita memprosesnya dengan lebih dipercayai. Kemudian kita dapat mengambil nilai ukuran dan mengira jumlah sebenar jam untuk projek itu berdasarkan formula ajaib yang bagus! Dan ketika itulah model titik fungsi yang popular memasuki tempat kejadian (panggung kiri).
Analisis Mata Fungsi (FPA)
Untuk analisis titik fungsi, kita perlu mengenal pasti lima jenis perkara dalam aplikasi kita: input luaran, output luaran, pertanyaan luaran, fail antara muka luaran, dan fail logik dalaman (jangan terlalu risau tentang definisi; anda boleh menelitinya kemudian). Setiap contoh (fungsi) mempunyai kerumitan yang berkaitan dengannya (rendah, rata-rata, atau tinggi). Kami menggunakan jadual di bawah untuk mengetahui berapa banyak mata yang diberikan setiap fungsi.
Sekarang jika kita menambah poin untuk semua fungsi kita, kita mungkin mendapat nombor seperti 457 titik fungsi untuk projek kita. Maka kita hanya memerlukan formula untuk mengetahui jumlah jam… Berdasarkan projek terakhir kita, “kadar penghantaran” kita adalah 15 titik fungsi setiap orang sebulan. Itu kira-kira 30 orang kerja bulan, yang memerlukan sedikit lebih dari dua setengah bulan untuk pasukan saya 12. Ta-da!
Ini tentunya lebih kompleks daripada model sebelumnya. Sebenarnya, terdapat empat bidang kerumitan utama yang perlu diketahui.
- Lima jenis komponen tidak semestinya intuitif, dan mudah lupa memasukkan sesuatu ke dalam senarai atau memberikannya ke baldi yang salah.
- Jadual yang digunakan untuk benar-benar menghasilkan titik fungsi mengandungi nombor sihir yang memerlukan banyak usaha untuk mengesahkan. Adakah nombor ini dikalibrasi dengan betul untuk menghasilkan anggaran yang boleh dipercayai untuk pasukan saya?
- Kadar penghantaran (bahagian kritikal dari teka-teki) dikira berdasarkan produktiviti pasukan anda. Berapa kerap kita perlu mengira nombor baru? Sebenarnya terdapat sedikit panduan mengenai perkara ini.
- Apa yang dimaksudkan dengan kerumitan rendah, rata-rata, atau tinggi? Bagaimana kita menentukannya supaya semua orang memahaminya? Tidak betulkah kritikal terhadap ketepatan pengiraan kita?
Terdapat beberapa bahagian yang bergerak dalam contoh yang sangat mudah ini, dan kami bahkan belum membincangkan model kerumitan yang lebih rumit dan data lain yang boleh dimainkan (mis. Kadar kos, kadar sokongan, kepadatan kecacatan, dll.). Lebih banyak bahagian bergerak bermaksud lebih banyak peluang untuk berlaku kesilapan. Adakah kita membuat anggaran terlalu rumit sekarang? Kami tidak membayar pembangun untuk mencurahkan banyak masa untuk membuat anggaran. Saya tidak dapat menjual anggaran kepada pelanggan saya. Saya memerlukan perisian yang berfungsi. Adakah terdapat perkara lain di luar sana?
Akan Tangkas
Sekarang mari kita lihat sebentar pada tangkas tangkas (cukup untuk membuat perbandingan). Seperti yang dinyatakan sebelumnya, manusia sangat mengerikan dalam mengira waktu, dan cukup bagus dalam ukuran perbandingan. Berikut adalah beberapa istilah yang perlu difahami:
- Pecut - jangka masa yang dikemas dalam kotak (biasanya dua minggu).
- Kisah pengguna - karya yang berbeza, sebaiknya cukup kecil untuk dilakukan oleh satu orang dalam satu pecut. Ini adalah perkara yang kami anggap.
Strategi yang paling popular adalah menggunakan urutan fibonacci (0, 1, 2, 3, 5, 8, 13) untuk anggaran. Ini tidak linear - semasa anda menaikkan skala ukuran jurang meningkat. Kuncinya adalah bahawa jurang harus cukup luas sehingga tidak ada alasan untuk berdebat mengenai perbezaan yang tidak signifikan. Sebaik sahaja anda berada di atas 3, perbezaan antara 4 dan 5 atau 7 dan 8 sangat diabaikan sehingga tidak ada gunanya menghabiskan masa untuk mengetahui mana yang sebenarnya. Urutan base-2 juga berfungsi (0, 1, 2, 4, 8, 16, dll.).
"Tapi tunggu, ini hanya nombor. Apakah maksudnya? Berapa jam adalah satu titik? " Poin tidak dimaksudkan untuk berkorelasi langsung dengan jam, kerana jika mereka melakukannya, pasukan akan tergoda untuk kembali membuat perkiraan dalam beberapa jam dan kemudian mengubahnya menjadi poin. Seperti yang telah dibincangkan sebelumnya, ketepatan anggaran kami berasal dari ukuran perbandingan dan tidak mengira jumlah jam yang diperlukan. Sekiranya anda memberi kemampuan kepada pasukan untuk berfikir dari segi jam, anda menjejaskan kemampuan anda untuk membuat anggaran dengan tepat.
Katakan anda bermula dengan latihan penentukuran. Tarik pasukan anda ke ruangan dan jalankan mereka melalui senarai 10-12 kisah pengguna. Pilih yang kecil tetapi bukan yang paling kecil dan lakukan yang pertama. Kaji semula dan umumkan bahawa cerita ini adalah “3”. Anda tidak bertanya. Anda memberitahu. Kemudian teruskan ke kisah seterusnya. "Jika itu 3, apa yang ini?" Kini pasukan ini mengukur ukuran cerita berbanding cerita lain. Akhirnya, mereka akan mempunyai idea yang cukup baik yang merupakan "1", "2", dll. Mereka tidak mengira. Masa tidak penting. Mereka ukuran cerita, berbanding cerita lain yang sudah mempunyai bilangan. Anda kemudian boleh meletakkan contoh cerita untuk setiap nombor dalam urutan dalam dokumen yang disebut pembaris. Mereka dapat menggunakannya sebagai rujukan jika mereka tidak pasti apa itu "5".
Sekarang inilah kuncinya. Kuah ajaib yang menjadikan karya ini adalah "halaju" (jumlah mata yang dapat diselesaikan oleh pasukan dalam pecut rata-rata pada 3-4 pecut). Katakan pecut anda adalah dua minggu dan pasukan anda yang terdiri daripada 8 orang mempunyai kecepatan rata-rata 35 mata. Anda memperoleh 35 mata dalam 640 jam kerja (8 x 80 jam). Sekiranya kita mengetahui bahawa satu fungsi akan memerlukan masa kerja sekitar 100 mata hingga selesai, maka saya tahu bahawa kira-kira 6 minggu kerja dan ~ 1900 jam. Pasukan ini sangat mahir dalam mengukur cerita secara konsisten, dan anda memanfaatkannya untuk membuat perancangan projek anda. Pengiraan ini berfungsi kerana jangka masa konsisten dari pecut ke pecut.
Untuk membuat perancangan peringkat tinggi jangka panjang, anda boleh meminta petunjuk anda untuk menguraikan ciri-ciri tahap tinggi ke dalam cerita satu-sela sementara dan meletakkan nilai-nilai penting pada mereka. Akan ada tahap ketepatan yang hilang, tetapi anda memanfaatkan model yang sudah mereka fahami. Jalan yang lebih tepat adalah ukuran relatif pada tahap ciri. "Ciri ini lebih besar daripada fitur 40 titik, lebih kecil daripada fitur 120 titik di sana, dan sedikit lebih besar daripada fitur 65 titik yang baru saja kita lakukan." Cerita dikumpulkan ke dalam "epik". Sekiranya setiap ciri itu epik, pada akhirnya anda akan mengetahui berapa banyak mata yang diperlukan untuk melengkapkan ciri itu. Simpan sejarahnya dan anda boleh menggunakannya untuk perancangan pelepasan anda.
Kesimpulannya
Terdapat banyak metodologi yang digunakan hari ini. Masing-masing mempunyai kebaikan dan keburukan. Entah bagaimana kita perlu memikirkan cara memaksimumkan ketepatan anggaran kita sehingga kita dapat membuat keputusan yang baik. Itu tidak bermaksud anggaran kita harus tepat. Mereka hanya perlu cukup tepat sehingga berguna. Sekiranya anda tidak memahami anggaran, anda mungkin menganggap bahawa anggaran itu tidak tepat kerana pasukan tidak melakukan tugas dengan baik. Mereka tidak mengira dengan betul, atau mereka tidak melaksanakan projek dengan betul. Pukulan akan berterusan sehingga anggaran bertambah baik. Tetapi anggaran tidak boleh digunakan sebagai komitmen. Ini adalah tekaan terbaik berdasarkan maklumat terhad yang kita ada sekarang. Apabila maklumat baru muncul, kita harus membiarkan anggaran dikaji semula. Apa pun yang lain adalah mengharapkan yang mustahil, yang merupakan masalah dengan kepemimpinan (bukan dengan pasukan).
Pendekatan Scrum jauh lebih sederhana daripada yang kita lihat dalam analisis titik fungsi. Dan saya katakan itu jauh lebih dipercayai daripada meja sihir dengan nombor sihir. Ia mendapat keuntungan paling besar (usaha minimum dengan tahap ketepatan yang cukup tinggi). Dari perspektif usaha, ia tidak membuat proses yang berat untuk difahami dan digunakan oleh pasukan. Bahagian anggaran tangkas sebenarnya dapat berlaku dengan sangat cepat setelah semua orang memahami perincian kerja yang dianggarkan. Ia pasti lebih baik daripada mengeluarkan nombor dari udara yang tipis. Memacu halaju melakukan sesuatu yang sangat penting: ia membawa data sejarah ke dalam pengiraan. Setiap pecut, anda mengira semula kelajuan anda. Ini penting, kerana dari masa ke masa perubahan throughput berubah. Pasukan yang menggunakan FPA mungkin memperoleh kadar penghantaran dari projek mereka sebelumnya,yang dalam beberapa kes adalah beberapa bulan yang lalu. Banyak yang mungkin telah berubah sejak itu. Cadangan saya adalah untuk anda meneroka Agile dan benar-benar berusaha untuk memahami titik dan halaju cerita. Jangan ketinggalan membuat anggaran dalam beberapa jam hanya kerana itulah yang anda fahami. Saya percaya anda akan berterima kasih pada diri anda kelak.