Wie misst man Qualität in einem Softwareentwicklungsprojekt?

Qualität ist eine der vier wichtigsten Projektbeschränkungen , die von einem Projektmanager während des gesamten Projektlebenszyklus geplant und kontrolliert werden müssen. Um sie zu planen und zu steuern, muss der PM zunächst einmal verstehen, wie man sie misst.

Was sind mögliche und effektivste Methoden zur Qualitätsmessung in einem Softwareentwicklungsprojekt?

Mögliche Methoden sind googlebar. Was erhoffen Sie sich von dieser Frage?
Die „Haken“ für die Messung sind sehr abhängig von der konkreten Methodik. Sprechen Sie von einem der Lean/Agile-Ansätze, einem „traditionellen“ Ansatz oder etwas anderem?
Ich bin überrascht, dass niemand die „Anforderungen“ in den meisten Antworten unten wirklich betont hat? Die Anforderungen legen Ihre "Grenzen" oder "Bereiche" für das fest, was erwartet und akzeptabel ist. Ihre gemessene Qualität basiert praktisch vollständig auf diesen Anforderungen. Wie die meisten betont haben, ist es subjektiv. In einem Fall kann eine Person eine Aktion als „gut genug“ und eine andere als „nicht gut“ ansehen, aber wenn Ihre Anforderungen sie richtig quantifiziert haben, dann und nur dann könnte ein Maß für die Qualität festgelegt werden, indem die tatsächlichen Ergebnisse mit den angegebenen Anforderungen verglichen werden.

Antworten (7)

Abhängig von den Umständen können Sie verschiedene Techniken anwenden, um die Qualität eines Softwareprodukts zu bewerten:

  • Vollständigkeit: Welcher Teil der benötigten Funktionen ist tatsächlich implementiert?
  • Benutzer fragen: Was denken typische Benutzer über die Software?
  • Metriken: Einige Metriken können Ihnen eine gute Vorstellung von der Qualität des Codes geben http://en.wikipedia.org/wiki/Software_metric
  • Prozess: Die Verwendung (oder Nichtverwendung) bestimmter Prozesse ist ein guter Hinweis auf die Qualität eines Entwicklungsprozesses. Bugtracking, automatisierte Tests, Versionierungstools...
  • Fehlererkennung: Wie BillThor erklärte, ist die Fehlererkennungsrate ein guter Indikator

Wenn Sie über Qualität in Bezug auf Korrektheit und Stabilität nach der Veröffentlichung sprechen, dann ist die Bug-Defect-Rate der einfachste Weg, sie zu messen. Das Problem mit dieser Metrik ist, dass sie nur funktioniert, nachdem Sie sie freigegeben haben. Es ist bereits zu spät.

Auch wenn es zu spät ist, schlage ich vor, dass dies immer noch die beste Maßnahme ist. Sie können zumindest Ihre Entwicklungspraktiken ändern, um sie für die nächste Version zu verbessern.

Das passiert bei der Projektentwicklung. Sie tun, was Sie in Bezug auf die Qualität für notwendig halten, versenden es, nehmen Ihre Klumpen und verbessern sich. Deshalb ist es wichtig, erfahrene Entwickler und Tester zu haben. Sie haben bereits ihre Klumpen genommen.

Einige Praktiken, auf die wir uns verlassen, um Qualität zu erreichen:

  • Automatisierte Integrationstests.
  • Unit-Tests.
  • Akzeptanztests für jede Story (wir verwenden User Stories für Anforderungen)
  • Feature-Level-Tests (Testen von Story-Gruppen)
  • Code-Reviews (all unser Code wird mit einem Tool überprüft)
  • Risikoverfolgung
  • Manuelle Tests für jede Story, unmittelbar nach der Implementierung.
  • Automatisierte Leistungstests.

Viele dieser Praktiken sind als Korrekturmaßnahmen entstanden, nachdem wir gelernt haben, dass wir es besser machen können. Es ist ein iterativer Prozess. Wir ändern jede Version.

Unit Testing bestimmt auch, ob der Fehler in der Implementierung oder Spezifikation liegt. Mit anderen Worten, wenn sich die Codeabdeckung 100 % nähert und alle Tests bestanden werden, liegt das Problem offensichtlich im Verständnis der Lösung.
@John: bis zu einem gewissen Grad. Selbst wenn die Codeabdeckung jede Zeile berührt (100 %), werden Sie niemals eine 100-prozentige Pfadabdeckung haben. Und Einheitentests ignorieren von Natur aus Integrationsprobleme, in denen viele Fehler liegen können.

Wie oben beschrieben, ist Qualität eine sehr weit gefasste und subjektive Angelegenheit. Was mir zum Beispiel einfällt:

a) Erfüllung der Kundenbedürfnisse – Wenn Sie sich wohl fühlen, um mit Kunden zusammenzuarbeiten, können Sie dies messen, indem Sie ihm Ihr Produkt demonstrieren und ein hervorragendes Feedback zu diesem Qualitätsaspekt erhalten.

Viele Aspekte sind hier von Bedeutung, angefangen von der Robustheit des Produkts über die Implementierung der am meisten benötigten Funktionen bis hin zur Benutzerfreundlichkeit des Produkts und dem Arbeitskomfort für den Kunden. Alle Aspekte fließen mehr oder weniger in das Feedback ein.

Schwer vorstellbar, dass es Tools gibt, die diesen Qualitätsaspekt messen können :). Hier könnte ein agiler Ansatz mit kurzen Iterationen und häufigem Benutzerfeedback die Qualität (Zufriedenheit) erheblich verbessern.

b) niedriges Niveau an Fehlern – als einzelnes Maß, das Ihnen zeigt, wie gut Anforderungen in Code umgesetzt wurden. Dieser Wert kann gemessen werden und es gibt viele Tools, die Ihnen dabei helfen können. (JIRA, Bugzilla)

c) Codequalität – nicht direkt mit dem Grad der Fehler verbunden – sondern eher mit Schwierigkeiten bei späteren Modifikationen des Codes und der Produktpflege. Dies ist ein eher „fragiler“ Aspekt der Qualität und Sie benötigen definitiv ein Tool, um ihn zu messen:

  • Cobertura (http://cobertura.sourceforge.net/) – Unit-Test-Coverage-Tool – im Allgemeinen gilt: je mehr automatisierte Tests, desto einfacher ist es, irgendetwas mit Code zu tun, ohne ihn zu beschädigen
  • PMD (http://pmd.sourceforge.net/) - Statisches Code-Analyse-Tool - Je besser der Code lesbar ist, desto einfacher ist es, ihn zu ändern

Dieser Aspekt könnte auch als Technical Debt (http://en.wikipedia.org/wiki/Technical_debt) bezeichnet werden (eine Art Kompromiss, der aufgrund der Codequalität eingegangen wurde, um beispielsweise Fristen einhalten zu können)

d) Weitere Aspekte können Skalierbarkeit, Leistung und Hochverfügbarkeit sein. Es gibt auch einige allgemeine und auch sehr spezielle Tools, mit denen solche Aspekte von Produkten gemessen werden können. Lassen Sie mich nur erwähnen:

  • Mühle (http://grinder.sourceforge.net)
  • Jmeter (http://jakarta.apache.org/jmeter/)

Je nach Ihrer Definition ist Qualität sehr subjektiv und daher schwer zu messen. Während das Projekt entwickelt wird, wird es schwierig sein zu messen, „wie gut das Produkt die Bedürfnisse der Verbraucher erfüllt“.

Eines der traditionellen Qualitätsmaße ist die Fehlererkennungsrate. Dies ist relativ einfach zu messen und etwas weniger subjektiv. Es wird angenommen, dass ein relativ fester Prozentsatz von Fehlern unentdeckt bleibt. Projekte mit einer hohen Rate an erkannten Fehlern haben wahrscheinlich eine hohe Rate an unentdeckten Fehlern. Die Rate der Fehlererkennung hängt von den verwendeten Techniken und den Fähigkeiten Ihrer Tester ab.

Es gibt eine Vielzahl von Bug-Tracking-Tools, die verwendet werden können. Die meisten ermöglichen es Ihnen, die Anzahl der Fehler im Laufe der Zeit zu verfolgen. Das Streben nach null Fehlern zu jeder Zeit kann die Gesamtqualität verbessern. Eine Methode dafür ist „Fix bugs first“. Dies kann mehrere Vorteile haben, einschließlich der Senkung der Gesamtfehlerrate.

Sie können Fehler nach Quelle kategorisieren: Spezifikation, Code und Test. Erwarten Sie relativ gleiche Zählungen für jede Kategorie. Das Verfolgen der Injektions- und Erkennungsphasen kann dabei helfen abzuschätzen, wie viele Fehler verbleiben werden. Es kann auch nützlich sein, die verwendete Testmethodik zu verfolgen.

Usability kann als Teil der Produktqualität betrachtet werden. Leider kontaminiert das Testen die Tester, sodass Sie möglicherweise eine Quelle für neue Tester benötigen.

Wenn „Qualität“ bedeutet, wie gut ein Produkt seinem Verbraucher dient, ist das Fehlen von Fehlern natürlich kein Maß für Qualität – es könnte fehlerfrei und auch wertfrei sein. Natürlich ist es schwer, gleichzeitig fehlerbehaftet und wertvoll zu sein (ungeachtet gewisser Mikrocomputer-Softwareprodukte).

Die Qualität von Softwareprodukten kann anhand von Metriken gemessen werden, http://www.cs.toronto.edu/~yijun/ece450h/handouts/tools

Wow - das ist eine spärliche Antwort mit einem spärlichen Link. +1 und willkommen bei PM:SE. Meiner Erfahrung nach sind die wertvollsten Antworten diejenigen, bei denen der Autor sowohl einen Link als auch eine kurze Zusammenfassung des Links bereitstellt - sowohl zum Schutz vor Linkrot als auch um genügend Kontext zu geben, damit ich entscheiden kann, ob ich folgen soll.

Qualität ist ein Maß dafür, wie gut ein Produkt seinen Verbrauchern dient.

Wenn der Verbraucher eine Maschine ist, dann ist die Qualität wahrscheinlich sehr quantifizierbar und messbar. Aspekte wie Nutzungsdauer, zertifizierte korrekte Antworten auf erwartete Fragen, Fehlen von Fehlern, Timing usw. sind in vielen Fällen relativ einfach zu messen, wenn auch im Allgemeinen schwer zu garantieren (aber das ist Technik).

Wenn der Verbraucher ein Mensch oder ein menschliches Unternehmen ist, beginnt die Qualität lange vor der Produktentwicklung und wird in den Piratenmetriken ( AAARR ) gemessen und kann durch eine Reihe von Experimenten am Arbeitssystem gemessen werden, z. B. durch die Registrierung der Verwendung von Funktionen, Kundenbewertungen, Überwachung sozialer Netzwerke, Usability-Studien, Alpha-Testzyklen, A/B-Tests von Funktionen usw.

Der Entwicklungsprozess kann ebenfalls gemessen werden, um zu sehen, wie gut er seinen Teilnehmern dient, z. B. mit pünktlicher Lieferung, nachhaltigem Tempo, nicht turbulentem Produktfluss, Innovation, Einfachheit, Komponentenfehlerprüfung, Produktfunktionsprüfung und Produktivitätstrends im Laufe der Zeit . All dies ist schwer genug, aber es gibt eine Menge Forschung.

Reden wir von Softwareprojekten? Es wurden Bände geschrieben und viele Produkte zum Testen der Qualität von Software (Komplexität, Duplizierung, Speicherverbrauch, Fehlerdichte, Abwanderung und so weiter).

Was sind mögliche und effektivste Methoden zur Qualitätsmessung in einem Softwareentwicklungsprojekt?

Die effektivste Methode zur Messung der Softwarequalität ist das Feedback der Benutzer.

Wir sind ein kleines Softwareentwicklungshaus, das für unsere Qualität bekannt ist (es sei darauf hingewiesen, dass wir es bewusst vermeiden, Fristen zu schätzen, um die Arbeit richtig zu erledigen – egal, wie lange es dauert).

Wir verwenden für jedes Projekt den folgenden Schritt-für-Schritt-Prozess:

  1. Bewerten Sie die potenziellen Benutzer / Personen, die für Ihren Kunden arbeiten, und wählen Sie jemanden aus, der die Systemanforderungen versteht und gut kommuniziert. Wir nennen diese Person gerne den „Produktchampion“.
  2. Veröffentlichen Sie früh und häufig, machen Sie jedoch deutlich, dass sich Ihre Software noch in der Entwicklung befindet.
  3. Lassen Sie Ihre neuesten Veröffentlichungen von Ihrem Champion testen und erhalten Sie regelmäßig Feedback. Wenn sie einen guten Job machen, sagen Sie es ihrem Vorgesetzten (Anerkennung bringt viel). Wenn sie einen schlechten Job machen, finden Sie einen anderen Champion.
  4. Wenn sich das System der Fertigstellung nähert / einen Funktionsmeilenstein erreicht, bringen Sie mehr Benutzer / alle Benutzer darauf, damit sie es auch testen können. Stellen Sie sicher, dass ihr gesamtes Feedback durch den Champion geht.

Denken Sie daran, dass wir kundenspezifische Software für verschiedene Kunden entwickeln. Wenn Sie andererseits ein Standardpaket entwickeln, müssen Sie die Software intern behalten, bis sie fertig ist, aber ich bin sicher, dass Sie eine ähnliche Strategie wie die oben aufgeführte anwenden können ein solides Team von Beta-Testern.

Wenn Sie dann Metriken verwenden möchten, um Ihre Fähigkeit zur Erfüllung der oben genannten Philosophie zu analysieren, führen Sie die folgende Benutzerumfrage durch:

  1. Verwenden diese Benutzer das System tatsächlich? (klingt albern, aber du wärst überrascht)
  2. Sind sie damit zufrieden?

Nebenbei bemerkt, wir kümmern uns nicht um Metriken / Analysetools, die die Codequalität messen, da dies keinen Mehrwert für unseren Betrieb bringt. Aber das ist leicht zu sagen, wenn Sie so klein sind wie wir, also denke ich, dass es von der Größe Ihres Unternehmens abhängt.

Viel Glück.