Verwendung von objektorientierten Metriken zur Softwarequalitätsvorhersage. Arno Egger,

Größe: px
Ab Seite anzeigen:

Download "Verwendung von objektorientierten Metriken zur Softwarequalitätsvorhersage. Arno Egger, 0450419"

Transkript

1 Verwendung von objektorientierten Metriken zur Softwarequalitätsvorhersage Arno Egger,

2 Metriken in OO-Programmierung Traditionelle Metriken (Cyclomatic Complexity, Lines Of Code etc.) auf OO-Methoden anwendbar, aber: zusätzliche Metriken zur Erfassung OO-spezifischer struktureller Aspekte (z.b. Klassen, Polymorphie, Vererbung) + darauf basierender Annahmen (z.b. Ermittlung der Systemgesamtkomplexität aus Komponentenkomplexitäten) erforderlich Mehrere OO-Metriksuiten (Sammlungen von Metriken) verfügbar, z.b. CK, MOOD, Lorenz and Kidd -> im Folgenden Behandlung der CK-Suite.

3 Metriken in OO-Programmierung Name der Metrik Abkürzung Art der Metrik Anwendung auf TRADITIONELL Cyclomatic Complexity Lines of Code Comment Percentage CC SIZE COM Traditionell Traditionell Traditionell Methoden Methoden Methoden CHIDAMBER-KEMERER OO Weighted Methods per Class Response for a Class Lack of Cohesion of Methods Coupling between Objects Depth of Inheritance Tree Number of Children WMC RFC LCOM CBO DIT NOC Objektorientiert Objektorientiert Objektorientiert Objektorientiert Objektorientiert Objektorientiert Klasse/Methode Klasse/Nachricht Klasse/Kohäsion Obj.-Kopplung Vererbung Vererbung

4 Chidamber-Kemerer Metriksuite 1994 mit dem Ziel entwickelt, ein Set von Metriken zu finden, das auf fundierter theoretischer Basis (Mario Bunge Ontologie) analytisch in Hinblick auf vorher festgelegte Messprinzipien weder zu abstrakt noch zu plattformspezifisch ohne übermäßigen Aufwand in der Sammlung der Daten die Qualitätsevaluierung objektorientierten Softwarecodes ermöglicht. Sechs Designmetriken für jede Klasse: WMC Weighted Methods per Class DIT Depth of Inheritance Tree NOC Number of Children RFC Response for a Class CBO... Coupling between Object Classes LCOM Lack of Cohesion in Methods

5 Fallbeispiel: Handelssystem Beispielsystem Trader besteht aus der Superklasse Trade und den davon abgeleiteten Subklassen Equity Trade, FX Trade sowie Bond Trade. Zusammenfassung der Metriken unten, Pseudocode siehe nächste zwei Seiten.

6 Fallbeispiel: Handelssystem

7 Fallbeispiel: Handelssystem

8 WMC: Weighted Methods per Class Klasse: Vorlage zur Erzeugung konkreter Objekte Methode: Operation an einem Objekt WMC zählt die in einer Klasse enthaltenen Methoden oder (schwieriger zu implementieren) misst deren Komplexität sagt Entwicklungs- & Wartungsaufwand der Klasse voraus Klassen, die viele Methoden enthalten sind oft applikationsspezifisch, d.h. schlechte Wiederverwendbarkeit evaluiert Usability & Reusability

9 WMC Fallbeispiel: Handelssystem WMC = Anzahl der Methoden in einer Klasse Trade besitzt drei Methoden, daher WMC für Trade = 3 Bond und FX besitzen eine Methode, Equity zwei

10 DIT: Depth of Inheritance Tree Inheritance: Vererbung, ermöglicht die Wiederverwendung von bereits erstellten Objekten inklusive Variablen und Operatoren. DIT maximale Länge des Pfades von einem Klassenelement zur Wurzel des Klassenbaums, gemessen an der Zahl der Vater/Mutterklassen je tiefer in der Hierarchie, desto mehr Methoden üblicherweise von anderen Klassen geerbt, desto komplexer und schlechter vorhersehbar das Verhalten der Klasse Hohe Hierarchietiefe ist normalerweise auch Indikator für hohen Grad der Codewiederverwendung evaluiert Testbarkeit, Codeverständlichkeit und Reusability

11 DIT Fallbeispiel: Handelssystem DIT = Länge des maximalen Pfads von der Klasse zur Hierarchiewurzel Trade ist die oberste Klasse der Hierarchie, d.h. DIT für Trade=0 DIT für die Subklassen von Trade = 1

12 NOC: Number of Children NOC Anzahl der unmittelbar einer Klasse unterstellten Unterklassen Indikator des potenziellen Einflusses, den die Klasse auf das Gesamtsystem haben kann je größer die Anzahl der Subklassen, desto größer die Wahrscheinlichkeit einer fehlerhaft bzw. zu generell abstrahierten Elternklasse je größer die Anzahl der Subklassen, desto größer Code-Reuse große Kinderzahl erhöht durch großen Testaufwand die Testzeit evaluiert Testbarkeit und Design

13 NOC Fallbeispiel: Handelssystem NOC = Anzahl unmittelbarer Subklassen zu Trade gehören drei Subklassen, NOC ist somit 3 Equity, FX und Bond besitzen keine Subklassen

14 RFC: Response for a Class Nachricht: Anfrage eines Objektes an ein anderes Objekt zur Ausführung einer Operation. Die Operation, die als Antwort darauf ausgeführt wird, ist eine Methode. RFC Kardinalität (Größenordnung) des Sets aller Methoden, die als Antwort auf aus anderen Klassen oder Methoden kommenden Nachrichten ausgeführt werden können misst Klassenkomplexität als Kombination von Methodenanzahl und Umfang der Kommunikation mit anderen Klassen Testaufwand steigt mit Anzahl aufrufbarer Methoden erheblich evaluiert Design, Usability, Testbarkeit

15 RFC Fallbeispiel: Handelssystem RFC = Kardinalität der Methoden, die als Antwort auf eine Nachricht ausgeführt werden können Eingehende Nachrichten können bei Trade vier verschiedene Methoden auslösen (drei interne, und die in position_update aufgerufene externe), d.h. RFC für Trade = 4

16 CBO: Coupling Between Object Classes Kopplung: Stärke der Assoziation zwischen zwei Entitäten z.b. durch Austausch von Nachrichten zwischen zwei Objekten, Verwendung der Methode einer Klasse durch eine andere, Vererbung. CBO zählt Anzahl der anderen (nicht geerbten) Klassen, mit denen eine Klasse gekoppelt ist exzessive Kopplung widerspricht modularem Aufbau, reduziert durch Abhängigkeiten der Klasse deren externe Wiederverwendbarkeit starke Kopplung erhöht Sensitivität gegenüber Änderungen in anderen Programmteilen, macht Code schwer überblickbar evaluiert Design und Reusability

17 CBO Fallbeispiel: Handelssystem CBO = Kopplung mit anderen Klassen (Aufrufe von Methoden oder Instanzvariablen anderer Klassen) Die Klasse Trade verwendet eine Methode der position_manager- Klasse, CBO ist somit 1.

18 LCOM: Lack of Cohesion in Methods Kohäsion: Grad, zu dem Methoden innerhalb einer Klasse miteinander verbunden sind und zusammenarbeiten. LCOM misst die Ähnlichkeit von Methoden anhand der von Ihnen verwendeten Attribute und Variablen entweder durch Ermittlung, wie viele Prozent der Methoden jedes Datenfeld der Klasse verwenden oder durch Vergleich der eingesetzten Attribute hohe Kohäsion signalisiert gute Klassenunterteilung niedrige Kohäsion erhöht Komplexität und Fehleranfälligkeit Klassen mit niedriger Kohäsion erlangen durch Aufspaltung in mehrere Klassen möglicherweise bessere Kohäsionswerte evaluiert Design und Reusability

19 LCOM Fallbeispiel: Handelssystem LCOM = Anzahl der Methodenpaare ohne gemeinsame Instanzvariable minus Methodenpaare mit gemeinsamer Instanzvariable hier 1, weil die Klasse Trade drei Methoden (3) hat, also drei Methodenpaare möglich sind, zwei davon auf keine gemeinsame Variable zugreifen (2), ein Paar (get_trade & pos_update) sich jedoch auf die gemeinsame Variable trade_id bezieht (2-1)

20 Studie 1: Validität der CK-Metriken Hypothese: CK Metriken zur Messung von Designkomplexität geeignet Folgerung: Metrikwerte müssen in engem Zusammenhang mit resultierender Softwarekomplexität, -produktivität, -verwendbarkeit und -wartbarkeit stehen Überprüfung der Hypothese anhand der Analyse dreier kommerzieller Softwaresysteme der European Bank ISD Ergebnis: Metriken NOC und DIT unerheblich (minimaler Einsatz von Vererbung); WMC, RFC und CBO hochgradig korreliert (>0.8), gemeinsame Verwendung in Regressionsanalyse somit problematisch deshalb Konzentration auf hohe Korrelation mit abhängiger Managementgröße in Einzelbereichen: z.b. Produktivität, Nachbearbeitungsaufwand, Designaufwand

21 Studie 1: Produktivität Produktivität = SIZE (Codegröße) / EFFORT (Arbeitsstunden) Untersuchung: Inwiefern erklären OO Metriken Produktivitätsunterschiede in OO-Programmen besser als traditionelle Metriken? Einführung von Dummy-Variablen zur Ausschaltung gerade nicht relevanter Metriken: HICBO und HILCOM, werden Eins oder Null bei Überschreiten von Metrikschwellenwerten Schrittweise Regression führt zum Ergebnis: Produktivität mit hohen CBO oder LCOM-Werten stark negativ korreliert. Entwickler benötigen daher für stark gegenseitig verknüpfte (CBO) und inkohärente (LCOM) Klassen mehr Programmier- und Testzeit (siehe Formel unten)

22 Studie 1: Nachbearbeitungsaufwand Wiederverwendbarkeit von Code bedeutender Vorteil der objektorientierten Programmierung Niedriger Nachbearbeitungsaufwand erwünscht, d.h. Klassen sollen möglichst unverändert in neue Projekte übernehmbar sein Aufwand bei einem der 3 Systeme empirisch ermittelt & analysiert Ergebnis: hohe CBO und LCOM-Werte stehen für höheren Nachbearbeitungsaufwand, STAFF (Leistungsunterschiede beim Programmierer) und SIZE (Codegröße) aber nicht mehr signifikant

23 Studie 1: Designaufwand ermittelt an einem System, an dem der Code selbst noch nicht implementiert war, erst die Klassen spezifiziert somit keine SIZE- und STAFF-Informationen verfügbar (Code erst grob entworfen, Anzahl der Zeilen noch unbekannt) Wie bei Nachbearbeitungsaufwand hohes CBO + LCOM = Vorhersage für arbeitsaufwändige Implementierung Zusammenfassung: Metriken auf Systemen mit verschiedenen Programmiersprachen und selbst bei noch nicht implementierten Klassen sinnvoll ermittelbar DIT und NOC bei keiner der Untersuchungen relevant WMC, CBO und RFC hochgradig korreliert Hohes Coupling (CBO) und fehlende Kohäsion (LCOM) resultieren in ineffizientem Code

24 Studie 2: Metriken als Qualitätsindikatoren Empirische Analyse der CK OO-Metriken hinsichtlich ihrer Fähigkeit zur Fehlerwahrscheinlichkeitsvorhersage Hypothesen: H-WMC: hohe Funktionszahl -> komplex, fehleranfällig H-DIT: tiefe Hierarchien -> Integritäts- und Vererbungsfehler H-NOC: Kinderreiche Klassen testintensiv & schwer modifizierbar H-CBO: Von anderen abhängige Klassen fehleranfälliger H-RFC: Funktionsvielfalt erzeugt Komplexität und Fehler H-LCOM: Niedrige Kohäsion resultiert aus Designfehlern

25 Studie 2: Datensammlung & Analyse Viermonatige empirische Studie mit Studententeams der University of Maryland, OO-Analyse und Design Jedes Team entwickelt eigenes Management- Informationssystem anhand des Wasserfallmodells, testet diese auf Fehler und vermerkt gefundene (Report) Expertenevaluierung der resultierenden Systeme+Reports, Anwendung der CK-Metriken auf Quellcode; Vergleich der von den Metriken vorhergesagten Fehlerraten mit den tatsächlich aufgetretenen (Wahrscheinlichkeitsverteilung, Regressionsanalyse,

26 Studie 2: Ergebnisse Eindimensionale Analyse (einzelne Metriken) WMC, DIT, RFC, CBO signifikant, Hypothese soweit bestätigt Number of Childen hochsignifikant, aber hier Hyp. widerlegt: je höher die NOC, desto niedriger die Wahrscheinlichkeit eines Fehlers. Vermuteter Grund: hohes Coderecycling bedeutet viel Vererbung, somit viele Subklassen, positive Auswirkung des bereits erprobten Codes überwiegt ggü. Komplexitätszunahme LCOM nirgends signifikant Mehrdimensionale Analyse (mehrere Metriken simultan) Fehlerhäufigkeitsvorhersagen der OO-Metriken treffen zu OO-Metriken bei OO-Code besser als klassische M. geeignet

27 Weiterführende Literatur Lanza/Marinescu: Object-Oriented Metrics in Practice: Using Software Metrics to characterize, evaluate and improve the Design of Object-Oriented Systems. Springer, New York, Henderson-Sellers, Brian: Object-Oriented Metrics. Measures of Complexity. Prentice Hall, New Jersey 1996 Lorenz/Kidd: Object-Oriented Software Metrics. Prentice Hall, New Jersey Shaw/Garlan: Software Architecture. Perspectives on an Emerging Discipline. Prentice Hall, New Jersey, 1996.

28 Weiterführende Literatur Chidamber/Kemerer: A Metrics Suite for Object Oriented Design. MIT Sloan School of Management, Massachusetts Chidamber/Darcy/Kemerer: Managerial Use of Metrics for Object- Oriented Software. IEEE Transactions on Software Engineering, Vol. 24 No. 8, August Basili/Briand/Melo: A Validation of Object-Oriented Design Metrics as Quality Indicators. IEEE Transactions on Software Engineering, Vol. 22 No. 10, October Marinescu: Measurement and Quality in Object-Oriented Design. Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM 2005), IEEE Computer Society Press,2005

Verwendung von OO-Metriken zur Vorhersage

Verwendung 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

Mehr

Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05.

Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05. <thomas@thi.uni-hannover.de> Software-Metriken B. Sc. Michael Thomas Seminar Software-Entwurf WS 2004/05 Gliederung Einführung Traditionelle Metriken / Grundeinheiten Lines of Code Zyklomatische Komplexität

Mehr

Software-Metriken. Dipl.-Ing.(BA) Henning Sievert Seminar Software-Entwurf WS 2004/05

Software-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

Mehr

Software-Metriken. Wolfgang Globke. Seminar Moderne Softwareentwicklung SS 2005. Software-Metriken. Wolfgang Globke. Metriken und Qualitätsmodelle

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

Mehr

Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 04. Dezember 2014

Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 04. Dezember 2014 Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 04. Dezember 2014 Re-Engineering Patterns [Demeyer et al.] 2 Software-Evolution WS 2014/2015 Überblick Probleme Viele Designkonzepte

Mehr

Softwaremetriken verstehen und nutzen

Softwaremetriken verstehen und nutzen Softwaremetriken verstehen und nutzen Manuel Pichler http://manuel-pichler.de PHP Unconference Hamburg 12. September 2009 Über mich Manuel Pichler Total stolzer Papa Jahrgang 1978 Diplom Informatiker Softwarearchitekt

Mehr

Software Engineering. 13. Automatische Code Analyse. Franz-Josef Elmer, Universität Basel, WS 2005/06

Software Engineering. 13. Automatische Code Analyse. Franz-Josef Elmer, Universität Basel, WS 2005/06 Software Engineering 13. Automatische Code Analyse Franz-Josef Elmer, Universität Basel, WS 2005/06 Software Engineering: 13. Automatische Code Analyse 2 Code Analyse: Manuell versus Automatisch Manuelle

Mehr

Messung. Mariem Ben Rehouma 14.04.2009

Messung. Mariem Ben Rehouma 14.04.2009 Messung Mariem Ben Rehouma Gliederung Motivation Definition von Messung Metriken Klassifikation von Metriken Beispiele Objektorientierte Metriken Charakteristiken von Messungen Skala-Arten Messungsarten

Mehr

Comparison of Software Products using Software Engineering Metrics

Comparison of Software Products using Software Engineering Metrics Comparison of Software Products using Software Engineering Metrics Alexander Bätz Fakultät EIM Universität Paderborn 23. Juli 2009 1 / 28 Motivation Qualitätsbewertung von Software Vergleichbarkeit von

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Software-Metriken: Purismus vs. Pragmatismus

Software-Metriken: Purismus vs. Pragmatismus Software-Metriken: Purismus vs. Pragmatismus Web DevCon Manuel Pichler 17.10.2011 Software-Metriken: Purismus vs. Pragmatismus 1 / 42 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im Web-Umfeld

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. 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

Mehr

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst

Mehr

25. GI-TAV-Treffen 15. Februar 2007 Düsseldorf. Softwareprüfung gestern und heute: Theorie und Erfahrung, Standards und Common Sense

25. GI-TAV-Treffen 15. Februar 2007 Düsseldorf. Softwareprüfung gestern und heute: Theorie und Erfahrung, Standards und Common Sense Softwareprüfung gestern und heute: Theorie und Erfahrung, Standards und Common Sense Prof. Dr.-Ing. habil. Peter Liggesmeyer Lehrstuhl Software Engineering: Dependability TU Kaiserslautern Direktor Fraunhofer

Mehr

Softwaremessung und -metrik

Softwaremessung und -metrik Softwaremessung und -metrik AW1 Votrag - Daniel Wojtucki Hamburg, 20. Januar 2010 Inhalt 1 Einleitung 2 Softwarequalität 3 Grundlagen der Softwaremetrik 4 Beispiele bestimmter Metriken 5 Zusammenfassung

Mehr

Metriken für Objektorientierte Software

Metriken für Objektorientierte Software Metriken für Objektorientierte Software Alexander Ostrovsky ostrovsk@in.tum.de Abstract: In dieser Arbeit werden die Grundlagen der Metriken für objektorientierte Software behandelt. Aufgrund der hohen

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Anti Patterns, Bad Smells & Metriken

Anti Patterns, Bad Smells & Metriken Anti Patterns, Bad Smells & Metriken Inhalt Signale zur Refaktorisierung: Antipattern Gegenteil von Designpattern Bad Smells Schlechte Strukturen auf Code-Ebene finden Metriken Eigenschaften von Code in

Mehr

Prof. Dr.-Ing. Peter Liggesmeyer. Qualität Eingebetteter Systeme: Beispiel Sicherheit Die Bedeutung von Standards Die Erfahrung Der Common Sense

Prof. Dr.-Ing. Peter Liggesmeyer. Qualität Eingebetteter Systeme: Beispiel Sicherheit Die Bedeutung von Standards Die Erfahrung Der Common Sense Qualität Eingebetteter Systeme Prof. Dr.-Ing. Peter Liggesmeyer Lehrstuhl Software Engineering: Dependability TU Kaiserslautern Direktor Fraunhofer Institut für Experimentelles Software Engineering (IESE),

Mehr

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer Lill, Meitner, Föhrweiser, Spisländer FAU Erlangen-Nürnberg Software-Metriken 1 / 24 Software-Metriken Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität

Mehr

Thomas Haug MATHEMA Software GmbH 209

Thomas Haug MATHEMA Software GmbH 209 Thomas Haug MATHEMA Software GmbH 209 Wer bin ich > Dipl.-Inf (Univ.) > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software Entwicklung > 12+ Jahre Java Enterprise > 7+

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Objektorientierte Codemetriken und deren Anwendung im Bereich von Embedded Systems

Objektorientierte Codemetriken und deren Anwendung im Bereich von Embedded Systems Objektorientierte Codemetriken und deren Anwendung im Bereich von Embedded Systems Eugenia Drosdezki, 166771 Angewandte Informatik, WS2008/2009 Seminar Neue Technologien, Hochschule Oenburg 16. Januar

Mehr

Software Engineering in der Praxis

Software 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

Mehr

Qualitätsmanagement im Projekt

Qualitä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

Mehr

Inhalt. 1. Sprachspezifische Fehlerrisiken C++ Java. Smalltalk. 2. Coverage - Modelle. Statement Coverage. Branch Coverage

Inhalt. 1. Sprachspezifische Fehlerrisiken C++ Java. Smalltalk. 2. Coverage - Modelle. Statement Coverage. Branch Coverage Inhalt 1. Sprachspezifische Fehlerrisiken C++ Java Smalltalk 2. Coverage - Modelle Statement Coverage Branch Coverage Inkrementelles Testen von Klassen Testen Polymorpher Bindungen Optimistischer Ausblick

Mehr

Einführung in Generatives Programmieren. Bastian Molkenthin

Einführung in Generatives Programmieren. Bastian Molkenthin Einführung in Generatives Programmieren Bastian Molkenthin Motivation Industrielle Entwicklung *!!*,(% % - #$% #!" + '( & )!* Softwareentwicklung Rückblick auf Objektorientierung Objektorientierte Softwareentwicklung

Mehr

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

Mehr

OOD. Objektorientiertes Design. Peter Coad und Edward Yourdon. Prentice Hall Verlag

OOD. Objektorientiertes Design. Peter Coad und Edward Yourdon. Prentice Hall Verlag OOD Objektorientiertes Design Peter Coad und Edward Yourdon Prentice Hall Verlag New York, London, Toronto, Sidney, Tokio, Singapur, München, Mexiko Vorwort 9 Vorwort der Übersetzer 11 Danksagungen 13

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

0/28. Software-Metriken. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken

0/28. Software-Metriken. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken 0/28 Software-Metriken Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Software-Metriken 1/28 Zu den Aufgaben eines Managers gehört die Kontrolle der Software-Entwicklung:

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2009/10 Überblick I 1 Metriken I 1 Metriken

Mehr

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo Statische Codeanalyse wirklich effektiv nutzen Über uns Jan Schumann Jahrgang 1976 System- / Softwarearchitekt Entwickler von: PHP_Depend,

Mehr

Objektorientiertes JavaScript

Objektorientiertes JavaScript Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design

Mehr

Messen & Metriken Ist Qualität messbar? André Fleischer

Messen & Metriken Ist Qualität messbar? André Fleischer Messen & Metriken Ist Qualität messbar? 1 1995 2000 Studium Technische Informatik (HAW Hamburg) 2001 2007 Lufthansa System IT Consultant, Software Architekt Seit 2007, otto group Otto Group, Software Architekt

Mehr

Software Tests (2) Quellcode Reviews

Software Tests (2) Quellcode Reviews Software Tests (2) Quellcode Reviews Was ist? Was ist Testen? G. J. Myers, 79: "Testen ist der Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Hetzel 83: "Messung der Softwarequalität"

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Software-Qualität sichtbar machen

Software-Qualität sichtbar machen Software-Qualität sichtbar machen Prof. Dr. Claus Lewerentz BTU Cottbus Vortrag im Rahmen des Berlin-Brandenburger Software-Forums Zeit: 28. April 2003,18.30 Uhr Ort: Fraunhofer FIRST Berlin Software Qualität

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Was bringt TDD wirklich?

Was 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

Mehr

Management von Softwaresystemen Systembewertung: Metriken und Prozess

Management von Softwaresystemen Systembewertung: Metriken und Prozess Management von Softwaresystemen Systembewertung: Metriken und Prozess Referent: Vadym Alyokhin Betreuer: Florian Deißenböck Übersicht Definition Einführung in die Messtheorie Meilensteine von Software-Metriken

Mehr

Softwarequalität. 20. Januar 2015

Softwarequalität. 20. Januar 2015 Softwarequalität 20. Januar 2015 Überblick Wie definiert man gute Software? Welche Qualitätskriterien gibt es für Software? Welche Qualitätsanforderungen leiten sich daraus ab? Wie erreicht man gute Software?

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2009/10 Überblick I 1 I 1 Arten von Reengineering-Projekten

Mehr

Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 03. Dezember 2015

Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 03. Dezember 2015 Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 03. Dezember 2015 Re-Engineering Patterns [Demeyer et al.] 2 Software-Evolution WS 2015/2016 Überblick Probleme Viele Designkonzepte

Mehr

1. Java ist... 2. Stammbaum der Programmiersprachen 3. Die "Softwarekrise"

1. Java ist... 2. Stammbaum der Programmiersprachen 3. Die Softwarekrise im Überblick im Überblick Inhalt 1. Java ist... 2. Stammbaum der Programmiersprachen 3. Die Softwarekrise 1. Merkmale von Software 2. Fortlaufende Veränderungen 3. Erschwerte Rahmenbedingungen bei der

Mehr

Seite 2. Arbeitsteilung beim Entwurf. Kriterien für "guten" Entwurf. Kohäsion. Architekturentwurf. Schnittstelle Schnittstelle. Entwurf Subsystem 2

Seite 2. Arbeitsteilung beim Entwurf. Kriterien für guten Entwurf. Kohäsion. Architekturentwurf. Schnittstelle Schnittstelle. Entwurf Subsystem 2 4. Softwarearchitektur und Softwareentwurf 4.1 Entwurfsprinzipien Analyse Entwurf Implementierung Test, Integration Wartung Grobentwurf Feinentwurf.KVGTCVWTÂ 5QOOGTXKNNGÂÂ,CNQVGÂÂ $CN\GTVÂ$CPFÂ+Â.'Â $CN\GTVÂ$CPFÂ++Â.'Â

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Java lernen mit BlueJ

Java lernen mit BlueJ Java lernen mit BlueJ Eine Einführung in die objektorientierte Programmierung David J. Barnes Michael Kölling 4.0 Lernen in Eigenregiegi Vorlesungen Seminare Übungen Bücher Webseiten Diskussionslisten

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET

Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET Überblick 1.Einfürung in die Multi-Tier Architektur 2.Ausgangspunkt und Probleme 3.Rundgang durch die Architektur 4.Architektur

Mehr

6. Modellierung von Informationssystemen. 6.1 Einleitung 6.2 Konzeptuelles Modell 6.3 OASIS Spezifikation 6.4 Execution Model 6.

6. Modellierung von Informationssystemen. 6.1 Einleitung 6.2 Konzeptuelles Modell 6.3 OASIS Spezifikation 6.4 Execution Model 6. 6. Modellierung von Informationssystemen Spezialseminar Matr. FS 2000 1/10 Volker Dobrowolny FIN- ITI Quellen: Oscar Pastor, Jaime Gomez, Emilio Insfran, Vicente Pelechano The OO-Method approach for information

Mehr

Was die OOP-Tutorials verschweigen

Was die OOP-Tutorials verschweigen oder: Wie man objektorientiert denkt Delphi-Treff Delphi-Tage 2010 Vorstellung Einführung Informatikstudent an der TU Kaiserslautern Moderator und Redakteur bei Delphi-Treff http://www.christian-rehn.de

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Code-Erzeugung aus UML-Klassendiagrammen

Code-Erzeugung aus UML-Klassendiagrammen Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter

Mehr

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN Grundzüge der Programmierung Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN Inhalt dieser Einheit JAVA ist objektorientiert! Grundbegriffe der objektorientierten Programmierung:

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Objektorientierte Programmiersprachen

Objektorientierte Programmiersprachen Objektorientierte Programmiersprachen 1960 Algol 1970 Simula Pascal 1980 Smalltalk C Ada 1990 C++ Eiffel Eine ovale Box symbolisiert eine objektorientierte Programmiersprache. Eine rechteckige Box steht

Mehr

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (OOP) VERERBUNG

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (OOP) VERERBUNG Grundzüge der Programmierung Konzepte der objektorientierten Programmierung (OOP) VERERBUNG Inhalt dieser Einheit Vererbung Generalisierung Spezialisierung Klassenhierarchie Grundzüge der Programmierung

Mehr

OO Design. welche Methoden in welcher Klasse sind, und. diese Interagieren

OO Design. welche Methoden in welcher Klasse sind, und. diese Interagieren Design: GRASP 1 OO Design Definition Objektorientiertes Design: After identifiying your requirements and creating a domain model, then add methods to the software classes, and define the messaging between

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

Kapitel 1: Anforderungen an moderne Software und ihre Umsetzung in Java

Kapitel 1: Anforderungen an moderne Software und ihre Umsetzung in Java Kapitel 1: Anforderungen an moderne Software und ihre Umsetzung in Java 1 Anwendungs-Anforderungen an Software-Architekturen Bisher unterstützte Geschäftsprozesse sollen zuverlässig / fehlerfrei effizient

Mehr

Ersetzbarkeit, Client-Server Beziehungen

Ersetzbarkeit, Client-Server Beziehungen Ersetzbarkeit, Client-Server Beziehungen 182.132 VL Objektorientierte Programmierung Raimund Kirner Mitwirkung an Folienerstellung: Peter Puschner, basieren auf den Folien von Franz Puntigam, TU Wien Überblick

Mehr

Fachthema. JavaSPEKTRUM 5/2008. Alles im Blick. Einführung. Strukturanalyse. Christoph Beck, Oliver Stuhr

Fachthema. JavaSPEKTRUM 5/2008. Alles im Blick. Einführung. Strukturanalyse. Christoph Beck, Oliver Stuhr Fachthema Alles im Blick STAN Strukturanalyse für Java Christoph Beck, Oliver Stuhr Neben der üblicherweise durch Tests gewährleisteten äußeren Qualität einer Software ist auch die innere Qualität entscheidend

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

...we make the invisible visible...

...we make the invisible visible... ...we make the invisible visible... 1 Inhalt Qualitätsbegriff Fragestellungen im Zusammenhang mit innerer Softwarequalität Analysen und deren Anwendung Erfahrungen 2 Ausfallsicherheit Datensicherheit Zuverlässigkeit

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 8 10. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Usability Metrics. Related Work. Von Torsten Rauschan (torsten.rauschan@haw-hamburg.de) HAW Hamburg M-Inf2 Anwendungen 2 Betreuer: Prof. Dr.

Usability Metrics. Related Work. Von Torsten Rauschan (torsten.rauschan@haw-hamburg.de) HAW Hamburg M-Inf2 Anwendungen 2 Betreuer: Prof. Dr. Usability Metrics Related Work Von Torsten Rauschan (torsten.rauschan@haw-hamburg.de) HAW Hamburg M-Inf2 Anwendungen 2 Betreuer: Prof. Dr. Zukunft Agenda Rückblick AW1 Motivation Related work QUIM SUM

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Department of Computer Science Chair of Software Engineering Faculty of Engineering. Grundlagen der Softwarearchitektur (im Softwarepraktikum)

Department of Computer Science Chair of Software Engineering Faculty of Engineering. Grundlagen der Softwarearchitektur (im Softwarepraktikum) Grundlagen der Softwarearchitektur (im Softwarepraktikum) 1 ORGANISATORISCHES 2 Inhalt Was ist Softwarearchitektur? Dokumentieren mit UML Wie bewerte ich eine Softwarearchitektur? Wie plane ich eine Softwarearchitektur?

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen

Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen ...we make the invisible visible... Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen 1 Inhalt Qualitätsbegriff und Qualitätsmodelle Abstraktion Analysen und deren Anwendung Erfahrungen

Mehr

Erster Bug: eine Motte

Erster Bug: eine Motte SOFTWAREFEHLER Der erste Bug Erster Bug: eine Motte Der Begriff Bug (deutsch: Motte) stammt aus dem Jahre 1945, als Ingenieure in einem Schaltrelais eines Computers (Harvard Mark II-System) eine Motte

Mehr

Client-Server Beziehungen

Client-Server Beziehungen Ersetzbarkeit, Client-Server Beziehungen 182.132 VL Objektorientierte Programmierung Peter Puschner nach Folien von Franz Puntigam, TU Wien Überblick Ersetzbarkeit Kovarianz, Kontravarianz, Invarianz Client-Server

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2010/11 Überblick I Durchführung von Reengineering-Projekten

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess malte@mathematik.uni-ulm.de Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte 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

Mehr

OO Softwareentwicklung

OO Softwareentwicklung OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung

Mehr

Techniken der Projektentwicklung

Techniken der Projektentwicklung diagramme Termin 6 Denken in Schnittstellen Was nun? Einführung Bisher kennengelernt: Modellierung auf Konzeptlevel Usecase-Diagramme Domänenmodelle Jetzt: Übergang zu Spezifikation und Implementierung!

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, 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:

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr