1 / 33

Seminar Softwaretechnik SS2005 Radouane El Marjani ( radouane@cs.tu-berlin.de )

Institut für Softwaretechnik und theoretische Informatik Fakultät IV - Elektrotechnik und Informatik TU Berlin Prof. Dr.-Ing. Stefan Jähnichen Bad Smells in Packages, Subsysteme und Schichten. Radouane El Marjani – Informatik Betreuerin Dipl.-Inform.  Susanne Jucknath-John.

alissa
Download Presentation

Seminar Softwaretechnik SS2005 Radouane El Marjani ( radouane@cs.tu-berlin.de )

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. Institut für Softwaretechnik und theoretische Informatik Fakultät IV - Elektrotechnik und Informatik TU Berlin Prof. Dr.-Ing. Stefan Jähnichen Bad Smells in Packages, Subsysteme und Schichten • Radouane El Marjani – Informatik • Betreuerin • Dipl.-Inform.  Susanne Jucknath-John Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  2. Gliederung Refactoring & Smells. Code-Smells & Architektur-Smells. Smells in Packages und ihre Arten. Smells in Subsystemen und ihre Arten. Smells in Schichten und ihre Arten. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  3. Refactoring & Smells Refactoring ist:Verbesserung des Designs von Code, nachdem er geschrieben wurde. Ziel von Refactoring ist:VeränderungtrotzBeibehaltung des Verhaltens nach außen hin. Beim Betrachtung eines Systems von erfahrenen Entwickler, bekommen sie sehr schnell ein Gefühl für die Schwachstellen des Systems. Man sagt das System riecht, es hat Smells. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  4. Code- und Architektur-Smells Code-Smells sind kleine Gerüche(z.B. lange Methoden), die mit den kleinen Refactorings beheben lassen. Architektur-Smells weisen aber auf die Stellen in der Architektur des Systems hin, die genauer analysiert werden sollten.Folgerichtig führen zu großen Refactoring. Seminar Softwaretechnik SS2005 Radouane El Marjani (radouane@cs.tu-berlin.de)

  5. Architektur-Smells Architektur-Smells sind auf unterschiedlichen Ebenen zu finden: In den Benutzungs- und Vererbungsbeziehungen zwischen Klassen Innerhalb und zwischen Packages. In und zwischen Subsystemen. In und zwischen Schichten (Layer). Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  6. Smells Arten in Packages(1) Unbenutzte Packages. Zyklen zwischen Packages. Zu kleine Packages. Zu große Packages. Packages zu tief oder unausgewogen geschachtelt Packages unklar benannt Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  7. Smells Arten in Packages(2) Unbenutzte Packagesbelasten das System. Unbenutzte Packages entstehen vor allem aus drei Gründen: Refactoring. Veränderte Anforderungen. Technologie auf Vorrat. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  8. Smells Arten in Packages(3) Zyklen zwischen Packageskönnen über Benutzung oder Vererbung gebildet werden und deuten häufig auf ungünstig geschnittene Packages hin. Zyklen zwischen Packageserschweren: Wiederverwendbarkeit. Verständlichkeit. Testbarkeit. Entwurfsklarheit. A C B Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  9. Smells Arten in Packages(4) Zu kleine Packagessind Packages mit einer oder zwei Klassen. Beseitigung, indem die Klassen anderen Packages zugeschlagen werden. Aber es sollen möglichst keine neuen Zyklen zwischen Packages entstehen. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  10. Smells Arten in Packages(5) Zu große Packages sind Packages mit sehr vielen Klassen. Das Erlernen des Packages wird dadurch erschwert. Aufspaltung in mehrere Sub-Packages erleichtert das Erlernen. Zu große Packages deuten auf fehlende Subsysteme hin. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  11. Smells Arten in Packages(6) Packages zu tief oder unausgewogen geschachtelt: schwerer zu verstehen als flache und ausgewogen geschachtelte. Packages sind zu tief, wenn sie mehr als drei Ebenen benötigen. Packages sind unausgewogen geschachtelt, wenn sie nicht in gleichen Ebenen sind. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  12. Smells Arten in Packages(7) Unklar benannte Packages deuten drauf hin, dass die Entwickler nicht wirklich verstanden haben, was sich in den Packages findet. Unklar benannte Packages deuten darauf hin, dass die Packages-Struktur unzureichend im Projektteam kommuniziert ist. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  13. Smells in Subsystemen(1) Subsystemen fassen Packages zusammen, ähnlich wie das Packages für Klassen tun. Sie unterscheiden zwischen interner Realisierung und öffentlicher Schnittstelle. Ein großes System sollte in Subsysteme zerteilt sein. Das unterstützt: Erlernbarkeit, Wartbarkeit, Multiprojektentwicklung, Deployment des Systems und Testbarkeit. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  14. Smells in Subsystemen(2) In sehr großen Systemen kann das Subsystem rekursiv angewendet werden. Je nach Terminologie heißen Subsysteme auch Komponenten, Plug-ins oder Teilsysteme. Viele Programmiersprachen bieten keine Möglichkeit, Subsysteme zu definieren. folglich muss mit Konventionen gearbeitet werden. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  15. Smells Arten in Subsystemen(1) Keine Subsysteme, nur viele Packages. Subsystem zu groß. Subsystem zu klein. Zu viele Subsysteme. Subsystem-API wird umgangen. Subsystem-API zu groß. Zyklen zwischen Subsysteme. Übergeneralisierung. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  16. Smells Arten in Subsystemen(2) Fehlende Subsysteme bei großem System. Die Struktur des Systems ist auf Ebene von Packages definiert. Es ist schwer, die Struktur der Packages zu definieren, zu erkennen und konsistent einzuhalten. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  17. Smells Arten in Subsystemen(3) Subsysteme sind zu groß: Sie werden unverständlich und haben zu viel Verantwortung zu tragen. Subsysteme sind zu klein: Sie verlagern Komplexität aus den Subsystem in die Abhängigkeiten der Subsysteme untereinander. Zu viele Subsysteme in einem System beeinträchtigen erheblich das Systemverständnis. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  18. Smells Arten in Subsystemen(4) Subsystem –API wird umgangen Viele Programmiersprachen können keine Subsysteme definieren - Konventionen sind notwendig. Die öffentliche Schnittstelle-das API- des Subsystems wird durch Konventionen definiert. Solche Konventionen werden in einer Notlage oft umgangen. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  19. Smells Arten in Subsystemen(5) Das Umgehen des Subsystem-API und der direkte Durchgriff auf die Komponenten sind ein häufiges Problem! Beim direkten Zugriff vergrößern Klienten das Subsystem API, was zu weiteren Problemen führt. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  20. Smells Arten in Subsystemen(6) Subsystem C Subsystem A Subsystem B Interne Klasse Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  21. Smells Arten in Subsystemen(7) Ist das Subsystem-API zu groß, wird der Hauptnutzen der Subsysteme nicht erreicht. Ob ein Subsystem-API zu groß ist, hängt vom Verhältnis der Anzahl der Klassen im API und im gesamten Subsystem ab. Es gibt aber keine allgemeinen Richtwerte. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  22. Smells Arten in Subsystemen(8) Impl API A C D E B Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  23. Smells Arten in Subsystemen(9) Zyklen zwischen Subsystemenkönnen über Benutzung oder Vererbung gebildet werden Zyklen zwischen Subsystemenerschweren: Wiederverwendbarkeit. Verständlichkeit. Testbarkeit. Entwurfsklarheit. Parallele Entwicklung. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  24. Smells Arten in Subsystemen(10) Subsysteme müssen flexibel (generalisiert) sein, doch Übergeneralisierung wird zum Problem (mehr Aufwand, schwierige Anwendung des Subsystem). Indikator für Übergeneralisierung viel Code für die Parametrisierung/ Spezialisierung notwendig. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  25. Smells in Schichten(1) Neben der Aufteilung eines großen Systems in Subsysteme hat sich das Anordnen der Subsysteme in Schichten bewährt. Jede Schicht ist für einen bestimmten Aspekt des Systems zuständig. Als Beispiel: 3-Schichten-Modell (3-tier-architecture), ISO-Modell… Trennung Oberflächendefinition, Fachlogik und Datenhaltung voneinander (3-tier-architecture). Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  26. Smells in Schichten(2) Strikte Schichten: Jede Schicht darf nur auf die direkt unter ihr liegende Schicht zugreifen Nicht strikte Schichten: Eine Schicht darf die unter ihr liegende Schicht hindurchgreifen und weiter unter liegende Schichten verwenden. Bei protokollorientierten Schichten werden die Schnittstellen zwischen den Schichten durch Funktionen gebildet. Bei objektorientierten Schichten umfassen die Schnittstellen Interfaces und abstrakte Klassen. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  27. Smells Arten in Schichten(1) Keine Schichten. Aufwärtsreferenzen zwischen Schichten (Zyklen). Strikte Schichtung durchbrochen. Zu viele Schichten. Referenzen zwischen vertikal getrennten Schichten. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  28. Smells Arten in Schichten(2) Ein System mit vielen Subsystemen ist ohne Schichten schwer bei Änderungsanforderungen zu ermitteln, welche Subsysteme betroffen sind. Verwendet eine Schicht eine höher liegende Schicht, so wird das Grund Prinzip der Schichtung durchgebrochen. Durch Aufwärtsreferenzen entstehen Zyklen zwischen Schichten. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  29. Smells Arten in Schichten(3) Viele Programmiersprachen können keine Schichten definieren - Konventionen sind notwendig. Strikte SchichtungDurchbrochen schwer zu verhindern. Die Zahl der möglichen Klienten einer Schicht nimmt zu und die Abhängigkeiten zwischen den Schichten werden verstärkt. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  30. Smells Arten in Schichten(4) Strikte protokollorientierte Schichten führen zu Indirektionen. Wenn zu viele Schichten existieren, können so unnötige Indirektionen entstehen. Es treten eine Reihen negativer Effekte auf: Es muss Aufwand in die Programmierung von Methoden ohne eigene Leistung investiert werden. Das Programmverständnis wird erschwert. Änderung sind nur mit hohem Aufwand durchführbar. Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  31. Smells Arten in Schichten(5) Schichten sind nicht nur horizontal, sondern auch vertikal geschnitten werden können. Referenzen zwischen vertikal getrennten Schichten machen die Produkte voneinander abhängig. Die Ziele von Produktlinien nicht mehr erreicht werden: Auslieferung Parallele Entwicklung Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  32. Produkt1 Produkt2 Smells Arten in Schichten(5) Abhängigkeit innerhalb einer schicht Oberfläche S1 Strikte Schichtung durchbrochen Verletzung des Subsystem-API Fachlogik Aufwärtesreferenz ist illegal Datenhaltung Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

  33. Fragen ??? Seminar Softwaretechnik SS2005 Radouane El Marjani(radouane@cs.tu-berlin.de)

More Related