DE102006046203A1 - Verfahren zur rechnergestützten Bewertung von Softwarequellcode - Google Patents

Verfahren zur rechnergestützten Bewertung von Softwarequellcode Download PDF

Info

Publication number
DE102006046203A1
DE102006046203A1 DE102006046203A DE102006046203A DE102006046203A1 DE 102006046203 A1 DE102006046203 A1 DE 102006046203A1 DE 102006046203 A DE102006046203 A DE 102006046203A DE 102006046203 A DE102006046203 A DE 102006046203A DE 102006046203 A1 DE102006046203 A1 DE 102006046203A1
Authority
DE
Germany
Prior art keywords
error
errors
source code
quality
software source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE102006046203A
Other languages
English (en)
Inventor
Anja Hentschel
Christian Körner
Reinhold PLÖSCH
Stefan Schiffer
Stephan Storck
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Priority to DE102006046203A priority Critical patent/DE102006046203A1/de
Publication of DE102006046203A1 publication Critical patent/DE102006046203A1/de
Priority to EP07820578A priority patent/EP2069920A1/de
Priority to US12/311,347 priority patent/US9274924B2/en
Priority to PCT/EP2007/060183 priority patent/WO2008040664A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur rechnergestützten Bewertung von Softwarequellcode (SQ). In dem Verfahren wird der Softwarequellcode (SQ) unter Berücksichtigung von Parametern, umfassend Codierungsregeln und/oder Codierungsmetriken, analysiert, wobei als Analyseergebnis im Softwarequellcode (SQ) detektierte Fehler (ER) ermittelt werden. Die detektierten Fehler (ER) werden klassifiziert, indem sie jeweils zumindest einer Fehlerklasse (EC) aus einer Mehrzahl von Fehlerklassen (EC) zugeordnet werden. Dabei ist jeder Fehlerklasse (EC) eine über eine Benutzerschnittstelle ausgebbare Spezifikation zugeordnet, welche die Fehler (ER) der jeweiligen Fehlerklasse (EC) beschreibt. Diejenigen Fehlerklassen (EC), welchen detektierte Fehler (ER) zugeordnet sind, werden über eine Benutzerschnittstelle ausgegeben. Erfindungsgemäß können unterschiedliche Arten von im Softwarequellcode enthaltenen Fehlern systematisch und effizient detektiert und behandelt werden. Das Verfahren reduziert durch den erhöhten Automatisierungsgrad und die Fokussierbarkeit auf die kritischen technischen Aspekte den Aufwand für die Steuerung der Softwarecodequalität erheblich. Es bildet eine Brücke von den Fehler-Detektionsverfahren der klassischen Codeanalyse zu gezielten Verbesserungsmaßnahmen, welche die Codequalität effizient erhöhen.

Description

  • Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur rechnergestützten Bewertung von Softwarequellcode und ein entsprechendes Computerprogrammprodukt.
  • Die Erfindung beschäftigt sich mit der Verbesserung der Codequalität von Softwaresystemen. Bei der Verbesserung von Softwarecodequalität gibt es eine Vielzahl von grundlegenden Schwierigkeiten. Oft gibt es keine Möglichkeiten, Korrektheitsbeweise für Software von nicht-trivialen großen Systemen durchzuführen. Darüber hinaus bereitet die große Menge an Quellcode, der während der Lebenszeit eines Softwaresystems meist stark wächst, Schwierigkeiten bei der Analyse des Codes. Ferner gibt es in großen Softwaresystemen eine Vielzahl von Problemstellen, d.h. von potentiell fehlerbehafteten Stellen. Oftmals stehen auch nicht genügend Experten für die Bewertung, Zuordnung und Lösung von manuell oder automatisiert ermittelten Problemstellen im Softwarequellcode zur Verfügung. Ein weiteres Problem ergibt sich daraus, dass Softwarelösungen heutzutage meistens in sehr kurzen Zeitzyklen erstellt und aktualisiert werden müssen. Darüber hinaus ist bei Softwaresystemen eine Vielzahl von expliziten und impliziten informellen Anforderungen sowie von formellen und informellen Randbedingungen zu berücksichtigen. Darüber hinaus ist zu berücksichtigen, dass es bei der Entwicklung von Software eine Vielzahl von wechselnden technischen Realisierungsansätzen gibt, wie z.B. Middleware, Klassenbibliotheken, unterschiedliche Programmiersprachen und Laufzeitumgebungen. Die unterschiedlichen Realisierungen konzentrieren sich dabei meist nur auf bestimmte technische Aspekte, ohne andere Aspekte, wie z.B. die Sicherstellung der Softwarequalität, in Betracht zu ziehen.
  • Die heutzutage mit statischen Codeanalyseverfahren ermittelten Codierungsfehlermeldungen sind in der Regel weitgehend unstrukturiert und aufgrund der großen Menge der Fehlermeldungen schwer zu verarbeiten. Oftmals werden deshalb Codierungsfehler, die an sich bekannt sind, über viele Entwicklungszyklen hinweg nicht korrigiert. Ebenso tritt oft der Fall auf, dass Codierungsfehler falsch bzw. mit unzureichender Qualität ausgebessert werden.
  • Heutige Lösungsansätze zur Verbesserung der Qualität von Softwarequellcode sind meist nicht technisch. Man verlässt sich hierbei primär auf die Erfahrung von Experten, welche versuchen, den Softwarequellcode in strukturierter Weise vollständig durchzulesen. Dabei werden von einzelnen Experten oder in einem Expertenteam potentielle Fehlerquellen identifiziert, erörtert und dokumentiert. Als Gesamtergebnis liegt dann meist neben einer Liste der identifizierten Fehler und potentiellen Fehlerquellen eine Qualitätseinschätzung in der Form eines Prosatextes vor. In manchen Fällen wird diese Qualitätseinschätzung durch eine Liste von Verbesserungshinweisen und Empfehlungen ergänzt.
  • Aus dem Stand der Technik sind Ansätze bekannt, bei denen die Fehlermeldungen von Codeanalyseverfahren zusammengefasst werden. Diese Zusammenfassung ist meist sehr willkürlich. Beispielsweise sind die Fehlermeldungen des C++-Analyse-Werkzeugs PC-Lint nur rudimentär nach dem möglichen Ausmaß der sich daraus ergebenden Probleme gegliedert. Darüber hinaus sind Ansätze bekannt, bei denen Fehler im Softwarequellcode in technische Bereiche gegliedert werden. Bei den bekannten Lösungsansätzen ist es nachteilhaft, dass nach der Analyse des Softwarequellcodes einem Benutzer keine einfache Struktur vorgegeben wird, aus der entnommen werden kann, welche Kriterien durch die einzelnen Programmierfehler nicht erfüllt werden.
  • Aufgabe der Erfindung ist es deshalb, ein Verfahren und eine Vorrichtung zur rechnergestützten Bewertung von Software quellcode zu schaffen, mit denen auf einfache Weise eine strukturierte Kategorisierung der Fehler im Softwarequellcode geschaffen wird, um anschließend auf der Basis der Kategorisierung den Softwarequellcode schnell verbessern zu können.
  • Diese Aufgabe wird durch die unabhängigen Patentansprüche gelöst. Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen definiert.
  • Gemäß dem Verfahren der Erfindung wird der zu bewertende Softwarequellcode zunächst unter Berücksichtigung von Parametern umfassend Codierungsregeln und/oder Codierungsmetriken analysiert, wobei als Analyseergebnis im Softwarequellcode detektierte Fehler ermittelt werden. Eine Codierungsregel ist dabei eine eindeutig festgelegte Vorschrift, bei deren Nichterfüllen die Regel verletzt ist. Demgegenüber ist eine Codierungsmetrik eine aus dem Softwarequellcode oder dem lauffähigen Programm bestimmbare Größe, welche ein Indikator für bestimmte, in der Software enthaltene Fehler ist. Ein Beispiel einer Codierungsmetrik ist die Anzahl der Codezeilen in einem Softwarequellcode. Codierungsmetriken sind insbesondere abhängig von den technischen Randbedingungen der verwendeten Computersysteme, wie Speicherkapazitäten, Reaktionszeiten, Durchsätzen, Wiederanlauf-Möglichkeiten nach einem Stoppen des Ablaufes, Möglichkeiten, Updates einzuspielen, etc. Die detektierten Fehler werden anschließend klassifiziert, indem sie jeweils zumindest einer Fehlerklasse aus einer Mehrzahl von Fehlerklassen zugeordnet werden. Um eine einfache und klar strukturierte Einteilung in Fehlerklassen zu schaffen, ist gemäß der Erfindung jeder Fehlerklasse eine über eine Benutzerschnittstelle ausgebbare Spezifikation zugeordnet, welche die Fehler der jeweiligen Fehlerklasse beschreibt. Schließlich werden diejenigen Fehlerklassen, welchen detektierte Fehler zugeordnet sind, über eine Benutzerstelle ausgegeben. Durch die Festlegung von Spezifikationen, insbesondere von technischen Spezifikationen, wird bei der Kategorisierung der Fehler klar festgelegt, welches erwünschte Entwicklungsziel nicht erreicht wird. Dem Benutzer des Verfah rens wird somit durch die Ausgabe der Fehlerklassen strukturiert mitgeteilt, welche spezifischen Anforderungen der Softwarequellcode nicht erfüllt, woraufhin entsprechende Gegenmaßnahmen ergriffen werden können.
  • Vorzugsweise wird jeder Fehlerklasse eine der folgenden programmiertechnischen Kategorien zugeordnet:
    • – eine Kategorie betreffend Notations-Konventionen;
    • – eine Kategorie betreffend Typen-Deklarationen und/oder Definitionen;
    • – eine Kategorie betreffend Programm-Anweisungen;
    • – eine Kategorie betreffend Speicherprobleme;
    • – eine Kategorie betreffend Software-Protokolle;
    • – eine Kategorie betreffend das Design und/oder die Architektur des Softwarequellcodes;
    • – eine Kategorie betreffend das Zeitverhalten bei der Ausführung des Softwarequellcodes.
  • Auf diese Weise werden die Fehler nach programmiertechnischen Kriterien kategorisiert. Es wird hierdurch schnell und intuitiv einem Benutzer vermittelt, in welchen programmiertechnischen Bereichen vorgegebene Anforderungen nicht erfüllt sind.
  • In einer Ausführungsform der Erfindung werden die Fehlerklassen den programmiertechnischen Kategorien über den Detektionsmechanismus zugeordnet, mit dem Fehler einer Fehlerklasse identifiziert werden. Auf diese Weise wird ein klares und eindeutiges programmiertechnisches Kriterium geschaffen, über das eine Zuordnung von Fehler zu Fehlerklassen erfolgt.
  • In einer besonders bevorzugten Ausführungsform der Erfindung umfasst die Spezifikation der jeweiligen Fehlerklasse eine oder mehrere, insbesondere alle, der folgenden Beschreibungen:
    • – Eine Beschreibung eines Entwicklungsziels, welches durch die Behebung der Fehler der entsprechenden Fehlerklasse erreicht werden soll. Mit dem Entwicklungsziel soll klar gemacht werden, aus welchen Gründen es sinnvoll ist, die unter dieser Fehlerklasse subsumierten Probleme zu vermeiden.
    • – Eine Beschreibung der Verletzung des Entwicklungsziels, welche angibt, bei welchen Fehlern in der jeweiligen Fehlerklasse das Entwicklungsziel nicht erreicht wird. In dieser Beschreibungskategorie wird explizit auf allgemeiner Ebene beschrieben, unter welchen Umständen das Entwicklungsziel nicht erreicht wird.
    • – Eine Beschreibung der Ursachen für das Verfehlen des Entwicklungsziels. Hier werden typische Ursachen für das Auftreten von Problemen in einer Fehlerklasse identifiziert und diskutiert.
    • – Eine Beschreibung der möglichen Korrekturen in Softwarequellcode, um das Entwicklungsziel zu erreichen. Hier wird festgelegt, durch welche Maßnahmen oder Techniken das Entwicklungsziel erreicht werden kann.
    • – Eine Beschreibung des Detektionsmechanismus, welche angibt, wie Fehler in der jeweiligen Fehlerklasse detektiert werden. Hier wird beschrieben, wie das durch die Fehlerklasse beschriebene Problem identifiziert wird. Im Falle, dass die Fehlerklassen ferner noch in allgemeine und spezifische Fehlerklassen eingeteilt sind, werden in einer allgemeinen Fehlerklasse allgemeine Detektionstechniken aufgeführt, während bei einer konkreten Fehlerklasse die genauen Vorschriften für das Vorliegen der Verletzung einer Codierungsregel bzw. zur Berechnung von Werten einer Codierungsmetrik angegeben sind.
  • Die einzelnen Fehlerklassen können nochmals nach ihrem Abstraktionsgrad sortiert werden. Insbesondere können die Fehlerklassen gemäß einer hierarchischen Taxonomie in allgemeine, spezielle und konkrete Fehlerklassen eingeteilt werden. Zur Verbesserung der Übersicht, Wiedererkennung und Reproduzierbarkeit der Klassifikation können die Taxa nach den aus dem Stand der Technik bekannten 7+ –2 Regeln gewählt und angeordnet werden (siehe George A. Miller: The Magical Number Seven, Plus or Minus Two; The Psychological Review, 1956, Vol. 63, Seiten 81 bis 97). Auf diese Weise werden verschiedene Hierarchieebenen von Fehlerklassen geschaffen, wobei in tieferen Hierarchieebenen die Fehlerklassen immer spezieller und konkreter werden. Die allgemeinen Fehlerklassen fassen hierbei insbesondere die Ziele jedes Qualitätsverbesserungsprozesses in irgendeiner Form zusammen, nämlich die Vermeidung gerade jener Fehler, die schließlich dieser allgemeinen Fehlerklasse zuordenbar sind. Sie geben die Richtung bzw. den Sinn und Zweck für die Fehlerbehebung bzw. für die Qualitätsverbesserung vor. Demgegenüber fassen spezifische Fehlerklassen vorzugsweise eine Menge ähnlicher Codierungsfehler zusammen. Sie grenzen die Gründe und die Lösungsmöglichkeiten ein. Damit ist eine hierarchische Strukturierung der Problemklassen möglich. Hierdurch wird eine logische Strukturierung der konkreten Fehlerklassen erreicht und darüber hinaus die Möglichkeit geschaffen, für einzelne Fehlerklassen eine Lösungsrichtung für die Behebung der damit assoziierten Probleme vorzugeben. Konkrete Fehlerklassen sind demgegenüber vorzugsweise direkt zugeordneten Codierungsregeln und Metriken zugewiesen, welche lokalisierte Fehler bzw. Grenzwertüberschreitungen von Metriken beschreiben. Den Fehlern in den konkreten Fehlerklassen sind insbesondere automatisierbare Lösungen für die Behebung der Probleme zugeordnet.
  • Die hierarchische Strukturierung der Fehlerklassen kann dazu verwendet werden, um ausgehend von einem identifizierten Problem, d.h. einer allgemeinen Fehlerklasse, auf systematische Weise zu überprüfen, wodurch das Problem verursacht wird. Diese Prüfung könnte dann systematisch durch Prüfung der entsprechenden spezifischen und konkreten Fehlerklassen erfolgen.
  • In einer weiteren Ausführungsform der Erfindung besteht ferner die Möglichkeit, detektierte Fehler nach vorgegebenen Kriterien zu filtern, so dass die angezeigten Fehlerklassen auf bestimmte interessierende Fehler eingeschränkt werden.
  • In einer besonders bevorzugten Ausgestaltung des erfindungsgemäßen Verfahrens wird eine Bewertung der detektierten Feh ler durchgeführt, wobei für jede ausgegebene Fehlerklasse eine Qualitätsbewertung der Fehlerklasse auf der Basis der darin enthaltenen Fehler über eine Benutzerschnittstelle ausgegeben wird. Somit bekommt der Benutzer sofort eine Rückmeldung dahingehend, wie schwer die im Softwarequellcode in den einzelnen Fehlerklassen enthaltenen Fehler sind. Vorzugsweise wird in dem erfindungsgemäßen Verfahren ferner eine Gesamtbewertung der Qualität des Softwarequellcodes auf der Basis der Qualitätsbewertungen der Fehlerklassen ermittelt und über eine Benutzerschnittstelle ausgegeben. Auf diese Weise erhält ein Benutzer sofort einen Überblick, wie die Gesamtqualität des Softwarequellcodes einzustufen ist. Die Qualitätsbewertungen der Fehlerklassen und/oder die Gesamtqualitätsbewertung beruht hierbei vorzugsweise auf vorgegebenen Maßzahlen. Mit solchen Maßzahlen kann insbesondere auf einfache Weise die Gesamtqualitätsbewertung dadurch ermittelt werden, dass die Maßzahlen der Qualitätsbewertungen der Fehlerklassen aufsummiert werden.
  • In einer besonders bevorzugten Ausführungsform der Erfindung ist das Verfahren derart ausgestaltet, dass über eine Benutzerschnittstelle eine Soll-Qualität des Softwarequellcodes eingebbar ist, wobei die Soll-Qualität mit der Ist-Qualität gemäß den Qualitätsbewertungen der Fehlerklassen und/oder der Gesamtqualitätsbewertung verglichen wird und das entsprechende Vergleichsergebnis über eine Benutzerschnittstelle ausgegeben wird. Hierdurch können selbsttätig durch einen Benutzer bestimmte erwünschte Qualitätsanforderungen vorgegeben werden, wobei das Verfahren automatisiert diese Qualitätsanforderungen berücksichtigt und ausgibt, ob diese Qualitätsanforderungen durch den Softwarequellcode tatsächlich erfüllt werden.
  • Vorzugsweise werden die Qualitätsbewertungen der Fehlerklassen und/oder der Gesamtqualitätsbewertung in einem abrufbaren Speicher hinterlegt, wodurch eine Qualitätshistorie von verschiedenen Versionen von Softwarequellcodes im Speicher gespeichert wird. Auf diese Weise bekommt ein Benutzer sehr leicht einen Überblick darüber, wie sich die Qualität über die verschiedenen Softwareversionen hinweg verändert hat und ob die durchgeführten Qualitätsmaßnahmen in der Vergangenheit auch tatsächlich zu einer signifikanten Qualitätsverbesserung der Software geführt haben. Vorzugsweise sind in der generierten Qualitätshistorie auch die jeweiligen Ist-Qualitäten und Soll-Qualitäten der Versionen des Softwarequellcodes hinterlegt.
  • In einer weiteren, besonders bevorzugten, Ausführungsform der Erfindung werden aus den Qualitätsbewertungen der Fehlerklassen Änderungsanforderungen an den Softwarequellcode generiert, und aus den Änderungsanforderungen werden Änderungsmitteilungen erstellt, wobei die Änderungen in einer Änderungsmitteilung jeweils einer Person oder einem Personenkreis zugeordnet sind, der für die Durchführung der Änderungen in der Änderungsmitteilung verantwortlich ist. Auf diese Weise wird automatisiert eine Zuweisung der im Softwarequellcode durchzuführenden Änderungen an den dafür Verantwortlichen generiert. Vorzugsweise können darüber hinaus Kriterien über eine Benutzerschnittstelle eingegeben werden, wobei diese Kriterien bei der Generierung der Änderungsanforderungen zu berücksichtigen sind. Solche Kriterien sind beispielsweise angepasste Qualitätsbewertungen, d.h. es wurde manuell durch Experten ermittelt, dass die Qualität aufgrund äußerer Umstände etwas anders zu bewerten ist, als dies automatisiert im erfindungsgemäßen Verfahren erfolgt ist. Darüber hinaus können beispielsweise Prioritäten betreffend die Behebung der Fehler vorgegeben werden, d.h. es kann festgelegt werden, welche Fehler bevorzugt zu beheben sind. Solche Informationen können dann in die automatisch generierten Änderungsmitteilungen einfließen. In einer besonders bevorzugten Ausführungsform werden die Änderungsmitteilungen jeweils automatisiert der Person oder den Personenkreis übermittelt, der für die Durchführung der Änderungen in der Änderungsmitteilung verantwortlich ist. Beispielsweise kann der verantwortlichen Person die Änderungsmitteilung automatisiert über eine E-Mail als Datei übermittelt werden.
  • In einer weiteren Ausgestaltung des erfindungsgemäßen Verfahrens können die Änderungsmitteilungen ferner Hinweise zur Durchführung der Änderung und/oder eine Abschätzung des Aufwands der Änderungen enthalten. Es kann hierbei eine beliebige Metrik zur Bestimmung des Aufwands verwendet werden, beispielsweise eine Kostenmetrik, welche als Ergebnis die Mannstunden angibt, welche gebraucht werden, um die Änderung durchzuführen.
  • In einer bevorzugten Ausführungsform der Erfindung enthalten die Hinweise zur Durchführung der Änderungen auch Musterlösung zur Änderung des Softwarequellcodes, wobei den Musterlösungen vorzugsweise jeweils ein Aufwand zur Durchführung der Musterlösung zugeordnet ist.
  • In einer weiteren Ausgestaltung des erfindungsgemäßen Verfahrens umfassen die Fehlerklassen Qualitätsfehlerklassen, welche die Fehler nach Qualitätskriterien kategorisieren. Insbesondere können die Codierungsfehler einem Qualitätsmodel zugeordnet werden, wodurch eine von einer rein technischen Klassifikation unabhängige Sichtweise auf die Codierungsfehler geschaffen wird.
  • Neben dem oben beschriebenen Verfahren betrifft die Erfindung ferner eine Vorrichtung zur rechnergestützten Bewertung von Softwarequellcode, umfassend:
    • – ein Analysemittel zum Analysieren des Softwarequellcodes unter Berücksichtigung von Parametern umfassend Codierungsregeln und/oder Codierungsmetriken, wobei durch das Analysemittel als Analyseergebnis im Softwarequellcode detektierte Fehler ermittelt werden;
    • – ein Klassifizierungsmittel zum Klassifizieren der detektierten Fehler, indem die detektierten Fehler jeweils zumindest einer Klasse aus einer Mehrzahl von Fehlerklassen zugeordnet werden, wobei jeder Fehlerklasse eine über eine Benutzerschnittstelle ausgebbare Spezifikation zuge ordnet ist, welche die Fehler der jeweiligen Fehlerklasse beschreibt;
    • – ein Ausgabemittel zum Ausgeben derjenigen Fehlerklassen, welchen detektierte Fehler zugeordnet sind, über eine Benutzerschnittstelle.
  • Die Erfindung betrifft darüber hinaus ein Computerprogrammprodukt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Ausführung des oben beschriebenen erfindungsgemäßen Verfahrens, wenn das Programm auf einem Rechner läuft.
  • Ausführungsbeispiele der Erfindung werden nachfolgend anhand der beigefügten Figuren detailliert beschrieben.
  • Es zeigen:
  • 1 eine schematische Darstellung eines Softwareentwicklungsprozesses, in dem das erfindungsgemäße Verfahren eingesetzt wird;
  • 2 eine Ausführungsform einer erfindungsgemäßen Vorrichtung zur rechnergestützten Bewertung von Softwarequellcode.
  • Im Folgenden wird eine Ausführungsform des erfindungsgemäßen Verfahrens beschrieben, welches die folgenden, bereits oben erwähnten Fehlerklassen enthält:
    Notations-Konventionen; Typen-Deklarationen und/oder Definitionen; Programm-Anweisungen; Speicherprobleme; Software-Protokolle; Design und/oder Architektur; Korrektheit; Zeitverhalten.
  • Jeder dieser Fehlerklassen ist eine Spezifikation in der Form einer Beschreibung zugeordnet, welche die bereits im vorangegangen erwähnten folgende Kategorien umfasst Entwicklungsziel; Verletzung; Ursachen für das Verfehlen des Entwicklungsziels; Korrekturen; Detektionsmechanismus; Auswirkungen des Verfehlens des Entwicklungsziels.
  • Im Folgenden wird für jede der oben genannten Fehlerklassen die entsprechende Beschreibung gemäß der soeben genannten Beschreibungskategorien gegeben.
  • 1. Notationskonventionen
  • A. Entwicklungsziel
  • Die Quellen von Softwareprogrammen sollten so lesbar wie möglich sein, um verständlich und wartbar zu sein. Die Notation der Quellen als Text spielt hier eine wesentliche Rolle. Die Notationen betreffen hierbei insbesondere Namen für Symbole und Artefakte, den Stil und die Dokumentation.
  • Namen:
  • Die erforderlichen, in den Anforderungen implizit oder explizit genannten physischen oder virtuellen Phänomene eines Anwendungsbereichs werden systematisch, eindeutig und sowohl für den Fachexperten als auch den Softwareingenieur verständlich bezeichnet.
  • Stil:
  • Jede Programmiersprache definiert durch ihre Syntax die Grammatik, d.h., welche Inhalte durch die Programmiersprache auf welche Weise auszudrücken sind. Die Syntax legt nicht fest, in welcher Form (Einrückungen, Klammerungen, Zeilenumbrüche, Formate von Kommentaren etc.) Programme geschrieben werden müssen. Daneben gibt es noch stilistische Regeln und Nuancen, in welchem Kontext welche Sprachkonstrukte wie einzusetzen sind, und zwar unabhängig davon, ob auch alternative Formulierungen aufgrund der Syntax der Programmiersprache möglich sind. Entwicklungsziel im Hinblick auf den Stil ist es, die Programmiersprache aus stilistischer Sicht so zu verwenden, dass die in der Branche etablierten und als qualitativ gut empfundenen stilistischen Regeln eingehalten werden.
  • Dokumentation:
  • Die Dokumentation liefert über den Programmcode hinausgehende, wesentliche Hinweise zum Verständnis des Softwarequellcodes. Der Softwareentwickler beschreibt hierbei seine über das Design hinausgehenden Entscheidungen.
  • B. Verletzung
  • Namen:
  • Namen oder Bezeichner im Programmcode sind entweder mehrdeutig oder lassen keinen Schluss auf das zugrunde liegende Phänomen der Anwendungsdomäne zu. Darüber hinaus lässt es sich oft beobachten, dass einzelne Entwickler oder Entwicklergruppen ein lokales Vokabular aufbauen, das von Außenstehenden nicht verstanden werden kann.
  • Stil:
  • Sowohl eine schlechte Namenswahl als auch ein schlechter Programmierstil führt zu einer Personalisierung der Softwareentwicklung, d.h., der entsprechende Programmtext kann nur noch vom ursprünglichen Entwickler des Programms mit vertretbarem ökonomischen Aufwand gewartet und weiterentwickelt werden.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
  • Fehlende oder sprachlich uneinheitliche Anforderungsspezifikationen definieren keinen klaren Wortschatz, der für die Namensgebung herangezogen werden könnte. Daher verwenden die Entwickler frei erfundene Bezeichner, die weder definiert sind noch eindeutig sind.
  • In älteren Programmiersprachen waren die Länge und der Aufbau von Bezeichnern aus Gründen der Ressourcenknappheit oder aufgrund mangelhafter Compilertechnologie eingeschränkt. Heute findet man immer noch Nachwirkungen dieser Beschränkungen auch bei der Verwendung moderner Programmiersprachen, obwohl keine technische Notwendigkeit mehr dafür besteht.
  • Codierrichtlinien und die bestmögliche Umsetzung dieser Richtlinien sind nicht bekannt oder werden von dem Softwareentwickler nicht akzeptiert.
  • Weitere Gründe für das Verfehlen des Entwicklungsziels ist fehlendes Problembewusstsein und/oder fehlendes Gesamtverständnis.
  • D. Korrektur
    • – Vorgabe von allgemeinen Namenskonventionen und von projektspezifischen Namenskonventionen. Die projektspezifischen Namenskonventionen regeln den Umgang mit den Begriffen der Domäne, indem beispielsweise ein Glossar wichtiger Begriffe im Kontext des Softwareprojektes vorgegeben wird.
    • – Vorgabe von Programmierrichtlinien, in denen Fragen der Formatierung (Einrückungen, Klammersetzung etc.) definiert sind. Darüber hinaus wird in den Programmierricht linien beschrieben, welche Sprachkonstrukte in welchem Kontext wie zu verstehen sind.
    • – Schulung der Mitarbeiter
    • – Durchführung von Codeüberprüfungen mit dem Schwerpunkt auf Namenswahl im Programmierstil.
    • – Sog. Reengineering betroffener Codeteile auf der Basis der Namenskonventionen und der Programmierrichtlinien.
  • E. Detektionsmechanismus
  • Die Einhaltung von Programmierrichtlinien, d.h. die Einhaltung stilistischer Vorgaben, kann in der Regel automatisiert durch statische Codeanalyse-Werkzeuge sichergestellt werden. Die Einhaltung von Namenskonventionen kann – für allgemeine Namenskonventionen – ebenfalls durch entsprechende statische Codeanalyse-Werkzeuge erfolgen. Die semantisch richtige Ver wendung von Namen im Kontext der betrachteten Domäne kann nur manuell durch entsprechende Reviews sichergestellt werden.
  • F. Auswirkungen
  • Der Quellcode wirkt unordentlich und handwerklich schlecht. Uneindeutige Bezeichner verursachen Kommunikationsprobleme. Dies hat direkte Auswirkungen auf die Wartbarkeit des Codes.
  • 2. Typen-Deklarationen und Definitionen
  • A. Entwicklungsziel
  • In einer statisch typisierten Programmiersprache sind alle Bezeichner mit demjenigen Typennamen assoziiert, der am besten zum Verwendungskontext des Bezeichners passt. In diesem Sinne ist der Typname dann gut gewählt, wenn keine Verwendungsfehler des Bezeichners vorkommen können bzw. auch keine expliziten Typumwandlungen erforderlich sind.
  • Der Gültigkeitsbereich von Bezeichnern ist so zu wählen, dass nur jene Typen nach außen sichtbar werden, die auch tatsächlich benötigt werden.
  • B. Verletzung
  • Eine Verletzung des Entwicklungsziels liegt dann vor, wenn Typen verwendet werden, die im Kontext der Verwendung von Bezeichnern nicht sinnvoll sind. Eine Verletzung des Entwicklungsziels liegt ferner dann vor, wenn die Deklaration eines Bezeichners so erfolgt, dass dem Verwender eines Bezeichners (z.B. der Parameter einer Methode) aufgrund des verwendeten Typs Implementierungsdetails bekannt werden, die aus sachlicher Sicht nicht bekannt sein müssten.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
    • – In den Programmierrichtlinien werden zu diesem Thema keine Aussagen gemacht.
    • – Mangelhaftes Verständnis der Entwickler für allgemeine softwaretechnische Designaspekte, wie Gestaltung von Schnittstellen, Kopplung und Kohäsion von Typen etc.
    • – Mangelhaftes Verständnis der Typkonzepte einer Programmiersprache, z.B. Schnittstellenvererbung, Implementierungsvererbung, abstrakte Klassen usw.
    • – Unzureichende Refactoring nach Design-Änderungen, d.h. es werden die aufgrund eines Refactoring neu geschaffenen allgemeineren Typen nicht konsistent im gesamten Quelltext nachgezogen, d.h. anstelle der alten Typen verwendet.
    • – Anforderungen sind z.B. bei Schnittstellendefinition nicht definiert oder bekannt. Daher werden hier Typen festgelegt, die später bei der Implementierung korrigiert werden müssen.
  • D. Korrektur
    • – Schulung der Entwickler mit Fokus auf softwaretechnische Grundlagen des Designs und hinsichtlich der Typkonzepte der jeweiligen Programmiersprache.
    • – Verbesserung der Programmierrichtlinien.
    • – Systematische Durchführung von Code-Reviews.
  • Es kann sinnvoll sein, Verletzungen im vernünftigen Rahmen oder bei bestimmten Designkonzepten zuzulassen.
  • E. Detektionsmechanismus
  • Fehler hinsichtlich von Typen-Deklarationen und Definitionen werden aus dem Regelsatz der Codeanalysatoren oder aus daraus abgeleiteten Steuerungsmetriken ermittelt, z.B. aus der Anzahl an Typkonversionen, der Anzahl an Typverletzungen usw.
  • F. Auswirkungen
  • Durch die Verwendung von Typkonvertierungs-Operatoren kann es – je nach der Typkonvertierung – zu einem Verlust von Rechengenauigkeit bis hin zum Programmabsturz kommen.
  • Bei Missachtung der in der Softwaretechnik üblichen Sichtbarkeitsregeln für Typen kommt es zu unnötigen Kopplungen zwischen einzelnen Softwareartefakten, welche die Änderbarkeit des Softwarequellcodes negativ beeinflussen.
  • 3. Programm-Anweisungen
  • A. Entwicklungsziel
  • Grundsätzliches Entwicklungsziel ist es, die Strukturierung des Quellcodes im Kleinen so vorzunehmen, dass damit die üblichen softwaretechnischen Qualitätskriterien erfüllbar sind. Die Strukturierung im Kleinen beschäftigt sich mit folgenden Aspekten:
    • – Komplexität von Ausdrücken, insbesondere von logischen und arithmetischen Ausdrücken.
    • – Adäquate Verwendung unterschiedlicher Schleifenkonstrukte.
    • – Adäquate Verwendung unterschiedlicher Selektionsanweisungen.
    • – Komplexität von Funktionen und Methoden.
  • Es soll eine, zumindest näherungsweise, minimale und nachvollziehbare Sequenz von Anweisungen zur Realisierung der geforderten funktionalen und nicht-funktionalen Merkmale verwendet werden. Dabei ist der konzeptionelle Ablauf in geeigneter Form abzubilden.
  • B. Verletzung
  • Die Codierungsfehler dieser Fehlerklasse sind abhängig von der Art der Anweisung. Entweder enthält die Anweisung semantisch falsche Bestandteile oder die Anweisung ist zumindest semantisch fragwürdig, überflüssig, zu komplex oder unvollständig.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
  • Es liegen Zeit- und/oder Ausbildungsmängel bei den Softwareentwicklern vor.
  • B. Korrektur
  • Es muss zuerst die vom Softwareentwickler verwendete Anweisung zunächst beschrieben und dann codiert werden. Eine Methode zur Vermeidung von Anweisungsfehlern ist sog. „literate programming". Die Korrektur kann durch den Entwickler eventuell nach einer Schulung vorgenommen werden.
  • E. Detektionsmechanismus
  • Anweisungsfehler werden aus dem Regelsatz der Codeanalysatoren und daraus abgeleiteter Steuerungsmetriken detektiert, z.B. aus der Anzahl zweifelhafter, redundanter und unerreichbarer Aussagen.
  • F. Auswirkungen
  • Eine Verletzung des oder der Entwicklungsziele kann – je nach Art der Verletzung – eine negative Auswirkung auf die Korrektheit des Programms haben.
  • Gibt es keine Auswirkungen auf die Korrektheit, entsteht durch die Verletzung des Entwicklungsziels schwer wartbarer Softwarecode, der wiederum in erster Linie nur von den ur sprünglichen Entwicklern mit ökonomisch vertretbarem Aufwand gewartet und weiterentwickelt werden kann.
  • 4. Speicherprobleme
  • A. Entwicklungsziel
  • Entwicklungsziel ist es, mit dem Hauptspeicher sparsam umzugehen, d.h. nur notwendigen Speicher zum geeigneten Zeitpunkt zu allokieren und ggf. rechtzeitig freizugeben. Darüber hinaus muss sichergestellt werden, dass sich der Hauptspeicherplatz zu jedem Zeitpunkt in einem konsistenten Zustand befindet. Weiterhin muss sichergestellt sein, dass Variablen, die explizit Speicher referenzieren, zu jedem Zeitpunkt in einem konsistenten Zustand sind, d.h. keine ungewollten Null-Werte aufweisen, keine falschen Speicheradressen enthalten, usw.
  • B. Verletzung
    • – Eine Verletzung des Entwicklungsziels liegt dann vor, wenn in unnötiger Weise Speicher allokiert wird und vergessen wird, Speicher rechtzeitig wieder freizugeben.
    • – Das Entwicklungsziel kann ferner durch unsachgemäße Verwendung von Sprachkonstrukten verletzt werden, wobei solche Sprachkonstrukte zu fehlerhaften Manipulationen von Speicherinhalten oder Speicheradressen führen. Operatoren, welche typischerweise unsachgemäß verwendet werden, sind arithmetische Adressoperationen und Typkonvertierungs-Operatoren.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
  • Ursachen sind insbesondere Zeit- und Ausbildungsmängel bei den Softwareentwicklern, sowie fehlende Designkonzepte.
  • D. Korrektur
  • Die Korrektur von Speicherproblemen kann durch den Entwickler selbst, eventuell nach einer Schulung, vorgenommen werden.
  • E. Detektionsmechanismus
  • Speicherprobleme können aus dem Regelsatz der Codeanalysatoren und daraus abgeleiteter Steuerungsmetriken ermittelt werden, z.B. aus der Anzahl zweifelhafter oder falscher Aussagen, die den Zustand des Speichers ändern.
  • F. Auswirkungen
  • Fehler bei der Verwaltung des Speichers führen zu inkonsistenten Zuständen oder zu hohem Speicherverbrauch und stellen oft indirekt die Realisierung der geforderten funktionalen und nicht-funktionalen Eigenschaften des Programms in Frage, insbesondere die Laufzeitstabilität.
  • 5. Software-Protokolle
  • A. Entwicklungsziel
  • Software-Protokolle beschreiben, in welcher Reihenfolge programmtechnisch bestimmte Vorgänge ausgeführt werden sollen. Ein Beispiel eines Software-Protokolls ist z.B. die Veröffentlichung eines Schnittstellen-Protokolls. Entwicklungsziel ist es hierbei, dass die Software-Protokolle bei der Programmierung derart berücksichtigt werden, dass das Programm dem Systemzustand konsistent hält. Dafür werden Aufrufreihenfolgen von Prozeduren definiert und diese an bestimmte Zustände und Eingaben geknüpft. Dies ist z.B. bei asynchronen Systemen, in Fehlersituationen, bei der Verwendung von Nebenläufigkeit unter Benutzung von mehrfach gleichzeitig verwendeten externen Ressourcen besonders wichtig.
  • B. Verletzung
  • Das Entwicklungsziel ist verletzt, wenn Prozeduren in einer Reihenfolge oder unter den falschen Bedingungen aufgerufen werden, so dass ein inkonsistenter Systemzustand entsteht.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
  • Die implizit oder explizit vorgegebenen Protokolle werden nicht beachtet. Implizite Protokolle sind nicht ausreichend bekannt bzw. dokumentiert.
  • D. Korrektur
  • Implizite Protokolle sollten verständlich dokumentiert werden. Die Entwickler sollten bezüglich der verwendeten Protokolle geschult werden.
  • E. Detektionsmechanismus
  • Eine Detektion der Verletzung von Software-Protokollen kann durch manuelle Reviews, der Analyse von Aufrufbäumen mit Datenflussanalyse oder der verwendeten Automaten erfolgen. Die Protokolle können auch automatisiert durch statische und dynamische Codeanalyse-Werkzeuge überprüft werden.
  • F. Auswirkungen
  • Es entsteht ein Softwaresystem in einem inkonsistenten bzw. instabilen Zustand.
  • 6. Design und Architektur
  • A. Entwicklungsziel
  • Primäres Entwicklungsziel ist es, die Architektur und das Design eines Systems so zu gestalten, dass damit die an dieses System gestellten funktionalen und nicht-funktionalen Anfor derungen erfüllt werden und auch erwartete Änderungen und Erweiterungen der Anforderungen im Design bzw. in der Architektur antizipiert sind. Neben den produkt- und projektspezifischen Anforderungen müssen die Architektur und das Design allgemeine softwaretechnische Qualitätsanforderungen erfüllen. Diese Anforderungen sind insbesondere:
    • – Sicherstellung hoher, insbesondere funktionaler Kohäsion innerhalb eines Moduls oder eines Subsystems.
    • – Sicherstellung geringer Kopplung zwischen Modulen innerhalb eines Subsystems bzw. zwischen Subsystemen.
    • – Angemessene Komplexität im Sinne der von einem Modul oder einem Subsystem zur Verfügung gestellten Methoden bzw. Typen.
  • B. Verletzung
  • Verletzungen des Entwicklungsziels liegen dann vor, wenn die definierten funktionalen und nicht-funktionalen Anforderungen aufgrund eines schlecht gewählten Designs oder einer schlecht gewählten Architektur nicht erfüllt werden können. Eine Verletzung liegt auch dann vor, wenn zwar die projekt- oder produktspezifischen Anforderungen erfüllt sind, aber Kopplung, Kohäsion und Komplexität nicht angemessen sind.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
  • Ursachen sind insbesondere eine fehlende Architektur für das zu entwickelnde Softwaresystem.
  • Weitere Ursachen sind fehlende Zeit und Steuerung der Umsetzung der Architektur bzw. Mangel an Ressourcen für die systematische Restrukturierung von Softwaresystemen.
  • Weitere Ursachen sind unnötige Beziehungen innerhalb des Softwaresystems sowie die Zerteilung des Systems nicht nach architektonischen Kriterien, wie z.B. Kopplung und Kohäsion, sondern nach Standort oder Bearbeiter.
  • Eine weitere Ursache ist, dass das Softwaresystem wegen Zeitmangel nicht ausreichend gepflegt wurde.
  • D. Korrektur
  • Es muss bei der Entwicklung des Softwarequellcodes ein Architekt oder Projektleiter (falls kein Architekt vorhanden) eingesetzt werden.
  • D. Detektionsmechanismus
  • Die Ermittlung von Fehlern in Design oder Architektur kann manuell oder durch ein Analysetool (z.B. Sotograph) erfolgen.
  • F. Auswirkungen
  • Entwicklungs- und Wartungskosten steigen. Im Extremfall kann das System nicht mehr gewartet werden und muss neu geschrieben werden.
  • 7. Korrektheit
  • A. Entwicklungsziel
  • Unter Korrektheit wird hier nicht das explizite Übereinstimmen einer Lösung mit spezifizierten Anforderungen verstanden. Vielmehr geht es aus Sicht der internen Codequalität darum, jene Codestellen zu identifizieren, die unabhängig von der konkreten Anforderung inkorrekt sein müssen.
  • B. Verletzung
  • Eine Verletzung liegt dann vor, wenn der Quelltext offensichtliche Fehler enthält, die unabhängig von den konkreten Anforderungen sind. Beispiele dafür sind Verzweigungen in Switch-Anweisungen, die nie erreicht werden können, oder unbenutzte lokale Variablen.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
  • Hier liegen meist Verständnismängel beim Programmierer oder logische Codierungsfehler vor.
  • D. Korrektur
  • Eine Korrektur von Verständnisfehlern kann durch entsprechende Schulung der Entwickler erfolgen. Codierungsfehler können durch den Entwickler selbst korrigiert werden.
  • E. Detektionsmechanismus
  • Es besteht die Möglichkeit, Korrektheitsfehler statisch zu detektieren, wenn eine formale Beschreibung des geforderten Ergebnisses zusammen mit der imperativen Realisierung vorliegt. Hier kann dann, meist nur in Teilbereichen, eine Diskrepanz festgestellt werden. Zusätzlich können hier Code-Reviews und Inspektionen zum Auffinden dieser Fehler durchgeführt werden.
  • F. Auswirkungen
  • Korrektheitsfehler stellen die Realisierung der impliziten Anforderungen des Softwaresystems in Frage.
  • 8. Zeitverhalten
  • A. Entwicklungsziel
  • Softwaresysteme müssen mit der ihnen zur Verfügung stehenden Rechenzeit sorgfältig umgehen, und zwar unabhängig davon, welches konkrete Zeitverhalten durch die Spezifikation gefordert wird. Darüber hinaus muss jedes Softwaresystem die richtigen Konstrukte für die Synchronisation paralleler Ausführungskontexte korrekt verwenden. Dies betrifft sowohl die Synchronisation in verteilten Systemen als auch die Synchronisation innerhalb eines Betriebssystem-Prozesses. Zeitabhän gige Systeme und Systeme mit Schnittstellen zu zeitabhängigen Systemen unterliegen hier besonderen Anforderungen.
  • B. Verletzung
  • Eine Verletzung des Entwicklungsziels tritt dann auf, wenn das System unzulängliche Synchronisierungsmechanismen aufweist. Die beobachtbaren Folgen sind Blockaden, Reihenfolgeprobleme, sinnlose Operationen, ineffiziente Algorithmen, unzulängliche Antwortzeiten und mangelnder Durchsatz.
  • C. Ursachen für das Verfehlen des Entwicklungsziels
  • Das Softwaresystem wurde nur für einen Verarbeitungskontext entworfen, entwickelt und getestet. Bei den Entwicklern des Systems liegen keine Erfahrungen mit nebenläufigen Systemen vor, d.h. mit Systemen mit mehreren gleichzeitig abgearbeiteten Verarbeitungskontexten.
  • D. Korrektur
  • Eine Korrektur kann durch Schulung der Mitarbeiter, durch ReDesign des Softwarecodes oder durch Codekorrektur erfolgen.
  • E. Detektionsmechanismus
  • Fehler im Zeitverhalten können durch Datenflussanalyse über Aufrufgraphen oder durch Überprüfung von Codierungsregeln detektiert werden.
  • F. Auswirkungen
  • Systeme mit Mängeln im Zeitverhalten sind instabil, unzuverlässig und haben Schwierigkeiten, die geforderten Antwortzeiten bzw. den geforderten Durchsatz zu gewährleisten.
  • Neben den oben beschriebenen acht Fehlerklassen können ggf. noch weitere Fehlerklassen auftreten, welche beispielsweise in einer Kategorie „Sonstiges" zusammengefasst sind. Dort sind technologie-, domänen- oder projektspezifische Fehlerklassen gesammelt.
  • 1 zeigt ein Flussdiagramm eines Softwareentwicklungsprozesses, in dem eine Ausführungsform des erfindungsgemäßen Verfahrens eingebettet ist. Als Ausgangspunkt des Verfahrens liegt das Softwaresystem in der Form eines Softwarequellcodes SQ vor. Zunächst wird gemäß dem erfindungsgemäßen Verfahren der Softwarequellcode anhand von Codierungsregeln bzw. Metriken analysiert, was durch Schritt 1 angedeutet ist. Als Ergebnis werden entsprechende Codierungsfehler ER klassifiziert, d.h. in entsprechende Fehlerklassen EC eingeteilt. Zur Analyse des Softwarecodes können bekannte statische Codeanalyse-Werkzeuge oder andere Methoden verwendet werden, wie z.B. Standard-Prüfprozeduren. Die Prüfprozeduren und deren Parameter können beispielsweise aus der letzten Iteration des Projektes, d.h. der letzten Softwareversion, stammen. Hierbei sind insbesondere die Codierungsregeln bzw. Metriken entsprechend vorgegebener Anforderungen angepasst.
  • Nach der Erzeugung der entsprechenden Fehlerklassen wird in einem Schritt 2 eine Gesamtbeurteilung der Qualität des gewählten Parametersatzes der Prüfprozeduren durch Experten durchgeführt. Es erfolgt eine Auswahl der Grenzwerte in Abhängigkeit von Domänen, Architektur und Softwaretechnologie. Im Schritt 201 wird dann überprüft, ob die Fehlerklassen, welche mit dem erfindungsgemäßen Verfahren automatisiert ermittelt wurden, sich mit der in Schritt 2 vorgenommenen Gesamtbeurteilung durch Experten decken. Sollte dies nicht der Fall sein (N = Nein), erfolgt im Schritt 3 eine Erweiterung und Anpassung der Codierungsregeln und Codierungsmetriken. Dabei fließen manuelle Regeln MR und Erfahrung E ein. Ein derart angepasster Regelsatz R fließt dann in das erfindungsgemäße Verfahren ein, wobei mit dem angepassten Regelsatz dann wieder im Schritt 1 die entsprechenden Fehler ER und Fehlerklassen EC ermittelt werden. Die Schritte 1, 2, 201 und 3 werden so lange iteriert, bis im Schritt 201 festgestellt wird, dass das Ergebnis der Experten sich mit dem automatisiert ermittelten Ergebnis des erfindungsgemäßen Verfahren deckt. In diesem Fall (Y = Ja) wird zu Schritt 4 übergegangen.
  • Im Schritt 4 erfolgt eine Vereinbarung oder Anpassung von Qualitätszielen mit den Verantwortlichen (Teilprojektleiter oder deren Qualitätssicherungs-Verantwortlichen). Hierbei werden insbesondere zu erreichende Qualitätsziele vereinbart bzw. bereits festgelegte Qualitätsziele angepasst.
  • Im Schritt 5 wird die Ist-Qualität des Softwarequellcodes mit der Soll-Qualität verglichen. Gemäß Schritt 6 wird dann ein Analyseergebnis ausgegeben, welches für die vorliegende Softwarequellcodeversion den Vergleich von Soll-Qualität und Ist-Qualität enthält. Diese Analyse wird im Schritt 7 in einem Speicher gespeichert, in dem die Qualitätshistorie von vorhergehenden Softwarequellcodeversionen hinterlegt ist.
  • Im Schritt 8 erfolgt schließlich eine manuelle Prüfung der Analyseergebnisse, wobei eventuell Änderungen im Hinblick auf die im nächsten Schritt generierten Änderungsanforderungen durchgeführt werden. Man nennt diese Analyse auch „Code Quality Control". Hierbei wird der Code nochmals überprüft und es werden eventuell Anpassungen der Qualitätsbewertungen vorgenommen bzw. Prioritäten im Hinblick auf durchzuführende Änderungen festgelegt.
  • Im Schritt 9 erfolgt schließlich die automatische Generierung der Änderungsanforderungen sowie die automatische Erstellung von Änderungsmitteilungen an die entsprechenden Verantwortlichen, eventuell mit einem Lösungshinweis und einer Kostenschätzung. Lösungshinweise, insbesondere Musterlösungen, werden dabei aus einer Lösungsdatenbank LB entnommen.
  • Schließlich werden im Schritt 10 die gemäß den Änderungsmitteilungen an die Verantwortlichen übermittelten Änderungen in dem Softwarequellcode eingebaut und schließlich im Schritt 11 integriert. Als Ergebnis erhält man im Schritt 12 schließlich eine neue Version des Softwaresystems mit neuem Softwarequellcode SQ. Der neue Quellcode fließt dann wieder in Schritt 1 des Verfahrens zur erneuten Überprüfung der neuen Version ein.
  • Die vorangegangen Schritte 10 bis 12 sind Standardschritte eines Softwareerstellungsprozesses. Die Durchführung der zuvor dargelegten Schritte 2 bis 9 basiert demgegenüber ganz essentiell auf der gemäß der Erfindung entwickelten Fehlerklassifikation. Im Besonderen erlaubt die Fehlerklassifikation:
    • – Die Definition von Zielvorgaben auf einer allgemeinen, abstrakten Ebene, die durch die Klassifikation vorgegeben ist und welche dazu geeignet ist, von Teilprojektleitern bzw. Qualitätsverantwortlichen verstanden zu werden.
    • – Die systematische Gesamtbeurteilung des Softwarequellcodes in einer Art und Weise, dass Aussagen darüber gemacht werden können, welche technischen Problembereiche ganz besonders gut oder ganz besonders schlecht zu bewerten sind. Diese Aggregation, die automatisch einhergeht mit der Beurteilung der Softwarequalität, erleichtert auch die Maßnahmenplanung wesentlich.
    • – Den leichteren Vergleich von Soll-Qualität und Ist-Qualität des betrachteten Softwarequellcodes, da der Vergleich nicht auf der Ebene einzelner Metriken erfolgen muss, sondern systematisch auf höherer Ebene durch die entsprechende Klassifikation festgelegt wird.
    • – Die Erstellung von Änderungsmitteilungen an die Verantwortlichen, weil eventuelle Lösungshinweise schon ganz allgemein zu einer Problemklasse zugeordnet werden können und nicht der einzelnen Metrik bzw. den einzelnen Regeln zugeordnet werden müssen.
  • Durch die soeben beschriebene Ausführungsform des erfindungsgemäßen Verfahrens wird eine automatisierte Verbesserung der Qualität eines Softwarequellcodes mittels eines gezielten Be handelns von im Softwarequellcode enthaltenen Fehlern erreicht. Dabei sind verschiedene Fehlerklassen vorgegeben, und diesen Fehlerklassen sind Detektionsmechanismen zum Detektieren der Fehler zugeordnet. Der Softwarequellcode wird mittels der Detektionsmechanismen überprüft, und dabei detektierte Fehler werden einer Fehlerklasse zugeordnet. Erfindungsgemäß können unterschiedliche Arten von im Softwarequellcode enthaltenen Fehlern systematisch und effizient detektiert und behandelt werden. Das Verfahren reduziert durch den erhöhten Automatisierungsgrad und die Fokussierbarkeit auf die kritischen technischen Aspekte den Aufwand für die Steuerung der Softwarecodequalität erheblich. Es bildet eine Brücke von den Fehler-Detektionsverfahren der klassischen Codeanalyse zu gezielten Verbesserungsmaßnahmen, welche die Codequalität effizient erhöhen.
  • 2 zeigt ein Ausführungsbeispiel einer Vorrichtung, mit der das erfindungsgemäße Verfahren realisiert werden kann. Die Vorrichtung umfasst Benutzerschnittstellen, welche in einer Präsentationsschicht PL zusammengefasst sind. Beispiele solcher Benutzerschnittstellen, mit denen die Ergebnisse des erfindungsgemäßen Verfahrens angezeigt werden, sind Laptops LP, eine Workstation WS sowie ein Drucker P. Die Benutzerschnittstellen Wechselwirken mit verschiedenen Modulen, die zu einer Anwendungsschicht AL zusammengefasst wird. Es ist hierbei ein Modul M1 vorgesehen, der einen Reportgenerator darstellt. Dieses Modul liefert als Ergebnis die gemäß der Erfindung erstellten Änderungsmitteilungen. Darüber hinaus ist ein Interaktionsmodul M2 vorgesehen, welche die Schnittstelle zur Präsentationsschicht PL darstellt. Das eigentliche erfindungsgemäße Verfahren, d.h. die Klassifikation der Fehler erfolgt im Modul M3, welches einen Bewerter darstellt. Im Modul M5 erfolgt der Vergleich zwischen der ermittelten Soll-Qualität und der Ist-Qualität. Darüber hinaus ist ein Statistikmodul M7 vorgesehen, welches statistische Auswertungen bezüglich der gefundenen Fehler durchführt. Ferner ist eine Datenschnittstelle als Modul M6 vorgesehen, welches eine Schnittstelle hin zu der nachfolgend erläuterten Datenschicht DL darstellt. Darüber hinaus ist als zentrales Modul M4 in der Anwendungsschicht AL eine Steuereinheit vorgesehen, welche die Interaktion zwischen den anderen Modulen steuert.
  • Die Datenschicht DL beinhaltet die im erfindungsgemäßen Verfahren verarbeiteten bzw. erzeugten Daten. Beispielhaft sind drei Datensätze D1, D2 und D3 angegeben. In der hier beschriebenen Ausführungsform ist der Datensatz D1 ein CM-System (CM = Configuration-Management), welches ein projektspezifisches Datensystem zur Verwaltung des betrachteten Softwareprojektes ist. Ferner ist als Datensatz D2 eine Methodenverwaltung vorgesehen, welche die Methoden der Klassifikation und Fehlerdetektion verwaltet. Dieser Datensatz ist organisationsspezifisch, jedoch projektübergreifend. Ferner ist in der Datenschicht DL die Qualitätshistorie D3 der früheren Softwareversionen enthalten. Die Qualitätshistorie D3 ist organisations- und projektübergreifend.

Claims (22)

  1. Verfahren zur rechnergestützten Bewertung von Softwarequellcode (SQ), bei dem: – der Softwarequellcode (SQ) unter Berücksichtigung von Parametern umfassend Codierungsregeln und/oder Codierungsmetriken analysiert wird, wobei als Analyseergebnis im Softwarequellcode (SQ) detektierte Fehler (ER) ermittelt werden; – die detektierten Fehler (ER) klassifiziert werden, indem sie jeweils zumindest einer Fehlerklasse (EC) aus einer Mehrzahl von Fehlerklassen (EC) zugeordnet werden, wobei jeder Fehlerklasse (EC) eine über eine Benutzerschnittstelle ausgebbare Spezifikation zugeordnet ist, welche die Fehler (ER) der jeweiligen Fehlerklasse (EC) beschreibt; – diejenigen Fehlerklassen (EC), welchen detektierte Fehler (ER) zugeordnet sind, über eine Benutzerschnittstelle ausgegeben werden.
  2. Verfahren nach Anspruch 1, bei dem jeder Fehlerklasse (EC) eine der folgenden programmiertechnischen Kategorien zugeordnet ist, welche über eine Benutzerschnittstelle ausgebbar sind: – eine Kategorie betreffend Notations-Konventionen; – eine Kategorie betreffend Typen-Deklarationen und/oder Definitionen; – eine Kategorie betreffend Programm-Anweisungen; – eine Kategorie betreffend Speicherprobleme: – eine Kategorie betreffend Software-Protokolle; – eine Kategorie betreffend das Design und/oder die Architektur des Softwarequellcodes (SQ); – eine Kategorie betreffend die Korrektheit des Softwarequellcodes (SQ); – eine Kategorie betreffend das Zeitverhalten bei der Ausführung des Softwarequellcodes (SQ).
  3. Verfahren nach Anspruch 1 oder 2, bei dem die Fehlerklassen (EC) den programmiertechnischen Kategorien über den Detektionsmechanismus zugeordnet werden, mit dem Fehler (ER) einer Fehlerklasse (EC) identifiziert werden.
  4. Verfahren nach Anspruch 3, bei dem die Spezifikation der jeweiligen Fehlerklasse (EC) eine oder mehrere, insbesondere alle, der folgenden Beschreibungen umfasst: – eine Beschreibung eines Entwicklungsziels, welches durch die Behebung der Fehler (ER) der entsprechenden Fehlerklasse (EC) erreicht werden soll; – eine Beschreibung der Verletzung des Entwicklungsziels, welche angibt, bei welchen Fehlern (ER) in der jeweiligen Fehlerklasse (EC) das Entwicklungsziel nicht erreicht wird; – eine Beschreibung der Ursachen für das Verfehlen des Entwicklungsziels; – eine Beschreibung der möglichen Korrekturen im Softwarequellcode (SQ), um das Entwicklungsziel zu erreichen; – eine Beschreibung der Detektionsmechanismen, welche angibt, wie Fehler (ER) in der jeweiligen Fehlerklasse (EC) detektiert werden. – eine Beschreibung der Auswirkungen des Verfehlens des Entwicklungsziels.
  5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Fehlerklassen (EC) in Hierarchieebenen eingeteilt sind.
  6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem detektierte Fehler (ER) nach vorgegeben Kriterien gefiltert werden.
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem eine Qualitätsbewertung der detektierten Fehler (ER) durchgeführt wird und für jede ausgegebene Fehlerklasse (EC) eine Qualitätsbewertung der Fehlerklasse (EC) auf der Basis der darin enthaltenen Fehler (ER) über eine Benutzerschnittstelle ausgegeben wird.
  8. Verfahren nach Anspruch 7, bei dem aus den Qualitätsbewertungen der Fehlerklassen (EC) eine Gesamtqualitätsbewertung des Softwarequellcodes (SQ) ermittelt und über eine Benutzerschnittstelle ausgegeben wird.
  9. Verfahren nach Anspruch 7 oder 8, bei dem die Qualitätsbewertungen der Fehlerklassen (EC) und/oder die Gesamtqualitätsbewertung auf Maßzahlen beruhen.
  10. Verfahren nach Anspruch 9, bei dem die Gesamtqualitätsbewertung die Summe der Maßzahlen der Qualitätsbewertungen der Fehlerklassen (EC) ist.
  11. Verfahren nach einem der Ansprüche 7 bis 10, bei dem das Verfahren derart ausgestaltet ist, dass über eine Benutzerschnittstelle eine Soll-Qualität des Softwarequellcodes (SQ) eingebbar ist, wobei die Soll-Qualität mit der Ist-Qualität gemäß den Qualitätsbewertungen der Fehlerklassen (EC) und/oder der Gesamtqualitätsbewertung verglichen wird und das entsprechende Vergleichsergebnis über eine Benutzerschnittstelle ausgegeben wird.
  12. Verfahren nach einem der Ansprüche 7 bis 11, bei dem die Qualitätsbewertungen der Fehlerklassen (EC) und/oder die Gesamtqualitätsbewertung in einem abrufbaren Speicher hinterlegt werden, wodurch eine Qualitätshistorie von verschiedenen Versionen von Softwarequellcodes (SQ) im Speicher gespeichert wird.
  13. Verfahren nach Anspruch 11 und 12, bei dem in der Qualitätshistorie die jeweiligen Ist-Qualitäten und Soll-Qualitäten der Versionen des Softwarequellcodes (SQ) hinterlegt werden.
  14. Verfahren nach einem der Ansprüche 7 bis 13, bei dem aus den Qualitätsbewertungen der Fehlerklassen (EC) Änderungsanforderungen an den Softwarequellcode (SQ) generiert werden und aus den Änderungsanforderungen Änderungsmitteilungen erstellt werden, wobei die Änderungen in einer Änderungsmitteilung jeweils einer Person oder einem Personenkreis zugeordnet sind, der für die Durchführung der Änderungen in der Änderungsmitteilung verantwortlich ist.
  15. Verfahren nach Anspruch 14, bei dem über eine Benutzerschnittstelle Kriterien eingebbar sind, welche bei der Generierung der Änderungsanforderungen zu berücksichtigen sind, wobei die Kriterien insbesondere angepasste Qualitätsbewertungen und/oder Prioritäten betreffend die Behebung der Fehler sind.
  16. Verfahren nach Anspruch 14 oder 15, bei dem die Änderungsmitteilungen jeweils automatisiert der Person oder dem Personenkreis übermittelt werden, der für die Durchführung der Änderungen in der Änderungsmitteilung verantwortlich ist.
  17. Verfahren nach einem der Ansprüche 14 bis 16, bei dem die Änderungsmitteilungen jeweils Hinweise zur Durchführung der Änderung und/oder eine Abschätzung des Aufwands der Änderungen enthalten.
  18. Verfahren nach Anspruch 17, bei dem die Hinweise zur Durchführung der Änderungen Musterlösungen zur Änderung des Softwarequellcodes (SQ) enthalten.
  19. Verfahren nach Anspruch 18, bei dem den Musterlösungen jeweils ein Aufwand zur Durchführung der jeweiligen Musterlösung zugeordnet ist.
  20. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Fehlerklassen (EC) Qualitätsfehlerklassen umfassen, welche die Fehler (EC) nach Qualitätskriterien kategorisieren.
  21. Vorrichtung zur rechnergestützten Bewertung von Softwarequellcode (SQ), umfassend: – ein Analysemittel zum Analysieren des Softwarequellcodes (SQ) unter Berücksichtigung von Parametern umfassend Co- dierungsregeln und/oder Codierungsmetriken, wobei durch das Analysemittel als Analyseergebnis im Softwarequellcode (SQ) detektierte Fehler (ER) ermittelt werden; – ein Klassifizierungsmittel zum Klassifizieren der detek- tierten Fehler (ER), indem die detektierten Fehler (ER) jeweils zumindest einer Klasse aus einer Mehrzahl von Fehlerklassen (EC) zugeordnet werden, wobei jeder Fehlerklasse (EC) eine über eine Benutzerschnittstelle ausgebbare Spezifikation zugeordnet ist, welche die Fehler (ER) der jeweiligen Fehlerklasse (EC) beschreibt; – ein Ausgabemittel zum Ausgeben derjenigen Fehlerklassen (EC), welchen detektierte Fehler (ER) zugeordnet sind, über eine Benutzerschnittstelle.
  22. Computerprogrammprodukt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 20, wenn das Programm auf einem Rechner läuft.
DE102006046203A 2006-09-29 2006-09-29 Verfahren zur rechnergestützten Bewertung von Softwarequellcode Ceased DE102006046203A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102006046203A DE102006046203A1 (de) 2006-09-29 2006-09-29 Verfahren zur rechnergestützten Bewertung von Softwarequellcode
EP07820578A EP2069920A1 (de) 2006-09-29 2007-09-26 Verfahren zur rechnergestützten bewertung von softwarequellcode
US12/311,347 US9274924B2 (en) 2006-09-29 2007-09-26 Method for the computer-assisted analysis of software source code
PCT/EP2007/060183 WO2008040664A1 (de) 2006-09-29 2007-09-26 Verfahren zur rechnergestützten bewertung von softwarequellcode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102006046203A DE102006046203A1 (de) 2006-09-29 2006-09-29 Verfahren zur rechnergestützten Bewertung von Softwarequellcode

Publications (1)

Publication Number Publication Date
DE102006046203A1 true DE102006046203A1 (de) 2007-08-30

Family

ID=38319988

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006046203A Ceased DE102006046203A1 (de) 2006-09-29 2006-09-29 Verfahren zur rechnergestützten Bewertung von Softwarequellcode

Country Status (4)

Country Link
US (1) US9274924B2 (de)
EP (1) EP2069920A1 (de)
DE (1) DE102006046203A1 (de)
WO (1) WO2008040664A1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010088976A1 (de) * 2009-02-05 2010-08-12 Siemens Aktiengesellschaft Verfahren und vorrichtung zur identifikation eines fehlerhaften algorithmus
WO2011080321A1 (de) 2009-12-30 2011-07-07 Tim Frey Hyperadapter und verfahren zum zugreifen auf dokumente in einer dokumentenbasis
CN111651344A (zh) * 2019-12-12 2020-09-11 中国电子科技集团公司第二十八研究所 大型复杂信息***软件缺陷检测规则分级与组合策略方法

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930909B1 (en) 2007-07-13 2015-01-06 The Mathworks, Inc. Debugging using presentation layer representations of objects
US20100070949A1 (en) * 2008-09-15 2010-03-18 Infosys Technologies Limited Process and system for assessing modularity of an object-oriented program
WO2010044150A1 (ja) * 2008-10-15 2010-04-22 富士通株式会社 プログラム変更管理装置、プログラム変更管理プログラムおよびプログラム変更管理方法
US8434053B2 (en) * 2008-11-26 2013-04-30 Red Hat, Inc. Package review process workflow
US10152403B2 (en) * 2009-09-01 2018-12-11 Accenture Global Services Limited Assessment of software code quality based on coding violation indications
CA2734199C (en) * 2010-03-18 2017-01-03 Accenture Global Services Limited Evaluating and enforcing software design quality
US8381186B2 (en) * 2010-06-17 2013-02-19 Verizon Patent And Licensing Inc. Software training application using automated discovery of user interface controls
DE102011006215A1 (de) * 2010-11-09 2012-05-10 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Ermitteln einer Qualitätsbewertung eines Softwarecodes mit Ermittlung der Bewertungsabdeckung
US8621441B2 (en) * 2010-12-27 2013-12-31 Avaya Inc. System and method for software immunization based on static and dynamic analysis
US20130091423A1 (en) * 2011-10-11 2013-04-11 Siemens Aktiengesellschaft Method and Apparatus for Checking a Structure Conformity for a Piece Of Development Documentation with at Least One Development Document
US8769501B2 (en) * 2011-12-07 2014-07-01 Siemens Aktiengesellschaft Method for analyzing changes in a software code and software analysis system
CN103793315B (zh) * 2012-10-29 2018-12-21 Sap欧洲公司 监视和改善软件开发质量方法、***和计算机可读介质
US9495281B2 (en) * 2012-11-21 2016-11-15 Hewlett Packard Enterprise Development Lp User interface coverage
US9164877B2 (en) 2013-06-21 2015-10-20 Sap Se Business application inspection and modification
US9262851B2 (en) * 2014-05-27 2016-02-16 Oracle International Corporation Heat mapping of defects in software products
US9836487B2 (en) 2014-07-28 2017-12-05 Cognizant Technology Solutions India Pvt. Ltd. System and method for ensuring code quality compliance for various database management systems
US10095869B2 (en) 2015-09-24 2018-10-09 International Business Machines Corporation Machine learning statistical methods estimating software system's security analysis assessment or audit effort, cost and processing decisions
US10977017B2 (en) * 2016-04-23 2021-04-13 International Business Machines Corporation Warning data management for distributed application development
US10831637B2 (en) 2016-04-23 2020-11-10 International Business Machines Corporation Warning data management with respect to an execution phase
CN108121656A (zh) * 2016-11-30 2018-06-05 西门子公司 一种软件评估方法和装置
US10133651B2 (en) * 2016-12-19 2018-11-20 Bank Of America Corporation Software defect analysis tool
US10430315B2 (en) * 2017-10-04 2019-10-01 Blackberry Limited Classifying warning messages generated by software developer tools
CN108334448B (zh) * 2018-01-22 2021-07-09 泰康保险集团股份有限公司 代码验证方法、装置及设备
US10853231B2 (en) * 2018-12-11 2020-12-01 Sap Se Detection and correction of coding errors in software development
US11106567B2 (en) 2019-01-24 2021-08-31 International Business Machines Corporation Combinatoric set completion through unique test case generation
US11010285B2 (en) 2019-01-24 2021-05-18 International Business Machines Corporation Fault detection and localization to generate failing test cases using combinatorial test design techniques
US11263116B2 (en) 2019-01-24 2022-03-01 International Business Machines Corporation Champion test case generation
US11099975B2 (en) 2019-01-24 2021-08-24 International Business Machines Corporation Test space analysis across multiple combinatoric models
US11010282B2 (en) 2019-01-24 2021-05-18 International Business Machines Corporation Fault detection and localization using combinatorial test design techniques while adhering to architectural restrictions
US10990510B2 (en) 2019-06-13 2021-04-27 International Business Machines Corporation Associating attribute seeds of regression test cases with breakpoint value-based fingerprints
US11036624B2 (en) 2019-06-13 2021-06-15 International Business Machines Corporation Self healing software utilizing regression test fingerprints
US10970197B2 (en) 2019-06-13 2021-04-06 International Business Machines Corporation Breakpoint value-based version control
US10970195B2 (en) 2019-06-13 2021-04-06 International Business Machines Corporation Reduction of test infrastructure
US11422924B2 (en) 2019-06-13 2022-08-23 International Business Machines Corporation Customizable test set selection using code flow trees
US10963366B2 (en) 2019-06-13 2021-03-30 International Business Machines Corporation Regression test fingerprints based on breakpoint values
US11232020B2 (en) 2019-06-13 2022-01-25 International Business Machines Corporation Fault detection using breakpoint value-based fingerprints of failing regression test cases
US11416222B2 (en) * 2019-08-26 2022-08-16 Red Hat, Inc. Determining validity of multipart branching literate programs
US11960383B2 (en) 2020-04-01 2024-04-16 Akili Interactive Labs, Inc. Systems and methods for software design control and quality assurance
US11269626B2 (en) 2020-04-23 2022-03-08 International Business Machines Corporation Quality analysis of source code
US11816479B2 (en) * 2020-06-25 2023-11-14 Jpmorgan Chase Bank, N.A. System and method for implementing a code audit tool
US11269712B1 (en) * 2020-08-26 2022-03-08 Spirent Communications, Inc. Customized categorial error handling framework for heterogeneous component-based testing in a portable automation framework
US11449414B2 (en) 2020-08-26 2022-09-20 Spirent Communications, Inc. Mapping test parameter data elements during heterogeneous component-based testing in a portable automation framework in both API mode and UI mode
US12013777B2 (en) 2020-08-26 2024-06-18 Spirent Communications, Inc. Controlling heterogeneous component-based testing in a portable automation framework with test scripts in both API mode and UI mode
US11216347B1 (en) 2020-08-26 2022-01-04 Spirent Communications, Inc. Automatically locating resources using alternative locator expressions during heterogeneous component-based testing in a portable automation framework
CN112346967B (zh) * 2020-10-20 2022-03-01 四川长虹电器股份有限公司 基于云平台的pc-lint云服务***、计算机设备及存储介质
US11556318B2 (en) * 2021-03-24 2023-01-17 Bank Of America Corporation Systems and methods for assisted code development

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960196A (en) 1996-12-18 1999-09-28 Alcatel Usa Sourcing, L.P. Software release metric reporting system and method
US5954826A (en) * 1997-09-29 1999-09-21 Sun Microsystems, Inc. Method and apparatus for analyzing data
US6167358A (en) * 1997-12-19 2000-12-26 Nowonder, Inc. System and method for remotely monitoring a plurality of computer-based systems
US6266788B1 (en) * 1998-07-01 2001-07-24 Support.Com, Inc. System and method for automatically categorizing and characterizing data derived from a computer-based system
US7657872B2 (en) * 2000-10-23 2010-02-02 Nintendo Of America Inc. Product testing and bug tracking system
US20030069869A1 (en) * 2001-10-05 2003-04-10 Jane Gronau Computer aided strategic planning systems and methods
US7124328B2 (en) * 2002-05-14 2006-10-17 Sun Microsystems, Inc. Capturing system error messages
US7213179B2 (en) * 2002-07-30 2007-05-01 Cisco Technology, Inc. Automated and embedded software reliability measurement and classification in network elements
US7810067B2 (en) * 2002-08-30 2010-10-05 Sap Aktiengesellschaft Development processes representation and management
US8225302B2 (en) * 2003-02-13 2012-07-17 Lawrence Taylor Waugh System and method for managing source code and acquiring metrics in software development
EP1627303A4 (de) * 2003-04-18 2009-01-14 Ounce Labs Inc Verfahren und system zum nachweis von schwachstellen in quellcodes
US7685570B2 (en) * 2003-06-09 2010-03-23 Microsoft Corporation Error/exception helper
US7647579B2 (en) * 2004-03-31 2010-01-12 International Business Machines Corporation Method, system and program product for detecting deviation from software development best practice resource in a code sharing system
US8401882B2 (en) * 2005-11-08 2013-03-19 International Business Machines Corporation Aligning information technology with business objectives through automated feedback control
US7752055B1 (en) * 2006-10-19 2010-07-06 Sprint Communications Company L.P. Systems and methods for determining a return on investment for software testing
US8132156B2 (en) * 2007-06-14 2012-03-06 Red Hat, Inc. Methods and systems for testing tool with comparative testing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010088976A1 (de) * 2009-02-05 2010-08-12 Siemens Aktiengesellschaft Verfahren und vorrichtung zur identifikation eines fehlerhaften algorithmus
US8843341B2 (en) 2009-02-05 2014-09-23 Siemens Aktiengesellschaft Method and device for identifying a faulty algorithm
WO2011080321A1 (de) 2009-12-30 2011-07-07 Tim Frey Hyperadapter und verfahren zum zugreifen auf dokumente in einer dokumentenbasis
CN111651344A (zh) * 2019-12-12 2020-09-11 中国电子科技集团公司第二十八研究所 大型复杂信息***软件缺陷检测规则分级与组合策略方法

Also Published As

Publication number Publication date
EP2069920A1 (de) 2009-06-17
WO2008040664A1 (de) 2008-04-10
US20100023928A1 (en) 2010-01-28
US9274924B2 (en) 2016-03-01

Similar Documents

Publication Publication Date Title
DE102006046203A1 (de) Verfahren zur rechnergestützten Bewertung von Softwarequellcode
EP0852759B1 (de) Entwurfsverfahren für die anlagentechnik und rechnergestütztes projektierungssystem zur verwendung bei diesem verfahren
WO2003071455A2 (de) Engineeringverfahren und engineeringsystem für industrielle automatisierungssysteme
EP1751637A1 (de) Wissensbasiertes diagnosesystem für ein komplexes technisches system mit zwei getrennten wissensbasen zur verarbeitung technischer systemdaten und zur verarbeitung von kundenbeanstandungen
DE102005042126A1 (de) Verfahren und Vorrichtung zum automatisierten Bewerten der Qualität eines Software-Quellcodes
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
DE10206903A1 (de) Softwareapplikation, Softwarearchitektur und Verfahren zur Erstellung von Softwareapplikationen, insbesondere für MES-Systeme
EP3285165A1 (de) Modifizieren und simulieren der betriebssoftware eines technischen systems
EP1674954A1 (de) System und Verfahren zur Wiederverwendung von Projektierungsdaten
DE102010033861A1 (de) Auf einer formellen Analyse basierte Entwicklung von Anforderungsspezifikationen
EP3306295A1 (de) Verfahren und vorrichtung zum testen elektronischer steuerungen, insbesondere zum testen von automobilsteuerungen
DE102021004346A1 (de) Verfahren zum Aufbau und zur Pflege einer Fahrzeugtypbibliothek
DE10017708B4 (de) Verfahren zum Steuern von Mechanismen und technischen Systemen, Einrichtung und Steuerungssoftware
EP0973091B1 (de) Verfahren zum Erzeugen eines regel- und anpassbaren Netzwerkes von Modellen von Verhaltensmustern
EP1533940A1 (de) Transformation Function eines TMN Systems
DE102017212612A1 (de) Verfahren zum automatischen Erzeugen von Tests für die Software eines Fahrzeugs
DE102020118832B3 (de) Verfahren zum Bereitstellen sicherheitsrelevanter Daten mittels eines Serversystems, Serversystem und Computerprogrammprodukt
DE10233971A1 (de) Verfahren und Vorrichtung zur Erzeugung von Software
EP2093663A1 (de) Engineering-System für die Entwicklung eines Projektes und Verfahren
EP2230609A2 (de) Verfahren zum Erstellen von Anforderungsspezifikationen für Prozessleitsysteme der Kraftwerksleittechnik
WO1999038024A1 (de) Verfahren zur computergestützten optimierung von prüfspezifikationen und minimierung von prüfsoftware
DE102022209618A1 (de) Verfahren zum Simulieren eines Umformwerkzeugs zum Erzeugen eines Bauteils für ein Kraftfahrzeug, Computerprogrammprodukt sowie elektronische Recheneinrichtung
DE102021211620A1 (de) Verfahren und System zur automatischen Erzeugung eines eingebetteten Quellcodes für die elektronische Steuereinheit eines AD/ADAS-Strassenfahrzeugs
DE102023004031A1 (de) System, Verfahren und Computerprogrammprodukt zur Bereitstellung eines Produkts im Automobilbereich
DE102011077177A1 (de) Verfahren zur rechnergestützten Analyse von fehlerhaftem Quellcode in einer Hardware-Beschreibungssprache

Legal Events

Date Code Title Description
OAV Applicant agreed to the publication of the unexamined application as to paragraph 31 lit. 2 z1
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection