Yazılım maliyet tahmini [kapalı]


10

İşyerimde (Üniversite) çoğu öğrencinin COCOMO kullanarak son diploma çalışmalarının yazılım tahmin maliyetini yaptığını gördüm . Tahminim, maliyetleri tahmin etmenin bu şekilde biraz eski (COCOMO 1981 tarihleri), dolayısıyla sorum:

How do you estimate costs in your software?

Şöyle şeyler gördüm:

Maliyet = (HoursOfWork + Tahmini Tahmini) * HourlyRate

İstediğim bu değil, düzgün (bilimsel olarak) tanımlanmış bir maliyet modeli arıyorum

EDIT SO ile ilgili bazı sorular buldum:


30
"Yazılımınızdaki maliyetleri nasıl hesaplıyorsunuz?" Kötü, tıpkı herkes gibi.
Rein Henrichs

1
Aslında bu iki soru. Ezoterik yazılıma bağımlı olmayan tek bir ana soru olarak yeniden yazmanızı öneririm. Ben gereksinimi Cocomo ile bilgi ise birçok cevapları alırsınız şüphe
Eran Galperin

@Eran, tavsiyeni alacağım ve soruyu yeniden yazacağım ...
David Conde

4
Steve McConnell, BT'deki birçok insan tarafından bu alanda bir düşünce lideri olarak kabul edilir. Kitabına bir göz atmalısın. stevemcconnell.com/est.htm
Jeff

5
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum çünkü bu, yardım merkezinde tanımlanan kapsamdaki kavramsal bir programlama sorunuyla ilgili değil .
durron597

Yanıtlar:


16

Şelale Modunda takılı kalmanız durumunda, kullandığım tek doğru yöntem:

  1. İş Dökümü Yapısı Oluşturma
  2. Her görevin büyüklüğünü sizin (veya konuşabileceğiniz biriyle) daha önce yaptığınız bir şeyle ilişkilendirebilmeniz için yeterince ayrıntılı olduğundan emin olun.
  3. Her görev için, deneyime dayalı en iyi durum, olası durum ve en kötü durum sayıları bulun. En iyi durum, her şey mükemmel giderse, en kötü durum, yeniden yapmak zorunda kalmanız (belki iki kez) ve muhtemelen orada bir yerde olmasıdır.
  4. Aralığı dikkate alan her görev için bir tahmin bulmak için (1 * en iyi + 4 * olası + 1 * en kötü) / 6 gibi bir ağırlıklandırma formülü kullanın.
  5. Ayrıca her göreve "risk" bileşeni ekleyebileceğiniz varyantlar gördüm. Üç risk seviyesi 0, 1 ve 2'dir. 0 riski, daha önce (veya çok yakın bir şey) yaptığınız anlamına gelir; 1, daha önce yapmadığınız anlamına gelir, ancak endüstrinizde düzenli olarak yapılır, 2 Bu muhtemelen daha önce endüstride yapılmadığı anlamına gelir. Risk numarasını alırsınız ve tahmininizin "standart sapması" ile bir çarpım yaparsınız. Bunu ağırlıklı tahmininize ekleyin. Yani 0 riski onu etkilemez, ancak 2 riski en kötü durum numaranıza oldukça yaklaştırır.
  6. Tüm görevleri toplayın.
  7. "Bilinmeyen bilinmeyenler" için bir beklenmedik durum (bazı%) ekleyin.

Çok kesin bir sayı elde edersiniz. Doğru olduğunu söylemiyorum, ama kesin olacak.

Doğruluk, tamamen geçmiş deneyime dayalı her görev için bir sayı bulmaya veya daha önce yapmış birini bulmaya bağlıdır. Ne kadar fazla deneyiminiz varsa, tahminleriniz o kadar iyi olur.

Projeyi yürüttüğünüzde, her göreve karşı zamanınızı takip edin ve kaçırdıklarınızı yazın, böylece karşılaştırabilirsiniz. Bu sizi zamanla daha iyi hale getirecektir.


Teşekkürler @ Scott, senin fikrin gibi bir şey tavsiye edeceğim ..
David Conde

1
Tahmininizi bu şekilde yapın, sonra bağımsız olarak ikinci bir yol (ve / veya ikinci bir kişi tahminleri yapar) tahmin edin. Sonuçları karşılaştırın. "Bağırsak hissinden" çok farklı veya önemli ölçüde farklı olan her şeyin gözden geçirilmesi gerekir. Benim tecrübem (25 yıl +) "bağırsak hissi" genellikle herhangi bir süslü formülden daha doğru olduğunu, sizin zararınıza görmezden geliyor.
mattnz

@mattnz - bağırsak hissi aynı uyarıya sahiptir: sadece çok fazla deneyime sahipseniz çalışır. Her müşterinin, maliyetinden çok daha ucuza mal olacağına dair bir “bağırsak hissi” vardır, çünkü köşe vakalarındaki iş miktarını anlamıyorlar.
Scott Whitlock

3
Başka bir ipucu: "Tahminler üzerinde pazarlık yapmıyorum. <Uzun duraklama>" patronlarla / müşterilerle yapılan görüşmelerde çok yararlı bir ifadedir. Sonuçta, araba tamircisi veya cerrah bunu yapıyor mu? Fiyatı müzakere edebilir, ne iş yapıldığını veya nasıl yapıldığını müzakere edebilir, ancak yazılım dışında herhangi bir alanda profesyonel için bir işin ne kadar süreceğini müzakere etmedim.
mattnz

@mattnz - Geçen hafta bir araba tamircisiyle nasıl yapıldığına bağlı olarak arabanın kapısını tamir etmenin ne kadar süreceği konusunda görüştüm.
sixtyfootersdude

3

Yazılım tahmini son derece zordur. Kullandığım bir yaklaşım, gereksinimleri olabildiğince ince bir şekilde parçalamak ve her parçayı ayrı ayrı tahmin etmektir. Ardından, çarpan (iki katına çıkar) veya sabit bir miktar (beklenmeyen iş için x saat) olabilen bir "geçiştirme faktörü" ekleyin. İyi gereksinimleriniz yoksa, pratik amaçlar için tahmin yapmak imkansızdır.


1
Gördüğüm en başarılı tahminler (sofistike yöntemleri kullananları içermeyen), orijinal tahmini kabaca iki katına çıkaran tahminlerdir.
Bernard Dy

1
Evet, çift. Çalıştığım politik olarak en başarılı yöneticilerden biri, geliştirici tahminlerini aldı, üçe katladı , sonra kullanıcılarla iki katına indi. Çoğu zaman, müzakere edilen teslimat tarihleri ​​vuruldu.
DaveE

0

Sektör, '81'den bu yana geçen 30 yılda çok şey öğrendi. Böyle tahmin etmek hiç işe yaramadı. Agile çılgınlığı temelde manzarayı yeniden yazarken, puslu "karşılaştırmalı güçlüğü" temsil eden "hikaye noktalarını" kullanıyoruz. Daha sonra, "hız" kazanırız, böylece mucky mucks, $$ tahminlerini bir miktar ampirik veri ile yapabilir.


0

İşlev noktası tahminleri ve bunun modern uygulamalar için tasarlanmış bazı varyasyonları gibi bazı "titiz" yaklaşımları öğrendim. Bu yaklaşımların değerli olan kısmının, bilinen gerekliliklerin daha ayrıntılı bir analizini zorlamasıdır, aksi takdirde verebilirim.

İyi bir modeliniz olsa bile çalışmak için iyi bir veri kümesi elde etmek çok zordur. Verimliliği ölçmek zordur. İnsanlar oyun hemen hemen her metrik.

Kuruluşum yazılım tahminlerinden faydalanmak için çok işlevsiz olduğu için kullanmayı bıraktım ama Cost Xpert grubuna ve araçlarına biraz saygı duyuyorum ; ancak çok pahalıdır ve muhtemelen kuruluşların büyük çoğunluğu için maliyet ve öğrenme eğrisine değmez.


0

Çabaları ve maliyetleri tahmin etmek çok zordur, ancak daha kesin bir şey istiyorsanız, o zaman:

  • HoursOfWork'u 3 bileşene ayırın:

    1. en iyi tahmin,
    2. büyük olasılıkla,
    3. daha kötü tahmin.
  • EstimatedIddle'ı kaldırın.

8 saatten uzun süren her şeyin büyük bir hataya neden olacağını unutmayın.


0

Normalde yaptığımız, tam iş kapsamını alt proje olarak kabul edilebilecek büyük modüllere / öğelere bölmektir. Başka bir deyişle, müşterinin projenin ayrı parçaları olarak gördüğü ve müşterinin ayrı olarak tahmin edilmesini istediği iş parçalarıdır.

Tamamlandığında, her modülü görevlere, alt görevlere ve hatta daha küçük alt alt görevlere böleriz, böylece her biri oldukça kolay tahmin edilebilir ve tahmin bir ila on adam saat sürer. Bu şekilde proje için iş kapsamının ayrıntılı dökümünü elde ederiz.

Son adım, görevleri kilometre taşları arasında dağıtmaktır. Bunu her kilometre taşı istemcisinden sonra görünür sonuçlar elde edecek şekilde yapıyoruz. Bu bir kilometre taşını geçmek ve diğerine geçmek için yardımcı olur. Sonunda şöyle bir şey elde ederiz:

Modül 1

    <ol>
        <li>
            Primary task 1 - 5 hrs
            <ol>
                <li>Subtask 1.1 – 3 hrs</li>
                <li>Subtask 1.2 – 2 hrs</li>
            </ol>
        </li>
        <li>
            Primary task 2 - 9 hrs
            <ol>
                <li>Subtask 2.1 – 1 hrs</li>
                <li>Subtask 2.2 – 2 hrs</li>
                 <li>Subtask 2.2 – 5 hrs</li>
            </ol>

Başlangıçta sadece excel sayfasını kullanarak yaptık. Ancak iki yıldan fazla bir süre önce bunun için yazılım aracı kullanmaya başladık. O yardımcı olur birkaç benzer ürünler vardır www.evenflow.com , www.swproposal.com ve birkaç diğerleri. Tüm listeyi hatırlamıyorum. Uzun zaman önce araştırma yaptık. Umarım bu yardımcı olabilir.

İyi soru, tam olarak nasıl tahmin edileceğidir. İnandığımız gibi% 100 doğru tahmin yoktur. Tek yol, tam çalışma kapsamını olabildiğince küçük görevlere bölmektir. Daha küçük görevler yaptığınız projenin daha ayrıntılı bir şekilde incelenmesine ve analizine sahip olursunuz. Böylece yine de doğruluk artar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.