Design Patterns (dt. Entwurfsmuster)

Größe: px
Ab Seite anzeigen:

Download "Design Patterns (dt. Entwurfsmuster)"

Transkript

1 Design Patterns (dt. Entwurfsmuster) Michael Svoboda 25. Mai 2007 Ein fortgeschrittener bzw. erfahrener Softwareentwickler hat oftmals während der Analyse eines Problems bei der Erstellung eines Entwurfs eine Art Déjà-vu-Erlebnis [4]. Er weiß oder hat zumindest das Gefühl, dass er schon einmal genau so ein oder ein ähnliches Problem hatte, welches er auch bereits einmal gelöst hat, kann sich aber beim besten Willen nicht mehr an diese Lösung oder die Stelle an der er das Problem damals gelöst hatte erinnern und verliert unnötig viel Zeit beim Entwurf, weil er die Lösung des Entwurfsproblems von Grund auf neu angehen muss, also sozusagen das Rad neu erfinden muss. Aber genau dieses Wissen bzw. diese Erfahrung machen einen Entwickler erst zu einem guten und erfahrenen Softwareentwickler. Niemand kann von einem Menschen erwarten, dass er sich an alles was er je gemacht oder gedacht hat erinnert, weshalb auch von einem Softwareentwickler nicht erwarten kann, dass er sich an alle Konzepte oder gar jede Zeile Code die er sich je überlegt hat gut genug erinnert, um sie ohne weiteres wieder zu verwenden, zumindest bei größeren und komplizierteren Problemen bzw. Lösungen ist dies offensichtlich unmöglich. Genau hier können Design Patterns helfen, denn sie beschreiben solche immer wiederkehrende Entwurfsprobleme und erfahrungsgemäß erfolgreiche Lösungen dazu, wodurch der Entwickler schnell und effizient auf dieses sonst möglicherweise verloren gegangene Wissen zurückgreifen kann. Schlagworte: Design Patterns, Entwurfsmuster, Patterns, Muster, objektorientierte Softwareentwicklung MatrNr.:

2 1 Einleitung Viele Personen kennen es, wenn sie beim Ansehen vieler Hollywood-Filme oft das Gefühl bekommen, genau diesen oder einen ähnlichen Film bereits einmal gesehen zu haben und ziemlich schnell erahnen, wie der restliche Teil der Geschichte ungefähr aussehen wird, da sie bereits ein bekanntes Muster im Aufbau des Films erkennen und auf Erfahrungen mit solcherlei Filmen zurückgreifen konnten. Tatsächlich ist ja bekannt, dass sich Hollywood- Filmproduzenten und Drehbuchautoren beim Schreiben eines Drehbuchs gerne auf gute und erfolgreiche Grundkonzepte, die sich bereits einige male in der Vergangenheit bewährt haben, wie etwa die Geschichte vom Tellerwäscher der zum Helden wird (z.b. Spiderman), verlassen und diese in einer vielleicht doch von anderen Drehbüchern, die das selbe Rezept nutzen, in nur leicht abgeänderten Form umsetzen. Genau solche Grundkonzepte bezeichnet man auch als Entwurfsmuster (Design Patterns), die es auch in anderen Bereichen wie eben der objektorientierten Softwareentwicklung gibt und auch genutzt werden, um immer wieder auftretende Probleme durch bereits bekannte, einfache und gute (also elegante ) Lösungen zu beheben. Bei der Entwicklung von Softwaresystemen wird von vielen unerfahrenen Entwicklern scheinbar meistens davon ausgegangen, dass es bisher noch kein dazu vergleichbares Softwaresystem oder vergleichbare Probleme beim Erstellen eines Entwurfs solcher Systeme gegeben haben könnte. Sie fangen daher beim Entwurf der Software bei Null an und müssen sich mühsam für jeden Teil des Entwurfs neu überlegen wie sie gewisse Probleme lösen und müssen es dann auch schaffen diese Lösungen zu implementieren. Es stellt sich dann oft später bei der Implementierung bzw. beim Testen heraus, dass Fehler beim Entwurf gemacht wurden, da zum Beispiel ein Ausnahmefall auftritt der nicht erwartet wurde und daher im Entwurf fehlt, weshalb der Entwurf immer wieder geändert werden muss, bis ein vollkommen korrekter bzw. funktionierender Entwurf vorliegt. Wie bereits auf der vorangegangenen Seite beschrieben, geht es bei Entwurfsmustern unter anderem darum, dem Wissens- bzw. Erfahrungsverlust bei der Lösung von bereits bekannten und wiederkehrenden Entwurfsproblemen entgegenzuwirken, denn der Mensch hat nun mal die Angewohnheit Dinge nach einiger Zeit zu vergessen und Softwareentwickler bilden hier nun mal keine Ausnahme. Selbst wenn der Softwareentwickler weiß wo er ein ähnliches Problem schon einmal gelöst hat muss er trotzdem jedes mal die alten Entwürfe nach dem Teil durchstöbern, der die damalige Lösung des Problems enthält, wobei auch einiges an Zeit verloren geht. Doch auch das Analysieren und Herauslesen des grundlegenden Konzepts (Musters) das zur Lösung angewandt wurde um es dann beim aktuellen Problem nur noch in den richtigen Kontext, das heißt in eine an das aktuelle Problem angepasste Version der Lösung, bringen zu müssen beansprucht einen großen (zeitlichen) Aufwand der in Summe dann vielleicht sogar größer wäre als der, das Problem auf die normale Art, also von Grund auf neu, zu lösen. Bei Entwurfsmustern geht es darum diesen Prozess des Reviews (des Nochmal- Ansehen und Analysierens ) zu erleichtern bzw. zu verkürzen indem immer wieder auftretende, erfahrungsgemäß funktionierende Konzepte bzw. Lösungen niedergeschrieben werden [4]. In anderen Worten versuchen Entwurfsmuster Erfahrungen in abstrakter Form (Konzepten) auf schriftliche Art und Weise festzuhalten. 2

3 2 Was sind Design Patterns? 2.1 Geschichtliches Das Grundprinzip und die Idee von Design Patterns gibt es schon sehr lange, denn seitdem wir Menschen angefangen haben Dinge zu bauen bzw. zu entwerfen (z.b. Werkzeuge, Gebäude, etc.) und diese dann auch in verschiedensten Variationen zu reproduzieren nutzen wir schon gewisse Design Patterns ( Entwurfsmuster ). Auch die Architekten der großen Pyramiden bedienten sich offensichtlich bestimmter Entwurfsmuster beim Entwerfen dieser riesigen Bauwerke, sonst wäre es wohl ein ziemlich großer Zufall, dass alle dieselbe Grundform (die Pyramide) besitzen. [5] Der Begriff Design Pattern der genau diese Idee beschreibt, wurde aber erst 1977 durch den Architekten Christopher Alexander genannt, der diesen Begriff in einer seiner vielen schriftlichen Arbeiten zu Mustern (Patterns) in der Architektur das erste Mal verwendete. Im Jahr 1987 erkannten Kent Beck und Ward Cunningham das Potential dieser Idee und legten diese auf die Softwareentwicklung um und entwickelten die ersten Software Design Patterns zur Entwicklung von graphischen Oberflächen in Programmiersprache SmallTalk. Mit diesem Schritt machten sie einige Softwarespeziallisten auf dieses Thema aufmerksam, aber zum wirklichen Durchbruch verhalf den Design Patterns jedoch erst 1995 die Gang of Four, welch aus den Autoren Erich Gemma, Richard Helm, Ralph Johnson und John Vlissides besteht, mit ihrem heute berühmten Buch Design Patterns - Elements of Reusable Object-Oriented Software (siehe [4]). [6] [5] 2.2 Eigenschaften von Design Patterns Ein gut geschriebener Design Pattern sollte laut Doug Leas Arbeit Christopher Alexander: An Introduction for Object-Oriented Designers [2] folgende Eigenschaften besitzen: Zusammenfassung von Problem und Lösung ( Encapsulation ) Ein Entwurfsmuster fasst ein gut definiertes Problem und eine dazu passende funktionierende Lösung klar und genau zusammen. Zusätzlich werden auch die Vorraussetzungen die ein Problem und die Entwicklungsumgebung erfüllen muss damit das Muster auch wirklich als funktionierende Lösung verwendet werden kann. Abstraktion ( Abstraction ) Ein Design Pattern abstrahiert Wissen und Erfahrungen aus einem gewissen (Problem-) Bereich um es wenn möglich in einer Vielzahl von anderen Bereichen ebenfalls anwenden zu können. Durch die Abstraktion kann dieses Wissen auch besser an Andere weitergegeben werden und durch Benennung dieses Design Patterns kann dieses auch in das eigene Vokabular aufgenommen werden, um Diskussionen bei Entwurfsproblemen und deren Lösung zu erleichtern. 3

4 Offenheit für Änderungen bzw. Erweiterbarkeit ( Openness ) Jedes Entwurfsmuster sollte offen für Änderungen und Erweiterung durch andere Muster sein damit auch größere und kompliziertere Probleme dadurch gelöst werden können. Anwendbarkeit und Kombinierbarkeit ( Generativity and Composability ) Design Patterns sollen bei möglichst vielen Entwurfsproblemen in möglichst vielen Bereichen anwendbar (und auch funktionstüchtig) sein. Aber dadurch das Design Patterns meist relativ allgemein beschrieben sind um dies zu ermöglichen kann ein allgemeineres Muster ein oder mehrere nicht so allgemeine Muster überlappen bzw. aus solchen zusammengesetzt sein. Ausgeglichenheit ( Equilibrium ) Bei jedem Design Pattern sollen nicht nur die Möglichkeiten und Vorteile sondern auch die Einschränkungen bzw. die Nachteile bekannt sein. Es soll sozusagen eine Balance zwischen der Aufzählung der Vorteile und der Nachteile geben. 2.3 Beschreibung eines Design Patterns Um all diese Eigenschaften eines Entwurfsmusters in der objektorientierten Softwareentwicklung zu beschreiben ist eine gute und detaillierte Form der Beschreibung notwendig. In dem Buch Entwurfsmuster von (u.a.) Erich Gamma [4, Seiten 8-10] sieht diese wie folgt aus: Mustername und Klassifizierung: Ein Mustername erklärt schnell und möglichst genau was es beinhaltet bzw. kann. Zweck: Welchen Zweck hat das Muster und welche Probleme es behandelt. Auch bekannt als: Synonyme für das Muster falls es sie gibt. Motivation: Beschreibt ein Szenario eines Entwurfsproblems ziemlich genau und eher aus praktischer Sicht und erklärt wie das Entwurfsmuster dieses Problem mittels ihrer speziellen Klassen- und Objektstrukturen löst. Dieser Teil soll es erleichtern die abstrakteren Beschreibungen des Patterns zu verstehen. Anwendbarkeit: In welchen Problemsituationen kann man das Muster anwenden und woran diese Situationen erkannt werden können. Struktur: Eine graphische Darstellung der Klassen und deren Verbindungen untereinander im Muster etwa mittels UML-Diagrammen (z.b. Klassendiagramm, Interaktionsdiagramme, etc.) Teilnehmer: Beschreibt die im Entwurfsmuster enthaltenen Klassen bzw. Objekte und deren Aufgaben. Interaktionen: Beschreibt wie die Klassen miteinander zusammenarbeiten. 4

5 Konsequenzen: Erklärt was vom Entwurfsmuster zu erwarten ist, welche Einschränkungen, Vor- und Nachteile es mit sich bringt. Implementierung: Beschreibt worauf man bei der Anwendung des Musters besonders acht geben muss und gibt Tipps die einem bei der Umsetzung helfen könnten. Beispielcode: Enthält Beispiele wie Teile des Codes in einer bestimmten Programmiersprache aussehen könnten. Bekannte Verwendungen: Zählt Beispiele für bereits erfolgreiche Verwendungen des Musters in gewissen Systemen auf. Verwandte Muster: Falls ähnliche Muster oder Verbindungen zu anderen Mustern bekannt sind werden die wichtigsten Unterschiede oder mögliche Kombinationsmöglichkeiten mit diesen Design Patterns genannt bzw. beschrieben. 2.4 Arten von Design Patterns Erzeugungsmuster ( Creational Patterns ) Dabei handelt es sich um Design Patterns die sich vor allem mit der Erzeugung von Objekten befassen. Es beschreibt den Prozess der Objekterzeugung mithilfe von gewissen Erzeugungsstrukturen, die einem bei bekannten Erzeugungsproblemen helfen sollen Strukturmuster ( Structural Patterns ) Beschreiben wie Klassen bzw. Objekte zu größeren und komplexeren Strukturen zusammengefasst werden können, wobei sich aber die meisten Strukturmuster mit Objektstrukturen befassen Verhaltensmuster ( Behavioral Patterns ) Beschreiben die Art und Wiese wie Objekte bzw. Klassen miteinander kommunizieren, zusammenarbeiten und Zuständigkeiten (bzw. Aufgaben) untereinander delegiert (zugeteilt bzw. aufgeteilt) werden. 3 Was Design Patterns nicht sind Trotz der Bemühungen vieler Experten auf diesem Gebiet, genau zu erklären was Design Patterns sind und auch versuchen dies durch das einbringen von Beispielen bringen zu bestärken, kommt es immer wieder zu Missverständnissen bzw. Fehlinterpretationen wenn es darum geht was nun die tatsächlichen Aufgaben bzw. Nutzen von Design Patterns sind. John Vlissides, ein Mitglied der Gang of Four beschäftigt sich in seinem Buch Entwurfsmuster anwenden [3] unter anderem mit solchen Missverständnissen bezüglich der Frage was Design Patterns sind bzw. was sie nicht sind: 5

6 Muster sind nichts weiter als Fachsprache, Regeln, Programmiertricks, Datenstrukturen, Algorithmen, Code,... [3, Seite 4] Diese Aussage trifft zwar in gewisser Weise zu, könnte aber zugleich fast als Beleidigung von Design Patterns gesehen werden, weil es die Fähigkeiten und Möglichkeiten von Entwurfsmustern als sehr eingeschränkt darstellt, obwohl Design Patterns mehr Ideen darstellen als fixe Entwurfsstrukturen vorgeben. Die Eigenschaften der Erweiterbarkeit, Kombinierbarkeit und einige andere Eigenschaften gehen durch diese verallgemeinernde Aussage verloren und ist daher nicht wirklich eine zutreffende Beschreibung von Design Patterns. Muster garantieren wieder verwendbare Software, höhere Produktivität, den Weltfrieden etc. [3, Seite 7] Muster, erzeugen vollständige Architekturen. [3, Seite 9] Dieses Missverständnis gibt Grund zur Vermutung, dass Entwurfsmuster den Entwicklern (den Anwendern) die Arbeit abnehmen ein System wirklich selbst zu entwickeln und sozusagen nur einen Baukasten Entwurfsmuster verwenden um das System zusammenzubauen. Wie bereits in den vorangegangenen Kapitel erklärt wurde, handelt es sich bei Design Patterns lediglich um Beschreibungen von bekannten und erfahrungsmäß funktionierenden Ideen bzw. Konzepten zur Lösung von wiederkehrenden Entwurfsproblemen und nicht um ein Rezept oder Code, dass vom Anwender einfach abgetippt werden muss, weshalb er bei der Umsetzung eines Design Patterns immer noch sehr viel selbst zu überlegen und zu tun hat. Dabei und auch schon bei der Wahl des Entwurfsmusters zur Lösung seines Entwurfsproblems kann er immer noch leicht Fehler machen, denn Muster selbst garantieren nichts, da der größte Teil der Umsetzung immer noch am Entwickler (dem Faktor Mensch) hängt. 4 Anti-Patterns 4.1 Was sind Anti-Patterns? Anti-Patterns beschreiben im Gegensatz zu Design Patterns immer wieder auftretende falsche Lösungen, die Entwicklern zeigen soll wie man ein bestimmtes Problem nicht lösen sollte bzw. welche negativen Konsequenzen diese Lösung mit sich bringen würde. Ein Anti-Pattern zeigt aber nicht nur wie man es nicht machen soll, sondern erklärt auch warum eine bestimmte Lösung nicht funktioniert und beschreibt wie man es besser bzw. richtig machen kann. [6] Ein vollständig dokumentierter Anti-Pattern beschreibt eine fehlerhafte Lösung eines Problems indem er das allgemeine Problem, die Problemauslöser, die Symptome an denen man das allgemeine Problem erkennen kann und die Konsequenzen bzw. Fehler die durch diese Probleme entstehen erklärt und liefert eine funktionierende korrekte Lösung das so genannte Refactoring der Lösung. [1] 6

7 4.2 Wie kommt es zu einem Anti-Pattern? Ein Anti-Pattern kann in der Software-Entwicklung durch fehlende Erfahrungen und fehlenden Kenntnissen der Entwickler oder deren Vorgesetzten bei der Lösung von bestimmten Arten von Problemen entstehen. Sie machen also so genannte klassische Fehler die schon viele andere vor ihnen gemacht haben. Genau solche klassischen Fehler werden Anti-Patterns genannt. Wie der Name Anti-Patterns schon vermuten lässt existiert ein gewisser Zusammenhang zwischen Anti-Patterns und Design Patterns. Dieser besteht darin, dass es bei der Verwendung von Entwurfsmustern in der Praxis oft das Problem gibt, dass ein eigentlich perfekt funktionierendes Muster oft falsch bzw. im falschen Kontext angewandt wird, wodurch sich aus einem Design Pattern auch ein Anti-Patterns entwickeln kann. Einige Hauptursachen für Fehler in der Software-Entwicklung und Beispiele dafür sind [1]: Unangebrachte Hast: Durch Zeitdruck bei der Entwicklung einer Software müssen oft Kompromisse im Bezug auf die Qualität gemacht werden, indem auf ausführliche Tests verzichtet wird. Desinteresse: Desinteresse an einem Software-Projekt kann zu mangelnder Qualität führen, da kein Interesse besteht, die beste Lösung sondern nur irgendeine Lösung zu finden. Engstirnigkeit: Die Weigerung eine andere vielleicht praktischere Lösung überhaupt in betracht zu ziehen oder gar zu verwenden. Andere Hauptursachen sind auch: Faulheit, Geiz, Ignoranz, Stolz, usw. 5 Zusammenfassung 5.1 Vorteile von Design Patterns Entwurfsmuster bieten dem Nutzer einiges an Vorteilen und zwar nicht nur bei der Entwurfsentwicklung. So helfen Design Patterns Erfahrungen in der Entwicklung (Expertenwissen) in schriftlicher Form zu sammeln und zu beschreiben, wodurch sich zusätzlich der Vorteil ergibt, dass diese Erfahrungen der breiten Masse zur Verfügung gestellt und nutzbar gemacht werden können. Durch die Verbreitung dieser durch Entwurfsmuster beschriebener Erfahrungen und der Eigenschaft von Entwurfsmustern, einen sprechenden und zusammenfassenden Namen zu besitzen, können und werden diese Namen in die Fachsprache der Softwareentwicklung aufgenommen, wodurch diese Diskussionen und das Erklären eines Entwurfs um einiges vereinfacht werden können. Beschreibungen von Entwurfsmustern enthalten nicht nur die Lösung eines Entwurfsproblems, sondern auch andere Informationen wie etwa die Vor- und Nachteile dieser Lösung, wodurch es auch weniger erfahrenen Entwicklern erleichtert wird diese zu verwenden. Durch eine Vielzahl von Eigenschaften der Design Patterns erspart sich der Entwickler im Normalfall einiges an Zeit und Geld und auch die Wartungsfähigkeit und Erweiterbarkeit wird erhöht. 7

8 5.2 Nachteile von Design Patterns Bei der Nutzung von Design Patterns kann es passieren, dass der Entwickler sich zu sehr auf Patterns verlässt und nicht darüber nachdenkt bzw. nachliest welche Einschränkungen und Nachteile diese Muster mit sich bringen. Denn durch unbedachten Einsatz von Entwurfsmustern können beispielsweise eigentlich einfache Entwürfe unnötig vergrößert und verkompliziert werden, wo es doch eine vielleicht zwar speziellere, aber einfachere Lösung gibt, denn Entwurfsmuster erhöhen oftmals (unnötigerweise) die Anzahl von Klassen. Ein guter Einsatz von Design Patterns zeichnet sich nämlich dadurch aus, dass sie einen Entwurf verbessern, sei dies jetzt im Bezug auf Übersichtlichkeit, Erweiterbarkeit oder sonstigen Verbesserungsmöglichkeiten. Wenn ein Entwurfsmuster, welches viel Flexibilität oder Erweiterbarkeit bietet, bei einem Entwurf eingesetzt wird, bei dem diese Eigenschaften nicht benötigt werden, dann entsteht daraus nur ein unnötiger Mehraufwand und das entworfene System verliert möglicherweise zusätzlich noch einiges an Effizienz (Geschwindigkeit). Auch durch die ständig steigende Anzahl an Entwurfsmustern wird die Suche nach dem richtigen Muster, wenn man bisher erst mit wenigen zu tun hatte, immer zeitaufwändiger und auch das Einlesen in ein Entwurfsmuster kann möglicherweise (bei schlechter Beschreibung oder komplexeren Mustern) einiges an Zeit und Aufwand kosten. 5.3 Abschluss und Ausblicke Die Idee von Entwurfsmustern gibt es schon seitdem Menschen denken können und wurde seither bewusst oder unbewusst immer wieder genutzt. Erst Christopher Alexander in der Architektur und später die Gang of Four bestehend aus Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides in der Softwareentwicklung entwickelten den Begriff Design Pattern bzw. Entwurfsmuster und eine Formalisierung (Arten der Beschreibungen) dieser Grundidee. In der Architektur konnte sich diese Erfindung jedoch nicht durchsetzten, in der Softwareentwicklung hingegen schon. Durch das Erstellen eines Kataloges bestehend aus bekannten und vor allem detailliert beschriebenen Entwurfsmustern schaffte die Gang of Four es den Bereich der Softwareentwicklung zu begeistern und lösten dort dadurch einen Hype aus der noch immer andauert. Erfahrungen von Experten konnten nun endlich auf gute Art und Weise an Anfänger weitergegeben werden und diese schneller zu Experten heranwachsen, wodurch Design Patterns die Qualität in der Softwareentwicklung erhöht werden konnte. Mit diesem Hype treten aber auch immer mehr Missverständnisse auf und auch der Katalog an Design Patterns wird immer größer und dadurch leider auch unübersichtlicher. Erfahrungen mit Design Patterns werden deshalb für das Zurechtfinden in solchen Katalogen eine immer größere Notwendigkeit, wodurch sich vielleicht viele potentielle Nutzer von Entwurfsmustern möglicherweise abschrecken lassen könnten, weil ihnen einfach der Einarbeitunsaufwand zu groß erscheint. Doch Leute wie jene der Gang of Four und auch Universitäten versuchen Softwareentwicklern so einfach wie möglich und Schritt für Schritt an Design Pattern näher zu bringen und damit Design Patterns mehr und mehr zu Basiskenntnissen der Softwareentwicklung zu machen. 8

9 Literatur [1] BROWN, W.J.; MALVEAU, R.C.; McCORMICK III, H.W.; MOWBRAY, T.J.: Anti-Patterns - Entwurfsfehler erkennen und vermeiden, 1. Auflage mitp-verlag/bonn, 2004 [2] LEA, Doug: Christopher Alexander: An Introduction for Object-Oriented Designers [3] VLISSIDES, John: Entwurfsmuster anwenden - Die Fortsetzung des Klassikers der Gang of Four, Addison Wesley Verlag in Pearson Education Deutschland/München, 1999 [4] GAMMA, Erich; HELM, Richard; JOHNSON, Ralph; VLISSIDES, John: Entwurfsmuster - Elemente wiederverwendbarer objektorient. Software, Addison Wesley Verlag in Pearson Education Deutschland/München, 2004 [5] [6] 9

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

- Antipatterns - der Softwareentwicklung. Tanja Brockmeier

- Antipatterns - der Softwareentwicklung. Tanja Brockmeier - Antipatterns - der Softwareentwicklung Tanja Brockmeier Antipatterns Definition Antipatterns: sind eine häufige wiederkehrende Lösungen, die fehlerhaft sind und Merkmale mit sich bringen, die unerwünscht

Mehr

Anti-Patterns. Zuverlässige Software SS2009 Friedrich Gensicke

Anti-Patterns. Zuverlässige Software SS2009 Friedrich Gensicke Anti-Patterns Zuverlässige Software SS2009 Friedrich Gensicke Gliederung 1. Einführung Was sind Anti Patterns? Unterschiede Design Pattern Anti Pattern Grundursachen Klassifizierung 2. Anti Patterns in

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Model-View-Controller

Model-View-Controller Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung

Mehr

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte und Funktionale Programmierung SS 2014 Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Entwurfsmuster (Design Pattern) ETIS SS05

Entwurfsmuster (Design Pattern) ETIS SS05 Entwurfsmuster (Design Pattern) ETIS SS05 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung 2 Motivation I Wie gut sind eure Programme strukturiert? Wartbarkeit? - Verständlichkeit

Mehr

Die 7 Todsünden der Softwareentwicklung Sascha Kohlmann 7 Todsünden der Softwareentwicklung

Die 7 Todsünden der Softwareentwicklung Sascha Kohlmann 7 Todsünden der Softwareentwicklung Die 7 Todsünden der Softwareentwicklung Die christlichen Todsünden Die christlichen 7 Todsünden gehen auf Evagrius Ponticus zurück Mönch im 4. Jahrhundert n. Chr. Ursprung 8 Dämonen: Völlerei, Unkeuschheit,

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

Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier

Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier Karl Eilebrecht Karlsruhe, Deutschland Gernot Starke Köln, Deutschland ISSN 2195-3651 ISBN 978-3-642-34717-7 DOI 10.1007/978-3-642-34718-4 ISSN 2195-366X (electronic) ISBN 978-3-642-34718-4 (ebook) Die

Mehr

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams Lothar Wendehals 6. Workshop Software-Reengineering Bad Honnef, 3. - 5. Mai 2004 Motivation Unterstützung des

Mehr

Notationen zur Prozessmodellierung

Notationen zur Prozessmodellierung Notationen zur Prozessmodellierung August 2014 Inhalt (erweiterte) ereignisgesteuerte Prozesskette (eepk) 3 Wertschöpfungskettendiagramm (WKD) 5 Business Process Model and Notation (BPMN) 7 Unified Modeling

Mehr

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Prof. Dr. Dr. h.c. Manfred Broy Sommersemester Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Einführung in die Softwaretechnik Übung 6: Feinentwurf Aufgabe 17: Entwurfsmuster

Mehr

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens November DESIGN'PATTERN'2011 INHALT Intent Motivation Applicability Structure Consequences Implementation Sample Code [1] BEARBEITET VON Christoph Süsens Abstract Factory & Factory Method Inhaltsverzeichnis

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

Software Engineering Übung 4 Architektur, Modulentwurf

Software Engineering Übung 4 Architektur, Modulentwurf software evolution & architecture lab Software Engineering Übung 4 Architektur, Modulentwurf 1 Informationen 1.1 Daten Ausgabe Di 27.10.2009 Abgabe So 08.11.2009 bis 23:59 Uhr Besprechung am Di 17.11.2009

Mehr

APPS für ios 10. professionell entwickeln. Apple Watch

APPS für ios 10. professionell entwickeln. Apple Watch thomas SILLMANN APPS für ios 10 professionell entwickeln // Sauberen Code schreiben mit Swift 3 und Objective-C // Stabile Apps für iphone und ipad programmieren // Techniken & Methoden von Grund auf verstehen

Mehr

29.01.2013. Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster

29.01.2013. Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

Software-Architektur Design Patterns

Software-Architektur Design Patterns Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 29 UML Einführung Klassendiagramme in der UML Relationen zwischen Klassen Einführung:

Mehr

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur Übersicht Object Oriented Organization Das System besteht aus Objekten, die mittels Methodenaufrufe (Nachrichten) miteinander kommunizieren. 2 / 34 4 / 34,, Design Patterns und Stefan Wehr Prof. Dr. Peter

Mehr

Referat Extreme Programming. Von Irina Gimpeliovskaja und Susanne Richter

Referat Extreme Programming. Von Irina Gimpeliovskaja und Susanne Richter Referat Extreme Programming Von Irina Gimpeliovskaja und Susanne Richter 1.) Was ist XP? Überlegte Annäherung an Softwareentwicklung Prozessmodell für objektorientierte Softwareentwicklung erfordert gute

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

Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs. Verteidigung der Bachelorarbeit von Arndt Tigges

Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs. Verteidigung der Bachelorarbeit von Arndt Tigges Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs Verteidigung der Bachelorarbeit von Arndt Tigges Überblick Einleitung Saros Refaktorisierung Durchführung Analysen Anwendung

Mehr

Seminar Software Design Pattern

Seminar Software Design Pattern Seminar Software Design Pattern Factory Method, Abstract Factory, Prototype Betriebliche Informationssysteme Institut für Informatik Universität Leipzig 13.05.2009 Gliederung 1 Design Pattern 2 Problembeispiel

Mehr

Was ist Software-Architektur?

Was ist Software-Architektur? Was ist Software-Architektur? Stephan Schulze Martin Knobloch 28.04.2004 Seminar: Software-Architektur Humboldt Universität zu Berlin sschulze knobloch@informatik.hu-berlin.de Gliederung Begriffsbestimmung

Mehr

Design Patterns. 5. Juni 2013

Design Patterns. 5. Juni 2013 Design Patterns 5. Juni 2013 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Refactoring und Design Patterns: Welchen Zusammenhang gibt es

Mehr

Objektorientierte Analyse (OOA) OOA-Pattern

Objektorientierte Analyse (OOA) OOA-Pattern OOA-Muster (Architektur Pattern) Ein Pattern (Entwurfsmuster) ist ein Problem mit seiner Lösung in einem Kontext. Der Kontext enthält in der Regel Zielkonflikte, die der Designer lösen muss, z.b. Performance

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

Analysemuster. Marc Monecke monecke@informatik.uni-siegen.de

Analysemuster. Marc Monecke monecke@informatik.uni-siegen.de Analysemuster Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 2. Mai 2003 Inhaltsverzeichnis Grundlagen

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

8 Baum in perfekter Komposition

8 Baum in perfekter Komposition 8 Baum in perfekter Komposition Die Implementierung des Binärbaums im letzten Kapitel wird mithilfe des Entwurfsmusters Kompositum optimiert. Knoten und Abschluss Bei der einfach verketteten Liste wurde

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Kapitel 2 Die Definitionsphase Prof. Walter F. Tichy Wo sind wir gerade? Planung Lastenheft (funktionales Modell) Definition (Analyse) Pflichtenheft

Mehr

BEREITS ERSCHIENEN. The Fall. - Prophezeiung eines Untergangs * * * Umstieg auf. Microsoft Word leicht gemacht * * * DIE VORSORGEVOLLMACHT

BEREITS ERSCHIENEN. The Fall. - Prophezeiung eines Untergangs * * * Umstieg auf. Microsoft Word leicht gemacht * * * DIE VORSORGEVOLLMACHT 1 BEREITS ERSCHIENEN The Fall - Prophezeiung eines Untergangs * * * Umstieg auf Microsoft Word 2007 leicht gemacht * * * DIE VORSORGEVOLLMACHT 2 DIE VORSORGEVOLLMACHT Marcel Niggemann 3 2008 Marcel Niggemann.

Mehr

8 Design Patterns. Events

8 Design Patterns. Events 8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D 1 1. EINLEITUNG... 3 2. ZWECK... 3 3. MOTIVATION... 3 4. ANWENDBARKEIT... 6 5. STRUKTUR... 6 6. TEILNEHMER... 7 7. INTERAKTION...

Mehr

Inhaltsverzeichnis. a. Standorte...3 1. Design Patterns...6. b. Impressum... 16. i. C#.NET...6. ii. Enterprise Integration Patterns...

Inhaltsverzeichnis. a. Standorte...3 1. Design Patterns...6. b. Impressum... 16. i. C#.NET...6. ii. Enterprise Integration Patterns... 2 Inhaltsverzeichnis a. Standorte...3 1. Design Patterns...6 i. C#.NET...6 ii. Enterprise Integration Patterns... 8 iii. Entwurfsmuster-Katalog Standard (GoF)...10 iv. Java...12 v. PHP... 14 b. Impressum...

Mehr

SEA. Modellgetriebene Softwareentwicklung in der BA

SEA. Modellgetriebene Softwareentwicklung in der BA SEA Modellgetriebene Softwareentwicklung in der BA MDA bei der BA Ziele/Vorteile: für die Fachabteilung für die Systementwicklung für den Betrieb Wie wird MDA in der BA umgesetzt? Seite 2 MDA bei der BA

Mehr

Architekturrefactorings

Architekturrefactorings Architekturrefactorings Henrik Holle Universität Bremen holle@tzi.de Abstract Architekturrefactorings sind semantikerhaltende Transformationen, welche die Architektur der Software verbessern. Im Gegensatz

Mehr

LEHRVERANSTALTUNGSBESCHREIBUNG

LEHRVERANSTALTUNGSBESCHREIBUNG LEHRVERANSTALTUNGSBESCHREIBUNG 1. Angaben zum Programm 1.1 Hochschuleinrichtung Babes-Bolyai Universität 1.2 Fakultät Mathematik und Informatik 1.3 Department Informatik 1.4 Fachgebiet Informatik 1.5 Studienform

Mehr

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08 Security Patterns Benny Clauss Sicherheit in der Softwareentwicklung WS 07/08 Gliederung Pattern Was ist das? Warum Security Pattern? Security Pattern Aufbau Security Pattern Alternative Beispiel Patternsysteme

Mehr

Patterntemplate. Deliverable E2.1

Patterntemplate. Deliverable E2.1 Patterntemplate Deliverable E2.1 Projekt USecureD Usable Security by Design Förderinitiative Einfach intuitiv Usability für den Mittelstand Förderkennzeichen 01MU14002 Arbeitspaket AP 2.1 Fälligkeit 31.01.2016

Mehr

Ziele und Tätigkeiten von Architekten

Ziele und Tätigkeiten von Architekten Ziele und Tätigkeiten von Architekten Definition Software Architektur o A software architecture provides a model of a whole software system that is composed of internal behavioral units (i.e. components)

Mehr

Unified Modeling Language (UML)

Unified Modeling Language (UML) Kirsten Berkenkötter Was ist ein Modell? Warum Modellieren? Warum UML? Viele, viele Diagramme UML am Beispiel Was ist ein Modell? Ein Modell: ist eine abstrakte Repräsentation eines Systems, bzw. ist eine

Mehr

Software-Entwicklung

Software-Entwicklung Software-Entwicklung SEP 96 Geschichte der Programmierung Aufgaben von, Anforderungen an Programme mit der Zeit verändert 1 Programmierung über Lochkarten z.b. für Rechenaufgaben 2 maschinennahe Programmierung

Mehr

Entwicklungswerkzeuge

Entwicklungswerkzeuge Entwicklungswerkzeuge Werner Struckmann & Tim Winkelmann 10. Oktober 2012 Gliederung Anforderungen Projekte Debugging Versionsverwaltung Frameworks Pattern Integrated development environment (IDE) Werner

Mehr

Vorlesung Donnerstags, 10.00 bis 11.30 Uhr, HS12 Übung Dienstags, 14.00 bis 15.30 Uhr 4-5 ÜbungsbläMer (Programmieraufgaben)

Vorlesung Donnerstags, 10.00 bis 11.30 Uhr, HS12 Übung Dienstags, 14.00 bis 15.30 Uhr 4-5 ÜbungsbläMer (Programmieraufgaben) Komponenten Einführung Organisatorisches 2+1 SWS Vorlesung Donnerstags, 10.00 bis 11.30 Uhr, HS12 Übung Dienstags, 14.00 bis 15.30 Uhr 4-5 ÜbungsbläMer (Programmieraufgaben) Klausur 28. Februar 2013 Unterlagen

Mehr

1. Einleitung. 1.1 Motivation. 1.2 Ziel der Arbeit. 1.3 Danksagung

1. Einleitung. 1.1 Motivation. 1.2 Ziel der Arbeit. 1.3 Danksagung 1. Einleitung 1.1 Motivation Im Fach Systemprogrammierung des Informatik-Grundstudiums lernen die Studenten die Assembler-Sprache des Sparc-Mikroprozessors [6] kennen. Um mit dem Befehlssatz zu experimentieren,

Mehr

Entwurfsmuster und Softwarearchitekturen für sicherheitskritische Systeme

Entwurfsmuster und Softwarearchitekturen für sicherheitskritische Systeme 1 Entwurfsmuster und Softwarearchitekturen für sicherheitskritische Systeme Für das Seminar Analyse, Entwurf und Implementierung zuverlässiger Software Von: Andreas Seibel Betreut durch: Dr. Holger Giese

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

6 Architektur-Mittel (WOMIT)

6 Architektur-Mittel (WOMIT) 6 Architektur-Mittel (WOMIT) Abb. 6-1: Positionierung des Kapitels im Ordnungsrahmen. Dieses Kapitel befasst sich mit der WOMIT-Dimension des architektonischen Ordnungsrahmens, indem es grundlegende Konzepte

Mehr

PowerPoint Professionell Präsentieren. Inge Baumeister

PowerPoint Professionell Präsentieren. Inge Baumeister PowerPoint 2016 Professionell Präsentieren Inge Baumeister Inhalt Verlag: BILDNER Verlag GmbH Bahnhofstraße 8 94032 Passau http://www.bildner-verlag.de info@bildner-verlag.de Tel.: +49 851-6700 Fax: +49

Mehr

SE Besprechung. Übung 4 Architektur, Modulentwurf

SE Besprechung. Übung 4 Architektur, Modulentwurf SE Besprechung Übung 4 Architektur, Modulentwurf SE, 22.11.11 Mengia Zollinger 2.1 Architekturstile (6 Punkte) 2.1.A Ausgabe eines Monatsabos an Angestellte Lösung: Pipe-and-Filter Beispiel Lösung [Benz,

Mehr

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster

Mehr

Zur Erstellung des Projektberichts u. a. wissenschaftlicher Arbeiten

Zur Erstellung des Projektberichts u. a. wissenschaftlicher Arbeiten Zur Erstellung des Projektberichts u. a. wissenschaftlicher Arbeiten Tilman Vierhuff 4. Februar 2005 2 Zweck und Ziele des Projektberichts 2 Zweck und Ziele des Projektberichts Bewertungsgrundlage 2 Zweck

Mehr

Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung im SS 2007

Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung im SS 2007 Softwaretechnik Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung im SS 2007 1 Ziele Die Analyse einer softwaretechnischen Problemstellung nach objektorientierten

Mehr

1 Der Prozess der Softwareentwicklung

1 Der Prozess der Softwareentwicklung Die Entwicklung von Softwaresystemen wird gerne verglichen mit dem Bau eines Hauses. Es gibt tatsächlich viele Parallelen: Ein Haus entsteht aus einer ersten Idee, die in Bauplänen weiterentwickelt wird.

Mehr

APPS für ios 9 professionell entwickeln

APPS für ios 9 professionell entwickeln thomas SILLMANN 2. Auflage APPS für ios 9 professionell entwickeln // Sauberen Code schreiben mit Objective-C und Swift // Stabile Apps programmieren // Techniken und Methoden von Grund auf verstehen Inkl.

Mehr

Wahlpflichtfach Design Pattern

Wahlpflichtfach Design Pattern Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik miwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338

Mehr

Design Patterns in der Softwareentwicklung

Design Patterns in der Softwareentwicklung Design Patterns in der Softwareentwicklung Verwendungen in Theorie und Praxis am Beispiel Magento Projektarbeit Nr.: 3 vorgelegt am: 15.08.2011 von: Michael Dähnert Weickelsdorfer Hauptstraße 16 06721

Mehr

1 Mengen und Aussagen

1 Mengen und Aussagen $Id: mengen.tex,v 1.2 2010/10/25 13:57:01 hk Exp hk $ 1 Mengen und Aussagen Der wichtigste Grundbegriff der Mathematik ist der Begriff einer Menge, und wir wollen damit beginnen die klassische, 1878 von

Mehr

Kapitel 1 1 Einleitung

Kapitel 1 1 Einleitung Kapitel 1 Einleitung 1 1 1 Einleitung 1 Einleitung Die Informatik begegnet uns im Alltag ständig. Einmal natürlich als Rechenanlagen, die wir in Büros, Arztpraxen und zu Hause sehen. Zum anderen ist sie

Mehr

Objektorientierte Modellierung (1)

Objektorientierte Modellierung (1) Objektorientierte Modellierung (1) Die objektorientierte Modellierung verwendet: Klassen und deren Objekte Beziehungen zwischen Objekten bzw. Klassen Klassen und Objekte Definition Klasse Eine Klasse ist

Mehr

Factory Method Pattern

Factory Method Pattern Factory Method Pattern Bedeutung: Das Muster ist eines der sogenannten GoF-Entwurfsmuster (Gang offour). Es bezeichnet ein Muster, bei dem die Schnittstelle zur Erstellung eines Objektes eine (abstrakte)

Mehr

Software - Testung ETIS SS05

Software - Testung ETIS SS05 Software - Testung ETIS SS05 Gliederung Motivation Was ist gute Software? Vorurteile gegenüber Testen Testen (Guidelines + Prinzipien) Testarten Unit Tests Automatisierte Tests Anforderungen an Testframeworks

Mehr

Kapitel 3: Berechnungstheorie Gliederung

Kapitel 3: Berechnungstheorie Gliederung Gliederung 0. Motivation und Einordnung 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 3.1. Einordnung 3.2. Berechnungsmodelle 3.3. Diskussion 3.4. Ergebnisse und

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

Testfallgenerierung aus Statecharts und Interaktionsdiagrammen

Testfallgenerierung aus Statecharts und Interaktionsdiagrammen Testfallgenerierung aus Statecharts und Interaktionsdiagrammen Dehla Sokenou TU Berlin Softwaretechnik Motivation Warum Testen mit Hilfe von UML? UML verbreitete Spezifikationssprache in der Objektorientierung

Mehr

Objektorientierte Analyse & Design

Objektorientierte Analyse & Design Objektorientierte Analyse & Design Analyse-Phase Teil 1 Einordnung im SW-Lebenszyklus Software- Entwicklung Einsatz Wartung Problemdefinition Spezifikation Implementation Auslieferung Analyse Entwurf Erprobung

Mehr

ALGOL 68 im Aspekt einer modernen Programmiersprache???

ALGOL 68 im Aspekt einer modernen Programmiersprache??? ALGOL 68 im Aspekt einer modernen Programmiersprache??? General-purpose-Programmiersprache: Ein sehr wichtiges Kriterium ist die Möglichkeit, alle Algorithmen (=Lösungsverfahren) in einer Programmiersprache

Mehr

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003 Software Engineering Softwaretechnik Softwaretechnologie, Software Engineering (engl.) das, -, Teilgebiet der Informatik, das sich mit Methoden und Werkzeugen für das ingenieurmäßige Entwerfen, Herstellen

Mehr

Methodische objektorientierte Softwareentwicklung

Methodische objektorientierte Softwareentwicklung Methodische objektorientierte Softwareentwicklung Eine Integration klassischer und moderner Entwicklungskonzepte von Mario Winter 1. Auflage Methodische objektorientierte Softwareentwicklung Winter schnell

Mehr

Wie beweise ich etwas? 9. Juli 2012

Wie beweise ich etwas? 9. Juli 2012 Schülerzirkel Mathematik Fakultät für Mathematik. Universität Regensburg Wie beweise ich etwas? 9. Juli 2012 1 Was ist ein Beweis? 1.1 Ein Beispiel Nimm einen Stift und ein Blatt Papier und zeichne fünf

Mehr

Einführung in die objektorientierte Programmierung. mit Squeak

Einführung in die objektorientierte Programmierung. mit Squeak Einführung in die objektorientierte Programmierung mit Squeak Quellen Squeak Object-Oriented Design with Multimedia Applications, Mark Guzdial, 2001, Prentice Hall http://people.freenet.de/deckard73/page

Mehr

Was führ'n Typ sind Sie denn?

Was führ'n Typ sind Sie denn? Was führ'n Typ sind Sie denn? Der Arbeits-Stil-Test Kennen Sie das 11. Gebot? Es heißt: Liebe Deinen Nächsten wie Dich selbst. Sie erinnern sich? Das bedeutet, dass wir einen anderen Menschen so behandeln,

Mehr

Einführung in die Informationsverarbeitung Teil Thaller. Stunde VII: Planen und Realisieren

Einführung in die Informationsverarbeitung Teil Thaller. Stunde VII: Planen und Realisieren Einführung in die Informationsverarbeitung Teil Thaller Stunde VII: Planen und Realisieren Manfred Thaller, Universität zu Köln Köln 18. Dezember 2014 Rekapitulation Der Gang der Argumentation 1. Der Rohstoff:

Mehr

Dynamisches Huffman-Verfahren

Dynamisches Huffman-Verfahren Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über

Mehr

Software- und Systementwicklung

Software- und Systementwicklung Software- und Systementwicklung Seminar: Designing for Privacy 11.11.2009 Moritz Vossenberg Inhalt Vorgehensmodelle Wasserfallmodell V-Modell Phasen (Pflichtenheft) UML Klassendiagramm Sequenzdiagramm

Mehr

Flexibles E-Assessment auf Basis einer Service-orientierten Architektur

Flexibles E-Assessment auf Basis einer Service-orientierten Architektur auf Basis einer Service-orientierten Architektur Konzepte, Implementierung und Praxiserfahrungen Mario Amelung Katrin Krieger Dietmar Rösner Otto-von-Guericke-Universität Magdeburg Wissensbasierte Systeme

Mehr

Versuch 8 Gerätesteuerung mit SICL und VISA in C Widerstandskennlinie

Versuch 8 Gerätesteuerung mit SICL und VISA in C Widerstandskennlinie Fachhochschule Merseburg FB Informatik und Angewandte Naturwissenschaften Praktikum Messtechnik Versuch 8 Gerätesteuerung mit SICL und VISA in C Widerstandskennlinie Agilent IO Libraries - SICL und VISA

Mehr

Kapitel 5: Das Design

Kapitel 5: Das Design Nach der Analyse kommt... Kapitel 5: Das Design SoPra 2008 Kap. 5: Das Design (1/20) Kapitel 5.1: Überblick Was ist Design? Ergebnis der Analyse: abstrakte Definitionen Objektmodell: Klassen, Assoziationen,

Mehr

1. Einleitung wichtige Begriffe

1. Einleitung wichtige Begriffe 1. Einleitung wichtige Begriffe Da sich meine besondere Lernleistung mit dem graziösen Färben (bzw. Nummerieren) von Graphen (speziell von Bäumen), einem Teilgebiet der Graphentheorie, beschäftigt, und

Mehr

Erfolg ist programmierbar.

Erfolg ist programmierbar. 4578954569774981234656895856512457895456977498 3465689585651245789545697749812346568958561245 9545697749812346568958565124578954569774981234 6895856512457895456977498123465689585612457895 6977498123465689585651245789545697749812346568

Mehr

Unit Tests mit Junit 4. Dario Borchers

Unit Tests mit Junit 4. Dario Borchers Unit Tests mit Junit 4 Dario Borchers Agenda Warum testgetriebene Entwicklung von Software? - Motivation Was ist testgetriebene Entwicklung? - Prozess der testgetriebenen Entwicklung - Arten von Tests

Mehr

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Michael Saecker Bekannte Lösungen für bekannte Probleme benutzen Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Gemeinsames Vokabular für Designer 2 http://www.clickpix.de/sommer/architektur.jpg

Mehr

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Feature Modelle und ihre Anwendung Feature Modelle und ihre Anwendungen 22.07.2010 1 Software-Produktlinien Zusammenfassung mehrerer verwandter Softwaresysteme zu einer Domäne (Anwendungsgebiet) Softwaresysteme

Mehr

Die Softwareentwicklungsphasen!

Die Softwareentwicklungsphasen! Softwareentwicklung Die Softwareentwicklungsphasen! Die Bezeichnungen der Phasen sind keine speziellen Begriffe der Informatik, sondern den allgemeinen Prinzipien zur Produktion integrierter Systeme entliehen.

Mehr

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language ADV-Seminar Leiter: Ziel dieses Seminars Verständnis von Objekt-Orientierung Was sind Klassen? Was ist Vererbung?

Mehr

Middleware für Verteilte Informationssysteme

Middleware für Verteilte Informationssysteme Middleware für Verteilte Informationssysteme Prof. Dr. Stefan Deßloch Arbeitsgruppe Datenbanken und Informationssysteme Fachbereich Informatik Universität Kaiserslautern Folien zur Vorlesung Sommersemester

Mehr

PHP objektorientiert

PHP objektorientiert PHP objektorientiert Konzepte, Techniken, Code von Jörg Krause, Christian Alkemper, Peter Lavin 1. Auflage Hanser München 2006 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 40762 6 Zu Inhaltsverzeichnis

Mehr

Hackenbusch und Spieltheorie

Hackenbusch und Spieltheorie Hackenbusch und Spieltheorie Was sind Spiele? Definition. Ein Spiel besteht für uns aus zwei Spielern, Positionen oder Stellungen, in welchen sich das Spiel befinden kann (insbesondere eine besondere Startposition)

Mehr

Public-Key-Kryptographie

Public-Key-Kryptographie Kapitel 2 Public-Key-Kryptographie In diesem Kapitel soll eine kurze Einführung in die Kryptographie des 20. Jahrhunderts und die damit verbundene Entstehung von Public-Key Verfahren gegeben werden. Es

Mehr

Das Test-Framework JUnit ETIS SS04

Das Test-Framework JUnit ETIS SS04 Das Test-Framework JUnit ETIS SS04 Gliederung Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung 2 Motivation (I) Kostspielige Folgen

Mehr

Softwarepraktikum SS 2005 Inhalt - VL 10. Softwaretechnik. Softwareentwicklungszyklus (2) Wasserfallmodell. Softwareentwicklungszyklus

Softwarepraktikum SS 2005 Inhalt - VL 10. Softwaretechnik. Softwareentwicklungszyklus (2) Wasserfallmodell. Softwareentwicklungszyklus Softwarepraktikum SS 2005 Inhalt - VL 10 1 Softwaretechnik 2 Anforderungsanalyse 3 Systemmodelle Softwaretechnik Technische Disziplin, mit dem Ziel, kosteneffektiv Softwaresysteme zu entwickeln Techniken

Mehr

Oberseminar Softwareentwicklung. Softwareentwicklung

Oberseminar Softwareentwicklung. Softwareentwicklung Oberseminar Softwareentwicklung Grundlagen der Softwareentwicklung 07.05.05 Marcel Freudenberg 01 IN-D 1 Inhalt Motivation Vorschau Hintergedanke Grundlagen der Softwareentwicklung Quellenverzeichnis Fragenteil

Mehr

Extreme Programming. Referat von Viktoria Schwarzhaupt und Andrea Schuhmann

Extreme Programming. Referat von Viktoria Schwarzhaupt und Andrea Schuhmann Extreme Programming Referat von Viktoria Schwarzhaupt und Andrea Schuhmann 1. Was ist XP - Prozessmodell für die objektorientierte Softwareentwicklung - leichter Softwareentwicklungsprozess Analyse Design

Mehr

DIPLOMARBEIT. Entwurf und Implementierung eines modularen USB-Stacks für eingebettete Controller ohne Betriebssystem. Uwe Pfeiffer

DIPLOMARBEIT. Entwurf und Implementierung eines modularen USB-Stacks für eingebettete Controller ohne Betriebssystem. Uwe Pfeiffer Fakultät Informatik Institut für Technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur DIPLOMARBEIT Entwurf und Implementierung eines modularen USB-Stacks für eingebettete

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