Software-Metriken. Moderne Softwareentwicklung SS Software-Metriken. Wolfgang Globke. Betreuer: Olaf Seng. 18. Juni 2005
|
|
- Sophie Goldschmidt
- vor 8 Jahren
- Abrufe
Transkript
1 Seminar Moderne Softwareentwicklung SS 2005 Software-Metriken Wolfgang Globke Betreuer: Olaf Seng 18. Juni 2005 Zusammenfassung Software-Metriken liefern Kennzahlen von Programmelementen oder Systemen, die bei der Beurteilung der inneren Qualität eines Software-Produktes helfen sollen, also derjenigen Qualitätsaspekte, die für den Software-Entwickler relevant sind. Da eine Metrik nur eine ganz bestimmte Eigenschaft des Produktes misst, muss man ihren Wert geeignet interpretieren, um Aussagen über die Qualität machen zu können. Für eine Metrik ist also experimentell nachzuweisen, dass sie in zuverlässiger Weise das misst, was sie messen soll. Wir werden hier einige der klassischen Metriken und einige Metriken für objektorientierte Systeme kennenlernen. Insbesondere bei letzteren werden wir sehen, dass sie dann besonders mächtig sein können, wenn man sie geschickt kombiniert und in einem geeigneten Qualitätsmodell auswertet. 1
2 Inhaltsverzeichnis 1 Einführung 3 2 Metriken in der Qualitätssicherung Qualität in der Softwaretechnik Qualitätsmodelle und Metriken Eigenschaften von Metriken Axiomensysteme für Metriken Klassifikation von Metriken Schwierigkeiten beim Einsatz von Metriken Einige klassische Metriken Lines-Of-Code Die Halstead-Metrik Die McCabe-Metrik Objektorientierte Metriken Kopplung Kohäsion Vererbung Größe und strukturelle Komplexität Anwendung: Erkennen von Problemen im objektorientierten Entwurf Strategien Das Factor-Strategy-Modell Ausblick und Zusammenfassung 15 2
3 1 Einführung Eines der Ziele jeglicher Software-Entwicklung muss es sein, möglichst fehlerfreie und qualitativ hochwertige Produkte zu entwickeln. Es ist die Aufgabe der Qualitätssicherung, die wünschenswerten Qualitätsziele zu ermitteln und geeignete Maßnahmen zu treffen, um diese Ziele zu erreichen. Dies umfasst insbesondere das Prüfen von Produkten und Zwischenergebnissen auf vorher festgelegte Qualitätsmerkmale. Software-Metriken stellen dabei ein wichtiges Hilfsmittel der Qualitätssicherung dar. Sie ermöglichen das Auffinden kritischer Teile des entwickelten Systems und können sogar konkrete Hinweise auf Verbesserungsansätze liefern, wenn sie nur in einem geeigneten Rahmen zur Anwendung kommen. In Kapitel 2 werden wir zunächt in sehr allgemeiner Form erklären, was wir unter Metriken verstehen und welche Eigenschaften sie haben können. Anschließen betrachten wir in den Kapiteln 3 und 4 einige Beispiele von verbreiteten Metriken. In Kapitel 5 werden wir sehen, wie man zu einem konkreten System von Metriken kommt, das es ermöglicht, Schwächen im Entwurf eines objektorientierten Systems aufzuspüren. 2 Metriken in der Qualitätssicherung In diesem Abschnitt werden wir Metriken einführen, ihre Rolle bei der Qualitätssicherung von Software erläutern und einige Eigenschaften von Metriken betrachten. Wenn wir im Folgenden von (Programm-)Elementen sprechen, so meinen wir damit die grundlegenden Strukturen einer Programmiersprache, etwa Klassen bei objektorientierten Sprachen oder Funktionen und Module bei imperativen Sprachen. Wir identifizieren dabei ein Programmelement stets mit seinem Quellprogramm. Das System entspricht der Gesamtheit aller Programmelemente. 2.1 Qualität in der Softwaretechnik In der Qualitätsicherung ist man naturgemäß daran interessiert, die Qualität eines Software- Produktes in irgendeiner Weise greifbar zu machen. Eine formale Definition scheint wenig sinnvoll, da dieser Begriff sehr abstrakt ist und es viele verschiedene Auffassungen darüber gibt, was Qualität ist. So ist es etwa denkbar, dass ein Programm technisch hervorragend umgesetzt ist, aber seine Funktionalität nicht den Ansprüchen des Kunden genügt. Die Entwickler und die Abnehmer des Programms würden seine Qualität dementsprechend unterschiedlich einschätzen. In dieser Arbeit betrachten wir die innere Qualität, d.h. die Qualität vom Standpunkt des Entwicklers aus gesehen. Die zentrale Frage ist dabei, wie leicht sich die Entwicklungsarbeit an dem Software-Produkt heute und zukünftig gestaltet. Es geht also beispielsweise um Aspekte wie Verständlichkeit und Wiederverwendbarkeit der einzelnen Teile des Systems. 3
4 2.2 Qualitätsmodelle und Metriken Um die Qualität eines Software-Produktes beurteilen zu können, benötigt man ein Qualitätsmodell, in dem die einzelnen Aspekte der Qualität greifbar gemacht werden. Ein solches Qualitätsmodell ist das Factors-Criteria-Metrics-Modell, kurz FCM- Modell. Hierbei werden einzelne relevante Qualitätsmerkmale (engl. factors) herausgearbeitet, die widerspiegeln sollen, wie die Qualität vom Benutzer empfunden wird. Die Qualitätsmerkmale sollen sich wiederum in leichter zu messenden Teilmerkmale (engl. criteria) aufteilen lassen. Die einzelnen Qualitätsmerkmale und ihre Teilmerkmale kann man sich dabei in einer baumähnlichen Struktur angeordnet vorstellen. Die Teilmerkmale sollen dabei in Beziehung zu gewissen messbaren Eigenschaften eines Programmelementes stehen. Metriken sind Funktionen, die bestimmten Eigenschaften eines Programmelementes, das in Form seiner Quelldatei vorliegt, numerische Werte zuweisen. Die folgende Grafik aus [Mar02] zeigt dies exemplarisch für das Qualitätskriterium Maintainability. Factor Maintainability Criteria Analyzability Changeability Stability Testability Metrics WMC NBC DepMeth FanIn FanOut COMF Encap Usable Special Autonom NOC COBC CDUsers Testab CDUsed Bei der Auswertung wird man zuerst für jedes Teilmerkmal einen Wert berechnen, der sich als Funktion aus den von den Metriken gemessenen Werten ergibt. Beim Aufstellen dieser Funktion muss man sich auf die Erfahrung der Entwickler verlassen. Diese müssen die gemessenen Werte interpretieren können, um Schlüsse daraus zu ziehen, in welcher Weise ein Teilmerkmal ausgeprägt ist. Daraus leitet man eine heuristische Bewertungsfunktion für das entsprechende Merkmal ab. Anhand der Werte dieser Funktion kann man dann ein Qualitätsurteil für das Teilmerkmal bestimmen. In analoger Weise errechnet man aus den Bewertungen der Teilmerkmale eine Bewertung des übergeordneten Qualitätsmerkmals. 4
5 Die Ergebnisse für die einzelnen Qualitätsmerkmale können in einem Bericht zusammengefasst werden, aus dem zu entnehmen ist, in welchen Bereichen die Qualität zu wünschen übrig lässt und welche Elemente dafür verantwortlich sind. In Abschnitt 5.2 werden wir ein modifiziertes FCM-Modell kennenlernen, das zusätzlich noch Informationen über Verbesserungsansätze liefert. 2.3 Eigenschaften von Metriken Unsere Definition einer Metrik ist recht vage. Dies kommt daher, dass wir Metriken nicht durch ihre Eigenschaften definiert haben, sondern durch die Aufgabe, die sie bei der Qualitätsbeurteilung erfüllen sollen. Wir betrachten nun einige Eigenschaften, die Metriken idealerweise erfüllen sollten, um ihrer Aufgabe gerecht zu werden. Will man eine bestimmte Eigenschaft E messen, so ist ein intuitives Verständnis dieser Eigenschaft notwendig, um eine empirische Ordnung zu erhalten, die das Verhältnis zweier (vergleichbarer) Programmelemente P 1 und P 2 bezüglich dieser Eigenschaft beschreibt. Ist die gemessene Eigenschaft beispielsweise Länge des Programms in Codezeilen (LOC, siehe Abschnitt 3.1), so würde man als empirische Ordnung ist länger als erhalten. Ist m eine Metrik, die E misst, so ist es wünschenswert, dass die gemessenen numerischen Werte m(p 1 ) und m(p 2 ) die empirische Ordnung zwischen P 1 und P 2 wiedergeben, oder formal ausgedrückt m(p 1 ) < m(p 2 ) P 1 P 2. Dies ist die sogenannte Darstellungsbedingung, weitere Ausführungen dazu finden sich in [Fen94]. Die Validierung von m ist die empirische Überprüfung, ob m die Darstellungbedingung erfüllt. Das genaue Vorgehen bei der Validierung hängt nicht zuletzt davon ab, welchen Zweck die Metrik erfüllen soll. Eine angemessene Erläuterung wäre hier zu umfangreich, weswegen wir dafür auf [BBM95], [Fen90] und [KC85] verweisen. Viele gängige Software-Metriken erfüllen die Darstellungsbedingung jedoch nicht. Dies bedeutet keineswegs, dass diese Metriken unbrauchbar sind, jedoch sind die von ihnen gelieferten Messungen oft nur als grobe Anhaltspunkte zu sehen. Beispiele hierfür sind die Metriken aus Kapitel 3. Da diese Metriken aber oft sehr einfach umzusetzen und für den praktischen Bedarf hinreichend genau sind, erfreuen sie sich dennoch großer Beliebtheit. In [Bal98] werden weitere wünschenswerte Eigenschaften von Metriken aufgezählt. Objektivität Die Metrik sollten unabhängig von subjektiven Einflüssen des Messenden sein. Zuverlässigkeit Die Metrik liefert bei gleichen Voraussetzungen immer das gleiche Ergebnis. Normierung Die Metrik bildet auf eine Skala ab, die den Vergleich verschiedener Messergebnisse erlaubt. 5
6 Wirtschaftlichkeit Die Messung sollte mit möglichst geringem Aufwand durchzuführen sein. Nützlichkeit Die gemessene Eigenschaft sollte in einem Zusammenhang mit einem Qualitätsmerkmal stehen und es sollte (heuristische) Regeln dafür geben, wie man aus dem Messwert auf die Qualität zurückschließt. Wie stark eine dieser Eigenschaften für eine Metrik ausgeprägt sein muss, ist auch vom Verwendungszweck abhängig. 2.4 Axiomensysteme für Metriken Mehrere Autoren haben versucht, die Ansprüche, die man an Metriken hat, durch ein Axiomensystem zu formalisieren. Das attraktive an diesem Ansatz ist, dass man logisch überprüfbare Kriterien erhält, eine Metrik zu validieren (und sich im bequemsten Fall die experimentelle Validierung ersparen kann). Am bekanntesten davon sind wohl die von Weyuker in [Wey88] vorgeschlagenen Axiome. Diese Axiomensysteme beschreiben aber bestenfalls notwendige und keine hinreichenden Bedingungen für Metriken, so dass sie in der Regel weder bei der Bestimmung neuer Metriken noch bei der Validierung bereits bekannter Metriken hilfreich sind. Die meisten nichttrivialen Axiomensysteme haben sich auch als in sich widersprüchlich herausgestellt, siehe [Fen94] und [KS97]. 2.5 Klassifikation von Metriken Es gibt verschiedene Dimensionen, nach denen sich Metriken klassifizieren lassen. 1. Eine direkte Metrik m dir berechnet einen Wert m dir (P) für eine zu untersuchende Eigenschaft eines Programmelementes P. Eine indirekte Metrik m ind ergibt sich als Funktion m ind = f(m dir 1,..., m dir ) von direkten Metriken. k So ist beispielsweise die Anzahl der Fehler in einem Programm ist eine direkte Metrik, aus der man die Anzahl der Fehler pro tausend Quellcodezeilen als indirekte Metrik berechnen kann. 2. Die Metriken unterscheiden sich durch ihren Abstraktionsgrad. Welche Stufen es dabei im einzelnen gibt, hängt von dem konkreten Software-Produkt ab bzw. davon, wie es entwickelt wird. So könnte man beispielsweise beim objektorientierten Entwurf folgende Stufen unterscheiden: Systemebene: Diese Metriken berücksichtigen die Gesamtheit aller Klassen oder auch Module. Sie sind in der Regel indirekte Metriken, die sich aus Metriken von niederen Abstraktionsstufen berechnen lassen. Modulebene: Lässt sich das ganze System in Module aufteilen, so kann man Teile davon betrachten, die logisch zusammenhängen. 6
7 Klassenebene: Auf dieser Ebene werden Zusammenhänge, wie etwa die Vererbungsstrukturen, zwischen den Klassen innerhalb eines Moduls betrachtet. Methodenebene: Auf dieser Ebene werden Funktionalität, Umfang und Komplexität einer einzelnen Klasse untersucht. 2.6 Schwierigkeiten beim Einsatz von Metriken Beim Einsatz von Metriken gibt es eine Reihe von Schwierigkeiten, die teilweise durch unsachgemäße Anwendung zustandekommen, teilweise aber auch fundamentale Probleme sind. Das erste ist sicherlich der Fall, wenn man ungenau definierte Metriken verwendet oder nicht in der Lage ist, ein Messergebnis sinnvoll zu interpretieren. Wie in [Jon94] beschrieben ist es beispielsweise sinnlos, die Lines-Of-Code-Metrik (Abschnitt 3.1) zur Beurteilung zweier Software-Produkte heranzuziehen, die in sehr unterschiedlichen Programmiersprachen wie Assembler und Ada entwickelt wurden. Zu den fundamentalen Problemen gehört beispielsweise, dass man für eine bestimmte Eigenschaft, die man messen will, keine sinnvolle (berechenbare) Metrik finden kann. So gibt es keine bekannte Metrik, die die Komplexität eines Programms misst und dabei sämtliche Aspekte dieses Begriffs berücksichtigt. Vielmehr gibt es viele Metriken, die nur einen ganz bestimmten Aspekt der Komplexität messen, wie etwa die Metriken aus 3. 3 Einige klassische Metriken Den sehr allgemein gehaltenen Begriffen aus Abschnitt 2 soll nun durch einige Beispiele Leben eingehaucht werden. 3.1 Lines-Of-Code Die Lines-Of-Code-Metrik, kurz LOC, misst die Anzahl der Zeilen im Quellcode eines Programms. Dabei liegt die Annahme zugrunde, dass die Unübersichtlichkeit des Quellcodes mit seiner Länge ansteigt. Es liegt auf der Hand, dass diese Annahme nur eine sehr grobe Näherung der Realität darstellt. Zwei Zeilen Quellcode können sich beispielweise in ihrer Übersichtlichkeit stark unterscheiden, oder eine zusätzliche Kommentarzeile kann die Übersichtlichkeit fördern, zu viele nichtssagende Kommentarzeilen jedoch können kontraproduktiv sein. Von LOC gibt es daher mehrere Varianten, in denen etwa die Kommentarzeilen nicht berücksichtigt werden oder anstelle der Zeilen die Anweisungen im Quellcode gezählt werden. Vergleicht man also Programmelemente, die mit LOC gemessen wurden, so muss man stets darauf achten, dass die selbe Variante von LOC gemeint ist. Es ist offensichtlich, dass LOC nur in sehr eingeschränktem Maße dafür geeignet ist, Quellcode in verschiedenen Programmiersprachen zu vergleichen. Jones zeigt in [Jon94] an einen Beispiel, dass die erwarteten Kosten pro Codezeile beim Umstieg von Assembler 7
8 auf Ada83 ansteigen, wenn man LOC als Grundlage der Berechnung nimmt, obwohl die Produktivität in Wirklichkeit um ein Vielfaches erhöht wird. 3.2 Die Halstead-Metrik Unter dem Namen Halstead-Metrik fasst man eine Reihe von Kennzahlen zusammen, die Größe und Komplexität des Codes widerspiegeln sollen. Diese Kennzahlen basieren auf der Anzahl der unterschiedlichen im Quellcode verwendeten Operanden und Operatoren und auf der Gesamtzahl der verwendeten Operanden und Operatoren. Als Operator wird jedes Symbol oder Schlüsselwort bezeichnet, dass eine Aktion kennzeichnet, z.b. +, if, (. Operanden sind alle übrigen Symbole, also Variable, Sprungmarken, Konstanten usw. Zur Verdeutlichung betrachten wir ein kleines Programm, das Fakultäten berechnet. Die Operatoren sind fett gedruckt, die Operanden unterstrichen. int fak(int n) { if (n == 0) return 1; return n * fak(n - 1); } Zur Halstead-Metrik gehören folgende Kennzahlen: n = Anzahl der unterschiedlichen Operatoren m = Anzahl der unterschiedlichen Operanden N = Gesamtzahl der verwendeten Operatoren M = Gesamtzahl der verwendeten Operanden Daraus ergeben sich weitere Kennzahlen: M +N ist die Länge der Implementierung, m+n entspricht der Größe des verwendeten Vokabulars. Als Schwierigkeit, ein Programm zu lesen, ist S = n 1 2 M m zu verstehen. Der Quotient M beschreibt, wie oft ein Operand im Mittel verwendet wird. m Die Halstead-Metrik hat den Vorteil, dass sie sehr leicht zu ermitteln ist. Allerdings gibt es hier ähnliche Probleme wie bei LOC: Die Vergleichbarkeit von Software, die in verschiedenen Programmiersprachen geschrieben wurde, ist im Allgemeinen nicht gegeben, und die Interpretation der Größe S als Schwierigkeit setzt die grob vereinfachende Annahme voraus, dass diese nur von n, m und M abhängt. Dabei wird nur der lineare Aufbau des Quellcodes berücksichtigt, nicht aber Verschachtelungen oder Verzweigungen beim Programmablauf. 8
9 3.3 Die McCabe-Metrik Mit der McCabe-Metrik will man die strukturelle Komplexität eines Programmes ermitteln, d.h. man will insbesondere auch Verzweigungen beim Programmablauf berücksichtigen. Dabei orientiert man sich an einem Kontrollflussgraphen G und drückt die Komplexität durch die sogenannte zyklomatische Zahl zyk(g) = e v + 2c, wobei e die Anzahl der Kanten von G ist, v die Anzahl der Knoten und c die Anzahl der verbundenen Programmelemente ist. Ein verbundenes Programmelement ist hierbei ein einzelner (Teil-)Kontrollflussgraph, der eine Prozedur oder Funktion darstellen kann. Ein Programm, das ohne Aufruf von Prozeduren oder Funktionen abläuft, würde demnach aus einem einzigen verbundenen Element bestehen (also c = 1). In diesem Fall kann man die zyklomatische Zahl allein durch die Anzahl b der Verzweigungen im Graphen bestimmen: zyk(g) = b + 1. Schleife Auswahl zyk(schleife) = = 2 zyk(auswahl) = = 2 Auch die McCabe-Metrik zeichnet sich durch ihre leichte Berechenbarkeit aus. Aber auch hier stellt die Reduktion der Komplexität auf eine einzige Zahl eine grobe Vereinfachung dar. Jede Verzweigung im Quellcode trägt im gleichen Maße zur gemessenen Komplexität bei, obwohl sicher nicht jede Verzweigung im gleichen Maße zur intuitiv empfundenen Komplexität des Programms beiträgt. 4 Objektorientierte Metriken Die klassischen Metriken aus Abschnitt 3 entspringen einer funktionsorientierten Sichtweise der Programmierung. Bei der objektorientierten Entwicklung kommen aber einige neue Freiheitsgrade hinzu, die die Komplexität eines Systems beeinflussen, wie etwa die Abstraktion in Klassen, 9
10 Vererbung, Kapselung und Polymorphismus. Diese Aspekte werden von den klassischen Metriken nur unzulänglich berücksichtigt. Wendet man etwa die McCabe-Metrik auf die Methoden einer Klasse an, so wird man häufig den minimalen Wert zyk(g) = 1 erhalten, da die meisten Methoden nur wenige und einfach strukturierte Anweisungen enthalten. Die Komplexität ergibt sich vielmehr aus der Anzahl und dem Zusammenspiel der Klassen und Methoden. Um der veränderten Lage Herr zu werden, wurde eine Vielzahl von auf objektorientierte Systeme spezialisierten Metriken vorgeschlagen. Diese Metriken sind in der Regel einfache Zählmetriken, die bei geeigneter Kombination für verschiedene Messziele von Nutzen sein können. Solche Ziele könnten etwa sein, gegebenen Code besser zu verstehen, wiederverwendbare Elemente zu identifizieren oder Schwächen im objektorientierten Entwurf aufzudecken. Bei der Auswahl der in den folgenden Abschnitten vorgestellten Metriken orientieren wir uns an [Mar02] und den dort zitierten Quellen. Wir ordnen die Metriken denjenigen Aspekten der Objektorientierung zu, die die Komplexität maßgeblich beeinflussen: Kopplung, Kohäsion, Vererbung und strukturelle Komplexität. 4.1 Kopplung Die Kopplung beschreibt die Verbundenheit der Elemente (etwa Klassen oder Pakete) eines Systems. Eine starke Kopplung entspricht starken Abhängigkeiten zwischen den Elementen, was die Wiederverwendung erschwert. Auch die Verständlichkeit wird beeinträchtigt, da für das Verständnis einer Klasse das Verständnis vieler anderer Klassen vorausgesetzt wird. Daher ist eine niedrige Kopplung wünschenswert. Coupling Between Objects (CBO) zählt die Anzahl der Klassen, auf deren Dienst eine bestimmte Klasse zugreift. Dies ist unabhängig davon, wie oft auf eine andere Klasse zugegriffen wird. Number Of Services (NOS) zählt die Anzahl der Dienste (d.h. der verschiedenen aufgerufenen Methoden) die eine bestimmte Klasse von anderen Klassen in Anspruch nimmt. Number Of Accesses (NOA) zählt alle Zugriffe einer bestimmten Klasse auf andere Klassen. 4.2 Kohäsion Unter Kohäsion oder Bindung verstehen wie den Grad an Verknüpfung zwischen den einzelnen Teilen eines Programmelements (also in der Regel einer Klasse). Eine niedrige Kohäsion lässt erfahrungsgemäß darauf schließen, dass in einer Klasse mehrere Funktionalitäten implementiert wurden. Solche Klassen enthalten in der Regel viele Methoden, die semantisch nicht zusammenhängen. Dies erschwert einerseits das Verständnis der 10
11 Klasse, andererseits aber auch die Wiederverwendbarkeit. Daher ist eine hohe Kohäsion wünschenswert. Lack Of Cohesion in Methods (LCOM) soll ein Maß für den Mangel an Kohäsion sein. Es ist definiert durch die Differenz zwischen der Anzahl der Paare von Methoden einer Klasse, die eine gemeinsame Instanzvariable verwenden, und der Anzahl der Paare, die das nicht tun. Wie sich herausstellt, ist diese Definition nicht ganz zufriedenstellend, weshalb inzwischen mehrere Verbesserungen für diese Metrik vorgeschlagen wurden. Eine dieser Verbesserung legt den Begriff einer perfekten Kohäsion zugrunde und misst LCOM als prozentualen Anteil an der perfekten Kohäsion. Tight Class Cohesion (TCC) ist die Anzahl derjenigen Methoden einer Klasse, die mindestens eine gemeinsame Instanzvariable verwenden. Loose Class Cohesion (LCC) ist die Anzahl derjenigen Methoden einer Klasse, die mindestens eine gemeinsame Instanzvariable verwenden oder die durch Aufruf anderer Methoden indirekt eine gemeinsame Instanzvariable verwenden. 4.3 Vererbung Es ist wichtig, die Vererbungsstruktur zu untersuchen, wobei man die Tiefe der Vererbungshirarchie und die Anzahl der Knoten misst. Eine Idee dahinter ist, dass eine gut strukturierte Klassenhierarchie eher ein Wald von Vererbungsbäumen ist, als eine lange Kette von erbenden Klassen. Anders ausgedrückt hat eine Klasse, die in der Vererbungshierarchie sehr tief steht, eine größere Chance, fehlerhaft zu sein, weil sie viel Funktionalität von ihren Vorgängern erbt. Die Messung der Vererbungsstruktur kann sowohl auf der Klassenals auch auf der Systemebene sinnvoll sein. Depth Of Inheritance (DIT) ist die Anzahl der Oberklassen einer bestimmten Klasse. Auf Systemebene kann man eine gemittelte DIT bestimmen. Number Of Descendants (NOD) ist die Anzahl aller Klassen, die eine bestimmte Klasse als Oberklasse haben. Reuse Ratio ist auf der Systemebene das Verhältnis der Anzahl der Oberklassen zur Gesamtzahl aller Klassen. Ein Wert nahe bei 1 deutet auf einen lineare Vererbungskette und folglich auf schlechtes Design hin. Ein Wert nahe bei 0 lässt auf eine sehr flache Vererbungshierarchie schließen. Specialization Ratio ist das Verhältnis der Anzahl aller Unterklassen zur Anzahl aller Oberklassen. 4.4 Größe und strukturelle Komplexität Anhand dieser Metriken lassen sich einerseits Klassen ausfindig machen, die eine wichtige Rolle im Entwurf spielen, aber auch Klassen, die überdimensioniert oder zu komplex sind. 11
12 Weighted Methods per Class (WMC) misst die Komplexität einer Klasse K mit n Methoden, indem jeder Methode ein Gewicht κ i zugeordnet und über die Methoden summiert wird: n WMC(K) = κ i. Dabei soll für die Bestimmung von κ i ein je nach Anwendung sinnvolles Komplexitätsmaß verwendet werden. Number Of... Metriken, die Anzahl und Umfang von bestimmten Elementen des Systems messen, sind immer nützlich. Man kann auf der Systemebene etwa die Anzahl der Klassen in Relation zur Anzahl der abstrakten und nicht-abstrakten Klassen bestimmen, auf der Methodenebene kann man die Länge von Methoden messen um herauszufinden, ob eine Klasse zu große Methoden hat, um noch hinreichend objektorientiert zu sein. Eine zu große oder zu niedrige Zahl an Methoden in einer Klasse kann ein Hinweis darauf sein, dass gewissen Klassen aufgeteilt bzw. mit anderen Klassen zusammengelegt werden sollten. i=1 5 Anwendung: Erkennen von Problemen im objektorientierten Entwurf In diesem Abschnitt wollen wir eine Vorgehensweise für den praktischen, zielorientierten Einsatz von Metriken betrachten. Wir wählen als instruktives Beispiel das Vorgehen, das Marinescu in seiner Dissertation [Mar02] beschreibt. Sein Vorgehen hat zum Ziel, in einem objektorientierten System durch geschickte Kombination von Metriken zu sogenannten Erkennungsstrategien (Abschnitt 5.1) die Schwächen im Entwurf ausfindig zu machen. Dabei liefert eine Strategie eine Menge von Elementen des Systems, die ein bestimmtes Defizit aufweisen. Das zugrundeliegende Qualitätsmodell soll darüberhinaus noch Ansätze für Verbesserungen liefern. Unter einem Entwurfsproblem verstehen wir im Folgenden eine strukturelle Eigenschaft eines Programmelementes, die abweicht von gewissen Kriterien, die eine Regel für den guten Entwurf charakterisieren. Eine Fülle von konkreten Beispielen findet sich in [Mar02]. 5.1 Strategien Eine der wesentlichen Schwierigkeiten bei der Anwendung von Metriken ist die Interpretation der Messergebnisse im Hinblick auf ein bestimmtes Messziel, in unserem konkreten Fall das Erkennen von Entwurfsproblemen. Da eine einzelne Metrik für sich genommen in der Regel nur eine geringe Aussagekraft hat, stellt sich die Frage, wie Metriken geeignet zu kombinieren sind, um relevante Informationen zu liefern. 12
13 Unter einer Erkennungsstrategie s zur Aufdeckung eines bestimmten Entwurfsproblems verstehen wir hier eine Liste m 1,..., m n von Metriken mit jeweils einem zugehörigen Datenfilter F i und eine Verknüpfungsvorschrift für die Metriken. Dies soll im Folgenden genauer erläutert werden. Dazu sei K die Menge der Programmelemente auf einer bestimmten Abstraktionsebene des zu untersuchenden Systems (wir können uns K als die Menge der Klassen des Systems vorstellen, aber das Vorgehen ist auch auf jeder anderen Abstraktionsebene denkbar). Der zur Metrik m i gehörige Filter F i liefert diejenigen Elemente F i (K) K, die außergewöhnliche Werte hinsichtlich m i aufweisen. Ein Filter kann beispielsweise die Elemente mit den größten bzw. kleinsten Werten für m i liefern ( Higher Than, Bottom Values usw.), oder Elemente, deren Werte in einem vorgegebenen Intervall liegen ( Between(x,y) ). Damit die Metriken in ihrer Kombination die Eigenschaften einer Entwurfsregel (bzw. ihrer mangelhaften Anwendung) wiedergeben können, benötigen wir zusätzlich eine Verknüpfungsregel für die gefilterten Mengen F 1 (K),..., F n (K), nach deren Anwendung wir die Menge s(k) derjenigen Elemente erhalten, die gegen die Entwurfsregel verstoßen. Als grundlegende Verknüpfungen verwendet man and (d.h. ), or (d.h. ) und butnot (d.h. \ ). Wir wollen diese recht abstrakte Beschreibung durch ein Beispiel verdeutlichen. Dazu betrachten wir eine Erkennungsstrategie, die sogenannte Gott-Klassen aufspüren soll. Dabei handelt es sich um Klassen, die einen großen Teil der Funktionalität des Systems in sich vereinigen, und anderen Klassen nur kleinere Details überlassen. Dies wirkt sich nachteilhaft auf Verständlichkeit und Wiederverwendbarkeit aus. Wir machen die folgenden Eigenschaften von Gott-Klassen aus: Sie greifen auf viele leichtgewichtige Klassen zu, sie sind groß und haben eine niedrige Kohäsion. Für die Strategie verwenden wir die Metriken Access To Foreign Data (ATFD), Weighted Method Count (WMC) und Tight Class Cohesion (TCC). Kleine und stark gebundene Klassen sollen dabei ignoriert werden. Das ergibt folgende Verknüpfungsregel: s Gott-Klassen :=( ATFD, TopValues(20%) ATFD, HigherThan(4) ) ( WMC, HigherThan(20) TCC, LowerThan(0.33) ) Ein umfangreicher Katalog weiterer Entwurfsprobleme und der zugehörigen Erkennungsstrategien findet sich in [Mar02]. Beim Anwenden einer Strategie s geht man wie folgt vor: 1. Man wendet die Strategie auf alle Elemente K K an und erhält eine Menge s(k) von verdächtigen Elementen. 2. Man untersucht die Elemente aus s(k), ob sie wirklich an dem entsprechenden Entwurfsmangel leiden, oder die Strategie s womöglich zu ungenau definiert wurde, um den Mangel aufzuspüren. Bei der Definition von Strategien sind natürlich auch subjektive Einflüsse enthalten, da für das genaue Festlegen der Parameter von s Erfahrung und Augenmaß der Tester bzw. Entwickler vonnöten sind. 13
14 5.2 Das Factor-Strategy-Modell Das in Abschnitt 2.2 vorgestellte FCM-Modell ist in der Lage, Qualitätsmängel zu erkennen und die verantwortlichen Programmelemente zu identifizieren. Es ermöglicht aber in der Regel nicht, Ursachen für die Probleme zu finden. Dies kommt daher, dass der Zusammenhang von Qualitäts(teil)merkmalen zu Entwurfsregeln (und somit auch zu konkreten Entwurfsproblemen) nicht explizit im Modell vorhanden ist, d.h. es ist nicht oder nur schwer möglich, Schlüsse darüber zu ziehen, gegen welche Entwurfsregel verstoßen wurde. Als Folge davon kann das FCM-Modell auch keine Hinweise darauf liefern, wie der Entwurf verbessert werden kann. Marinescu schlägt daher folgende Modifikation des FCM-Modells vor: Die übergeordneten Qualitätsmerkmale werden nicht in Teilmerkmale zerlegt, sondern ihnen werden Erkennungsstrategien zugeordnet, die jeweils zur Aufdeckung eines bestimmten Entwurfsproblems geeignet sind, das dem entsprechenden Qualitätsmerkmal abträglich ist: Factor Strategy Metric Q-Merkmal 1 Q-Merkmal 2. Q-Merkmal n s 1 s 2. s k m 1 m 2. m l Da jede Strategie einem konkreten, klar umrissenen Entwurfsproblem entspricht, kann man die mindere Qualität unmittelbar an diesem festmachen und weiß somit auch, wo man bei der Verbesserung des Entwurfs ansetzen muss. Man beachte, dass das FS-Modell, obwohl es im objektorientierten Kontext definiert wurde, sich im Prinzip auf jedes Entwicklungsmodell übertragen ließe. Wir skizzieren nun, wie die Auswertung der Messergebnisse im FS-Modell erfolgt. 1. Bewertung der Qualitätsmerkmale: Einem bestimmten Qualitätsmerkmal Q seien im FS-Modell die Strategien s 1,...,s m zugeordnet. Zuerst wird eine Teilbewertung für jede einzelne Strategie s j ermittelt. Man könnte beispielsweise die Anzahl s j (K) der mängelbehafteten Programmelemente im Verhältnis zu Gesamtzahl K aller Programmelemente als Bewertung zu wählen. Denkbar ist auch eine unterschiedliche Gewichtung der einzelnen Metriken von s j. Sind alle Strategien bewertet, so kann man aus den einzelnen Bewertungen eine Gesamtbewertung für Q bestimmen. Dabei kann man die Teilbewertungen nach der Wichtigkeit der jeweiligen Strategie (also der Bedeutung des zugehörigen Entwurfsproblems) gewichten. Hieraus erhält man durch eine vorgegebene Tabelle eine qualitative Bewertung von Q. 14
15 2. Ursachen für Entwurfsprobleme identifizieren: Wie bereits erwähnt entspricht jede Erkennungsstrategie s j einem Entwurfsproblem und ihre Anwendung liefert eine Menge s j (K) von Elementen, bei denen dieses Problem auftritt. Ist also s j (K) für ein j, so tritt dieses Problem im System K auf, und die Elemente von s j (K) sind gerade die Elemente, die man verändern muss, um das Problem zu beseitigen. 6 Ausblick und Zusammenfassung Metriken stellen ein nützliches Hilfsmittel der Qualitätssicherung dar. Dabei ist es wichtig, die von den Metriken gelieferten Daten sinnvoll zu interpretieren. Wie man sich anhand des FS-Modells klarmachen kann, sind Metriken dann besonders mächtig, wenn sie in geeigneter Weise kombiniert werden, da sie dann sehr konkrete Hinweise auf Schwächen im Software-Entwurf liefern können. Es gibt eine Vielzahl von Metriken, insbesondere für objektorientierte Systeme. Wichtig ist die Konstruktion und Implementierung von Systemen, die diese Metriken kombinieren können, um zu leistungsfähigen Hilfsmitteln beim Aufdecken von Entwurfsproblemen zu werden. In Kapitel 5 haben wir ein solches System kurz kennengelernt. Von Interesse sind dabei Möglichkeiten, das System noch flexibler zu gestalten, und die Integration in kommerzielle Entwicklungsumgebungen. In dieser Arbeit haben wir unsere Betrachtungen auf Metriken beschränkt, die die statische Struktur eines Software-Produktes im Hinblick auf die innere Qualität untersuchen. Ebenso gibt es aber auch Metriken, die verwendet werden, um die Prozesse bei der Software-Entwicklung zu beurteilen. Solche Metriken sind vorrangig von betriebswirtschaftlichem Interesse, man findet einiges dazu in [Bal98] und [Pre99]. 15
16 Literatur [Bal98] Helmut Balzert. Lehrbuch der Software-Technik (Bd. 2): Software-Management, Software-Qualitätssicherung, Unternehmensmodellierung. Spektrum Akademischer Verlag, [BBM95] Victor Basili, Lionel Briand, and Walcelio Melo. A Validation of Object-Oriented Desing Metrics as Quality Indicators. Technical Report, University of Maryland, Department of Computer Science, [Fen90] [Fen94] Norman Fenton. Software metrics: theory, tools and validation. Software Engineering Journal, Norman Fenton. Software Measurement: A Neccessary Scientific Basis. IEEE Transactions of Software Engineering vol 20 no 3, [Jon94] Capers Jones. Software metrics: Good, bad and missing [KC85] [KS97] Dennis Kafura and James Canning. A Validation of Software Metrics Using Many Metrics and Two Resources Barbara Kitchenham and J.G. Stell. The danger of using axioms in software metrics. IEE Proceedings no , [Mar02] Radu Marinescu. Measurement and Quality in Object-Oriented Design. radum/papers.html, [Pre99] Lutz Prechelt. Ausgewählte Kapitel der Softwaretechnik. prechelt/swt2/skript.html, [Wey88] Elaine Weyuker. Evaluating software complexity measures. IEEE Transactions on Software Engineering vol 14 no 9,
17 Index Abstraktionsgrad, 6 Axiome, 6 Bindung, 10 criteria, 4 Darstellungsbedingung, 5 direkt, 6 Element, 3 empirische Ordnung, 5 Entwurfsproblem, 12 Erkennungsstrategie, 12 factor, 4 Factors-Criteria-Metrics, 4 Filter, 13 Programmelement, 3 Qualität, 3 innere, 3 Qualitätsmerkmal, 4 Qualitätsmodell, 4 System, 3 Teilmerkmale, 4 Validierung, 5 Verknüpfungsregel, 13 Wirtschaftlichkeit, 6 Zuverlässigkeit, 5 zyklomatische Zahl, 9 Halstead-Metrik, 8 indirekt, 6 innere Qualität, 3 Klassifikation, 6 Kohäsion, 10 Kopplung, 10 Lines-Of-Code, 7 LOC, 7 McCabe-Metrik, 9 Metrik, 4 Halstead-, 8 LOC, 7 McCabe-, 9 objektorientierte, 10 Nützlichkeit, 6 Normierung, 5 Objektivität, 5 Operand, 8 Operator, 8 Ordnung empirische, 5 17
Software-Metriken. Wolfgang Globke. Seminar Moderne Softwareentwicklung SS 2005. Software-Metriken. Wolfgang Globke. Metriken und Qualitätsmodelle
Software- und smodelle Software- Klassische Objektorientierte Seminar Moderne Softwareentwicklung SS 2005 Gliederung Software- und smodelle 1 und smodelle Klassische Objektorientierte 2 Klassische Objektorientierte
MehrSWE12 Übungen Software-Engineering
1 Übungen Software-Engineering Software-Qualitätssicherung / Software-Qualitätsmanagement 2 Aufgabe 1 Ordnen Sie die folgenden Zitate dem entsprechenden Ansatz zum Qualitätsbegriff zu und begründen Sie
MehrVerwendung von OO-Metriken zur Vorhersage
Verwendung von OO-Metriken zur Vorhersage Tobias Angermayr Übersicht 1. Definitionen 2. Gründe, Anforderungen, Ziele 3. Die CK-Metriken 4. Beobachtungen 5. Studie 6. Zusammenfassung Folie 2 Definitionen
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrZeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
MehrSoftware Engineering in der Praxis
Software Engineering in der Praxis Praktische Übungen Adersberger, Spisländer FAU Erlangen-Nürnberg Software-Metriken 1 / 26 Software-Metriken Josef Adersberger Marc Spisländer Lehrstuhl für Software Engineering
MehrKlassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
Mehr50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte
50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrQualitätsmanagement im Projekt
Software-Engineering Qualitätsmanagement im Projekt Vorlesung im Wintersemester 2008/2009 Fakultät Wirtschaftsinformatik Klaus Mairon, M.Sc. Inhalte Messen und Bewerten: Metriken in der Qualitätssicherung
MehrUnterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Das komplette Material finden Sie hier: Download bei School-Scout.de
MehrOECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland
OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben
MehrObjektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt
Objektorientierter Software-Entwurf Grundlagen 1 1 Einordnung der Veranstaltung Analyse Design Implementierung Slide 1 Informationssystemanalyse Objektorientierter Software-Entwurf Frühe Phasen durch Informationssystemanalyse
MehrSoftware-Metriken. Dipl.-Ing.(BA) Henning Sievert <email@henningsievert.de> Seminar Software-Entwurf WS 2004/05
Software-Metriken Dipl.-Ing.(BA) Henning Sievert Seminar Software-Entwurf WS 2004/05 Gliederung Einordnung in den Seminar-Kontext Grundlegende Definitionen Klassifikation von
Mehr1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
Mehr1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
MehrLineare Gleichungssysteme
Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrQM: Prüfen -1- KN16.08.2010
QM: Prüfen -1- KN16.08.2010 2.4 Prüfen 2.4.1 Begriffe, Definitionen Ein wesentlicher Bestandteil der Qualitätssicherung ist das Prüfen. Sie wird aber nicht wie früher nach der Fertigung durch einen Prüfer,
MehrHandbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken
Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrDas System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.
Usability Heuristiken Karima Tefifha Proseminar: "Software Engineering Kernkonzepte: Usability" 28.06.2012 Prof. Dr. Kurt Schneider Leibniz Universität Hannover Die ProSeminar-Ausarbeitung beschäftigt
MehrONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele
ONLINE-AKADEMIE Ziele Wenn man von Menschen hört, die etwas Großartiges in ihrem Leben geleistet haben, erfahren wir oft, dass diese ihr Ziel über Jahre verfolgt haben oder diesen Wunsch schon bereits
MehrProzessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08
Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements von Stephanie Wilke am 14.08.08 Überblick Einleitung Was ist ITIL? Gegenüberstellung der Prozesse Neuer
MehrWas meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
MehrWelche Unterschiede gibt es zwischen einem CAPAund einem Audiometrie- Test?
Welche Unterschiede gibt es zwischen einem CAPAund einem Audiometrie- Test? Auch wenn die Messungsmethoden ähnlich sind, ist das Ziel beider Systeme jedoch ein anderes. Gwenolé NEXER g.nexer@hearin gp
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrLinguLab GmbH. Bedienungsanleitung Allgemeine Definition
LinguLab GmbH Bedienungsanleitung Allgemeine Definition LinguLab GmbH T: +49.711.49030.370 Maybachstr. 50 F: +49.711.49030.22.370 70469 Stuttgart E: mba@lingulab.de I: www.lingulab.de Inhaltsverzeichnis
MehrKapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
MehrEin Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch
Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,
MehrGüte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über
Güte von s Grundlegendes zum Konzept der Güte Ableitung der Gütefunktion des Gauss im Einstichprobenproblem Grafische Darstellung der Gütefunktionen des Gauss im Einstichprobenproblem Ableitung der Gütefunktion
MehrKlausur Software-Engineering SS 2005 Iwanowski 23.08.2005
Klausur Software-Engineering SS 2005 Iwanowski 23.08.2005 Hinweise: Bearbeitungszeit: 90 Minuten Erlaubte Hilfsmittel: im Anhang, sonst keine Bitte notieren Sie Ihre Antworten ausschließlich auf dem Aufgabenblatt!
MehrC++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang
Einleitung Dieses Buch wendet sich an jeden Leser, der die Programmiersprache C++ neu lernen oder vertiefen möchte, egal ob Anfänger oder fortgeschrittener C++-Programmierer. C++ ist eine weitgehend plattformunabhängige
MehrKapitel 4 Die Datenbank Kuchenbestellung Seite 1
Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung
MehrVermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.
1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich
Mehrgeben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen
geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Vollständigkeit halber aufgeführt. Gehen wir einmal davon aus, dass die von uns angenommenen 70% im Beispiel exakt berechnet sind. Was würde
MehrDokumentation von Ük Modul 302
Dokumentation von Ük Modul 302 Von Nicolas Kull Seite 1/ Inhaltsverzeichnis Dokumentation von Ük Modul 302... 1 Inhaltsverzeichnis... 2 Abbildungsverzeichnis... 3 Typographie (Layout)... 4 Schrift... 4
Mehr1. LINEARE FUNKTIONEN IN DER WIRTSCHAFT (KOSTEN, ERLÖS, GEWINN)
1. LINEARE FUNKTIONEN IN DER WIRTSCHAFT (KOSTEN, ERLÖS, GEWINN) D A S S O L L T E N N A C H E U R E M R E F E R A T A L L E K Ö N N E N : Kostenfunktion, Erlösfunktion und Gewinnfunktion aufstellen, graphisch
Mehrpro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9
Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9 1 Allgemeine Beschreibung "Was war geplant, wo stehen Sie jetzt und wie könnte es noch werden?" Das sind die typischen Fragen, mit denen viele Unternehmer
MehrMobile Intranet in Unternehmen
Mobile Intranet in Unternehmen Ergebnisse einer Umfrage unter Intranet Verantwortlichen aexea GmbH - communication. content. consulting Augustenstraße 15 70178 Stuttgart Tel: 0711 87035490 Mobile Intranet
MehrForschen - Schreiben - Lehren
Forschen - Schreiben - Lehren Kontakt: Mareike Gronich mgronich@uni-bielefeld.de Fach/Fachgebiet: Germanistik Art der Lehrveranstaltung: Seminar Ausgangspunkt Geschütztes konstruktives Peer-Feedback in
MehrBeschreibung des MAP-Tools
1. Funktionen des MAP-Tool 2. Aufbau des MAP-Tools 3. Arbeiten mit dem MAP-Tool Beschreibung MAP-Tool.doc Erstellt von Thomas Paral 1 Funktionen des MAP-Tool Die Hauptfunktion des MAP-Tools besteht darin,
MehrInformationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
MehrLeichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
MehrBilanz und GuV. Einrichtung: Tips, Empfehlungen und Fehlerbeseitigung
...durch Wissen zum Erfolg Bilanz und GuV Einrichtung: Tips, Empfehlungen und Fehlerbeseitigung Mit der BUSINESSLINE -Fibu haben Sie ein sehr leistungsfähiges Fibu-Programm erworben, das Ihnen nicht nur
MehrIT-Governance und Social, Mobile und Cloud Computing: Ein Management Framework... Bachelorarbeit
IT-Governance und Social, Mobile und Cloud Computing: Ein Management Framework... Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Wirtschaftswissenschaft
MehrOUTSOURCING ADVISOR. Analyse von SW-Anwendungen und IT-Dienstleistungen auf ihre Global Sourcing Eignung. Bewertung von Dienstleistern und Standorten
Outsourcing Advisor Bewerten Sie Ihre Unternehmensanwendungen auf Global Sourcing Eignung, Wirtschaftlichkeit und wählen Sie den idealen Dienstleister aus. OUTSOURCING ADVISOR Der Outsourcing Advisor ist
MehrKonzepte der Informatik
Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens
MehrPowerPoint 2010 Mit Folienmastern arbeiten
PP.002, Version 1.1 07.04.2015 Kurzanleitung PowerPoint 2010 Mit Folienmastern arbeiten Der Folienmaster ist die Vorlage für sämtliche Folien einer Präsentation. Er bestimmt das Design, die Farben, die
MehrAlle gehören dazu. Vorwort
Alle gehören dazu Alle sollen zusammen Sport machen können. In diesem Text steht: Wie wir dafür sorgen wollen. Wir sind: Der Deutsche Olympische Sport-Bund und die Deutsche Sport-Jugend. Zu uns gehören
MehrSDD System Design Document
SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen
MehrBerechnung der Erhöhung der Durchschnittsprämien
Wolfram Fischer Berechnung der Erhöhung der Durchschnittsprämien Oktober 2004 1 Zusammenfassung Zur Berechnung der Durchschnittsprämien wird das gesamte gemeldete Prämienvolumen Zusammenfassung durch die
MehrLineare Funktionen. 1 Proportionale Funktionen 3 1.1 Definition... 3 1.2 Eigenschaften... 3. 2 Steigungsdreieck 3
Lineare Funktionen Inhaltsverzeichnis 1 Proportionale Funktionen 3 1.1 Definition............................... 3 1.2 Eigenschaften............................. 3 2 Steigungsdreieck 3 3 Lineare Funktionen
MehrTheoretische Grundlagen der Informatik WS 09/10
Theoretische Grundlagen der Informatik WS 09/10 - Tutorium 6 - Michael Kirsten und Kai Wallisch Sitzung 13 02.02.2010 Inhaltsverzeichnis 1 Formeln zur Berechnung Aufgabe 1 2 Hamming-Distanz Aufgabe 2 3
MehrKlausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
MehrKorrelation. Übungsbeispiel 1. Übungsbeispiel 4. Übungsbeispiel 2. Übungsbeispiel 3. Korrel.dtp Seite 1
Korrelation Die Korrelationsanalyse zeigt Zusammenhänge auf und macht Vorhersagen möglich Was ist Korrelation? Was sagt die Korrelationszahl aus? Wie geht man vor? Korrelation ist eine eindeutige Beziehung
MehrMeet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten
Meet the Germans Lerntipp zur Schulung der Fertigkeit des Sprechens Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten Handreichungen für die Kursleitung Seite 2, Meet the Germans 2. Lerntipp
Mehr7 Rechnen mit Polynomen
7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn
MehrPhysik & Musik. Stimmgabeln. 1 Auftrag
Physik & Musik 5 Stimmgabeln 1 Auftrag Physik & Musik Stimmgabeln Seite 1 Stimmgabeln Bearbeitungszeit: 30 Minuten Sozialform: Einzel- oder Partnerarbeit Voraussetzung: Posten 1: "Wie funktioniert ein
MehrDas große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten
Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während
MehrDIE ANWENDUNG VON KENNZAHLEN IN DER PRAXIS: WEBMARK SEILBAHNEN IM EINSATZ
Kurzfassung DIE ANWENDUNG VON KENNZAHLEN IN DER PRAXIS: WEBMARK SEILBAHNEN IM EINSATZ Mag. Klaus Grabler 9. Oktober 2002 OITAF Seminar 2002 Kongresshaus Innsbruck K ennzahlen sind ein wesentliches Instrument
MehrSimulation (vormals Feldversuch) Cico im Gelenkbus
Simulation (vormals Feldversuch) Cico im Gelenkbus Projekt Cico im VRR / Smart Via 3.0 Auswertung 1 Inhalt 1.1 Inhaltsverzeichnis Kapitel Seite 1 Inhalt... 2 1.1 Inhaltsverzeichnis... 2 2 Vorbemerkungen...
Mehrinfach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock
infach Ihr Weg zum finanzellen Erfolg Geld Florian Mock FBV Die Grundlagen für finanziellen Erfolg Denn Sie müssten anschließend wieder vom Gehaltskonto Rückzahlungen in Höhe der Entnahmen vornehmen, um
MehrGestaltung wissenschaftlicher Poster
Gestaltung wissenschaftlicher Poster Andreas Schoknecht INSTITUT FÜR ANGEWANDTE INFORMATIK UND FORMALE BESCHREIBUNGSVERFAHREN (AIFB) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum
Mehr1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:
Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:
MehrFragebogen: Abschlussbefragung
Fragebogen: Abschlussbefragung Vielen Dank, dass Sie die Ameise - Schulung durchgeführt haben. Abschließend möchten wir Ihnen noch einige Fragen zu Ihrer subjektiven Einschätzung unseres Simulationssystems,
MehrContent Management System mit INTREXX 2002.
Content Management System mit INTREXX 2002. Welche Vorteile hat ein CM-System mit INTREXX? Sie haben bereits INTREXX im Einsatz? Dann liegt es auf der Hand, dass Sie ein CM-System zur Pflege Ihrer Webseite,
MehrWas ist Sozial-Raum-Orientierung?
Was ist Sozial-Raum-Orientierung? Dr. Wolfgang Hinte Universität Duisburg-Essen Institut für Stadt-Entwicklung und Sozial-Raum-Orientierte Arbeit Das ist eine Zusammen-Fassung des Vortrages: Sozialräume
MehrDiplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008
Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
MehrKorrigenda Handbuch der Bewertung
Korrigenda Handbuch der Bewertung Kapitel 3 Abschnitt 3.5 Seite(n) 104-109 Titel Der Terminvertrag: Ein Beispiel für den Einsatz von Future Values Änderungen In den Beispielen 21 und 22 ist der Halbjahressatz
MehrInsiderwissen 2013. Hintergrund
Insiderwissen 213 XING EVENTS mit der Eventmanagement-Software für Online Eventregistrierung &Ticketing amiando, hat es sich erneut zur Aufgabe gemacht zu analysieren, wie Eventveranstalter ihre Veranstaltungen
MehrDie Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.
Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,
MehrA1.7: Entropie natürlicher Texte
A1.7: Entropie natürlicher Texte Anfang der 1950er Jahre hat Claude E. Shannon die Entropie H der englischen Sprache mit einem bit pro Zeichen abgeschätzt. Kurz darauf kam Karl Küpfmüller bei einer empirischen
MehrInstallation der SAS Foundation Software auf Windows
Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrFlowFact Alle Versionen
Training FlowFact Alle Versionen Stand: 29.09.2005 Rechnung schreiben Einführung Wie Sie inzwischen wissen, können die unterschiedlichsten Daten über verknüpfte Fenster miteinander verbunden werden. Für
MehrFehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems
Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems Name: Bruno Handler Funktion: Marketing/Vertrieb Organisation: AXAVIA Software GmbH Liebe Leserinnen und liebe Leser,
MehrERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN
ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN CHRISTIAN HARTFELDT. Zweiter Mittelwertsatz Der Mittelwertsatz Satz VI.3.4) lässt sich verallgemeinern zu Satz.. Seien f, g : [a, b] R auf [a,
MehrPHP Kurs Online Kurs Analysten Programmierer Web PHP
PHP Kurs Online Kurs Analysten Programmierer Web PHP Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses PHP Modul 1 - Einführung und Installation PHP-Umgebung Erste Lerneinheit Introduzione
MehrData Mining: Einige Grundlagen aus der Stochastik
Data Mining: Einige Grundlagen aus der Stochastik Hagen Knaf Studiengang Angewandte Mathematik Hochschule RheinMain 21. Oktober 2015 Vorwort Das vorliegende Skript enthält eine Zusammenfassung verschiedener
MehrEinführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)
Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrDas Leitbild vom Verein WIR
Das Leitbild vom Verein WIR Dieses Zeichen ist ein Gütesiegel. Texte mit diesem Gütesiegel sind leicht verständlich. Leicht Lesen gibt es in drei Stufen. B1: leicht verständlich A2: noch leichter verständlich
Mehr4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
Mehr3.2 Spiegelungen an zwei Spiegeln
3 Die Theorie des Spiegelbuches 45 sehen, wenn die Person uns direkt gegenüber steht. Denn dann hat sie eine Drehung um die senkrechte Achse gemacht und dabei links und rechts vertauscht. 3.2 Spiegelungen
MehrWas bringt TDD wirklich?
Was bringt TDD wirklich? Wissensspritze vom 6..2009, Christian Federspiel Catalysts GmbH McCabe Metrik CCN Die Cyclomatic Complexity Number, misst die Anzahl der möglichen Pfade durch einen Code. Die Metrik
MehrAnleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
MehrStep by Step Webserver unter Windows Server 2003. von Christian Bartl
Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrAdobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost
Adobe Photoshop Lightroom 5 für Einsteiger Bilder verwalten und entwickeln Sam Jost Kapitel 2 Der erste Start 2.1 Mitmachen beim Lesen....................... 22 2.2 Für Apple-Anwender.........................
MehrStellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
MehrDokumentation für Inventur
Dokumentation für Inventur dvc Computing, Software Service GmbH Kapitel 1 - Lagerstand merken Allgemein: Die Inventur wird im Programm AFL Lager Inventurprogramme aufgerufen. Für die Durchführung der Inventur
MehrWerte und Grundsätze des Berufskodexes für interkulturell Dolmetschende. Ethische Überlegungen: Was ist richtig? Wie soll ich mich verhalten?
Werte und Grundsätze des Berufskodexes für interkulturell Dolmetschende Ethische Überlegungen: Was ist richtig? Wie soll ich mich verhalten? 1 Was ist «Moral»? «ETHIK» und «MORAL» Moralische Grundsätze
MehrVB.net Programmierung und Beispielprogramm für GSV
VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2
MehrJeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint
Bilingual konkret Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint Moderner Unterricht ist ohne die Unterstützung durch Computer und das Internet fast
MehrDaten sammeln, darstellen, auswerten
Vertiefen 1 Daten sammeln, darstellen, auswerten zu Aufgabe 1 Schulbuch, Seite 22 1 Haustiere zählen In der Tabelle rechts stehen die Haustiere der Kinder aus der Klasse 5b. a) Wie oft wurden die Haustiere
MehrPersönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl
Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut Von Susanne Göbel und Josef Ströbl Die Ideen der Persönlichen Zukunftsplanung stammen aus Nordamerika. Dort werden Zukunftsplanungen schon
MehrSoftware Engineering. Sommersemester 2012, Dr. Andreas Metzger
Software Engineering (Übungsblatt 2) Sommersemester 2012, Dr. Andreas Metzger Übungsblatt-Themen: Prinzip, Technik, Methode und Werkzeug; Arten von Wartung; Modularität (Kohäsion/ Kopplung); Inkrementelle
Mehr