Softwarequalität
Im Zusammenhang mit Softwareentwicklung, Softwarequalität bezieht sich auf zwei verwandte, aber unterschiedliche Vorstellungen:
- Die funktionale Qualität der Software spiegelt wider, wie gut sie ein bestimmtes Design basiert oder einem bestimmten Design entspricht funktionale Anforderungen oder Spezifikationen.[1] Dieses Attribut kann auch als Fitness für einen Zweck einer Software oder wie es im Vergleich zu Wettbewerbern auf dem Markt als lohnendem Vergleich beschrieben werden Produkt.[2] Es ist der Grad, in dem die Korrekt Software wurde produziert.
- Die strukturelle Qualität der Software bezieht sich darauf, wie sie sich trifft Nicht-funktionale Anforderungen Dadurch die Abgabe der funktionalen Anforderungen wie Robustheit oder Wartbarkeit. Es hat viel mehr mit dem Grad zu tun, in dem die Software funktioniert erforderlich.
Viele Aspekte der strukturellen Qualität können nur bewertet werden statisch Durch die Analyse der Innenstruktur der Software, dessen Quellcode (siehe Software -Metriken),[3] Auf der Ebene der Einheit und Systemebene (manchmal als End-to-End-Test bezeichnet[4]), was tatsächlich ist, wie seine Architektur an soliden Prinzipien von haftet Softwarearchitektur in einem Papier zum Thema umrissen von Objektverwaltungsgruppe (OMG).[5]
Jedoch einige strukturelle Eigenschaften, wie z. Benutzerfreundlichkeit, kann sein bewertet nur dynamisch (Benutzer oder andere, die in ihrem Namen handeln, interagieren mit der Software oder zumindest einen Prototyp oder eine Teilimplementierung; sogar die Interaktion mit einer in Karton erstellten Scheinversion stellt einen dynamischen Test dar, da eine solche Version als Prototyp angesehen werden kann). Andere Aspekte wie Zuverlässigkeit können nicht nur die Software, sondern auch die zugrunde liegende Hardware betreffen. Daher kann sie sowohl statisch als auch dynamisch bewertet werden (dynamisch (Stresstest).
Die funktionale Qualität wird typischerweise dynamisch bewertet, aber es ist auch möglich, statische Tests zu verwenden (wie z. Software -Bewertungen).
Historisch gesehen die Struktur, Klassifizierung und Terminologie von Attributen und Metriken, die auf anwendbar sind Software -Qualitätsmanagement wurden abgeleitet oder extrahiert aus dem ISO 9126 und den anschließenden ISO/IEC 25000 -Standard.[6] Basierend auf diesen Modellen (siehe Modelle), die Konsortium für IT -Softwarequalität (CISQ) hat fünf wichtige wünschenswerte strukturelle Merkmale definiert, die für eine Software erforderlich sind, um sie bereitzustellen Geschäftswert:[7] Zuverlässigkeit, Effizienz, Sicherheit, Wartbarkeit und (angemessene) Größe.[8][9][10]
Softwarequalitätsmessung quantifiziert sich inwieweit ein Softwareprogramm oder Systemraten entlang jeder dieser fünf Dimensionen. Ein aggregiertes Maß für die Softwarequalität kann durch ein qualitatives oder ein quantitatives Bewertungsschema oder eine Mischung aus beiden und dann ein Gewichtungssystem berechnet werden, das die Prioritäten widerspiegelt. Diese Ansicht der Softwarequalität, die auf einem linearen Kontinuum positioniert wird, wird durch die Analyse von "kritischen Programmierfehlern" ergänzt, die unter bestimmten Umständen zu katastrophalen Ausfällen oder Leistungsverschlechtern führen können, die ein bestimmtes System für die Verwendung auf der Grundlage aggregierter Messungen nicht zur Verwendung ungeeignet machen. Solche Programmierfehler, die auf Systemebene festgestellt wurden, machen bis zu 90 Prozent der Produktionsprobleme aus, während die Programmierfehler auf der Ebene der Einheit, auch wenn sie weitaus zahlreicher sind, weniger als 10 Prozent der Produktionsprobleme ausmachen (siehe auch Neunzig -neunzig Regel). Infolgedessen Codequalität ohne den Kontext des gesamten Systems als W. Edwards Deming beschrieben, hat einen begrenzten Wert.
Sehen, Erforschen, Analyse und Kommunizieren von Softwarequalitätsmessungen, Konzepten und Techniken von Informationsvisualisierung Geben Sie visuelle, interaktive Mittel bereit, insbesondere, wenn mehrere Softwarequalitätsmaßnahmen miteinander oder Komponenten einer Software oder eines Systems in Verbindung stehen müssen. Zum Beispiel, Softwarekarten Stellen Sie einen speziellen Ansatz dar, der "Informationen über Softwareentwicklung, Softwarequalität und Systemdynamik ausdrücken und kombinieren kann".[11]
Die Softwarequalität spielt auch eine Rolle in der Veröffentlichungsphase eines Softwareprojekts. Insbesondere die Qualität und Einrichtung der Release -Prozesse (Auch Patch -Prozesse),[12][13] Konfigurationsmanagement[14] sind wichtige Teile eines gesamten Software -Engineering -Prozesses.[15][16][17]
Motivation
Die Softwarequalität wird durch mindestens zwei Hauptperspektiven motiviert:
- Risikomanagement: Softwarefehler hat mehr als Unannehmlichkeiten verursacht. Softwarefehler können menschliche Todesfälle verursachen (siehe zum Beispiel: Liste der Softwarefehler). Die Ursachen reichten von schlecht gestalteten Benutzeroberflächen bis direkt Programmierfehler,[18][19][20] Siehe zum Beispiel Boeing 737 Fall oder Unbeabsichtigte Beschleunigung Fälle[21][22] oder Therac-25 Fälle.[23] Dies führte zu Anforderungen an die Entwicklung einiger Arten von Software, insbesondere in der Vergangenheit für Software eingebettet In medizinischen und anderen Geräten, die kritische Infrastrukturen regulieren: "[Ingenieure, die eine eingebettete Software schreiben] Siehe Java -Programme, die ein Drittel einer Sekunde lang abhalten, um die Müllsammlung und das Update der Benutzeroberfläche durchzuführen, und sie stellen sich vor, dass Flugzeuge vom Himmel fallen."[24] In den Vereinigten Staaten innerhalb der Föderale Flugverwaltung (FAA), der FAA Aircraft -Zertifizierungsdienst bietet Softwareprogramme, Richtlinien, Anleitung und Schulung, konzentriert sich auf Software und komplexe elektronische Hardware, die sich auf das Luftprodukt auswirkt (ein "Produkt" ist ein Flugzeug, ein Motor oder ein Propeller) .[25] Zertifizierungsstandards wie z. Do-178c, ISO 26262, IEC 62304usw. Anleitung geben.
- Kostenmanagement: Wie in allen anderen Bereichen des Ingenieurwesens ist ein Softwareprodukt oder eine Dienstleistung, die von guten Softwarequalitätskosten geringer ist, weniger zu verstehen, und kann als Reaktion auf die dringenden Geschäftsanforderungen kostengünstiger verändern.[26] Branchendaten zeigen, dass schlechte Anwendungsstrukturqualität im Kern eine schlechte Anwendungsqualität Geschäftsanwendungen (wie zum Beispiel Unternehmensressourcenplanung (ERP), Kundenbeziehungsmanagement (CRM) oder groß Transaktionsverarbeitung Systeme in Finanzdienstleistungen) führt zu Kosten, planen Überschreitungen und Schafer von Abfällen in Form von Nacharbeiten (siehe Muda (japanischer Begriff)).[27][28][29] Darüber hinaus korreliert die schlechte strukturelle Qualität stark mit hohen Unternehmensstörungen aufgrund von beschädigten Daten, Anwendungsausfällen, Sicherheitsverletzungen und Leistungsproblemen.[30]
- CISQ berichtet über die Kosten für schlechte Qualitätsschätzungen und Auswirkungen von:
- 2,08 Billionen US -Dollar im Jahr 2020[31][32]
- 2,84 Billionen US -Dollar im Jahr 2018
- Die Kosten von IBM für einen Datenverletzungsbericht 2020 schätzt, dass die durchschnittlichen globalen Kosten einer Datenverletzung:[33][34]
- 3,86 Millionen US -Dollar
- CISQ berichtet über die Kosten für schlechte Qualitätsschätzungen und Auswirkungen von:
Definitionen
ISO
Die Softwarequalität ist "Fähigkeit eines Softwareprodukts, den Anforderungen entsprechen".[35][36] für andere kann es gleichbedeutend mit Kunden- oder Wertschöpfung sein[37][38] oder sogar Defektniveau.[39]
ASQ
ASQ Verwendet die folgende Definition: Softwarequalität Beschreibt die wünschenswerten Attribute von Softwareprodukten. Es gibt zwei Hauptansätze: Defektmanagement und Qualitätsattribute.[40]
NIST
Software Assurance (SA) deckt sowohl die Eigenschaft als auch den Prozess ab, um dies zu erreichen:[41]
- [Gerechtfertigt] Vertrauen, dass die Software frei von Schwachstellen ist, entweder absichtlich in die Software oder versehentlich in ihrem Lebenszyklus eingefügt und dass die Software auf die beabsichtigte Weise funktioniert
- Die geplanten und systematischen Reihe von Aktivitäten, die sicherstellen
PMI
Das Projektmanagementinstitut's PMBOK Leitfaden "Softwareerweiterung" definiert nicht "Softwarequalität" selbst, aber Softwarequalitätssicherung (SQA) als "Ein kontinuierlicher Prozess, der andere Softwareprozesse prüft, um sicherzustellen, dass diese Prozesse befolgt werden (beinhaltet beispielsweise einen Software -Qualitätsverwaltungsplan)." Während die Softwarequalitätskontrolle (SCQ) bedeutet "Betrachten Sie die Anwendung von Methoden, Tools und Techniken, um die Zufriedenheit der Arbeitsprodukte für Qualitätsanforderungen für eine Software in der Entwicklung oder Änderung sicherzustellen."[42]
Andere allgemeine und historische
Die erste Definition der Qualitätsgeschichte erinnert sich aus Shewhart zu Beginn des 20. Jahrhunderts: "Es gibt zwei gemeinsame Aspekte der Qualität: Eine davon hat mit der Berücksichtigung der Qualität einer Sache als objektive Realität zu tun, unabhängig von der Existenz des Menschen. Der andere hat mit dem zu tun, was wir denken, fühlen oder fühlen Ergebnis der objektiven Realität. Mit anderen Worten, es gibt eine subjektive Seite der Qualität. "[43]
Kitchenham und Pfleeger, die weiter über die Lehren von David Garvin berichten, identifizieren fünf verschiedene Perspektiven zur Qualität:[44][45]
- Die transzendentale Perspektive befasst sich mit dem metaphysischen Aspekt der Qualität. In dieser Sicht der Qualität ist es "etwas, auf das wir als Ideal streben, aber möglicherweise nie vollständig implementiert werden".[46] Es kann kaum definiert werden, aber ähnelt dem, was ein Bundesrichter einmal über Obszönität kommentiert hat: "Ich weiß es, wenn ich es sehe".[47]
- Die Benutzerperspektive befasst sich mit der Angemessenheit des Produkts für einen bestimmten Gebrauchskontext. Während die transzendentale Ansicht ätherisch ist, ist die Benutzeransicht konkreter und beruht auf den Produkteigenschaften, die den Bedürfnissen des Benutzers entsprechen.[46]
- Die Herstellungsperspektive stellt Qualität als Konformität mit den Anforderungen dar. Dieser Qualitätaspekt wird durch Standards wie ISO 9001 betont, was Qualität als "den Grad, in dem eine Reihe von inhärenten Merkmalen die Anforderungen erfüllt" (ISO/IEC 9001 erfüllt[48]).
- Die Produktperspektive impliziert, dass Qualität durch Messen der inhärenten Eigenschaften des Produkts geschätzt werden kann.
- Die endgültige Perspektive der Qualität ist wertbasiert.[37] Diese Perspektive erkennt an, dass die unterschiedlichen Perspektiven der Qualität für verschiedene Stakeholder unterschiedliche Bedeutung oder Wert haben können.
Das Problem, das den Versuchen, die Qualität eines Produkts, fast jedes Produkt, zu definieren, wurde vom Meister Walter A. Shewhart angegeben. Die Schwierigkeit bei der Definition von Qualität besteht darin, zukünftige Bedürfnisse des Benutzers in messbare Eigenschaften umzusetzen, damit ein Produkt entworfen und sich herausstellt, um Zufriedenheit zu einem Preis zu verleihen, den der Benutzer zahlt. Dies ist nicht einfach, und sobald man sich im Bestreben ziemlich erfolgreich fühlt, stellt er fest, dass sich die Bedürfnisse des Verbrauchers verändert haben, die Wettbewerber eingezogen sind usw.[49]
Qualität ist eine Kundenbestimmung, keine Feststellung eines Ingenieurs, keine Marketingbestimmung oder eine allgemeine Managementbestimmung. Es basiert auf der tatsächlichen Erfahrung des Kunden mit dem Produkt oder Service, gemessen an seinen Anforderungen - angegeben oder nicht nicht bewusst oder lediglich spürbar, technisch betriebsbereit oder völlig subjektiv - und stellt immer ein bewegendes Ziel in einem Wettbewerbsmarkt dar.[50]
Die Wortqualität hat mehrere Bedeutungen. Zwei dieser Bedeutungen dominieren die Verwendung des Wortes: 1. Die Qualität besteht aus den Produktfunktionen, die den Kundenbedürfnissen entsprechen und dadurch die Produktzufriedenheit bieten. 2. Qualität besteht aus Freiheit von Mängel. In einem Handbuch wie diesem ist es jedoch zweckmäßig, eine kurze Definition der Wortqualität als "Fitness for Use" zu standardisieren.[51]
Tom DeMarco hat vorgeschlagen, dass "die Qualität eines Produkts davon abhängt, wie sehr die Welt zum Besseren verändert". Dies kann so interpretiert werden, dass die funktionale Qualität und die Benutzerzufriedenheit wichtiger sind als die strukturelle Qualität bei der Bestimmung der Softwarequalität.
Eine andere Definition, geprägt von durch Gerald Weinberg Im Qualitäts -Software -Management: Systemdenken ist "Qualität für eine Person wertwertig".[52][53] Diese Definition betont, dass Qualität von Natur aus subjektiv ist - unterschiedliche Menschen werden die Qualität derselben Software unterschiedlich erleben. Eine Stärke dieser Definition sind die Fragen, die sie einladen, Software -Teams zu berücksichtigen, z. B. "Wer sind die Personen, die wir für unsere Software schätzen wollen?" und "Was wird für sie wertvoll sein?".
Andere Bedeutungen und Kontroversen
Eine der Herausforderungen bei der Definition von Qualität ist, dass "jeder das Gefühl hat, sie zu verstehen".[54] und andere Definitionen der Softwarequalität könnte auf der Erweiterung der verschiedenen Beschreibungen des in der Wirtschaft verwendeten Qualitätskonzepts beruhen.
Softwarequalität wird auch oft mit gemischt mit Qualitätssicherung oder Problemlösungsmanagement[55] oder Qualitätskontrolle[56] oder DevOps. Es überlastet vor den vor genannten Bereichen (siehe auch PMI-Definitionen), ist jedoch unverwechselbar, da es sich nicht nur auf Tests, sondern auch auf Prozesse, Management, Verbesserungen, Bewertungen usw. konzentriert.[56]
Messung
Obwohl die in diesem Abschnitt vorgestellten Konzepte sowohl für die Qualität der strukturellen als auch für die funktionale Software anwendbar sind, wird die Messung des letzteren im Wesentlichen durch Tests durchgeführt [siehe Hauptartikel: Softwaretest].[57] Das Testen reicht jedoch nicht aus: Laut einer Studie sind einzelne Programmierer weniger als 50% effizient darin, Fehler in ihrer eigenen Software zu finden. Und die meisten Testformen sind nur 35% effizient. Dies macht es schwierig, die Qualität der [Software] zu bestimmen.[58]
Einführung

Bei der Messung der Softwarequalität geht es darum, inwieweit ein System oder eine Software wünschenswerte Eigenschaften besitzt. Dies kann durch qualitative oder quantitative Mittel oder eine Mischung aus beiden durchgeführt werden. In beiden Fällen gibt es für jedes wünschenswerte Merkmal eine Reihe messbarer Attribute, von denen die Existenz in einem Stück Software oder einem System tendenziell korreliert und mit dieser Eigenschaft verbunden ist. Ein Attribut, das der Portabilität zugeordnet ist, ist beispielsweise die Anzahl der zielabhängigen Aussagen in einem Programm. Genauer gesagt, verwenden Sie die Qualitätsfunktionsbereitstellung Ansatz, diese messbaren Attribute sind die "Hows", die erzwungen werden müssen, um das "Was" in der obigen Softwarequalitätsdefinition zu ermöglichen.
Die Struktur, Klassifizierung und Terminologie von Attributen und Metriken, die für das Software -Qualitätsmanagement anwendbar sind ISO 9126-3 und das anschließende Qualitätsmodell von ISO/IEC 25000: 2005. Das Hauptaugenmerk liegt auf der internen strukturellen Qualität. Es wurden Unterkategorien erstellt, um bestimmte Bereiche wie Geschäftsanwendungsarchitektur und technische Merkmale wie Datenzugriff und Manipulation oder den Begriff von Transaktionen zu verarbeiten.
Der Abhängigkeitsbaum zwischen Softwarequalitätsmerkmalen und ihren messbaren Attributen wird im Diagramm rechts dargestellt, wobei jede der 5 Merkmale, die für den Benutzer (rechts) oder Eigentümer des Geschäftssystems von Bedeutung sind, von messbaren Attributen (links) abhängt:
- Anwendungsarchitekturpraktiken
- Codierungspraktiken
- Anwendungskomplexität
- Dokumentation
- Portabilität
- Technisches und funktionales Volumen
Korrelationen zwischen Programmierfehlern und Produktionsfehlern enthüllen, dass grundlegende Codefehler 92 Prozent der Gesamtfehler im Quellcode ausmachen. Diese zahlreichen Probleme auf Codeebene zählen schließlich nur 10 Prozent der Produktionsfehler. Schlechte Software -Engineering -Praktiken auf Architekturebene machen nur 8 Prozent der Gesamtfehlern aus, konsumieren jedoch mehr als die Hälfte der Aufwand für die Behebung von Problemen und führen zu 90 Prozent der schwerwiegenden Zuverlässigkeits-, Sicherheits- und Effizienzprobleme in der Produktion.[59][60]
Code-basierte Analyse
Viele der vorhandenen Software -Messungen zählen Strukturelemente der Anwendung, die sich aus der Analyse des Quellcodes für solche einzelnen Anweisungen ergeben[61] Token[62] Kontrollstrukturen (Komplexität) und Objekte.[63]
Bei der Messung der Softwarequalität geht es darum, inwieweit ein System oder die Softwareherate entlang dieser Abmessungen zu quantifizieren. Die Analyse kann unter Verwendung eines qualitativen oder quantitativen Ansatzes oder einer Mischung aus beiden durchgeführt werden, um eine aggregierte Sichtweise [beispielsweise gewichtete Durchschnitt) bereitzustellen, die die relative Bedeutung zwischen den gemessenen Faktoren widerspiegelt].
Diese Ansicht der Softwarequalität auf einem linearen Kontinuum muss durch die Identifizierung von diskreten ergänzt werden Kritische Programmierfehler. Diese Schwachstellen scheitern möglicherweise keinen Testfall, aber sie sind das Ergebnis schlechter Praktiken, die unter bestimmten Umständen zu katastrophalen Ausfällen, Leistungsverschlechterungen, Sicherheitsverletzungen, beschädigten Daten und unzähligen anderen Problemen führen können[64] Dadurch wird ein bestimmtes System de facto für die Verwendung unabhängig von seiner Bewertung aufgrund aggregierter Messungen ungeeignet. Ein bekanntes Beispiel für Verwundbarkeit ist das Häufige Schwäche Aufzählung,[65] Ein Repository von Schwachstellen im Quellcode, mit dem Anwendungen Sicherheitsverletzungen ausgesetzt sind.
Die Messung kritischer Anwendungsmerkmale umfasst die Messung der strukturellen Attribute der Architektur, der Codierung und der Inline-Dokumentation der Anwendung, wie im obigen Bild angezeigt. Daher wird jedes Merkmal von Attributen auf zahlreichen Abstraktionsebenen in der Anwendung beeinflusst, und alle müssen berechnet werden, wenn es sich um ein wertvolles Prädiktor für Qualitätsergebnisse handelt, die das Unternehmen beeinflussen. Der in der obige Abbildung angezeigte Schichtansatz zur Berechnung charakteristischer Maßnahmen wurde zunächst von Boehm und seinen Kollegen bei TRW vorgeschlagen (Boehm, 1978)[66] und ist der Ansatz in den Standards der ISO 9126 und 25000 Serien. Diese Attribute können aus den analysierten Ergebnissen einer statischen Analyse des Anwendungsquellcodes gemessen werden. Selbst dynamische Eigenschaften von Anwendungen wie Zuverlässigkeit und Leistungseffizienz haben ihre kausalen Wurzeln in der statischen Struktur der Anwendung.
Die Analyse und Messung der Strukturqualität wird durch die Analyse der durchgeführt Quellcode, das die Architektur, Software -Framework, Datenbankschema In Bezug auf Prinzipien und Standards, die gemeinsam die konzeptionelle und logische Architektur eines Systems definieren. Dies unterscheiden Entwicklungswerkzeuge die sich hauptsächlich mit Überlegungen zur Implementierung befassen und während der entscheidenden Debuggen und testen Aktivitäten.
Verlässlichkeit
Die Grundursachen für schlechte Zuverlässigkeit sind in einer Kombination aus Nichteinhaltung guter Architektur- und Codierungspraktiken. Diese Nichteinhaltung kann durch Messung der statischen Qualitätsattribute einer Anwendung erkannt werden. Die Beurteilung der statischen Attribute, die der Zuverlässigkeit einer Anwendung zugrunde liegen, liefert eine Schätzung des Geschäftsrisikos und die Wahrscheinlichkeit potenzieller Anwendungsfehler und -fehler, die die Anwendung bei der Inbetriebnahme erleiden wird.
Die Bewertung der Zuverlässigkeit erfordert Überprüfungen mindestens die folgenden Best Practices und technischen Attribute der Software -Engineering:
- Anwendungsarchitekturpraktiken
- Codierungspraktiken
- Komplexität von Algorithmen
- Komplexität der Programmierpraktiken
- Einhaltung von objektorientierten und strukturierten Programmierpractices (falls zutreffend)
- Komponente oder Muster-Wiederverwendungsverhältnis
- Schmutzige Programmierung
- Fehler- und Ausnahmebehandlung (für alle Ebenen - GUI, Logik und Daten)
- Konformität für mehrschichtige Design
- Ressourcengrenzenverwaltung
- Software vermeidet Muster, die zu unerwarteten Verhaltensweisen führen
- Software verwaltet die Datenintegrität und -konsistenz
- Transaktionskomplexitätsniveau
Abhängig von der Anwendungsarchitektur und der verwendeten Komponenten von Drittanbietern (z. B. externe Bibliotheken oder Frameworks) sollten benutzerdefinierte Überprüfungen nach den von der obigen Best Practices gezeichneten Zeilen definiert werden, um eine bessere Bewertung der Zuverlässigkeit der gelieferten Software zu gewährleisten.
Effizienz
Wie bei der Zuverlässigkeit werden die Ursachen für die Ineffizienz der Leistung häufig unter Verstößen gegen gute architektonische und kodierende Praxis gefunden, die durch Messung der statischen Qualitätsattribute einer Anwendung erkannt werden können. Diese statischen Attribute prognostizieren potenzielle operative Leistung Engpässe und zukünftige Skalierbarkeitsprobleme, insbesondere für Anwendungen, die eine hohe Ausführungsgeschwindigkeit für den Umgang mit komplexen Algorithmen oder riesigen Datenmengen erfordern.
Die Bewertung der Leistungseffizienz erfordert die Überprüfung mindestens die folgenden Best Practices und technischen Attribute der Software -Engineering:
- Anwendungsarchitekturpraktiken
- Angemessene Interaktionen mit teuren und/oder entfernten Ressourcen
- Datenzugriffsleistung und Datenverwaltung
- Speicher-, Netzwerk- und Festplatten -Space -Management
- Einhaltung der Codierungspraktiken[67] (Beste Codierungspraktiken)
Sicherheit
Softwarequalität umfasst Software -Sicherheit.[68] Viele Sicherheitslücken resultieren aus schlechten Codierung und architektonischen Praktiken wie SQL-Injektion oder Cross-Site-Skripten.[69][70] Diese sind in Listen, die von CWE geführt werden, gut dokumentiert.[71] und das SEI/Computer -Notfallzentrum (Cert) an der Carnegie Mellon University.[67]
Die Bewertung der Sicherheit erfordert zumindest die folgenden Best Practices und technischen Attribute der Software -Engineering:
- Implementierung, Verwaltung eines Sicherheits- und Härtungentwicklungsprozesses, z. Lebenszyklus für Sicherheitsentwicklung (Microsoft) oder IBM Secure Engineering Framework.[72]
- Sichere Anwendungsarchitekturpraktiken[73][74]
- Konformität für mehrschichtige Design
- Best Practices für Sicherheitsversicherungen (Eingabevalidierung, SQL-Injektion, Skripten mit Cross-Site, Zugangskontrolle usw.)[75][76]
- Sichere und gute Programmierpraktiken[67]
- Fehler- und Ausnahmebehandlung
Wartbarkeit
Die Wartbarkeit umfasst Konzepte der Modularität, Verständlichkeit, Veränderlichkeit, Testbarkeit, Wiederverwendbarkeit und Übertragbarkeit von einem Entwicklungsteam zu einem anderen. Diese haben nicht die Form von kritischen Problemen auf Codeebene. Schlechte Wartbarkeit ist in der Regel das Ergebnis von Tausenden von geringfügigen Verstößen gegen Best Practices in Bezug .[77]
Die Beurteilung der Wartbarkeit erfordert die Überprüfung der folgenden Best Practices und technischen Attribute der Software -Engineering:
- Anwendungsarchitekturpraktiken
- Architektur, Programme und Code -Dokumentation, die in Quellcode eingebettet sind
- Code -Lesbarkeit
- Code riecht
- Komplexitätsniveau von Transaktionen
- Komplexität von Algorithmen
- Komplexität der Programmierpraktiken
- Einhaltung von objektorientierten und strukturierten Programmierpractices (falls zutreffend)
- Komponente oder Muster-Wiederverwendungsverhältnis
- Kontrolliertes Maß an dynamischer Codierung
- Kopplungsverhältnis
- Schmutzige Programmierung
- Dokumentation
- Hardware, Betriebssystem, Middleware, Softwarekomponenten und Datenbankunabhängigkeit
- Konformität für mehrschichtige Design
- Portabilität
- Programmierpraktiken (Codestufe)
- Reduziert Doppelter Code und Funktionen
- Sauberkeit der Quellcode -Datei Organisation
Die Wartbarkeit hängt eng mit Ward Cunninghams Konzept von zusammen Technische Schulden, was Ausdruck der Kosten ist, die aus mangelnder Wartbarkeit zurückzuführen sind. Gründe dafür, warum die Wartbarkeit niedrig ist[78] und haben oft ihren Ursprung in der Unfähigkeit der Entwickler, Zeit- und Zielmangel, ihrer Nachlässigkeit und der Diskrepanzen in den Schöpfungskosten und den Vorteilen von Dokumentation und insbesondere aufrechterhalten Quellcode.[79]
Größe
Messen Sie die Softwaregröße, erfordert, dass der gesamte Quellcode korrekt gesammelt wird, einschließlich Datenbankstrukturskripte, Datenmanipulationsquellcode, Komponentenheader, Konfigurationsdateien usw. Es müssen im Wesentlichen zwei Arten von Softwaregrößen gemessen, die technische Größe (Fußabdruck) und die Funktionsgröße:
- Es gibt einige Software -technische Größe Methoden, die weithin beschrieben wurden. Die häufigste technische Größenmethode ist die Anzahl der Zeilen von Code (#LOC) pro Technologie, Anzahl der Dateien, Funktionen, Klassen, Tabellen usw., aus denen Rückfassungsfunktionspunkte berechnet werden können;
- Am häufigsten zur Messung der Funktionsgröße ist Funktionspunkt Analyse. Die Funktionspunktanalyse misst die Größe der aus Sicht eines Benutzers lieferbaren Software. Die Funktionspunktgröße erfolgt basierend auf den Benutzeranforderungen und liefert eine genaue Darstellung beider Größe für Entwickler/Schätzer und Wert (die zu liefernde Funktionalität) und spiegelt die Geschäftsfunktionalität wider, die dem Kunden geliefert wird. Die Methode umfasst die Identifizierung und Gewichtung von Benutzernkenntnissen, Ausgängen und Datenspeichern. Der Größenwert ist dann für die Verwendung in Verbindung mit zahlreichen Maßnahmen zur Quantifizierung und Bewertung der Softwarelieferung und -leistung verfügbar (Entwicklungskosten pro Funktionspunkt; gelieferte Defekte pro Funktionspunkt; Funktionspunkte pro Personalmonat).
Der Standard -Standard der Funktionspunktanalyse wird von der Gruppe International Function Point Users () unterstützt (IFPUG). Es kann früh im Lebenszyklus der Softwareentwicklung angewendet werden und hängt nicht von Codezeilen wie der etwas ungenauen Backfriding-Methode ab. Die Methode ist technologisch agnostisch und kann für vergleichende Analysen zwischen Organisationen und Branchen verwendet werden.
Seit Beginn der Funktionspunktanalyse haben sich verschiedene Variationen entwickelt, und die Familie der funktionellen Größentechniken hat sich um Größenmaßnahmen wie kosmische, NESMA, Anwendungsfallpunkte, FP Lite, frühe und schnelle FPS und zuletzt mit Story -Punkten erweitert. Die Funktionspunkte haben jedoch eine statistische Genauigkeit und wurden als gemeinsame Arbeitseinheit in zahlreichen Anwendungsentwicklungsmanagement (ADM) oder Outsourcing -Engagements verwendet, die als "Währung" dienen, anhand derer Dienstleistungen erbracht und die Leistung gemessen wird.
Eine häufige Einschränkung der Funktionspunktmethode besteht darin, dass es sich um einen manuellen Prozess handelt und daher arbeitsintensiv und kostspielig in großen Initiativen wie Anwendungsentwicklung oder Outsourcing-Engagements sein kann. Dieser negative Aspekt der Anwendung der Methodik kann die IT -Führungskräfte der Industrie motiviert, um das Konsortium für die IT -Softwarequalität zu bilden, die sich auf die Einführung eines berechnbaren Metrikenstandards zur Automatisierung der Messung der Softwaregröße konzentrieren, während der IFPUG einen manuellen Ansatz fördert auf FP kontert Zertifizierungen.
Cisq Definiert die Größe, um die Größe der Software zur Unterstützung der Kostenschätzung, der Fortschrittsverfolgung oder anderer damit verbundener Software -Projektmanagementaktivitäten zu schätzen. Es werden zwei Standards verwendet: Automatisierte Funktionspunkte um die funktionale Größe der Software zu messen und Automatisierte Verbesserungspunkte Um die Größe des funktionalen und nicht funktionalen Code in einem Maß zu messen.[80]
Identifizierung kritischer Programmierfehler
Kritische Programmierfehler sind spezifische architektonische und/oder codierende schlechte Praktiken, die zu dem höchsten, unmittelbaren oder langfristigen Unternehmensrisiko führen.[81]
Diese sind ziemlich oft technologiebedingten und hängen stark vom Kontext, den Geschäftszielen und Risiken ab. Einige mögen die Respekt für die Benennung von Konventionen berücksichtigen, während andere - diejenigen, die den Boden für einen Wissenstransfer vorbereiten - ihn als absolut kritisch betrachten.
Kritische Programmierfehler können auch pro CISQ -Eigenschaften klassifiziert werden. Grundlegende Beispiel unten:
- Verlässlichkeit
- Vermeiden Sie Softwaremuster, die zu unerwartetem Verhalten führen (Nicht initialisierte Variable, Nullzeiger usw.)
- Methoden, Verfahren und Funktionen, die einfügen, aktualisieren, löschen, Tabellen erstellen oder auswählen müssen, müssen die Fehlerverwaltung enthalten
- Multi-Thread-Funktionen sollten sichergestellt werden, beispielsweise Servlets oder Streben Aktionsklassen dürfen keine Instanz-/Nicht-Final-statischen Felder haben
- Effizienz
- Stellen Sie sicher, dass die Zentralisierung von Clientanfragen (Einkommen und Daten) zur Reduzierung des Netzwerkverkehrs reduziert wird
- Vermeiden Sie SQL -Abfragen, die keinen Index gegen große Tabellen in einer Schleife verwenden
- Sicherheit
- Vermeiden Sie Felder in Servlet -Klassen, die nicht endgültig statisch sind
- Vermeiden Sie den Datenzugriff ohne Fehlerverwaltung
- Überprüfen Sie die Kontrollrückgabecodes und implementieren Sie Fehlerbehandlungsmechanismen
- Stellen Sie sicher
- Wartbarkeit
- Tiefe Vererbungsbäume und Nistungen sollten vermieden werden, um die Verständlichkeit zu verbessern
- Module sollten lose gekoppelt sein (Fanout, Vermittler), um die Ausbreitung von Modifikationen zu vermeiden
- Durchsetzung homogener Namenskonventionen
Operationalisierte Qualitätsmodelle
Neuere Vorschläge für Qualitätsmodelle wie z. Flucht und Quamoco[82] Verbreiten Sie eine direkte Integration der Definition von Qualitätsattributen und -messungen. Durch Brechen von Qualitätsattributen oder sogar das Definieren zusätzlicher Schichten werden die komplexen, abstrakten Qualitätsattribute (wie Zuverlässigkeit oder Wartbarkeit) überschaubarer und messbarer. Diese Qualitätsmodelle wurden in industriellen Kontexten angewendet, wurden jedoch nicht weit verbreitet.
Trivia
- "Eine Wissenschaft ist so reif wie ihre Messwerkzeuge."[83]
- "Ich weiß es, wenn ich es sehe. "
- "Sie können nicht steuern, was Sie nicht messen können."[7] (Tom DeMarco)
- "Sie können die Qualität nicht in ein Produkt inspizieren." (W. Edwards Deming)[84]
- "Die Bitterkeit schlechter Qualität bleibt lange nach der Süße, den Zeitplan zu erfüllen, vergessen." (Anonym)[84]
- "Wenn Sie nicht mit einer Spezifikation beginnen, ist jedes Code, den Sie schreiben, ein Patch." (Leslie Lamport)
Siehe auch
- Anomalie in der Software
- Barrierefreiheit
- Verfügbarkeit
- Beste Codierungspraktiken
- Zusammenhalt und Kupplung
- Zyklomatische Komplexität
- Konventionen codieren
- Computerfehler
- Zuverlässigkeit
- GQM
- ISO/IEC 9126
- Verbesserung der Softwareprozesse und Bestimmung der Fähigkeit - ISO/IEC 15504
- Programmierstil
- Qualität: Qualitätskontrolle, Total Quality Management.
- Anforderungsmanagement
- Umfang (Projektmanagement)
- Sicherheit
- Sicherheitstechnik
- Software Qualitätssicherung
- Softwarearchitektur
- Software quality control
- Software -Metriken
- Software -Wiederverwendbarkeit
- Software -Standard
- Softwaretest
- Testbarkeit
- Statische Programmanalyse
Weitere Lektüre
- Android OS Qualitätsrichtlinien einschließlich Checklisten für Benutzeroberfläche, Sicherheit usw. Juli 2021
- Vereinigung der maritimen Manager in Informationstechnologie und Kommunikation (AMMEMEC). Richtlinien für maritime Softwarequalität. September 2017
- Kapern Jones und Olivier Bonsignour, "The Economics of Software Quality", Addison-Wesley Professional, 1. Ausgabe, 31. Dezember 2011, ISBN978-0-13-258220-9
- CAT LAB - CNNES Code Analyse Tools Laboratory (auf Github)
- Girish Suryanarayana, Softwareprozess versus Designqualität: Tug of War?[85]
- Ho-Won Jung, Seung-Gweon Kim und Chang-Sin Chung. Messung der Softwareproduktqualität: Eine Umfrage unter ISO/IEC 9126. IEEE -Software, 21 (5): 10–13, September/Oktober 2004.
- Internationale Standardisierungsorganisation. Software -Engineering - Qualitätsqualität - Teil 1: Qualitätsmodell. ISO, Genf, Schweiz, 2001. ISO/IEC 9126-1: 2001 (E).
- Messsoftwareproduktqualität: Die ISO 25000 -Serie und CMMI (SEI -Site)
- MSQF - Ein messbasierter Softwarequalitätsrahmen Bibliothek der Cornell University
- Omar Alshathry, Helge Janicke, "Optimierende Softwarequalitätssicherung", Compsacw, S. 87–92, 2010 IEEE 34. jährliche Workshops für Computersoftware- und Anwendungskonferenz, 2010.
- Robert L. Glass. Bauen von Qualitätssoftware. Prentice Hall, Upper Saddle River, NJ, 1992.
- Roland Petrassch, "Die Definition von 'Softwarequalität': Ein praktischer Ansatz", Issre, 1999
- Softwarequalität Professional,[86] Amerikanische Gesellschaft für Qualität (ASQ)
- Software Quality Journal[87] durch Springer Natur
- Spinellis, Diomidis (2006-04-04). Codequalität: Die Open -Source -Perspektive. Upper Saddle River, New Jersey, USA: Addison-Wesley Professional. ISBN 978-0-321-16607-4.
- Stephen H. Kan. Metriken und Modelle im Software -Qualitätstechnik. Addison-Wesley, Boston, MA, zweite Ausgabe, 2002.
- Stefan Wagner. Softwareproduktqualitätskontrolle. Springer, 2013.
Verweise
Anmerkungen
- ^ Board (IREB), International Requirture Engineering. "Lernen aus der Geschichte: Der Fall von Software Anforderungen Engineering - Required Engineering Magazine". Lernen aus der Geschichte: Der Fall von Software Anforderungsgenieure - Anforderungs -Engineering Magazine. Abgerufen 2021-02-25.
- ^ Pressman, Roger S. (2005). Software -Engineering: Ansatz eines Praktikers (Sechste internationale Ausgabe). McGraw-Hill-Ausbildung. p. 388. ISBN 0071267824.
- ^ "Über die automatisierte Quellcodequalität misst Spezifikation Version 1.0". www.omg.org. Abgerufen 2021-02-25.
- ^ "So führen Sie End-to-End-Tests durch". Smartbear.com. Abgerufen 2021-02-25.
- ^ "So liefern Sie IT -Systeme im Einklang mit den CISQ -Empfehlungen, wie Sie eine gewaltige, sichere, effiziente und leicht veränderte IT -Systeme verändern können." (PDF). Archiviert (PDF) vom Original am 2013-12-28. Abgerufen 2013-10-18.
- ^ 14: 00-17: 00. "ISO/IEC 25010: 2011". ISO. Abgerufen 2021-02-23.
{{}}
: Cs1 montiert: numerische Namen: Autorenliste (Link) - ^ a b Armor, Phillip G. (2012-06-01). "Ein Maß für die Kontrolle". Kommunikation der ACM. 55 (6): 26–28. doi:10.1145/2184319.2184329. ISSN 0001-0782. S2CID 6059054.
- ^ Voas, J. (November 2011). "Software Secret Sauce: The" -ilities "[Softwarequalität]". IEEE -Software. 21 (6): 14–15. doi:10.1109/ms.2004.54. ISSN 1937-4194.
- ^ "Codequalitätsstandards | CISQ - Konsortium für Informations- und Softwarequalität". www.it-cisq.org. Abgerufen 2021-02-25.
- ^ "Software -Größenstandards | CISQ - Konsortium für Informations- und Softwarequalität". www.it-cisq.org. Abgerufen 2021-02-25.
- ^ J. Bohnet, J. Döllner Archiviert 2014-04-27 bei der Wayback -Maschine, "Überwachung der Codequalität und Entwicklungsaktivität nach Softwarekarten". Proceedings des IEEE ACM ICSE Workshop zur Verwaltung technischer Schulden, S. 9-16, 2011.
- ^ "IIA - Global Technology Audit Guide: IT Change Management: kritisch für den organisatorischen Erfolg". na.theiia.org. Abgerufen 2021-02-26.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ Boursier, Jérôme (2018-01-11). "Meltdown und Spectre Fallout: Patching -Probleme bestehen bestehen". Malwarebytes Labs. Abgerufen 2021-02-26.
- ^ Mestew. "Best Practices für Software -Updates - Konfigurationsmanager". docs.microsoft.com. Abgerufen 2021-02-26.
- ^ Wright, Hyrum K. (2009-08-25). "Veröffentlichung von Engineering -Prozessen, Modellen und Metriken". Verfahren des Doktorandensymposiums für ESEC/FSE zum Doktoratsymposium. ESEC/FSE -Doktoranden Symposium '09. Amsterdam, Niederlande: Assoziation für Computermaschinen: 27–28. doi:10.1145/1595782.1595793. ISBN 978-1-60558-731-8. S2CID 10483918.
- ^ Van der Hoek, André; Hall, Richard S.; Heimbigner, Dennis; Wolf, Alexander L. (November 1997). "Software -Release -Management". ACM Sigsoft Software Engineering Notizen. 22 (6): 159–175. doi:10.1145/267896.267909. ISSN 0163-5948.
- ^ Moore, Mike Sutton und Tym (2008-07-30). "7 Möglichkeiten zur Verbesserung Ihres Software -Release -Managements". CIO. Abgerufen 2021-02-26.
- ^ Clark, Mitchell (2021-02-24). "Irobot sagt, es wird einige Wochen dauern, bis es sein neuestes Roomba -Software -Update -Mess aufräumen kann.". Der Verge. Abgerufen 2021-02-25.
- ^ "Top 25 Softwarefehler | Sans Institute". www.sans.org. Abgerufen 2021-02-25.
- ^ ""Schalten Sie es alle 149 Stunden aus und wieder ein.". Gizmodo. Abgerufen 2021-02-25.
- ^ Software, Gimpel. "Misra C, Toyota und der Tod von Aufgabe X". Abgerufen 2021-02-25.
- ^ "Ein Update zu Toyota und unbeabsichtigter Beschleunigung« Barrcode ". embeddedgurus.com. Abgerufen 2021-02-25.
- ^ Medizinprodukte: Therac-25* Archiviert 2008-02-16 bei der Wayback -Maschine, Nancy Leveson, Universität Washington
- ^ Eingebettete Software Archiviert 2010-07-05 am Wayback -Maschine, Edward A. Lee, um in Fortschritten in Computern zu erscheinen (Computer (Marvin Victor Zelkowitz, Herausgeber), Vol. 56, Academic Press, London, 2002, überarbeitet von UCB ERL Memorandum M01/26 University of California, Berkeley, CA 94720, USA, 1. November 2001
- ^ "Flugzeugzertifizierungssoftware und elektronische Hardware in der Luft". Archiviert Aus dem Original am 4. Oktober 2014. Abgerufen 28. September 2014.
- ^ "Die Kosten für schlechte Softwarequalität in den USA: Ein 2020 -Bericht | CISQ - Konsortium für Informations- und Softwarequalität". www.it-cisq.org. Abgerufen 2021-02-25.
- ^ "Was ist Abfall? | Agile Allianz". Agile Allianz |. Abgerufen 2021-02-25.
- ^ 26. Januar, Scott Matteson in Software on; 2018; PST, 7:54 Uhr. "Bericht: Softwareversagen verursachten 2017 finanzielle Verluste in Höhe von 1,7 Billionen US -Dollar.". TechRepublic. Abgerufen 2021-02-25.
{{}}
: Cs1 montiert: numerische Namen: Autorenliste (Link) - ^ Cohane, Ryan (2017-11-16). "Finanzielle Kosten für Softwarefehler". Mittel. Abgerufen 2021-02-25.
- ^ Eloff, Jan; Bella, Madeleine Bihina (2018), "Softwareversagen: Ein Überblick", Software -Ausfalluntersuchung, Cham: Springer International Publishing, S. 7–24, doi:10.1007/978-3-319-61334-5_2, ISBN 978-3-319-61333-8, abgerufen 2021-02-25
- ^ "Schlechte Softwarequalität kosten im vergangenen Jahr 2 Billionen US -Dollar und stellt Sicherheit gefährdet". CIO -Tauchgang. Abgerufen 2021-02-26.
- ^ "Synopsys gesponserte CISQ-Forschung schätzt die Kosten für schlechte Softwarequalität in den 2,08 Billionen US-Dollar im Jahr 2020". Finance.yahoo.com. Abgerufen 2021-02-26.
- ^ "Was kostet ein Datenverstoß im Jahr 2020?". Digitales Guardian. 2020-08-06. Abgerufen 2021-03-08.
- ^ "Kosten eines Datenverletzungsberichts 2020 | IBM". www.ibm.com. 2020. Abgerufen 2021-03-08.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ "ISO - ISO 9000 Familie - Qualitätsmanagement". ISO. Abgerufen 2021-02-24.
- ^ 14: 00-17: 00. "ISO/IEC/IEEE 24765: 2017". ISO. Abgerufen 2021-02-24.
{{}}
: Cs1 montiert: numerische Namen: Autorenliste (Link) - ^ a b "Mastering Automotive Software | McKinsey". www.mckkinsey.com. Abgerufen 2021-02-25.
- ^ 14: 00-17: 00. "ISO/IEC 25010: 2011". ISO. Abgerufen 2021-02-24.
{{}}
: Cs1 montiert: numerische Namen: Autorenliste (Link) - ^ Wallace, D.R. (2002). "Praktische Software -Zuverlässigkeitsmodellierung". Proceedings 26. jährliche NASA Goddard Software Engineering Workshop. Greenbelt, MD, USA: IEEE Comput. SOC: 147–155. doi:10.1109/sw.2001.992668. ISBN 978-0-7695-1456-7. S2CID 57382117.
- ^ "Was ist Softwarequalität? | ASQ". Asq.org. Abgerufen 2021-02-24.
- ^ "SAMATE - Metriken zur Softwareversicherung und Werkzeugbewertungsprojekt Hauptseite". NIST. 3. Februar 2021. Abgerufen 2021-02-26.
- ^ Software -Erweiterung des PMBOK -Handbuchs. Projektmanagementinstitut (5. Aufl.). Newtown Square, Pennsylvania. 2013. ISBN 978-1-62825-041-1. OCLC 959513383.
{{}}
: CS1 Wartung: Andere (Link) - ^ Shewhart, Walter A. (2015). Wirtschaftswirtschaftskontrolle der Qualität des hergestellten Produkts. [Veröffentlichungsort nicht identifiziert]: Martino Fine Books. ISBN 978-1-61427-811-5. OCLC 1108913766.
- ^ Kitchenham, b.; Pfleeger, S. L. (Januar 1996). "Softwarequalität: Das schwer fassbare Ziel [Abschnitt Special Issues]". IEEE -Software. 13 (1): 12–21. doi:10.1109/52.476281. ISSN 1937-4194.
- ^ Garvin, David A. (1988). Qualität verwalten: der strategische und wettbewerbsintensive Rand. New York: Freie Presse. ISBN 0-02-911380-6. OCLC 16005388.
- ^ a b B. Kitchenham und S. Pfleger, "Softwarequalität: Das schwer fassbare Ziel", IEEE Software, Vol. 13, nein. 1, S. 12–21, 1996.
- ^ Kan, Stephen H. (2003). Metriken und Modelle im Software -Qualitätstechnik (2. Aufl.). Boston: Addison-Wesley. ISBN 0-201-72915-6. OCLC 50149641.
- ^ Internationale Organisation für Standardisierung, "ISO/IEC 9001: Quality Management Systems - Anforderungen", 1999.
- ^ W. E. Deming, "Aus der Krise heraus: Qualität, Produktivität und Wettbewerbsposition". Cambridge University Press, 1988.
- ^ A. V. Feigenbaum, "Total Quality Control", McGraw-Hill, 1983.
- ^ J. M. Juran, "Jurans Qualitätskontrollhandbuch", McGraw-Hill, 1988.
- ^ Weinberg, Gerald M. (1991). Qualitätssoftwareverwaltung: Band 1, Systemdenken. New York, N.Y.: Dorset House. ISBN 0-932633-22-6. OCLC 23870230.
- ^ Weinberg, Gerald M. (1993). Qualitätssoftwareverwaltung: Band 2, Messung erster Ordnung. New York, N.Y.: Dorset House. ISBN 0-932633-22-6. OCLC 23870230.
- ^ Crosby, P., Qualität ist kostenlos, McGraw-Hill, 1979
- ^ "Sup.9 - Problemlösungsmanagement - Kugler Maag Cie". www.kuglermaag.com. Abgerufen 2021-02-25.
- ^ a b Hoipt (2019-11-29). "Organisationen verwenden häufig die Begriffe" Qualitätssicherung "(QA) gegenüber" Qualitätskontrolle "(QC) ...". Mittel. Abgerufen 2021-02-25.
- ^ Wallace, D.; Watson, A. H.; McCabe, T. J. (1996-08-01). "Strukturierte Tests: Eine Testmethode unter Verwendung der metrischen Cyclomatic -Komplexität". NIST.
- ^ Bellairs, Richard. "Was ist die Codequalität? Und wie verbessert man die Codequalität". Perforce -Software. Abgerufen 2021-02-28.
- ^ "OMG Whitepaper | CISQ - Konsortium für Informations- und Softwarequalität". www.it-cisq.org. Abgerufen 2021-02-26.
- ^ "So liefern Sie eine gewaltige, sichere, effiziente und agile IT -Systeme im Einklang mit CISQ -Empfehlungen - Whitepaper | Objektverwaltungsgruppe" (PDF). Archiviert (PDF) vom Original am 2013-12-28. Abgerufen 2013-10-18.
- ^ "Messung der Softwaregröße: Ein Framework zum Zählen von Quellanweisungen". ressourcen.sei.cmu.edu. Abgerufen 2021-02-24.
- ^ Halstead, Maurice H. (1977). Elemente der Softwarewissenschaft (Betriebs- und Programmiersystemreihen). USA: Elsevier Science Inc. ISBN 978-0-444-00205-1.
- ^ Chidamber, S. R.; Kemerer, C. F. (Juni 1994). "Eine Metrik -Suite für objektorientiertes Design". IEEE -Transaktionen auf Software -Engineering. 20 (6): 476–493. doi:10.1109/32.295895. HDL:1721.1/48424. ISSN 1939-3520.
- ^ Nygard, Michael (2007). Lass es los!. Ein O'Reilly Media Company Safari (1. Aufl.). ISBN 978-0978739218. OCLC 1102387436.
- ^ "CWE - Häufige Schwäche Aufzählung". cwe.mitre.org. Archiviert vom Original am 2016-05-10. Abgerufen 2016-05-20.
- ^ B. Boehm, J. R. Brown, H. Kaspar, M. Lipow, G. J. Macleod & M. J. Merritt (1978). Eigenschaften der Softwarequalität. Nordholland.
- ^ a b c "SEI -Zertifikat -Codierungsstandards - Cert Secure Coding - Confluence". Wiki.Sei.cmu.edu. Abgerufen 2021-02-24.
- ^ "Codequalität und Codesicherheit: Wie sind sie verwandt? | Synopsys". Software Integrity Blog. 2019-05-24. Abgerufen 2021-03-09.
- ^ "Kosten eines Datenverletzungsberichts 2020 | IBM". www.ibm.com. 2020. Abgerufen 2021-03-09.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ "Wichtige Imbissbuden aus den Kosten eines Datenverletzungsberichts 2020". Bluefin. 2020-08-27. Abgerufen 2021-03-09.
- ^ "CWE - Häufige Schwäche Aufzählung". Cwe.mitre.org. Archiviert vom Original am 2013-10-14. Abgerufen 2013-10-18.
- ^ Sicherheit in der Entwicklung: Der IBM Secure Engineering Framework | IBM Redbooks. 2016-09-30.
- ^ Enterprise Security Architecture mit IBM Tivoli Security Solutions | IBM Redbooks. 2016-09-30.
- ^ "Secure Architecture Design Definitionen | cisa". US-Cert.cisa.gov. Abgerufen 2021-03-09.
- ^ "OWASP Foundation | Open Source Foundation für Anwendungssicherheit". owasp.org. Abgerufen 2021-02-24.
- ^ "CWE's Top 25". Sans.org. Abgerufen 2013-10-18.
- ^ IFSQ Level-2 Ein Standard-Standard für Computerprogramme für den Quellcode auf Foundation-Level Archiviert 2011-10-27 bei der Wayback -Maschine, Zweite Ausgabe August 2008, Graham Bolton, Stuart Johnston, IFSQ, Institut für Softwarequalität.
- ^ Fowler, Martin (14. Oktober 2009). "Technicaldebtquadrant". Archiviert Aus dem Original am 2. Februar 2013. Abgerufen 4. Februar, 2013.
- ^ Prause, Christus; Durdik, Zoya (3. Juni 2012). "Architektonisches Design und Dokumentation: Abfall in der agilen Entwicklung?". 2012 Internationale Konferenz über Software und Systemprozess (ICSSP). IEEE Computer Society. S. 130–134. doi:10.1109/icssp.2012.6225956. ISBN 978-1-4673-2352-9. S2CID 15216552.
- ^ "Software -Größenstandards | CISQ - Konsortium für Informations- und Softwarequalität". www.it-cisq.org. Abgerufen 2021-01-28.
- ^ "Warum Software fehlschlägt". IEEE -Spektrum: Technologie-, Ingenieur- und Wissenschaftsnachrichten. 2. September 2005. Abgerufen 2021-03-20.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ Wagner, Stefan; Goeb, Andreas; Heinemann, Lars; Kläs, Michael; Lampasona, Constanza; Lochmann, Klaus; Mayr, Alois; Plösch, Reinhold; Seidl, Andreas (2015). "Operationalisierte Produktqualitätsmodelle und Bewertung: Der Quamoco -Ansatz" (PDF). Informations- und Softwaretechnologie. 62: 101–123. Arxiv:1611.09230. doi:10.1016/j.infsof.2015.02.009. S2CID 10992384.
- ^ Ebert, Christof (2010). Softwaremessung: Festlegen - Extrakt - Evaluieren - Ausführen. ISBN 9783642090806. OCLC 941931829.
- ^ a b "Verwalten der unüberschaubaren: Mehr Faustregeln". www.managingTheUnmanAgable.net. Abgerufen 2021-02-26.
- ^ Suryanarayana, Girish (2015). "Softwareprozess versus Designqualität: Tug of War?". IEEE -Software. 32 (4): 7–11. doi:10.1109/ms.2015.87. S2CID 9226051.
- ^ "Software Quality Professional | ASQ". Asq.org. Abgerufen 2021-01-28.
- ^ "Software Quality Journal". Springer. Abgerufen 2021-01-28.
Literaturverzeichnis
- Albrecht, A. J. (1979), Messung der Anwendungsentwicklungsproduktivität. In Proceedings of the Joint Share/Guide IBM Applications Development Symposium., IBM
- Ben-Menachem, M.; Marliss, G. S. (1997), Softwarequalität, praktische und konsistente Software produzieren, Thomson Computer Press
- Boehm, b.; Brown, J. R.; Kaspar, H.; Lipow, M.; MacLeod, G.J.; Merritt, M. J. (1978), Eigenschaften der Softwarequalität, Nordholland.
- Chidamber, S.; Kemerer, C. (1994), Eine Metriksuite für objektorientiertes Design. IEEE -Transaktionen auf Software Engineering, 20 (6), S. 476–493
- Ebert, Christof; Dumke, Reiner, Softwaremessung: Festlegen - Extrakt - Evaluieren - Ausführen, Kindle Edition, p. 91
- Garmus, D.; Herron, D. (2001), Funktionspunktanalyse, Addison Wesley
- Halstead, M. E. (1977), Elemente der Softwarewissenschaft, Elsevier North-Holland
- Hamill, M.; Goseva-Popstojanova, K. (2009), Häufige Fehler in Software -Fehler- und Ausfalldaten. IEEE -Transaktionen von Software Engineering, 35 (4), S. 484–496
- Jackson, D.J. (2009), Ein direkter Weg zu verlässlicher Software. Kommunikation der ACM, 52 (4).
- Martin, R. (2001), Verwaltung von Schwachstellen in vernetzten Systemen, IEEE Computer.
- McCabe, T. (Dezember 1976), Eine Komplexitätsmaßnahme. IEEE -Transaktionen auf Software -Engineering
- McConnell, Steve (1993), Code vollständig (First Ed.), Microsoft Press
- Nygard, M.T. (2007), Lass es los! Entwerfen und Bereitstellen von Produktionsbereitsoftware, Die pragmatischen Programmierer.
- Park, R.E. (1992), Softwargrößenmessung: Ein Framework zum Zählen von Quellanweisungen. (CMU/SEI-92-TR-020)., Software Engineering Institute, Carnegie Mellon University
- Pressman, Roger S. (2005). Software -Engineering: Ansatz eines Praktikers (Sechste internationale Ausgabe). McGraw-Hill-Ausbildung. ISBN 0071267824.
- Spinellis, D. (2006), Codequalität, Addison Wesley
Externe Links
- Wenn Code King ist: Mastering Automotive Software Excellence (McKinsey, 2021)
- Software -Qualität eingebetteter Systemqualität: Warum ist es so oft schrecklich? Was können wir dagegen tun? (durch Philip Koopman)
- Codequalitätsstandards durch Cisq™
- CISQ -Blog: https://blog.it-cisq.org
- Leitfaden für Softwarequalitätssicherung (ESA)
- Leitfaden zur Anwendung der ESA Software Engineering Standards auf kleine Softwareprojekte (ESA)
- Ein Überblick über ESA Software Product Assurance Services (NASA/ESA)
- Unser Qualitätsansatz in Volkswagen Software Dev Center Lissabon
- Google Style Guides
- Gewährleistung der Produktqualität bei Google (2011)
- NASA Software Assurance
- NIST Software Quality Group
- Omg/cisq Automatisierte Funktionspunkte (ISO/IEC 19515)
- OMG Automatisierte technische Schuldenstandard
- Automatisierte Qualitätssicherung (Articled In IreB von Harry Sneed)
- Strukturierte Tests: Eine Testmethode unter Verwendung der metrischen Cyclomatic -Komplexität (1996)
- Analyse der Anwendungsqualität mithilfe von Codeanalyse -Tools (Microsoft, Dokumentation, Visual Studio, 2016)