Woher wissen Sie, ob Software auf der Grundlage empirischer Kennzahlen gut oder schlecht ist?

18

Ich werde derzeit gebeten, mir ein Projekt anzusehen, das vor fünf Monaten die Kernentwicklung abgeschlossen hat, aber immer noch viele Mängel aufweist. Was sich für etwa alle 10 festgestellten Mängel herausstellt, erheben wir mindestens 4 und in einigen Fällen 8 Mängel.

Ich bin der Meinung, dass die Codierungspraxis beim Anbieter schlecht ist und dass diesbezüglich eine allgemeine Übereinstimmung besteht. Ich frage mich jedoch, ob es ein strukturelles Problem mit der Software gibt. Die Fehlerdichte ist ein nützliches Maß, aber mehr noch, wenn die Kernsoftware schlecht geschrieben ist, verschiebt der Hersteller das Problem.

In der Infrastruktur ist es klarer definiert, ob etwas schlecht gebaut ist. Welche Messungen können Sie für Software neben Defekten pro LOC verwenden?

Das Produkt befindet sich seit 4 Monaten in der Fehlerbehebungsphase und hat immer noch nicht genügend kritische Fehler behoben. Wir fügen keine neuen Funktionen hinzu, sondern beheben nur Regressionsprobleme.

Dies weist auf ein Entwicklungsqualitätsproblem hin, das nicht zufrieden ist. Wenn jedoch das Produkt selbst grundlegend fehlerhaft ist, ist dies ein anderes Problem. Die Sorge ist, dass die Kerncodebasis schlecht geschrieben und die Dokumentation begrenzt ist. Alles, was die externen Entwickler tun, ist, das Problem von A nach B zu verschieben. Sobald die internen Entwicklungsteams die Aufgabe übernehmen, befürchte ich, dass sie den Code grundlegend umschreiben müssen Lass es funktionieren.

Also, wenn Sie ein Produkt von einem Dritten akzeptieren und gebeten werden, es zu unterstützen, welche Akzeptanzkriterien würden Sie verwenden, um Standards zu definieren?

Sie sind sich nicht sicher, was Sie sonst noch tun können, obwohl Sie unseren Hauptentwickler veranlassen, eine Peer-Überprüfung des Codes pro Release durchzuführen?

Nomadic Tech
quelle
8
Wenn es eine nützliche empirische (automatisch berechenbare) Metrik für gute Software gäbe, würden die Leute sie in Anforderungsdokumenten verwenden. Compiler-Autoren würden einfach dafür optimieren. Es könnte niemals Uneinigkeit darüber geben, wie gut Software ist. Offensichtlich ist die Welt nicht so. Das ist ein deutlicher Hinweis darauf, dass eine solche Maßnahme nicht existiert oder zumindest keine bekannt ist.
Kilian Foth
Fehler treten aus vielen Gründen auf - Fehler bei der Spezifikation, Fehler bei der Prüfung, unklare / sich ändernde Anforderungen. Nicht alle können auf Entwicklerfehler zurückgeführt werden.
Robbie Dee
WRT Metaphysik Debatten, sollten Sie einen Lese geben auf Diskussionen und warum sie nicht machen gute Fragen
gnat
1
Die Frage kann suboptimal formuliert werden, wobei die Defekte zu stark berücksichtigt werden. Ich denke, die Frage im Titel ist gültig und kein Duplikat (Beurteilung der SW-Qualität hier vs Entwicklerproduktivität in verknüpften Frage)
Frank

Antworten:

23

Das tust du nicht.

Die Softwarequalität lässt sich nur schwer objektiv messen. Schwer genug, dass es keine Lösung gibt. Ich verzichte auf diese Antwort, um mich mit der Frage zu befassen, ob es überhaupt eine Lösung geben kann, sondern weise einfach darauf hin, warum es wirklich schwierig ist, eine zu definieren.

Argumentation nach Status quo

Wie Kilian Foth betonte, wenn es eine einfache Maßnahme für "gute" Software gäbe, würden wir sie alle verwenden und jeder würde sie fordern.

Es gibt Projekte, in denen Manager beschlossen haben, bestimmte Metriken durchzusetzen. Manchmal hat es funktioniert, manchmal nicht. Mir sind keine signifikanten Zusammenhänge bekannt. Besonders kritische Systemsoftware (z. B. Flugzeuge, Autos usw.) muss eine Vielzahl von Metriken erfüllen, um die SW-Qualität zu gewährleisten. Es sind mir keine Studien bekannt, die belegen, dass diese Anforderungen tatsächlich zu einer höheren Qualität führen, und ich habe persönliche Erfahrungen mit der Gegenteil.

Argumentation durch Spionageabwehr

Auch schon von Kilian angedeutet und allgemeiner ausgedrückt als "jede Metrik kann und wird gespielt".

Was bedeutet es, eine Metrik zu spielen? Es ist ein lustiges Spiel für Entwickler: Sie sorgen dafür, dass die metrischen Werte wirklich gut aussehen, während Sie wirklich beschissene Dinge tun.

Angenommen, Sie messen Fehler pro LOC. Wie soll ich das spielen? Einfach - fügen Sie einfach mehr Code hinzu! Machen Sie dummen Code, der dazu führt, dass mehr als 100 Zeilen nicht ausgeführt werden und Sie plötzlich weniger Fehler pro LOC haben. Das Beste von allem: Sie haben die Softwarequalität auf diese Weise tatsächlich verringert.

Werkzeugmängel werden missbraucht, Definitionen werden bis zum Äußersten erweitert, völlig neue Wege werden gefunden. Im Grunde genommen sind Entwickler wirklich kluge Leute. Wenn Sie nur einen Entwickler in Ihrem Team haben, der Spaß am Spielen von Metriken hat, sind Ihre Metriken fraglich.

Das heißt nicht, dass Kennzahlen immer schlecht sind - aber die Einstellung des Teams zu diesen Kennzahlen ist entscheidend. Dies impliziert insbesondere, dass es für Beziehungen zwischen Subunternehmern und Drittanbietern nicht gut funktionieren wird.

Argumentation durch falsches Targeting

Was Sie messen möchten, ist die Softwarequalität. Was Sie messen, sind eine oder mehrere Metriken.

Es gibt eine Lücke zwischen dem, was Sie messen und dem, was Sie glauben, dass es Ihnen sagen wird. Diese Lücke ist geradezu riesig.

Es passiert die ganze Zeit in allen möglichen Unternehmen um uns herum. Schon mal Entscheidungen auf Basis von KPIs (Key Performance Indicators) gesehen? Es ist genau das gleiche Problem - Sie wollen, dass ein Unternehmen gut abschneidet, aber Sie messen etwas anderes.

Begründung durch Quantifizierbarkeit

Metriken können gemessen werden. Nur deshalb beschäftigen wir uns überhaupt mit ihnen. Die Softwarequalität geht jedoch weit über diese messbaren Einheiten hinaus und hat eine Menge zu bieten, die nur schwer zu quantifizieren ist: Wie lesbar ist der Quellcode? Wie erweiterbar ist Ihr Design? Wie schwer ist es für neue Teammitglieder, an Bord zu kommen? usw. usw.

Die Softwarequalität nur anhand von Metriken zu beurteilen und die Teile der Qualität, die Sie nicht quantifizieren können, nicht zu beurteilen, wird mit Sicherheit nicht gut funktionieren.

bearbeiten:

Zusammenfassung

Lassen Sie mich darauf hinweisen, dass es darum geht, objektiv zu beurteilen, ob Software gut oder schlecht ist, basierend auf Metriken. Das heißt, es sagt nichts darüber aus, ob und wann Sie Metriken anwenden sollten.

Tatsächlich ist dies eine unidirektionale Implikation: Schlechte Metriken implizieren schlechten Code. Unidirektional bedeutet, dass fehlerhafter Code keine fehlerhaften Metriken garantiert und gute Metriken keinen guten Code garantieren. Auf der anderen Seite bedeutet dies, dass Sie Metriken anwenden können, um ein Stück Software zu beurteilen - wenn Sie diese Implikation berücksichtigen.

Sie messen Software A, und die Messdaten fallen wirklich schlecht aus. Dann können Sie sicher sein, dass die Qualität des Codes schlecht ist. Wenn Sie Software B messen und die Metriken in Ordnung sind, haben Sie keinerlei Ahnung von der Codequalität. Lassen Sie sich nicht täuschen und denken Sie "Metriken gut = Code gut", wenn es wirklich nur "Code gut => Metriken gut" ist.

Im Wesentlichen können Sie Metriken verwenden, um Qualitätsprobleme zu finden, nicht jedoch die Qualität selbst.

Frank
quelle
Warten Sie mal. Tatsächlich sagen Sie, dass Software einem Stück Text ähnelt, dh einer Form von Literatur. Verstehen Sie den Vergleich zwischen physischen Produkten und Code als unterschiedlich. Die Geisteswissenschaften kennzeichnen jedoch schon seit langem Doktoranden und müssen die Qualität quantifizieren. Ich denke, das Problem hier ist, dass das technische Markieren von Code schwierig ist. Wenden Sie jedoch andere Metriken an, z. B. zwei Anwendungen zum gleichen Preis in einem App Store, aber eine hat mehr Funktionalität und eine bessere Bewertung, die Sie erwerben.
Nomadic Tech
Zu Ihrem anderen Punkt beim Messen ist es ein Vergleich. Wenn Sie drei verschiedene Produkte unterstützen, würden Sie argumentieren, dass Ihre Support-Funktion natürlich möchte, dass sie den Quellcode leicht lesen und neue Mitglieder übernehmen kann. Es ist das Produkt, für das Sie am wenigsten Tickets / Änderungswünsche erhalten. Kurz gesagt: Sie können den Software-Code nicht anhand seiner Zeilen beurteilen. Aber von den Endbenutzern und denen, die es unterstützen, und ob es in Zukunft mit minimaler Störung der Produktionssysteme gewartet werden kann.
Nomadic Tech
1
Ich stimme zu, dass sich die Softwarequalität insgesamt nur schwer mit einer Metrik messen lässt. Es gibt jedoch mehrere Metriken, die auf eine geringere Qualität hinweisen oder eine geringere Qualität anzeigen.
Jon Raynor
Ok, das Spielen einer Metrik kann ein Problem sein. Aber ich denke, was noch schlimmer ist, wenn ich dafür bestraft werde, das Richtige zu tun. Ich habe gerade einen Fehler behoben, indem ich 100 Zeilen fehlerhaften Codes durch einen einzeiligen Bibliotheksaufruf ersetzt habe, und Sie sagen mir, dass ich den Code gemäß Ihrer Metrik verschlimmert habe? Das wird mich nicht motivieren, einen guten Job zu machen.
Svick
Wenn Sie "bestraft" werden, verwenden Sie die Metriken sowieso nicht richtig. Das Verknüpfen von Metriken mit der Produktivität von Programmierern ist ein gewisser, wenn auch typischer Fehler.
Frank
13

Ja, Sie können feststellen, dass der Code Qualitätsprobleme aufweist, indem Sie sich die Metriken bis zu einem gewissen Grad ansehen.

Wenn Sie ein Komplexitätsanalyse-Tool für die Codebasis ausführen, erhalten Sie eine Vorstellung davon, ob der Code gut oder schlecht ist.

Zum Beispiel könnten Sie laufen Quellmonitor .

Dies zeigt Ihnen, wie komplex der Code ist. Ich kann Ihnen sagen, dass jedes problematische System, das ich erlebt habe, schlechte Zahlen hatte. Die Komplexität von 10s bis 100s von Methoden liegt weit über akzeptablen Grenzen. Schreckliche Zahlen. Schreckliche Komplexität, Verschachtelung, Tiefe usw. Dies führt zu vielen Problemen, einer konstant hohen Fehlerrate, schwer durchzuführenden Änderungen, ohne dass etwas anderes kaputt geht usw.

Eine andere Sache sind Mängel. Im Laufe der Zeit sollte sich das System stabilisieren. Im Idealfall sollten neue Fehler gegen Null tendieren oder auf eine niedrige Zahl abflachen, was bedeutet, dass neue und aktuelle Fehler im Laufe der Zeit abnehmen sollten.

Die Handlung sollte ungefähr so ​​aussehen:

Defekte im Laufe der Zeit Defekte im Laufe der Zeit

Wenn sie konstant bleiben oder zunehmen, ist die Software nicht gut. Du bist nur 4 Monate in, also würde ich es ein paar Monate bis zu einem Jahr geben. Wenn Sie nach 6 Monaten bis zu einem Jahr einen konstanten Strom von Fehlern hatten, ist die Qualität schlecht. Ihr Team hat einen weiteren Schlammball entwickelt .

Nächste Tests. Hast du sie? Wenn nicht weniger Qualität, mehr Fehler, mehr Abwanderung. Wenn Sie sie haben, sind Metriken wie die Codeabdeckung gut, um eine Vorstellung davon zu bekommen, wie viel Code abgedeckt wird, aber sie messen nicht die Qualität . Ich habe große Code-Abdeckungszahlen gesehen, aber die tatsächlichen Tests waren Mist. Sie testeten kein Verhalten oder keine Funktionalität des Systems. Die Entwickler haben sie nur geschrieben, um die Kennzahlen für das Management zu verbessern. Man muss also Tests haben und sie müssen gut sein. Kennzahlen zur Codeabdeckung sind an sich kein Qualitätsindikator.

Code Reviews, führen Sie diese durch? Wenn nicht, weniger Qualität. Dies ist besonders wichtig bei Nachwuchsentwicklern. Wenn Sie agil sind, fügen Sie Ihrer Story einfach eine Codeüberprüfungsaufgabe mit dem Namen "Codeüberprüfung" hinzu. Wenn das Management Zahlen nachverfolgen möchte, benötigen Sie ein Tool, mit dem Bewertungen wie Crucible nachverfolgt werden können . Ich denke, die Code-Überprüfungszahlen oder Metriken sind hier nicht so wichtig, außer dass sie Teil Ihres Prozesses sein sollten. Nicht jeder Check-in muss überprüft werden. Bewertungen können jedoch dazu beitragen, dass die Benutzer das Rad nicht neu erfinden oder Code schreiben, den andere nicht verstehen und / oder nicht warten können.

Schließlich müssen Sie nur den Code bewerten, da keine Metrik hilfreich ist. Jedes problematische Code-Projekt hatte diese Eigenschaften:

  • Schlechte Datenstrukturen. Alles ist eine Zeichenfolge, oder XML wird überall übergeben und analysiert, Gottobjekte oder unnötig komplexe oder generische Datenstrukturen, kein Domänenmodell.
  • Mangels Organisation oder Struktur sollte jedes nicht triviale Projekt eine Unterteilung oder Schichtung aufweisen, die die Logik trennt. Schauen Sie hier ... Wenn Sie diese Art der Organisation oder Trennung (Vermischung von Logik überall) nicht sehen, wird es schwieriger sein, das System zu warten und zu verstehen.
  • Über Abstraktionen. Manchmal ist das Gegenteil der Fall, das System ist zu stark abstrahiert. Wenn alles eine Schnittstelle und eine abstrakte Klasse ist oder Sie durch eine Menge Klassen vom Typ "Wrapper" navigieren müssen, ist die Qualität schlecht, da neue Entwickler nicht in der Lage sind, durch das aufgeblähte Objekt zu navigieren.
  • Schwer zu verstehender Code. Wenn Sie ein erfahrener Entwickler sind und Code suchen, der schwer zu verstehen ist, treten Qualitätsprobleme auf. Meine persönliche Metrik ist, dass wenn ich Code betrachte und es schwierig ist, ihm zu folgen, oder wenn ich mich dumm fühle, oder wenn ich das Gefühl habe, viele Gehirnzyklen zu verschwenden, um die Logik herauszufinden, dann ist es schlechter Code. Wenn erfahrene Entwickler Schwierigkeiten haben, dann stellen Sie sich vor, wie es für neuere Entwickler aussehen wird. Sie werden Probleme einführen.

Mein Rat wäre eine Komplexitätsanalyse des Codes. Teilen Sie die Ergebnisse nicht mit, sondern verfolgen Sie die Ergebnisse, führen Sie eine unabhängige Untersuchung durch (sehen Sie sich den Code an) und bestimmen Sie den Gesamtzustand der Codebasis. Erstellen Sie daraus einen Aktionsplan und versuchen Sie, einige der komplexen Bereiche des Codes zu korrigieren.

Jon Raynor
quelle
3
Sie haben geschrieben: "Meine persönliche Metrik ist, dass wenn ich Code betrachte und es schwierig ist zu folgen, oder wenn ich mich dumm fühle, oder wenn ich das Gefühl habe, viele Gehirnzyklen zu verschwenden, um die Logik herauszufinden, dann ist es schlechter Code." Je älter ich werde, desto mehr bin ich damit einverstanden. Früher dachte ich, das sei eine pompöse Sichtweise. Nachdem ich jedoch viele scheinbar komplexe Prozesse gesehen habe, die zu elegantem Code umgestaltet wurden, ist mir klar, dass schwieriger Code fast immer klarer hätte geschrieben werden können.
Ivan
Vielen Dank, Jon. Die von Ihnen angegebenen Referenzen sind nützlich. Klar, die Software ist über ein Jahr alt und die Mängel sind nicht abgeklungen. Ich persönlich habe seit Jahren nicht mehr codiert, ich war zu lange ein Manager-Typ und kein technischer. Das Lesen von Build IT und das Buch spiegeln meine Gedanken wider. Die Hardware, auf der die Software läuft, ist ein Hinweis darauf, wie gut sie geschrieben wurde. Vielen Dank nochmal.
Nomadic Tech
Obgleich das Gefühl, Code sei gut oder schlecht, dazu beitragen kann, schlechten Code zu erkennen, handelt es sich kaum um Metriken. Und automatisierte Prozesse zum Erkennen von "schlechtem Code" auf der Grundlage von Formatierung und Benennung von Methoden / Variablen bewirken nichts anderes, als einheitliche Benennungskonventionen innerhalb eines Teams durchzusetzen (was zwar gut ist, aber die tatsächliche Codequalität nicht garantiert oder misst).
Jwenting
2
Neben der zyklomatischen Komplexität können Vererbungstiefe, Grad der Klassenkopplung und, wie ich mir sicher bin, einige andere wichtige Indikatoren für unterdurchschnittlichen Code sein. Sie können nicht nur als Qualitätsindikator verwendet werden, sondern bieten auch einen guten Ausgangspunkt.
RubberDuck
3

Das Traurige an Metriken ist, dass Sie möglicherweise die resultierenden Werte Ihrer Metriken verbessern, aber nicht die Qualität, die daran gemessen werden soll ...

In Visual Studio gibt es eine Einstellung zum Behandeln von Compilerwarnungen als Fehler. Jetzt verstehen einige Leute die Warnungen nicht und verwenden zum Kompilieren des Codes einfache Tricks (wie "Pragma-Deaktivierungswarnung" oder das Hinzufügen eines "neuen" Schlüsselworts zu einer Funktion / Eigenschaft, die ein nicht virtuelles Mitglied einer Basis versteckt Klasse).

Wenn Sie Zugriff auf den Quellcode haben, können Sie eine statische Codeanalyse ausführen. Für .Net-Projekte können Sie zB FxCop oder ReSharper InspectCode verwenden. Bei korrekter Verwendung durch das Entwicklerteam tragen die Tools zur Qualitätsverbesserung bei. Aber natürlich sind einige "Korrekturen" zum Entfernen von Warnungen möglich, ohne sie zu verstehen.

Sie könnten sich automatisierte Tests / UnitTests ansehen: Wie gut ist die Codeabdeckung? Ob die Tests den Code tatsächlich überprüfen oder ihn nur einmal ausführen mussten, lässt sich jedoch nicht allein aus der Berichterstattung ableiten.

Das Streben nach hoher Qualität ist eine Einstellung, die von vielen Tools und ihren Metriken unterstützt werden kann, aber Metriken ohne die Einstellung der Entwickler helfen nicht.

Bernhard Hiller
quelle
3

Eine Sache, auf die Sie zusätzlich zur Erfassung einer metrischen Fehlerinjektion achten sollten, ist die Ermittlung der Fehlerquelle. Oft hängt es mit der Spezifikation zusammen.

Grundsätzlich ist es ein Fehler in der Spezifikation, eine Mehrdeutigkeit in der Spezifikation, die den Implantaten überlassen bleibt, zu entscheiden, oder es ist ein Fehler in der Implementierung.

Ein qualitativerer Ansatz ist die Frage, ob die Software nützlich ist. Wenn Sie genau hinschauen, können Sie Fehler in jeder Software feststellen. Wenn es jedoch gut genug funktioniert, um Geld zu verdienen, ist es möglicherweise nicht so schlecht.

Robert Baron
quelle
1
+1 Tolle Antwort - Wenn die Fehlerquelle nicht behoben werden kann, bleibt die Tür offen für weitere Fehler derselben Quelle
Robbie Dee,
3

Unten gibt es keinen Weg zu wissen.

Für die ursprüngliche Frage (vor der philosophischen Antwort): Was soll das Produkt tun und macht es? Die Messung nach Fehleranzahl / -dichte ist nicht ausreichend. Ich konnte nicht sagen, ob es sich um eine Bibliothek oder eine Anwendung handelte, wie groß die Codebasis war, wie groß die Problemdomäne war und wie schwerwiegend die Fehler waren. Wenn Sie beispielsweise eines der 123 Eingabeformate nicht verarbeiten, kann dies ein geringfügiger Fehler oder ein Show Stopper sein, je nachdem, wie wichtig es ist, dass das Format nicht ordnungsgemäß verarbeitet wird. Und besser als nichts ist ein hoher Standard.

Annahme, die ich für diese Frage mache: Es gibt einen Unterschied zwischen Code und Software. Ich definiere Software als das, was ein Client / Benutzer verwendet, um ein Problem zu lösen, während Code das Baumaterial von Software ist.

Software kann nur subjektiv gemessen werden. Das heißt, die Metrik, die für Software von Bedeutung ist, ist, ob Menschen sie zur Lösung eines Problems verwenden. Diese Metrik hängt vom Verhalten des anderen ab und ist daher subjektiv. Hinweis: Bei einigen Problemen kann eine Software sehr nützlich sein und wird daher als qualitativ hochwertig eingestuft (Excel für Berechnungen), jedoch nicht als qualitativ hochwertige Software für ein anderes Problem (Excel zum Abspielen von MP3-Dateien).

Code kann (normalerweise) mit empirischen Metriken gemessen werden . Aber die Interpretation ist nicht "Ja / Nein" für Qualität oder sogar wirklich auf einer Skala von "0 bis N". Metriken messen gegen einen Standard. Daher können Metriken durch die Norm definierte Problembereiche finden. Das Fehlen von Problembereichen ist jedoch kein Beweis dafür, dass es sich um einen Qualitätscode handelt. Zum Beispiel nützliche Metriken: Kompiliert es? Nein -> Nicht Qualität. Ja -> ???. Besteht es den Unit Test? Nein? Vielleicht? (weil, ist der Unit Test Quality Code?), Ja -> ???.

So wie Godels Unvollständigkeitsbeweis für Axiome der Mathematik gezeigt hat (das heißt, es gibt mathematische Aussagen, die nicht für eine endliche Menge von Axiomen als wahr oder falsch bewiesen werden können), glaube ich nicht, dass wir jemals wirklich antworten könnten Code?' für jedes Stück Code. Intuitiv gibt es wahrscheinlich eine Zuordnung zwischen Softwaremetriken zur Beantwortung von Qualität und mathematischen Axiomen zur Beantwortung von nachweislich wahr oder falsch.

Ein anderer Weg, um dieses Argument vorzubringen, ist, in die natürliche Sprache einzusteigen. William Shakespeare, Lewis Carroll und Mark Twain waren erfolgreiche Schriftsteller und wegen der Qualität ihrer Schriften von vielen geliebt. Welchen Standard in Bezug auf Grammatik, Wortschatz, Stil oder Stimme könnten wir jedoch anwenden, der sie durchweg höher einstuft als zufällige Zwölftklässler? Und während es möglich sein mag, eine synthetische Maßnahme für diese drei zu schaffen, wie würde sie das Buch Johannes (KJV), JRR Tolkien, Homer, Cervantes usw. bewerten? Dann werfen Sie Burroughs, Faulkner, Hemingway, Sylvia Plath und so weiter ein. Die Metrik funktioniert nicht.

Kristian H
quelle
2

Ich würde dies messen, indem ich ihren Prozess überprüfe (und nach Abweichungen darin Ausschau halte).

Ich würde nach Beweisen für einen Prozess suchen, der die zentrale Quellcodeverwaltung, das zentrale Build-System und einen Prozess umfasst, der sicherstellt, dass Code vor der Integration in den freigegebenen Zweig getestet wird.

Ich würde auch nach Beweisen suchen, wie sie ihre Prozesse als Reaktion auf Situationen geändert haben, in denen Fehler ihren Freigabeprozess durchlaufen haben.

Wenn sie diese Prüfungsebene nicht bestehen können, können Sie nicht erwarten, dass sie konsistente, zuverlässige Releases liefern.

Wenn sie diese Prüfung bestehen und ihren Prozess kontinuierlich verbessern, wird sich die Konsistenz der Ausgabe mit der Zeit wahrscheinlich verbessern.

Wenn dies nicht behebt wird, liegt wahrscheinlich ein Problem mit der Codearchitektur vor, das das Erweitern und Testen der aktuellen Codebasis erschwert. In diesem Fall gibt es keine guten Optionen.

Michael Shaw
quelle
Dies ist die Art der Antwort, die ich gesucht habe.
Nomadic Tech
0

Wenn Sie auf der Suche nach vollständig automatisierten Messungen sind, empfehle ich die folgenden Typen: Software Improvement Group

Es handelt sich im Wesentlichen um ein Aggregat verschiedener Metriken, die automatisch aus dem Quellcode extrahiert werden können (z. B. Unit-Test-Coverage, Funktionsgröße, Klassenverschränkung, Duplizierung, LOC usw.). Diese Werte werden dann in 1-5 Sterne umgewandelt.

Bildbeschreibung hier eingeben

Sie haben auch ein anständiges Buch alle ihre Metriken in der Praxis zu beschreiben, die es wert eine ist zu lesen: ‚Gebäude wartbare Software‘ .

Eternal21
quelle