Szacowanie kosztów oprogramowania [zamknięte]

10

Widziałem w moim miejscu pracy (na uniwersytecie), że większość studentów dokonuje oszacowania oprogramowania kosztu pracy dyplomowej przy użyciu COCOMO . Domyślam się, że ten sposób szacowania kosztów jest nieco stary (daty COCOMO z 1981 r.), Stąd moje pytanie:

How do you estimate costs in your software?

Widziałem takie rzeczy jak:

Koszt = (HoursOfWork + EstimatedIddle) * HourlyRate

Nie tego chcę, szukam właściwie (naukowo) zdefiniowanego modelu kosztów

EDYCJA Znalazłem kilka powiązanych pytań na temat SO:

David Conde
źródło
30
„Jak szacujesz koszty w swoim oprogramowaniu?” Źle, tak jak wszyscy inni.
Rein Henrichs
1
To w rzeczywistości dwa pytania. Proponuję przepisać to jako jedno z głównych pytań, które nie zależy od ezoterycznego oprogramowania. Wątpię, czy uzyskasz wiele odpowiedzi, jeśli wymagana jest znajomość Cocomo
Eran Galperin
@Eran, posłucham twojej rady i przepisam pytanie, a potem ...
David Conde
4
Steve McConnell jest uważany za lidera w tej dziedzinie przez wielu ludzi z branży IT. Powinieneś rzucić okiem na jego książkę. stevemcconnell.com/est.htm
Jeff
5
Głosuję za zamknięciem tego pytania jako nie na temat, ponieważ nie dotyczy koncepcyjnego problemu programistycznego w zakresie określonym w Centrum pomocy .
durron597,

Odpowiedzi:

16

Jeśli utkniesz w trybie wodospadu, jedyną dość dokładną metodą, którą zastosowałem, jest:

  1. Utwórz strukturę podziału pracy
  2. Upewnij się, że jest wystarczająco szczegółowy, abyś mógł powiązać wielkość każdego zadania z czymś, co wcześniej (lub ktoś, z kim możesz porozmawiać).
  3. Dla każdego zadania wymyśl najlepsze, najbardziej prawdopodobne i najgorsze liczby na podstawie doświadczenia. Najlepszy przypadek to taki, że wszystko poszło idealnie, najgorszy przypadek to konieczność powtórzenia go (może dwa razy) i prawdopodobnie gdzieś tam jest.
  4. Użyj formuły ważenia, takiej jak (1 * najlepsza + 4 * prawdopodobna + 1 * najgorsza) / 6, aby uzyskać oszacowanie dla każdego zadania uwzględniającego zakres.
  5. Widziałem także warianty, w których możesz dodać element „ryzyka” do każdego zadania. Trzy poziomy ryzyka to 0, 1 i 2. Ryzyko 0 oznacza, że ​​zrobiłeś to wcześniej (lub coś bardzo bliskiego), 1 oznacza, że ​​nie zrobiłeś tego wcześniej, ale dzieje się to regularnie w twojej branży, 2 oznacza, że ​​prawdopodobnie nigdy wcześniej tego nie robiono w branży. Bierzesz liczbę ryzyka i pomnażasz ją przez przybliżenie „odchylenia standardowego” swojego oszacowania. Dodaj to do swoich ważonych szacunków. Zatem ryzyko 0 nie przenosi go, ale ryzyko 2 przesuwa go dość blisko najgorszego numeru sprawy.
  6. Dodaj wszystkie zadania.
  7. Dodaj nieprzewidziane okoliczności (niektóre%) dla „nieznanych niewiadomych”.

Skończysz z bardzo dokładną liczbą. Nie twierdzę, że to jest dokładne, ale będzie dokładne.

Dokładność zależy wyłącznie od tego, czy uda się wymyślić numer dla każdego zadania na podstawie przeszłych doświadczeń lub znaleźć kogoś, kto to zrobił wcześniej. Im więcej masz doświadczenia, tym lepsze prognozy.

Kiedy wykonasz projekt, śledź swój czas na każde zadanie i zapisz te, które przegapiłeś, abyś mógł je porównać. Z czasem sprawi to, że poczujesz się lepiej.

Scott Whitlock
źródło
Dzięki @Scott, polecę coś takiego jak twój pomysł ..
David Conde
1
Dokonaj oszacowania w ten sposób, a następnie oszacuj niezależnie drugi sposób (i / lub druga osoba dokonuje oszacowań). Porównaj wyniki. Wszystko, co jest daleko od siebie lub znacznie różni się od „przeczucia”, wymaga przeglądu. Moje doświadczenie (od ponad 25 lat) jest takie, że „uczucie jelit” jest często dokładniejsze niż jakikolwiek wymyślny wzór, zignoruj ​​to na własne ryzyko.
mattnz
@mattnz - przeczucie ma takie samo zastrzeżenie: działa tylko, jeśli masz duże doświadczenie. Każdy klient ma „przeczucie”, że będzie to kosztować o wiele mniej niż to robi, ponieważ nie rozumieją nakładu pracy w narożnych skrzynkach.
Scott Whitlock
3
Kolejna wskazówka: „Nie negocjuję szacunków. <Długa pauza>” to bardzo przydatna fraza podczas spotkań z szefami / klientami. W końcu czy robi to Twój mechanik samochodowy lub chirurg? Może negocjować cenę, może negocjować, jaka praca jest wykonywana lub w jaki sposób, ale nigdy nie widziałem, aby profesjonalista w branży innej niż oprogramowanie negocjował, ile czasu zajmie praca.
mattnz
@mattnz - W zeszłym tygodniu negocjowałem z mechanikiem samochodowym, ile czasu zajmie naprawa drzwi samochodu w zależności od tego, jak to zrobiono.
sixtyfootersdude
3

Ocena oprogramowania jest niezwykle trudna. Jednym z zastosowanych przeze mnie podejść jest jak najdokładniejsze rozbicie wymagań i oszacowanie każdego elementu osobno. Następnie dodaj „współczynnik krówki”, który może być albo mnożnikiem (podwoić go), albo stałą kwotą (x godzin nieprzewidzianej pracy). Jeśli nie masz dobrego oszacowania wymagań, jest to niemożliwe ze względów praktycznych.

Mark B
źródło
1
Najbardziej udane szacunki, jakie widziałem (nie uwzględniając tych wykorzystujących wyrafinowane metody), to te, które z grubsza podwoiły pierwotne szacunki.
Bernard Dy
1
Tak, podwójnie. Jeden z najbardziej odnoszących sukcesy polityczne menedżerów, dla których pracowałem, wziął szacunki programistów, potroił je, a następnie podwoił z użytkownikami. Najczęściej zdarzały się negocjowane terminy dostaw.
DaveE
0

Przemysł wiele się nauczył w ciągu 30 lat od '81. Takie oszacowanie nigdy nie zadziałało. Ponieważ szaleństwo Agile w zasadzie przepisało krajobraz, używamy „punktów fabularnych” reprezentujących mgliste „trudności porównawcze”. Następnie uzyskujemy „prędkość”, dzięki czemu zarozumiałe gnójki mogą dokonywać oszacowań $$ z pewną ilością danych empirycznych.

Edward Strange
źródło
0

Nauczyłem się kilku „rygorystycznych” podejść, takich jak szacunki punktów funkcyjnych i niektóre ich odmiany, które zostały zaprojektowane do nowoczesnych zastosowań. Myślę, że część tych podejść, która jest cenna, polega na tym, że wymusza bardziej szczegółową analizę znanych wymagań, niż mogłabym je podać.

Uzyskanie dobrego zestawu danych do pracy jest bardzo trudne, nawet jeśli masz dobry model. Pomiar wydajności jest trudny. Ludzie grają prawie każdą metryką.

Przestałem go używać, ponieważ moja organizacja jest zbyt dysfunkcjonalna, aby korzystać z oszacowań oprogramowania, ale mam pewien szacunek dla grupy Cost Xpert i jej narzędzia; ale jest to bardzo drogie i prawdopodobnie nie warte kosztów i krzywej uczenia się w zdecydowanej większości organizacji.

Jeremy
źródło
0

Bardzo trudno jest oszacować wysiłki i koszty, ale jeśli chcesz czegoś bardziej precyzyjnego, to:

  • podzielić HoursOfWork na 3 części:

    1. najlepsze oszacowanie,
    2. najprawdopodobniej szacunek,
    3. gorsze oszacowanie.
  • usuń EstimatedIddle.

Zwróć uwagę, że wszystko, co trwa dłużej niż 8 godzin, spowoduje ogromny błąd.

BЈовић
źródło
0

Zwykle dzielimy pełny zakres pracy na główne moduły / elementy, które można by uznać za podprojekt. Innymi słowy, są to części robocze, które klient uważa za oddzielne części projektu i które klient chce uzyskać osobno.

Po zakończeniu dzielimy każdy moduł na zadania, podzadania, a nawet mniejsze podzadania, aby każdy z nich można było dość łatwo oszacować, a oszacowanie zajmie od jednej do dziesięciu roboczogodzin. W ten sposób otrzymujemy szczegółowy podział zakresu prac dla projektu.

Ostatnim krokiem jest rozdzielenie zadań między kamienie milowe. Robimy to w taki sposób, aby po każdym kamienia milowym klient uzyskał widoczne wyniki. Pomaga to przejść jeden kamień milowy i przejść do następnego. W końcu otrzymujemy coś takiego:

Moduł 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>

Początkowo zrobiliśmy to za pomocą arkusza programu Excel. Ale ponad dwa lata temu zaczęliśmy do tego używać oprogramowania. Istnieje kilka podobnych produktów, które pomagają w tym www.evenflow.com , www.swproposal.com i kilka innych. Nie pamiętam wszystkich list. Przeprowadziliśmy badania dawno temu. Mam nadzieję, że to może pomóc.

Dobre pytanie brzmi: jak dokładnie oszacować. Według nas nie ma 100% poprawnych szacunków. Jedynym sposobem jest podzielenie pełnego zakresu pracy na możliwie najmniejsze zadania. Im mniejsze zadania, tym bardziej szczegółowy przegląd i analiza wykonywanego projektu. Tak więc i tak zwiększa dokładność.

Nick Rogozhnikov
źródło