Analyse und Implementierung eines Algorithmus zur Identifizierung von Fehlermustern in Software-Applikationen


Diplomarbeit, 2010

105 Seiten, Note: 1.0


Leseprobe

Inhaltsverzeichnis

Abbildungsverzeichnis

Tabellenverzeichnis

Abkürzungsverzeichnis

I. Einleitung
1. Einführung in das Thema
1.1 Aufgabenstellung und Ziel der Arbeit
1.2 Vorgehensweise und methodische Einordnung
1.3 Aufbau der Arbeit

II. Konzeption
2. Software-Applikation und Informations-Analyse
2.1 Software und Information
2.2 Wissensbedarf - Daten und Information
2.3 Softwarewartung
2.3.1 Grundlagen der Softwarewartung
2.3.2 Softwarewartung-Technologien
2.4 Fehlermuster und ihre Bedeutung
2.5 Zusammenfassung
3. Data-Mining-Konzept und -Technologien
3.1 Was ist Data Mining?
3.2 Aufgaben des Data Minings und seine Prozesse
3.2.1 Prozesse des Data Minings nach CRISP-DM
3.2.2 Knowledge Discovery in Databases - KDD
3.3 Arten von Dateien
3.4 Ziele und Verfahren des Data Minings
3.5 Log-Datei Mining
3.6 Zusammenfassung

III. Entwurf und Implementierung des Programms
4. Vorbereitung der Rohdaten für die Datenbank
4.1 Das Implementierungs-Konzept
4.2 Logische und physikalische Events
4.3 Selektion von Rohdaten
4.4 Log-Files-Struktur und die Selektion der Attribute
4.5 Datenbankmodelle: Schema- und Tabellen-Darstellung
4.6 Zusammenfassung
5. System-Implementierung für Data Mining
5.1 Einführung in die Tivoli-Architektur
5.2 Ziele des Programms
5.3 Darstellung der Programm-Architekturen
5.3.1 Jackson-Diagramm
5.3.2 Die Klassendiagramme und ihre Funktionalität
5.4 Ergebnisse und Zusammenfassung

IV. Ergebnisse und Evaluation
6. Ermittlung des Kerns von Fehlermustern
6.1 Datenauswertung der Log Files
6.2 Entdeckte Fehlermuster aus der Software-Anwendung
6.3 Bewertung des Data-Mining-Algorithmus

V. Resümee
7. Zusammenfassung und Schlussfolgerung
8. Literaturverzeichnis

Abbildungsverzeichnis

Abbildung 2-1: Erfolgsfaktoren Softwarewartung

Abbildung 2-2: Fehlhandlung, Fehlerzustand und Fehlerwirkung

Abbildung 3-1: Evolution in der Informations- und Datentechnologie

Abbildung 3-2: Datenfluss im Data Mining

Abbildung 3-3: CRISP-DM Prozessmodell

Abbildung 3-4: KDD-Prozess nach Fayyad

Abbildung 3-5: Data-Mining-Verfahren und ihre zugeordnete Aufgabenstellung

Abbildung 3-6: Apriori-Algorithmus

Abbildung 4-1: Das Implementierungs-Konzept

Abbildung 4-2: Physikalische und logische Events

Abbildung 4-3: Beziehung User, Abend Trace und Error Log File

Abbildung 4-4: Schema-Darstellung

Abbildung 4-5: Tabellen zur Identifizierung von Fehlermustern

Abbildung 4-6: Datenbankmodell MTBF

Abbildung 5-1: MTBF-Programm Datenüberblick

Abbildung 5-2: Jackson-Diagramm des MTBF-Programms

Abbildung 5-3: Klassendiagramm des MTBF-Programms

Abbildung 6-1: Laufzyklus der Log Files

Abbildung 6-2: Periodische Darstellung von Abend Trace Files

Abbildung 6-3: Ausgabe des Apriori-Algorithmus

Abbildung 6-4: Die am häufigsten wiederholten Fehlermuster

Abbildung 6-5: OS-Events Verteilung

Tabellenverzeichnis

Tabelle 2-1 : Anzahl Programmierer in der Wartung

Tabelle 4-1 : File-Struktur eines Abend Trace Files

Abkürzungsverzeichnis

Abbildung in dieser Leseprobe nicht enthalten

Einleitung

1. Einführung in das Thema

Die Anwendung von Software in irgendeiner Form ist heutzutage fester Bestandteil des täglichen Lebens. Die Abhängigkeit der Menschen von Software-Applikationen nimmt ständig zu. Auch wenn es für den Einzelnen nicht immer nachvollziehbar oder ersichtlich ist, werden unzählige alltägliche Vorgänge mittels Computerprogrammen ausgeführt. Es gibt kaum mehr einen Bereich in unserem Leben, der nicht an ein korrektes und fehlerfreies Funktionieren von Computersystemen gebunden ist. Dies birgt zweifelsohne viele Vorteile. Andererseits aber hängen nicht nur das wirtschaftliche Überleben von Unternehmen, sondern häufig sogar Menschenleben davon ab.

Besonders in Unternehmen und Betrieben laufen immer mehr Arbeitsgänge mit computergestützten Verfahren ab. Infolgedessen ist es wichtig, dass Software-Applikationen mit einer sehr zuverlässigen Qualität entwickelt werden, die eine möglichst fehlerfreie Anwendung und dauerhafte Leistung garantiert. Bei der Entwicklung von Software oder, allgemeiner, von Systemen aus Hard- und Software, haben viele Hersteller Schwierigkeiten, Budgetvorgaben und Qualitätsansprüche zu bewältigen. Dafür gibt es zahleiche Gründe: Auftraggeber und Auftragnehmer stehen unter Zeitdruck, Anwendungen werden übereilt gefertigt, es mangelt an kompetenten Fachkräften. Folglich wird die Qualität der Applikationen vernachlässigt.

Die meisten Anwendungen werden nicht fehlerfrei hergestellt, und einige Applikationen sind gar nicht in der Lage, mit den ständigen Änderungen von Betriebssystemen zu harmonieren. Demzufolge treten mehr oder weniger häufig Anwendungsabstürze (engl.: abnormal ends, kurz abends) auf. Wirtschaftlich gesehen verlieren Unternehmen durch einen solchen Programmabsturz Zeit und Geld, da zusätzliche Kosten entstehen, wenn das Problem behoben oder die Anwendung von Neuem gestartet werden muss.

Andererseits haben Software-Hersteller das Problem, dass sie ihre Anwendungen regelmäßig warten oder updaten müssen. Man sieht, dass hier beiderseitig Hürden vorhanden sind und eine hohe Zuverlässigkeit und Stabilität von Systemen und Applikationen sowohl für Hersteller als auch Kunden nutzbringend sind.

Viele dieser Applikationen erzeugen nach ihrem Absturz ein sogenanntes Log File, anhand dessen die IT-Abteilung das Problem erkennen und dem Anwender auf diese Weise direkt oder indirekt weiterhelfen kann. Da der arbeitende Mensch aber von Natur aus in Eile ist, starten viele Anwender ihre Workstations einfach neu, ohne die IT-Abteilung über den aufgetretenen Fehler zu informieren. Dadurch wird den IT-Fachleuten die Suche nach der Ursache des Problems natürlich deutlich erschwert. Um dennoch Fehlerquellen entdecken, beheben und somit die Qualität der Applikation optimieren zu können, ist eine Maßnahme oder ein Werkzeug zur Erkennung statistisch-relevanter Fehlermuster hilfreich. Diese statistischen Analyse­Verfahren müssen manuell erstellt werden, um zu bestimmen, welche Gruppe von Abbruch-Ereignissen mit der höchsten Priorität behandelt werden muss.

1.1 Aufgabenstellung und Ziel der Arbeit

Das Ziel der vorliegenden Arbeit ist die Identifizierung von Fehlermustern einer Software-Applikation. Eine Vielzahl von Log Files einer abgestürzten Anwendung steht oft mit einer Vielzahl von vernetzen Computern in Verbindung. Um die Gesamt-Problematik zu identifizieren und die Fehlerquote von Anwendungsabstürzen zu minimieren, müssen eine geeignete Methode und ein zweckmäßiges System entwickelt werden. Gegenstand dieser Diplomarbeit soll sein, zu dieser Problemstellung einen Analyse-Algorithmus zu entwickeln, der relevante Fehlermuster aus Log Files entdecken, selektieren, aufwerten und statistisch darstellen kann.

Aus dem Hauptziel der Diplomarbeit stellen sich folgende Kernfragen:

- Welche Analyse-Methode eignet sich am besten zur Untersuchung von Daten aus Log Files?
- Was sind Betriebssystem- und IT-Ereignisse und gibt es einen Zusammenhang zwischen diesen Ereignissen?
- Wie kann man die Ähnlichkeit von Log-File-Mustern festlegen? Und welcher Algorithmus ist geeignet für die Bestimmung der Gemeinsamkeiten der Events?

Die konkrete Aufgabenstellung ergab sich aus einer Projektarbeit der Abteilung PLM (Product Lifecycle Management) der IBM Deutschland GmbH mit Sitz in Mainz. Sie beinhaltet die Analyse von Software-Anwendungen zur Erkennung von Fehlermustern im Falle von Anwendungsabstürzen, hier gezeigt am Fallbeispiel des Programms CATIA.

1.2 Vorgehensweise und methodische Einordnung

Um einen effizienten Algorithmus für die Entdeckung von Fehlermustern zu implementieren, musste zunächst eine detaillierte Einarbeitung in die wichtigsten Bereiche der Datenanalyse erfolgen. Zu diesem Zweck wurden die Gebiete Softwarewartung und Data Mining ausgewählt.

Nach einer eingehenden Untersuchung und Erforschung der verschiedenen Verfahren und Algorithmen der Datenanalyse konnte erfolgreich ein Algorithmus abgeleitet werden. Für die Entwicklung dieses Algorithmus mussten Daten aus Log Files strukturiert, bereinigt und schließlich wieder in der Datenbank gespeichert werden. Für dieses Ziel wurde ein ERD (Entity Relationship Diagram) erstellt. Im Anschluss daran wurde ein Programm entwickelt, das in der Lage ist, das Hauptziel und alle weiteren Zwecke der Diplomarbeit, wie die Datenvorbereitung und die Implementierung des ausgewählten Algorithmus, umzusetzen.

1.3 Aufbau der Arbeit

Die Gliederung der Arbeit orientiert sich an der Vorgehensweise. Zur besseren Übersicht ist die Arbeit, abgesehen von der Einleitung, in vier Hauptteile unterteilt.

Im Konzeptionsteil werden zunächst in Kapitel zwei die Grundlagen des Bereichs Softwarewartung dargestellt. Hierzu werden die zentralen Begriffe definiert, die Softwarewartung-Technologien und Fehlermuster und ihre Bedeutung erörtert. Eine weitere, vergleichbar wichtige, Technologie der Datenanalyse ist das Data Mining; dies wird ausführlich in Kapitel drei behandelt. Hierzu werden zuerst die Aufgaben des Data Minings und seine Prozesse dargestellt, danach die Begriffe „Daten“ und „Information“ erläutert und schließlich die wichtigsten Verfahren und Algorithmen des Data Minings präsentiert.

Nach Abschluss der Konzeptionsphase werden im nächsten Teil der Entwurf und die Implementierung des Programms beschrieben. Dazu wird in Kapitel vier die Vorbereitung der Daten aus Log Files für die Datenbank beschrieben. Hierzu werden die Unterschiede zwischen physikalischen und logischen Events aufgezeigt, die Datenselektion erläutert und das Datenbankmodell dargestellt.

In der Fortsetzung der Implementierungsbeschreibung werden in Kapitel fünf die Entwicklung des Programms und die Übertragung des Algorithmus beschrieben. In diesem Zusammenhang werden nach der Erläuterung des Programmzwecks die Klassendiagramme und ihre Funktionalität dargestellt.

Schließlich folgen im letzten Teil der Diplomarbeit die Ergebnisse und die sich daraus ergebenden Schlussfolgerungen. Kapitel sechs präsentiert die Resultate der Arbeit und deren Beurteilung. Ein Ausblick im siebten Kapitel spricht die sich während der Arbeit ergebenen Aspekte an und weist darauf hin, wie diese weitergeführt werden können.

Teil II

Konzeption

2. Software-Applikation und Informations-Analyse

In diesem Kapitel werden die Zusammenhänge zwischen Software und Information erläutert. Hierzu werden zunächst die zentralen Begriffe „Software-Applikation“, „Information“ und „Daten“ beschrieben sowie die Bedeutung von Software-Applikationen für Unternehmen und unsere Gesellschaft illustriert. Daran anknüpfend wird der Unterschied zwischen Daten und Information verdeutlicht und veranschaulicht, welche Technologien heutzutage für die Analyse von Daten verfügbar sind. Im Anschluss daran folgt eine Kurzübersicht des Gebiets Softwarewartung und darin angewandter Technologien. Anschließend wird der Begriff „Fehler“ erläutert und die damit verbundenen Nachteile definiert. Dies bildet die Grundlage für die weitere Untersuchung der verschiedenen Verfahren der Datenanalyse hinsichtlich ihrer Eignung zur Lösung der hier untersuchten Problemstellung.

2.1 Software und Information

Software-Applikationen begegnen uns in allen Bereichen des Alltags, besonders im Beruf. Der Einsatz von Software ist für viele Unternehmen ein wichtiges Mittel zur Erzielung von Erfolg und finanziellem Gewinn. Software­Anwendungen erfüllen wichtige Aufgaben in unserer Gesellschaft und in fast keinem Betrieb können alltägliche Aufgaben ohne irgendeine Software­Applikation ausgeführt werden. Unter dem Begriff Software versteht man grundsätzlich „Programme, Verfahren, zugehörige Dokumentation und Daten, die mit dem Betrieb eines Computersystems zu tun haben“. [1]

Software-Applikationen sind wie eine Black Box: Eingangs werden Daten eingegeben, diese werden dann bearbeitet, und abschließend erhält man die gewünschte Information. In der Fachliteratur findet man eine Reihe von Definitionen des Begriffs „Information“ (vom Lateinischen informatio, d. h.

Abbildung in dieser Leseprobe nicht enthalten

Deutung, Erläuterung), betrachtet aus verschiedenen Gesichtspunkten. Aus der Sicht der Betriebswirtschaft zum Beispiel bedeutet Information „im Sinne der Umgebungssprache Wissen (Kenntnisse) über Sachverhalte, Ereignisse, Prozesse oder Ideen und im Sinne der Betriebswirtschaftslehre zweckorientiertes bzw. zielgerichtetes Wissen“. [2] Aus der Sicht der Informatik ist „Information [...] handlungsbestimmendes Wissen über vergangene, gegenwärtige und zukünftige Zustände der Wirklichkeit und Ereignisse in der Wirklichkeit (d. h. in Organisationen in Wirtschaft und Verwaltung)“.[3] Da in der Wissenschaft der Begriff Information gleichbedeutend mit Wissen verwendet wird, folgt daraus, dass Information das aus Daten gewonnene Wissen ist. Wie man nun Information aus Daten gewinnt, wird an späterer Stelle genauer erörtert.

2.2 Wissensbedarf - Daten und Information

Noch bis vor ca. 40 Jahren erfolgte die Datenerfassung in Unternehmen generell in Papierform. Alle Daten wurden manuell notiert, erfasst, verwaltet, ausgewertet und archiviert. Dieses System funktionierte zwar mehr oder weniger reibungslos, es war aber ein zeitraubendes, aufwändiges und arbeitsintensives Verfahren.[4] Heutzutage werden Firmendaten grundsätzlich in elektronischer Form, z. B. in Datenbanken, gespeichert. Es gibt viele unterschiedliche Anwendungen, welche die Datenverwaltung einfach, systematisch und strukturiert gestalten. Mit Hilfe der elektronischen Datenerfassung wird die Aufnahme und Auswertung von Daten wesentlich vereinfacht. Dies ist ein Grund dafür, dass gespeicherte Datenmengen in Unternehmen einem ständigen Wachstum unterliegen.[5] Ein Nachteil dieses Fortschritts ist jedoch, dass die Überschaubarkeit der Daten analog zur Zunahme ihres Volumens zunehmend erschwert wird. Um ihre Wettbewerbsfähigkeit nachhaltig zu sichern, ist für Unternehmen der Bedarf an Information bzw. Wissen aus Daten mit Hilfe von Datenanalyse von enorm großer Bedeutung.

In der Literatur zum Thema Datenbank wird selten unterschieden zwischen den Begriffen „Daten“ (engl.: data) und „Information“. Hier ist jedoch eine Unterscheidung dringend erforderlich, da Information das Ergebnis einer Datenanalyse ist, nicht jedoch die Daten selbst darstellt. Auch Rechenberg und Pomberger verstärken diese Meinung:

[...] Information und Daten sind nicht identisch; Daten sind Rohstoff, aus dem das immaterielle, wirtschaftliche Gut Information produziert wird [...] [6] Information ist somit eine Teilmenge von Daten, die aufgrund der Analyse bestimmter Daten gewonnen wird.[7] Als Werkzeug für diese Analyse sind verschiedene Technologien verfügbar, zum Beispiel Data Warehouse und Business Intelligenz, kurz BI (engl.: Business Intelligence).

Der Erfolg jeder Software hängt zwangsläufig von ihrer Funktionalität und Leistungsfähigkeit ab. Diese können nur durch ein reibungslos funktionierendes Programm gewährleistet werden. Die Wartung von Software ist in dieser Hinsicht ein wichtiges Tool zum Erkennen und Eliminieren von Programmierfehlern.

2.3 Softwarewartung

Die Softwarewartung beginnt nach dem Abschluss eines Softwareprojekts. Sie dient zur Fehlerkorrektur der Applikation sowie zur Verbesserung der Softwareleistung.

Die Definition des Begriffs „Softwarewartung“ nach Bommer, Spindler und Barr lautet:

Softwarewartung ist die Veränderung eines Softwareprodukts nach dessen Auslieferung, um Fehler zu beheben, Performanz oder andere Attribute zu verbessern oder Anpassungen an die veränderte Umgebung vorzunehmen. [8]

Da die Softwarewartung mit ihren zusammenhängenden Technologien auch zum Bereich der Software-Optimierung gehört, könnte sich darin auch ein Lösungsansatz zu der hier diskutierten Aufgabenstellung befinden. Eine bestimmte in der Softwarewartung verwendete Technologie ähnelt dem Verfahren der Datenanalyse, nämlich das Metriken-Verfahren (mehr hierzu in Kapitel 2.3.2). Im folgenden Abschnitt werden die Grundlagen der Softwarewartung dargestellt, worauf eine Erläuterung der ihr zugrundeliegenden Technologien folgt.

2.3.1 Grundlagen der Softwarewartung

Software-Applikationen werden älter genauso wie die Menschheit. Systeme, die über viele Jahre gewachsen sind und in die viel Zeit und Geld investiert wurde, können aufgrund ihrer Komplexität nicht einfach irgendwann durch neue Programme ersetzt werden.[9] Sie machen allerdings einen erhöhten Wartungsaufwand notwendig.

Die folgende Tabelle zeigt die wachsende Anzahl der Programmierer in der Wartung seit dem Jahr 1950. Diese Zahlen veranschaulichen die Wichtigkeit von Software-Applikationen und deren Wartung.

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 2-1: Anzahl Programmierer in der Wartung [10]

Programme werden nie völlig fehlerfrei programmiert; es gibt immer Restfehler.Dies sind unentdeckte Fehler, die in der ausgelieferten Software noch vorhanden sind. Bereits während der Entwicklung eines Programms findet man im Durchschnitt 30 bis 50 Fehler pro 1.000 Code-Zeilen (engl.: Lines of Code, LOC). In einer Anwendung mit einem Programmumfang von 1.000.000 Zeilen befinden sich durchschnittlich zwischen 1.000 und 3.000 Restfehler.

Diese Restfehler können zu folgenschweren Problemen führen, wie z. B. in der Medizintechnik. So können sie dort ernste Fehlergebnisse in der Röntgentechnologie oder bei Computertomografien auslösen. Treten Fehler in Programmen von Telefongesellschaften auf, kann das dazu führen, dass aufgrund von Systemausfällen Hunderttausende Kunden nicht mehr telefonieren oder das Internet öffnen können. Nicht auszudenken sind Programmierfehler in der Energietechnik bei Atomkraftwerken. Dadurch könnten gewaltige Katastrophen für die Menschheit eintreten.

Es wird erzählt, dass bei der Eröffnungsfahrt eines neuen Zuges in Japan der Kaiser höchstpersönlich die Starteröffnung vornehmen sollte. Als er den Startknopf betätigte passierte jedoch nichts. Was war geschehen? Es lag ein Softwarefehler vor, der im System eine Zugverspätung von 50 Jahren programmiert hatte. Ein peinlicher und ärgerlicher Zwischenfall - ausgelöst von einem Programmierfehler.

Softwarefehler treten überall auf, können aber in verschiedenen Bereichen unseres Lebens verhängnisvolle Folgen für unsere Gesellschaft haben. Doch wo liegen die Gründe für die Softwareschwäche? Warum gibt es immer wieder Restfehler bei der Software-Applikation? Hier eine Darstellung möglicher Ursachen:

Gründe der Softwareschwäche

- Die meisten Applikationen werden nicht mit der erwünschten Qualität gefertigt.
- Heutzutage stehen Software-Entwickler oft unter Zeitdruck.
- Die ursprünglichen Programmierer sind nicht mehr im Team vorhanden.
- Alte Programme werden auf neuen Versionen eines Betriebssystems eingesetzt.
- Oft werden Softwareprojekte, vor allem alte Projekte, kopiert ohne Beachtung von und Anpassung an die Anforderungen der neuen Projekte.
- Es liegen fehlendes Know-How und mangelnde Qualifikation bei den Mitarbeitern vor, die in den Projekten eingesetzt werden.
- Die Softwarefehlerbehebung wird durch fehlende oder mangelhafte Dokumentationsanwendungen erschwert.

All diese und weitere Gründe haben ein gewisses Maß an Softwareschwäche zur Folge. Um dieses Problem zu lösen, müssen drei Faktoren (Abbildung 2-1) vorhanden sein und miteinander kommunizieren und kooperieren: Mensch, Prozess und Technologie. Diese Faktoren sind notwendig, um Softwarewartung produktiv betreiben zu können. Man braucht gut ausgebildete Mitarbeiter, Prozesse müssen klar definiert sein und es müssen nützliche und wirtschaftliche Werkzeuge vorhanden sein.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2-1: Erfolgsfaktoren Softwarewartung

2.3.2 Softwarewartung-Technologien

Um die Softwarequalität zu verbessern und Restfehler in Anwendungen zu reduzieren, gibt es unterschiedliche Technologien in der Softwarewartung. In Nachschlagewerken und Fachliteratur zu den Themen Software-Engineering und Software-Qualität wird oft über Software-Metriken und Testen diskutiert. Eine sorgfältige Recherche zeigt, dass diese beiden Technologien, Metriken und Testen, die wichtigsten Verfahren in der Softwarewartung sind.

- Metriken

Qualitätskontrollen in der Softwareproduktion sind oft teuer, zeitaufwändig und verzögern die Fertigstellung eines Software-Systems. Im Idealfall sollten Tools eingesetzt werden zur Messung der Software-Qualität, die den gewünschten Qualitäts-Schwellenwert ermitteln und messen, ob dieser erreicht wurde. [11] Aus Kostengründen wird dies jedoch selten angewendet. [12]

Die Definition einer Softwaremetrik nach IEEE ist:

Eine Softwarequalitätsmetrik ist eine Funktion, die eine Softwareeinheit in einen Zahlenwert abbildet. Dieser berechnete Wert ist interpretierbar als der Erfüllungsgrad einer Qualitätseigenschaft der Softwareeinheit. [13]

Bei der Software-Messung wird ein Attribut eines Software-Produktes oder -Prozesses in einen numerischen Wert umgewandelt. Durch den Vergleich dieser Werte miteinander können Aussagen über die Softwarequalität getroffen werden. In der Metriken-Technologie werden Objekte in Zahlen „übersetzt“, da es einfacher ist, Objekte anhand von Zahlen statt auf abstrakte Art und Weise zu vergleichen. Ein Beispiel: Die Aussage „Sam ist der schwerste“ ist nicht so deutlich wie die Aussage „Sam wiegt 115 kg“. Anhand der zweiten Aussage kann man eine andere Person mit Sam in der Rubrik Gewicht effizient und einfach vergleichen.

Basili hat bereits 1984 mit dem Ziel-Frage-Metriken-Ansatz (engl.: Goal- Question-Metric-Approach, GQM) ein Qualitätsmodell entwickelt, mit dem man die geeignete Metrik aus Zahlen ableiten kann. Der Ansatz nach Basili umfasst drei Ebenen: [14]

1. Konzeptioneller Level (Ziel) Auf der ersten Ebene wird das Ziel für ein Objekt definiert. Dieses Ziel könnte zum Beispiel die Verbesserung der Softwarequalität sein.
2. Operativer Level (Fragen) Hier wird eine Reihe von Fragen angewandt, um die wesentlichen Merkmale eines bestimmten Ziels zu charakterisieren. Diese Fragen müssen geklärt werden, um letztlich überprüfen zu können, ob das gewünschte Ziel erreicht wurde.
3. Quantitativer Level (Metrik) Eine Gruppe von Daten ist mit jeder Frage verbunden, die dazu beiträgt, die Antworten auf diese Fragen zu finden.

Beispiel Goal-Question-Metric Hier soll kurz der Basili-Ansatz erläutert und die Festlegung der Anzahl der Metriken einer Software-Applikation mit Hilfe von gezielten Fragen dargestellt werden. [15] Anfangs wird das Ziel definiert, und zwar in diesem Fall die Optimierung einer Software-Applikation. Die Fragegruppen werden wie folgt zusammengefasst:

- Wie viele Fehlermeldungen gibt es?
- Wie häufig treten Fehler auf?
- Wie lange dauert die Behebung eines Fehlers?
- Wie effizient werden Fehlermeldungen gelöst?
- Wie viel kostet die Fehlerbehebung?

Zuletzt werden die Metriken zu diesen Fragen definiert; möglicherweise so:

- Verfügbarkeit des Systems
- Anzahl der Fehlermeldungen
- Häufigkeit der Fehler
- Effizienz der Abarbeitung bzw. der Mitarbeiterqualität
- Behebungsdauer

Mit Hilfe der Zahlen und Antworten auf diese Fragen kann man im Ansatz die Qualität eines Software-Produkts feststellen bzw. messen. Die Ausführung solcher Prozesse gibt es auch im Bereich IT Service Management (ITSM). Mit CobiT und ITIL, Modelle aus dem ITSM, kann man auch die Qualität einer Dienstleistung messen, indem man Fragen wie die hier gezeigten stellt (der Fragenkatalog kann dabei bis zu 300 Fragen umfassen). Die Antworten liefern sogenannte Kennzahlen oder Indikatoren (engl.: indicators). Diese Indikatoren erscheinen wiederum in der einen oder anderen Standardformel. Sie dienen zur Qualitätsmessung oder zum Treffen einer Aussage über ein Produkt oder eine Dienstleistung.

Um die Häufigkeit der auftretenden Fehler zu bestimmen, werden die gemeldeten Fehler im GQM ins Verhältnis zu einer Zeitspanne gesetzt:

Anzahl Fehlermeldungen Betriebstage

Gleichzeitig kann man die Frage der Behebungsdauer beantworten, indem man die Fehlererhaltungszeit von der Fehlerbehebungszeit subtrahiert und zugleich die Effizienz der Abarbeitung der Fehlermeldungen wie folgt berechnet:

Anzahl geschlossene Fehlermeldungen Zeit

Der Ansatz nach Basili ist ein sehr einfaches und überschaubares Modell, das die Messung von Softwarequalität ermöglicht. Die Antworten liefern verständliche Zahlen und machen eine einfache Implementierung eines bestimmten Ziels möglich. Die Nachteile dieses Ansatzes liegen aber darin, dass die Fragen oft empirischer Natur sind und sich nicht spezifisch auf das gewünschte Ziel beziehen. Darüber hinaus sind die Fragen nicht leicht zu beantworten bzw. sie liefern oft keine konkreten Zahlen. Basili hat leider keine Formel hinterlassen, die man weiter verwenden könnte und auch keine Erklärungen hinsichtlich der Verwendungsmöglichkeiten der Zahlen angegeben.

- Testen
Der Softwaretest ist heutzutage eine Verpflichtung in den meisten Softwarehäusern. Bereits während der Softwareentwicklung oder direkt nach der Fertigstellung wird ein Test der Anwendung durchgeführt. Der Softwaretest ist die am häufigsten eingesetzte Technik der Softwareanalyse. Lewis und Bassetti beschreiben dazu: Software testing is a popular risk management strategy. It is used to verify that function requirements were met. The limitation of this approach, however, is that by the time testing occurs, it is too late to build quality into the product.[16]
Bommer, Spindler und Barr äußern diesbezüglich, dass ein Softwaretest eine Qualitätsmaßnahme ist mit dem Ziel, durch Erkennen von Fehlern die Softwarequalität zu verbessern. [17] Sie sind auch der Ansicht, dass das Ziel des Testprozesses eine Minimierung des Restrisikos verbleibender Fehler und somit eine Bewertung der realen Qualität des Systems ist.
Techniken des Softwaretests
Zum Testen von Software bieten sich verschiedene neue Technologien, Werkzeuge und Verfahren an, um beste Resultate zu erzielen. Im nächsten Abschnitt werden die wichtigsten Methoden des Softwaretests dargestellt.
- Black-Box-Test
Der Black-Box-Test oder die Funktionsprüfung ist eine Testmethode, bei der sich der User nur mit den Input- und Output-Daten auseinandersetzt. Die Funktionalität des Programms oder des Systems ist dabei erst einmal zweitrangig. Ziel ist es, die Übereinstimmung eines Softwaresystems mit seiner Spezifikation zu überprüfen. [18]
- White-Box-Test
Im Gegensatz zum Black-Box-Test fokussiert man sich bei dem White-Box- Test auf die innere Funktionsweise der Softwareanwendung. Hier steht die Struktur des Systems im Mittelpunkt. Ein Vorteil des White-Box-Tests ist, dass er sehr gründlich ist und sich auf den erzeugten Code konzentriert. [19] Demzufolge ist die Methode jedoch sehr aufwändig bei einem großen System.
- Grey-Box-Test
Dies ist eine Kombination aus den beiden vorherigen genannten Methoden. Der User untersucht hierbei die Lastenhefte und kommuniziert mit dem Entwickler des Systems, um die internen Strukturen des Systems aufzudecken. [20]

Der Softwaretest und seine Technologien sind geeignete Methoden, um Fehler einer Applikation aufzudecken, nicht aber den Beweis für deren Abwesenheit zu erbringen. Ein weiterer Nachteil ist, dass die meisten Tester die Software-Anwendung nur in ihren eigenen Unternehmen prüfen. Dabei wird die Infrastruktur anderer Unternehmen, die später die fertige Anwendung erhalten, und deren ständige Anforderungsänderungen nicht berücksichtigt. Doch was genau versteht man unter dem Begriff „Fehler“? Im nächsten Abschnitt folgt eine Definition.

2.4 Fehlermuster und ihre Bedeutung

Der Begriff „Fehler“ wird in der Literatur zum Thema Software-Engineering ausführlich behandelt und hat verschiedene Bedeutungen. Nach IEEE ist ein Fehler „[...] die Differenz zwischen den wahren, d. h. theoretisch korrekten, Werten und den durch einen Computer berechneten Ergebnissen oder einfach eine Nichterfüllung einer festgelegten Anforderung“.[21] Abgesehen von der spezifischen Bedeutung des Begriffs „Fehler“ tritt er auch als Oberbegriff in verschiedenen Situationen auf:

- Fehlerwirkung (engl.: failure)

Laut der Definition des Begriffs „Fehlerwirkung“ von Bommer, Spindler und Barr liegt eine solche vor, wenn in einem Softwaresystem Fehler auftreten, die weder durch Absturz noch Alterszustand, wie bei einem physikalischen Gerät, auftreten, sondern bereits seit Entwicklung des Programms im System vorhanden sind. [22] Sie offenbaren sich aber erst bei der Ausführung der Software. Wenn dies auftritt, spricht man von Fehlerwirkung.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2-2: Fehlhandlung, Fehlerzustand und Fehlerwirkung

- Fehlhandlung (engl.: error)
Eine Fehlhandlung wird beispielsweise durch eine fehlerhafte Programmierung einer Person oder die fehlerhafte Bedienung eines Anwenders ausgelöst. Dadurch gerät das Programm in einen Fehlerzustand.
- Fehlerzustand (engl.: fault)
Zwischen der Fehlerwirkung und ihrer Ursache muss unterschieden werden. So ist der Grund für eine Fehlerwirkung der Fehlerzustand. Dies zeigt sich beispielweise in einer inkorrekten Anweisung, einem inkorrekten Teilprogramm oder einer falschen Datendefinition.

Diese drei Begriffe der Fehleranalyse sind also Teil einer logischen Abfolge. In Abbildung 2-2 wird der Zusammenhang zwischen Fehlerwirkung, Fehlhandlung und Fehlerzustand bildlich dargestellt.

Auch im Bereich der Datenmuster taucht der Begriff „Fehlermuster“ auf, da Fehler auch Daten sind. Viele Wissenschaftler haben diesen Begriff untersucht, um Fehler im Code einer Applikation zu finden. Eine eingehende Recherche in diesem Bereich führt zu der Erkenntnis, dass das Gebiet des Data Minings gegenwärtig eine der wichtigsten Technologien im Bereich der Datenanalyse bzw. der Fehlermuster-Analyse ist, wie im nächsten Kapitel detailliert beschrieben wird.

Darüber hinaus wird deutlich, dass die meisten Wissenschaftler im Bereich Data Mining sich maßgeblich auf die Analyse von Daten und deren unterschiedliche Typen fokussiert haben. Über das Thema „Logfile Mining“ liegen dagegen bisher keine wissenschaftlichen Forschungsarbeiten vor. Dieses Gebiet des Logfile Minings, eine sehr innovative Technologie, wird erstmalig in dieser Studienarbeit behandelt.

Die meisten Forscher haben Data Mining angewandt, um beispielsweise Daten aus Datenbanken, dem Web und Software-Anwendungen zu analysieren. Dabei muss man vor der Auseinandersetzung mit dem Bereich Data Mining zunächst einen Exkurs in das Gebiet der Softwarewartung machen, um zu sehen, wie diese Forscher ihre Daten analysieren und warten, denn das Verfahren der Softwarewartung ähnelt dem des Data Minings.

2.5 Zusammenfassung

Software-Applikationen gehören zu den wichtigsten Mitteln in unserem computergestützten Alltag und aufgrund dieser Tatsache müssen die Applikationen stets mit Sorgfalt gepflegt werden. Auf dem Gebiet der Softwarewartung könnte man für diese Applikationspflege viele Technologien wie Metriken und Testen anwenden. Leider sind aber alle diese Technologien mit Fokus auf den Softwarecode erstellt worden. Dadurch haftet ihnen eine gewisse Einseitigkeit an. Beim Softwaretest ist es von Nachteil, dass die Applikationen zumeist nur beim Software-Hersteller getestet werden, ohne Beachtung der individuellen Anforderungen verschiedener Unternehmen. Dies ist aber erforderlich als wichtige Testphase, bevor die Anwendung verkauft wird.

Fehler können in unterschiedlichen Kontexten auftreten, wie Fehlhandlung, Fehlerwirkung und Fehlerzustand. In dieser Arbeit sind alle Fehlerarten von Bedeutung, die von einer Applikation, einem User oder einem System verursacht wurden. Eine sorgfältige Analyse zeigt, dass das Gebiet Data Mining mit seinen vielen Technologien und Verfahren das geeignetste Verfahren für die Daten- bzw. Fehlermustererkennung und Datenanalyse ist. Im nächsten Kapitel wird dieses Gebiet detailliert erörtert.

[...]


[1] IEEE Std. 612.12-1990: IEEE Standard Glossary of Software Engineering Terminology (ANSI)

[2] (Stahlknecht & Hasenkamp, 1999)

[3] (Stahlknecht & Hasenkamp, 1999)

[4] (Rechenberg & Pomberger, 2006)

[5] (Orhanovic, Grodtke, & Tiefenbacher, 2004)

[6] (Rechenberg & Pomberger, 2006)

[7] (Staud, 2005) Hierzu ein Beispiel: Eine Kaufhaus-Kette bietet ein Sonderangebot in einem bestimmten Zeitraum an. Dabei soll herausgefunden werden, wie oft Artikel A des Sortiments an einem bestimmten Ort X verkauft wurde. Hierbei wird nur eine Information benötigt, nämlich die Anzahl des verkauften Artikels A am Standort X. Alle anderen Daten sind nicht relevant für diesen Zweck. Das heißt, die gewünschte Information ist eine einzige Zahl aus einem riesigen Datensatz. Alle anderen vorliegenden Daten werden nicht als Information in diesem Fall betrachtet.

[8] (Bommer, Spindler, & Barr, 2008). Vgl. hierzu auch IEEE Std. 612.12-1990: IEEE Standard

[9] Glossary of Software Engineering Terminology (ANSI)

[10] (Sommerville, 2006)

[11] Dieser Prozess ähnelt dem Prozess der Qualitätsmessung im Bereich des IT Service Managements und ITIL. Es gibt bei beiden Prozessen Kennzahlen anhand derer man die gewünschte Qualität überprüfen kann. Dies wiederum hat Analogien zur Technologie der Datenanalyse, also dem Kernbereich der vorliegenden Abhandlung.

[12] IEEE Std. 1061-1992: IEEE Standard for a Software Quality Metrics Methodology (ANSI).

[13] (Lewis, Bassetti, & Lewis, 2004)-8. Übersetzung: Der Softwaretest ist eine beliebte Strategie im Risiko-Management. Er wird angewandt, um zu überprüfen, ob die Funktionsanforderungen erfüllt wurden. Dieser Ansatz hat jedoch Einschränkungen, da es zum Zeitpunkt der Prüfung zu spät ist, um dem Produkt mehr Qualität zu verleihen.

[14] (Bommer, Spindler, & Barr, 2008)

[15] (Lewis, Bassetti, & Lewis, 2004)

[16] Ibid.

[17] Ibid.

[18] IEEE Computer Dictionary - Compilation of IEEE Standard Computer Glossaries, 610-1990

[19] Ibid.

[20] Ibid.

[21] IEEE Computer Dictionary – Compilation of IEEE Standard Computer Glossaries, 610-1990

[22] (Bommer, Spindler, & Barr, 2008)

Ende der Leseprobe aus 105 Seiten

Details

Titel
Analyse und Implementierung eines Algorithmus zur Identifizierung von Fehlermustern in Software-Applikationen
Hochschule
Fachhochschule Worms
Note
1.0
Autor
Jahr
2010
Seiten
105
Katalognummer
V195342
ISBN (eBook)
9783656211372
ISBN (Buch)
9783656213437
Dateigröße
4166 KB
Sprache
Deutsch
Schlagworte
analyse, implementierung, algorithmus, identifizierung, fehlermustern, software-applikationen
Arbeit zitieren
Walid El Sayed Aly (Autor), 2010, Analyse und Implementierung eines Algorithmus zur Identifizierung von Fehlermustern in Software-Applikationen, München, GRIN Verlag, https://www.grin.com/document/195342

Kommentare

  • Noch keine Kommentare.
Im eBook lesen
Titel: Analyse und Implementierung eines Algorithmus zur Identifizierung von Fehlermustern in Software-Applikationen



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden