1 / 19

Entwurfsmuster Seminar Anti-Pattern WS 200 6 /200 7

Entwurfsmuster Seminar Anti-Pattern WS 200 6 /200 7. Dimitar Nikolov 18. Januar 2007. Übersicht. Was ist Anti-Pattern? Warum Anti-Pattern lernen? Wie beschreibt man Anti-Pattern? Anti-Pattern Klassifizierung Vorstellen von einigen Beispielen. Was ist Anti-Pattern und warum dies lernen?.

Download Presentation

Entwurfsmuster Seminar Anti-Pattern WS 200 6 /200 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Entwurfsmuster SeminarAnti-PatternWS 2006/2007 Dimitar Nikolov 18. Januar 2007

  2. Übersicht • Was ist Anti-Pattern? • Warum Anti-Pattern lernen? • Wie beschreibt man Anti-Pattern? • Anti-Pattern Klassifizierung • Vorstellen von einigen Beispielen Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  3. Was ist Anti-Pattern und warum dies lernen? • Negative Lösungen, die mehr Probleme einführen als lösen. • Natürliche Erweiterung der Entwurfsmuster • Anti-Patterns überbrücken die Lücke zwischen Architekturkonzepte und reelle Implementierungen. • Nur wenn man Anti-Patterns kennt und versteht, kann man sie vermeiden oder die Lösung verbessern. • Neues Problem im neuen Kontext lösen? • Sich etwas neues kreatives einfallen lassen  nicht vorhersagbar, was die Pros und Cons dieser Lösung sein werden. Auch nicht 100%-ig „nachhersagbar“! • Benutzen irgendwas schon mehrmals erprobtes - Pattern • Design Pattern – mehr Pros als Cons • Anti-Pattern – mehr Cons als Pros Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  4. Bild aus: http://www.antipatterns.com/briefing/sld006.htm Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  5. Warum Anti-Patterns lernen? Was bieten sie an? • Im Generalform bietet Anti-Pattern leicht zu erkennende Vorlage der Klasse von Problemen an, womit sich der Anti-Pattern beschäftigt. • Anti-Patterns bieten echte Erfahrung beim Feststellen sich wiederholender Probleme an, sowie detaillierte Empfehlungen zu deren Beseitigung. • Fachvokabular zur Beschreibung dieser Probleme. • Ein Mittel gegen den Stress, der durch die am häufigsten auftrettenden Fallen der Softwareindustrie entsteht. Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  6. Anti-Pattern Vorlage – Formale Beschreibung • Anti-Pattern Name & AKA • Referenzmodell Stichworte • Hintergrund • Beweis zur Erscheinung • Anti-Pattern Lösung (Generalform) • Symptome und Folgen • Typische Ursachen • Refactor-te Lösung • Variationen • Beispiel • Ähnliche Lösungen Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  7. Kategorisierung • Programmierung (Development) – z.B. Blind faith, Boat anchor, Copy and paste programming, Error hiding, Exception handling as logic, Golden hammer, Hard coding, Loop-switch sequence, Magic Number, Premature optimization, Programming by Permutation, Reinventing the wheel, Spaghetti Code, uvm • Architektur / Design – z.B. Big ball of mud, God object, Input kludge, Poltergeist, Singletonitis, Yo-yo problem, uvm • Management – z.B. Continuous obsolescence, JAR hell, Software bloat, Vendor lock-in, uvm Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  8. Poltergeist • Design / Development Anti-Pattern • Symptome – kurz lebendes, normalerweise zustandloses Objekt benutzt um Initialisation oder Aufrufen von Methoden anderer permanenter Klassen durchzuführen. Oft benannt als „manager_“ , „controller_“, „start_process“. Oder Struktur ähnlich wie: (Bild aus: http://www.antipatterns.com/briefing/sld031.htm) Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  9. Poltergeist - Refactored • Refactoring durch Entfernen der Poltergeistklasse und zuzufügen derer Funktionalität in die aufgerufene Klasse. Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  10. Error hiding • Development (Programmierung) Anti-Pattern • Versteckt Fehlermeldungen von dem Benutzer durch Exception Handling. • Grund: Verstecken der Komplexität vom Benutzer • Folge: Alptraum für Support Ingenieure, da dadurch sehr schwer festzustellen, was nicht richtig funktioniert. • Lösung: In the catch Klause sollte man auf einem Fehler log detailliert die Fehlermeldung aufbewahren, damit sie später problemlos eingelesen werden kann. Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  11. Vendor lock-in Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  12. Vendor lock-in • Management / Architektur Anti-Pattern • Zu große Abhängigkeit eines Benutzers (in unserem Fall eines Programmierers als Benutzer z.B. einer Programmiersprache oder Bibliothek) von dem Anbieter des von ihm benutzten Produktes. Wechseln nur zu sehr hohem Preis durchführbar. • Beispiele: Microsoft Windows, Sony Memory Stick, eclipse • Vermeiden: Benutzen von Free oder open source Software, Benutzen von Standards und Format, die nicht zu einer der großen Software Firmen gehören. Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  13. Vendor lock-in – Lösung durch Isolationsschicht Bild aus: http://www.antipatterns.com/briefing/sld039.htm Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  14. God object • Design / Development Anti-Pattern • Auch BLOB genannt • Symptome: eine Klasse mit vielen Attributen und Operationen, die zu viel weiß oder tut. • Folgen: • OO Vorteile gehen verloren. • Kein strukturiertes Program (keine „divide and conquer“ Programmierung) • Zu komplex um wiederbenutzen oder gut testen zu können • Teuer zu laden • Man kann auch ein ganzes Programm in einer Datei und einer Klasse schreiben. Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  15. God object Refactoring • Finde und kategoriesiere die vorhandenen Operationen und Attribute • Finde passende Objekte für die Attribute und Operationen und migriere sie. • Entferne die redundanten, nicht gebrauchten Klassenabhängigkeiten. Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  16. Hard coding • Development (Programmierung) Anti-Pattern • Einbetten von Daten (z.B. Ausgabe, Konfiguration, Formattierung, usw) direkt in den Quellcode anstatt diese aus externen Quellen einzulesen. • Warum ist dies Anti-Pattern? Kleinste und wahrscheinliche Änderungen machen es nötig den Quellcode zu ändern (statt einer Konfigurationsdatei). Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  17. Hard Coding - Beispiele • Mittel gegen Softwarepiraten • Fester Installationspfad • Startup disk • Windows Profile Path (C:\Documents and Settings\Username) Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  18. Hard Coding - Probleme • Übersetzen von Software • Magic number statt Konstante Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

  19. Danke für die Aufmerksamkeit Entwurfsmuster Seminar Anti-Pattern Wintersemester 2006/2007

More Related