Für jede Differenz mit einem DiffNamewird ein Eintrag in der DCAW gesucht. Wenn ein Eintrag gefunden wird, bekommt die Differenz die angegebene Kategorie und Gewichtung. Dieser Schritt kann eingeschränkt durchgeführt werden, indem die DiffNamen und Kategorien, die verarbeitet werden sollen, angegeben werden.
Die Zuordnung der Kategorien und Gewichtungen kann vorher beeinflusst werden indem:
Anschließend kann Einfluss genommen werden indem:
Diese Anpassungen können entweder durch ein Programm oder manuell durchgeführt werden, wobei der programmatische Ansatz zu bevorzugen ist.
Protokoll vorher
<Type DiffName="BsarType"> <Left>ASTR</Left> <Right>ASTR</Right> </Type>
Protokoll nachher
<Type DiffName="BsarType" IsDifferent="no" Category="Definition" Weight="Info"> <Left>ASTR</Left> <Right>ASTR</Right> </Type>
DiffName | Hier kann ein „*“ für alle DiffNamen oder ein bestimmter DiffName eingetragen werden. |
DiffKind | Hier kann ein „*“ für alle Arten von Differenzen eingetragen werden, oder auch eine bestimmte Art, s. unten. |
Stufe | Hier kann ein „*“ für all Stufen eingetragen werden, oder auch eine einzelne Stufe wie z.B. ALRFRG |
Beschreibung | Eine Beschreibung was der Eintrag ausdrückt |
Kategorie | Die Kategorie die die Differenz bekommt wenn der Eintrag zutrifft. |
Gewichtung | Die Gewichtung die die Differenz bekommt wenn der Eintrag zutrifft. |
Die momentanen DiffKinds sind:
Equal - die Werte sind nicht unterschiedlich.
NotEqual - die Werte sind unterschiedlich.
Missing - Einer der beiden Werte ist nicht vorhanden.
Empty - Einer der beiden Werte ist leer.
Occurs - Es ist kein Left und Right vorhanden (z.B. FindReport) 1)
NB: Wenn z.B. beide Werte „empty=yes“ haben, dann ist der DiffKind „Equal“.
Die SQL-Statements um diese Tabelle einzurichten finden Sie hier.
Gesucht wird immer nach einem passenden DiffName, DiffKind und Umgebung.
Bei jeder Suche werden die genannten Felder exakt gesucht und die anderen Werte mittels Patternmatching verglichen. Bei jedem Eintrag ist der Wildcharacter „*“ erlaubt.
In untenstehender Tabelle sind die Regeln wie sie im Konzept formuliert wurden eingetragen.
DiffName | DiffKind | Stufe | Beschreibung | Kategorie | Gewichtung |
---|---|---|---|---|---|
BsarType | Equal | * | Der Modultyp hat sich nicht verändert | Definition | Info |
BsarType | NotEqual | * | Der Modultyp hat sich verändert | Definition | Severe |
BsarStat | Equal | * | Der Zustand des Moduls hat sich nicht verändert | ControlFlow | Info |
BsarStat | NotEqual | * | Der Zustand des Moduls hat sich verändert | ControlFlow | Warning |
BsarStat | Empty | * | Das Modul hat keinen Zustand gesetzt | ControlFlow | Severe |
Time* | Equal | * | Die (gesamt) Verweildauer ist gleich geblieben | Performance | Info |
Time* | NotEqual | * | Die (gesamt) Verweildauer ist nicht gleich geblieben | Performance | Warning |
CalleeCount | Equal | * | Die Anzahl gerufene Bausteine ist gleich geblieben. | ControlFlow | Info |
CallName | Equal | * | Der Name des gerufenen Bausteins ist gleich geblieben | ControlFlow | Info |
CallEvnt | Equal | * | Das ausgelöste Ereignis ist gleich geblieben | ControlFlow | Info |
Call* | NotEqual | * | Bei den gerufenen Bausteinen hat sich etwas verändert | ControlFlow | Warning |
CndOpCount | Equal | * | Die Anzahl Conditionoperationen ist gleich geblieben | Condition | Info |
CndSev | Equal | * | Die Severity der Condition ist gleich geblieben | Condition | Info |
CndTitle | Equal | * | Der Titel der Condition ist gleich geblieben | Condition | Info |
CndArg | Equal | * | Das Argument bei der Condition hat den gleichen Wert | Condition | Info |
CndAssoc | Equal | * | Die Association der Condition ist gleich geblieben | Condition | Info |
Cnd* | NotEqual | * | Bei den Conditionoperationen hat sich etwas verändert | Condition | Warning |
OopsCount | Equal | * | Die Anzahl Oopse sind gleich geblieben | Quality | Info |
OopsMsg | Equal | * | Der Text des Oops ist gleich geblieben | Quality | Info |
Oops* | NotEqual | * | Bei den Oopsen hat sich etwas verändert | Quality | Warning |
ParmObjt | Equal | * | Der Objekttyp hat den gleichen Namen | Definition | Info |
ParmObjt | NotEqual | * | Der Objekttyp hat nicht den gleichen Namen | Definition | Severe |
ParmClass | Equal | * | Die Klasse ist gleich geblieben | Definition | Info |
ParmClass | NotEqual | * | Die Klasse ist nicht gleich geblieben | Definition | Severe |
ParmDstr | Equal | * | Die Datenstruktur hat den gleichen Namen | Definition | Info |
ParmDstr | NotEqual | * | Die Datenstruktur hat nicht den gleichen Namen | Definition | Severe |
ParmRole | Equal | * | Die Rolle ist gleich geblieben | Definition | Info |
ParmRole | NotEqual | * | Die Rolle ist nicht gleich geblieben | Definition | Warning |
ParmItemCount | Equal | * | Die Anzahl Sätze ist gleich geblieben | Content | Info |
ParmItemCount | NotEqual | * | Die Anzahl Sätze ist nicht gleich geblieben | Content | Warning |
ParmFieldZ | Equal | * | Ein Timestamp hat den gleichen Wert | Timestamp | Warning |
ParmFieldZ | NotEqual | * | Ein Timestamp hat einen anderen Wert | Timestamp | Info |
ParmFieldZ | Empty | * | Ein Timestamp ist leer | Timestamp | Severe |
ParmFieldD | Empty | * | Ein Datumsfeld ist leer | Content | Severe |
ParmField* | Equal | * | Ein Feldinhalt ist gleich geblieben | Content | Info |
ParmField* | NotEqual | * | Ein Feldinhalt ist nicht gleich geblieben | Content | Warning |
ParmField* | Empty | * | Ein Feldinhalt ist leer | Content | Warning |
ParmField* | Missing | * | Ein Feld fehlt | Definition | Warning |
GlobObjt | Equal | * | Der Objekttyp hat den gleichen Namen | Definition | Info |
GlobObjt | NotEqual | * | Der Objekttyp hat nicht den gleichen Namen | Definition | Warning |
GlobClass | Equal | * | Die Klasse ist gleich geblieben | Definition | Info |
GlobClass | NotEqual | * | Die Klasse ist nicht gleich geblieben | Definition | Warning |
GlobDstr | Equal | * | Die Datenstruktur hat den gleichen Namen | Definition | Info |
GlobDstr | NotEqual | * | Die Datenstruktur hat nicht den gleichen Namen | Definition | Warning |
GlobRole | Equal | * | Die Rolle ist gleich geblieben | Definition | Info |
GlobRole | NotEqual | * | Die Rolle ist nicht gleich geblieben | Definition | Warning |
GlobItemCount | Equal | * | Die Anzahl Sätze ist gleich geblieben | Content | Info |
GlobItemCount | NotEqual | * | Die Anzahl Sätze ist nicht gleich geblieben | Content | Warning |
GlobFieldZ | Equal | * | Ein Timestamp hat den gleichen Wert | Timestamp | Warning |
GlobFieldZ | NotEqual | * | Ein Timestamp hat einen anderen Wert | Timestamp | Info |
GlobFieldZ | Empty | * | Ein Timestamp ist leer | Timestamp | Severe |
GlobFieldD | Empty | * | Ein Datumsfeld ist leer | Content | Severe |
GlobField* | Equal | * | Ein Feldinhalt ist gleich geblieben | Content | Info |
GlobField* | NotEqual | * | Ein Feldinhalt ist nicht gleich geblieben | Content | Warning |
GlobField* | Empty | * | Ein Feldinhalt ist leer | Content | Warning |
GlobField* | Missing | * | Ein Feld fehlt | Definition | Warning |
Die umgesetzten Regeln in der Tabelle sprechen für sich. An dieser Stelle sei nur darauf hingewiesen, dass:
Da in dem Vorschlag alle Differenzen berücksichtigt sind, gibt es keine sinnvolle Erweiterung, sondern eher sinnvolle Änderungen oder Streichungen. Wie zuvor schon erwähnt, müssen in dieser Tabelle nicht alle Differenzen berücksichtigt werden. Differenzen die keinen passenden Eintrag in der Tabelle haben, werden bei der weiteren Bewertung nicht berücksichtigt. Eine andere Möglichkeit dafür zu sorgen, das Differenzen keinen Einfluss auf das Ergebnis haben, ist das Einrichten folgender Zeile:
DiffName | DiffKind | Stufe | Beschreibung | Kategorie | Gewichtung |
---|---|---|---|---|---|
* | * | * | Differenz ist nicht Relevant | NotRelevant | Info |
Hierdurch bewirkt man, dass die Differenzen eine Kategorie und eine Gewichtung bekommen. Bei einem entsprechenden Eintrag in der DDST der dafür sorgt, dass diese Differenzen mit der Kategorie „NotRelevant“ den Status „Accept“ bekommen, bewirkt man, dass diese Differenzen nicht dazu führen, dass der Protokollstatus „NotOK“ ist.
Beim Füllen der Tabelle soll immer die Suchreihenfolge im Auge behalten werden. Wenn man Erweiterungen vornehmen möchte ist zu empfehlen, immer mindestens einen Wert exakt zu spezifizieren. Beim Patternmatching wird nicht versucht den passendsten Eintrag zu finden, sondern einen passenden Eintrag. Haben zwei Regeln bei DiffName einen Wildcard eingetragen, dann bestimmt implizit die Reihenfolge welche Regel genommen wird. Beispiel: Der DiffName „*“ und „Oops*“ sind beide nicht exakt und werden beim Patternmatching beide als passend gefunden für eine Differenz „OopsCount“.