Hier ist ein Zitat aus einem Trainingshandbuch in Bezug auf SLIM und Softwareschätzung:
Beachten Sie auch, dass ein Zusammenhang zwischen Aufwand und Mängeln besteht. Dies bedeutet, je mehr Personen einem Projekt einer bestimmten Größe zugeordnet sind, desto mehr Fehler treten auf.
Der Aufwand beträgt Personenzeit (Personenjahre, Personenmonate) für das Projekt. Unter Mängeln versteht man die Anzahl der zu jedem Zeitpunkt im Lebenszyklus festgestellten Mängel. Die Größe ist definiert als die Anwendungsfälle, Funktionspunkte oder SLOC, aus denen das Projekt besteht.
Dies erscheint unter der Annahme eines guten Prozesses und fähiger Ingenieure als kontraproduktiv. Zum Beispiel bedeutet mehr Leute zu haben, mehr Augen für alle Artefakte zu haben (Anforderungsspezifikationen, Designs, Code, Tests). Abgesehen davon, dass ich mehr Augen habe, deutet meine Intuition darauf hin, dass bei einem Projekt, das geeignete Qualitätstechniken einsetzt, nur ein geringer Zusammenhang zwischen Aufwand und Fehlern besteht.
Abgesehen von den Dokumenten zum Putnam-Modell (das von SLIM verwendet wird) konnte ich keine Dokumente finden, die auf eine bekannte Beziehung zwischen Fehlern und Aufwand oder Fehlern und Anzahl der Personen in einem Projekt hinweisen. Ist dies eine bekannte Beziehung und ist die Behauptung, dass "mehr Menschen = mehr Mängel" gültig?
quelle
Antworten:
Meine Intuition geht so:
Je mehr Personen einem Projekt einer bestimmten Größe zugeordnet sind, desto größer ist der Kommunikationsaufwand
=> desto höher ist die Wahrscheinlichkeit von Missverständnissen und Kommunikationsproblemen aller Art
=> desto höher ist die Anzahl der daraus resultierenden Fehler.
Und
Gute Entwickler sind seltener und daher schwieriger zu finden und einzustellen als mittelmäßige / schlechte.
=> Je mehr Personen einem Projekt einer bestimmten Größe zugeordnet sind, desto geringer ist ihr durchschnittliches Kompetenzniveau.
=> Desto höher ist die Anzahl der daraus resultierenden Mängel.
Aber dies mag nur meine Argumentation sein, ich habe keine stichhaltigen Beweise.
Als Randbemerkung sind Ihre unten hervorgehobenen Annahmen meiner Meinung nach (leider) ziemlich stark, wenn man den Stand unseres Berufs berücksichtigt:
quelle
Es könnte nur eine Korrelation sein. Das Management tendiert dazu, mehr Mitarbeiter für Projekte einzusetzen, die seiner Meinung nach komplexer sind, oder Projekte, die aufgrund vieler unnachgiebiger Fehler ins Hintertreffen geraten, oder Projekte, die eine große Kopplung zwischen verschiedenen Komponenten erfordern. Wenn Sie Managemententscheidungen aus der Mischung ziehen könnten, würde sich die Korrelation vermutlich zumindest verringern, wenn nicht sogar umkehren.
quelle
Angesichts der kürzlich aktualisierten Definitionen von Größe und Aufwand würde ich vorschlagen, dass die Ergebnisse möglicherweise darauf zurückzuführen sind, dass der Aufwand (gesamte Mannstunden) tatsächlich eine bessere Schätzung der tatsächlichen Projektgröße darstellt als die von der Quelle verwendeten Maßnahmen (Aufwand wäre) Eine perfekte Maßnahme, wenn alle Teams und Teamressourcen gleichwertig sind.
Was also wirklich passiert, ist, dass größere Projekte mehr Mängel aufweisen, was überhaupt nicht verwundert.
quelle
Ich glaube nicht, dass Sie beides in der realen Welt annehmen können. Je mehr Leute an einem Projekt beteiligt sind, desto wahrscheinlicher ist es, dass Sie schlechte Äpfel haben, die nicht mithalten können und die besten Entwickler bremsen. Selbst wenn Sie den Annahmen folgen, gibt es ein paar andere Dinge, die Projekte verlangsamen und mehr Fehler verursachen, wenn Sie die Anzahl der Personen erhöhen:
Meiner Erfahrung nach gehen die negativen Auswirkungen von Projekten, die mit Entwicklern beladen sind, weit zurück, wenn das Projekt sehr modular ist und Sie nur 1 oder 2 Personen pro Schicht haben. Es ist mir egal, welches Versionskontrollsystem Sie gerade verwenden. Es ist wahrscheinlich eine schlechte Idee, wenn 4 Entwickler alle Checkins automatisch in derselben Datei zusammenführen.
quelle
Es gibt einen Unterschied zwischen Korrelation und Kausalität. Das Zitat scheint zu sagen, dass die Gesamtzahl der Mängel bei Projekten, bei denen mehr Ingenieure eingesetzt werden, tendenziell höher ist. Das macht für mich durchaus Sinn, ich bin sicher, dass MS Windows mehr Fehler aufweist als die von mir erstellten Anwendungen, aber das bedeutet nicht, dass meine Anwendungen eine überlegene Qualität aufweisen.
Um ein anderes, abstrakteres Beispiel zu nennen: Wenn wir die Gesamtzahl der Todesfälle pro Land als Korrelation mit der Gesamtzahl der Ärzte im Land betrachten, können wir mit Sicherheit sagen, dass "Länder mit mehr Ärzten mehr Todesfälle hatten". Dies liegt nicht daran, dass die Ärzte den Tod verursacht haben, sondern dass eine große Anzahl von Ärzten auf eine große Bevölkerung hinweist.
quelle
Lassen Sie uns die Behauptung über die Anzahl der Personen für einen Moment beiseite legen.
Ein Blick auf die Anzahl der als Funktion des Aufwands injizierten Fehler kann sinnvoll sein, solange Sie davon ausgehen, dass ein höherer Aufwand zwangsläufig eine höhere Größe erfordert, da ein enger Zusammenhang zwischen der Anzahl der Fehler und der Softwaregröße besteht.
Wenn Sie also davon ausgehen, dass je mehr Aufwand in ein Projekt investiert wird, desto mehr Codezeilen werden geschrieben, können Sie den Aufwand wahrscheinlich als Proxy für die Größe verwenden, um die Anzahl der Fehler vorherzusagen. Die Korrelation zwischen Größe (z. B. LOC) und Anzahl der Defekte wurde in Arbeiten von Watts Humphrey, Capers Jones und anderen immer wieder gezeigt.
Ich verstehe nicht, wie die Anzahl der Personen passt, außer dass mehr Menschen mehr Aufwand bedeuten.
Verwechseln Sie die Korrelation nicht mit der Kausalität. Zwar besteht eine Korrelation zwischen der Größe und der Anzahl der injizierten Defekte, die Größe ist jedoch nicht die Ursache. Wie Sie bereits ausgeführt haben, liegt die Ursache in der Regel bei Personen- und Prozessproblemen. Das heißt, Defekte als Funktion der Größe sind eine gute Messgröße, um zu verstehen, ob es ein Problem gibt, und um die Wirksamkeit von Veränderungen zu messen.
quelle
Ich gehe davon aus, dass dies auf Mitglieder des Kernprogrammierteams beschränkt ist und nicht auf Situationen, in denen Spezialisten wie UI, UX, DBA usw. tätig sind.
Ich denke, es muss gut gemanagt werden, aber das ist nicht einfach. Kleine Teams aus Qualitätsentwicklern können sich selbst verwalten. Es ist wahrscheinlicher, große Teile des Codes zu vermeiden, die von weniger talentierten Personen erstellt wurden.
Mehr Teammitglieder können die Aufgabenteilung erleichtern. Stellen Sie die besseren oder erfahreneren Entwickler auf die schwierigen Gebiete. Nehmen Sie Ihren besseren Entwicklern einige der alltäglichen oder nicht programmierbaren Aufgaben weg und lassen Sie die Junior-Entwickler die Unterbrechungen bewältigen. Dies erfordert mehr Planung und Überlegung, bietet jedoch die Möglichkeit, Ihr Talent zu nutzen.
Es gibt die Vorstellung, dass es besser ist, einen großartigen Entwickler zu haben, der sich eine neue Fähigkeit aneignen muss, als einen unterdurchschnittlichen Entwickler, der es bereits weiß. Das ist großartig, wenn Sie die Zeit haben. Wahrscheinlich liegt der Grund dafür, dass einem Projekt mehr Entwickler zugewiesen werden, am Arbeitsaufwand und an den zeitlichen Beschränkungen. Möglicherweise haben Sie jemanden, der sich auf ein bestimmtes Gebiet konzentrieren und kompetenter werden kann. Es ist großartig, über ein umfassendes Wissen zu verfügen, aber manchmal kann ein kleinerer Entwickler mit ein paar Anweisungen damit arbeiten.
Die Realität ist, dass es nicht viele Leute gibt, die jemals ein großes Team für ein erfolgreiches Projekt geleitet haben. Selbst wenn sie alle talentiert sind, ist es für große Teams schwierig, sich selbst zu verwalten. Stören Egos?
quelle