Softwarekostenschätzung [geschlossen]

10

Ich habe an meinem Arbeitsplatz (einer Universität) die meisten Studenten gesehen, die die Software-Schätzkosten für ihre Abschlussarbeit mit COCOMO erstellt haben . Ich vermute, dass diese Art der Kostenschätzung etwas alt ist (COCOMO-Daten von 1981), daher meine Frage:

How do you estimate costs in your software?

Ich habe Dinge gesehen wie:

Kosten = (HoursOfWork + EstimatedIddle) * HourlyRate

Das ist nicht das, was ich will, ich suche ein richtig (wissenschaftlich) definiertes Kostenmodell

BEARBEITEN Ich habe einige verwandte Fragen zu SO gefunden:

David Conde
quelle
30
"Wie schätzen Sie die Kosten in Ihrer Software ein?" Schlecht, genau wie alle anderen.
Rein Henrichs
1
Dies sind in der Tat zwei Fragen. Ich schlage vor, Sie schreiben es als eine Hauptfrage um, die nicht von esoterischer Software abhängig ist. Ich bezweifle, dass Sie viele Antworten erhalten, wenn die Anforderung Wissen mit Cocomo
Eran Galperin
@Eran, ich werde Ihren Rat annehmen und die Frage dann umschreiben ...
David Conde
4
Steve McConnell wird von vielen IT-Mitarbeitern als Vordenker in diesem Bereich angesehen. Sie sollten sich sein Buch ansehen. stevemcconnell.com/est.htm
Jeff
5
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da es sich nicht um ein konzeptionelles Programmierproblem innerhalb des in der Hilfe definierten Bereichs handelt .
Durron597

Antworten:

16

Falls Sie im Wasserfallmodus stecken bleiben, ist die einzige ziemlich genaue Methode, die ich verwendet habe:

  1. Erstellen Sie eine Projektstrukturplan
  2. Stellen Sie sicher, dass es detailliert genug ist, damit Sie die Größe jeder Aufgabe mit etwas in Beziehung setzen können, das Sie (oder jemand, mit dem Sie sprechen können) zuvor getan haben.
  3. Überlegen Sie sich für jede Aufgabe auf der Grundlage der Erfahrung Best-Case-, Probable-Case- und Worst-Case-Zahlen. Der beste Fall ist, wenn alles perfekt gelaufen ist, der schlimmste Fall, wenn Sie es noch einmal wiederholen mussten (vielleicht zweimal) und wahrscheinlich irgendwo drin ist.
  4. Verwenden Sie eine Gewichtungsformel wie (1 * am besten + 4 * wahrscheinlich + 1 * am schlechtesten) / 6, um eine Schätzung für jede Aufgabe zu erstellen, die den Bereich berücksichtigt.
  5. Ich habe auch Varianten gesehen, bei denen Sie jeder Aufgabe eine "Risiko" -Komponente hinzufügen können. Die drei Risikostufen sind 0, 1 und 2. Ein Risiko von 0 bedeutet, dass Sie es zuvor getan haben (oder etwas sehr Nahes). 1 bedeutet, dass Sie es noch nicht getan haben, aber es wird regelmäßig in Ihrer Branche durchgeführt. 2 bedeutet, dass es in der Branche wahrscheinlich noch nie zuvor gemacht wurde. Sie nehmen die Risikonummer und multiplizieren diese mit einer Annäherung an die "Standardabweichung" Ihrer Schätzung. Fügen Sie das Ihrer gewichteten Schätzung hinzu. Ein Risiko von 0 verschiebt es also nicht, aber ein Risiko von 2 bewegt es ziemlich nahe an Ihre Worst-Case-Zahl.
  6. Addieren Sie alle Aufgaben.
  7. Fügen Sie eine Kontingenz (einige%) für "unbekannte Unbekannte" hinzu.

Sie erhalten eine sehr genaue Zahl. Ich sage nicht, dass es genau ist, aber es wird genau sein.

Die Genauigkeit hängt ganz davon ab, ob Sie in der Lage sind, für jede Aufgabe eine Nummer zu erstellen, die auf früheren Erfahrungen basiert, oder jemanden zu finden, der dies zuvor getan hat. Je mehr Erfahrung Sie haben, desto besser werden Ihre Schätzungen.

Wenn Sie das Projekt ausführen, verfolgen Sie Ihre Zeit für jede Aufgabe und schreiben Sie die fehlenden auf, damit Sie sie vergleichen können. Dies wird Sie mit der Zeit besser machen.

Scott Whitlock
quelle
Danke @Scott, ich werde so etwas wie deine Idee empfehlen ..
David Conde
1
Machen Sie Ihre Schätzung auf diese Weise und schätzen Sie dann unabhängig einen zweiten Weg (und / oder eine zweite Person führt die Schätzungen durch). Vergleichen Sie die Ergebnisse. Alles, was weit voneinander entfernt ist oder sich erheblich vom "Bauchgefühl" unterscheidet, muss überprüft werden. Meine Erfahrung (25 Jahre +) ist, dass "Bauchgefühl" oft genauer ist als jede ausgefallene Formel, ignorieren Sie es auf Ihre Gefahr.
Mattnz
@mattnz - Bauchgefühl hat die gleiche Einschränkung: Es funktioniert nur, wenn Sie viel Erfahrung haben. Jeder Kunde hat das "Bauchgefühl", dass es viel weniger kosten wird als es, weil er den Arbeitsaufwand in den Eckfällen nicht versteht.
Scott Whitlock
3
Ein weiterer Tipp: "Ich verhandle keine Schätzungen. <Lange Pause>" ist ein sehr nützlicher Ausdruck in Besprechungen mit Vorgesetzten / Kunden. Tut es Ihr Automechaniker oder Chirurg? Er kann über den Preis verhandeln, er kann verhandeln, welche Arbeit erledigt wird oder wie sie erledigt wird, aber ich habe noch nie einen Fachmann in einem anderen Bereich als Software gesehen, der verhandelt, wie lange ein Job dauern wird.
Mattnz
@mattnz - Ich habe letzte Woche mit einem Automechaniker darüber verhandelt, wie lange es dauern würde, meine Autotür zu reparieren, je nachdem, wie es gemacht wurde.
Sixtyfootersdude
3

Software-Schätzung ist extrem schwierig. Ein Ansatz, den ich verwendet habe, besteht darin, die Anforderungen so fein wie möglich aufzuschlüsseln und jedes Stück einzeln zu schätzen. Fügen Sie dann einen "Fudge-Faktor" hinzu, der entweder ein Multiplikator (doppelt so hoch) oder ein fester Betrag (x Stunden für unerwartete Arbeit) sein kann. Wenn Sie keine guten Anforderungen haben, ist eine Schätzung aus praktischen Gründen nicht möglich.

Mark B.
quelle
1
Die erfolgreichsten Schätzungen, die ich gesehen habe (ohne diejenigen, die ausgefeilte Methoden verwenden), haben die ursprüngliche Schätzung ungefähr verdoppelt.
Bernard Dy
1
Ja, doppelt. Einer der politisch erfolgreichsten Manager, für den ich gearbeitet habe, hat Entwicklerschätzungen vorgenommen, verdreifacht und dann mit den Benutzern auf das Doppelte verhandelt. Meistens wurden die ausgehandelten Liefertermine getroffen.
DaveE
0

Die Branche hat in den 30 Jahren seit 1981 viel gelernt. Eine solche Schätzung hat nie funktioniert. Da der Agile-Wahn die Landschaft grundlegend umgeschrieben hat, verwenden wir "Story Points", die eine verschwommene "Vergleichsschwierigkeit" darstellen. Wir gewinnen dann "Geschwindigkeit", so dass die Mistkerle ihre $$ -Schätzungen mit einer gewissen Menge empirischer Daten durchführen können.

Edward Strange
quelle
0

Ich habe einige "strenge" Ansätze wie Funktionspunktschätzungen und einige Variationen davon gelernt, die für moderne Anwendungen entwickelt wurden. Ich denke, der Teil dieser Ansätze, der wertvoll ist, besteht darin, dass er eine detailliertere Analyse der bekannten Anforderungen erzwingt, als ich es sonst geben könnte.

Es ist sehr schwierig, einen guten Datensatz zum Arbeiten zu bekommen, selbst wenn Sie ein gutes Modell haben. Die Messung der Produktivität ist schwierig. Menschen spielen fast jede Metrik.

Ich habe aufgehört, es zu verwenden, weil meine Organisation zu dysfunktional ist, um von Software-Schätzungen zu profitieren, aber ich habe einige Rücksicht auf die Cost Xpert-Gruppe und ihr Tool. Aber es ist sehr teuer und für die überwiegende Mehrheit der Unternehmen wahrscheinlich nicht die Kosten und die Lernkurve wert.

Jeremy
quelle
0

Es ist sehr schwierig, Aufwand und Kosten abzuschätzen, aber wenn Sie etwas genaueres wollen, dann:

  • Teilen Sie das HoursOfWork in 3 Komponenten auf:

    1. beste Schätzung,
    2. wahrscheinlichste Schätzung,
    3. schlechtere Schätzung.
  • EstimatedIddle entfernen.

Beachten Sie, dass alles, was länger als 8 Stunden dauert, einen großen Fehler verursacht.

BЈовић
quelle
0

Normalerweise teilen wir den gesamten Arbeitsumfang in Hauptmodule / -elemente auf, die als Teilprojekt betrachtet werden könnten. Mit anderen Worten, es handelt sich um jene Arbeitsteile, die der Kunde als separate Teile des Projekts betrachtet und die der Kunde separat schätzen möchte.

Sobald dies erledigt ist, teilen wir jedes Modul in Aufgaben, Unteraufgaben und noch kleinere Unteraufgaben auf, so dass jede recht einfach geschätzt werden kann und die Schätzung zwischen einer und zehn Mannstunden dauert. Auf diese Weise erhalten wir eine detaillierte Aufschlüsselung des Arbeitsumfangs für das Projekt.

Der letzte Schritt ist die Verteilung der Aufgaben auf die Meilensteine. Wir machen es so, dass nach jedem Meilenstein Kunden sichtbare Ergebnisse erhalten. Das hilft, einen Meilenstein zu überschreiten und zu einem anderen zu wechseln. Also endlich bekommen wir so etwas wie:

Modul 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>

Anfangs haben wir es nur mit Excel Sheet gemacht. Aber vor mehr als zwei Jahren haben wir begonnen, dafür Software-Tools zu verwenden. Es gibt nur wenige ähnliche Produkte, die dabei helfen: www.evenflow.com , www.swproposal.com und einige andere. Ich erinnere mich nicht an alle Listen. Wir haben vor langer Zeit recherchiert. Hoffe das kann helfen.

Gute Frage ist, wie man genau schätzt. Es gibt keine 100% korrekte Schätzung, wie wir glauben. Die einzige Möglichkeit besteht darin, den gesamten Arbeitsumfang in möglichst kleine Aufgaben zu unterteilen. Je kleiner Ihre Aufgaben sind, desto detaillierter ist die Überprüfung und Analyse Ihres Projekts. Das erhöht also sowieso die Genauigkeit.

Nick Rogozhnikov
quelle