You are here: SE » ThesesHome » ThesisModularity

Modularitätsbetrachtung von Webanwendungen im Rahmen des Plat_Forms Wettbewerbs

bearbeitet von: Andreas Franz

Outline

Bei dieser Masterarbeit soll die Modularität von Platforms Anwendungen (www.plat-forms.org) untersucht werden. Im Plat_Forms-Wettberwerb 2011 galt es eine Webanwendung zu entwickeln, die eine Konferenzverwaltung realisiert. Teilnehmer der Sprachen Perl (3 Teams), Java (4 Teams), PHP (4 Teams), Ruby (4 Teams) und Javascript (1 Team) traten zum Wettbewerb an.

Ziel der Arbeit soll es sein die Modularität zu charakterisieren, analysieren und zu vergleichen. Dabei sollen, falls vorhanden, die Plattformeigenschaften (und -unterschiede) aufgezeigt werden.

Modularität bedeutet die Zerlegung eines komplexen Produkts, in weniger komplexe Teile. Wichtigstes Kriterium für die Zerlegung sollte das Prinzip des Information Hiding sein, dieses besagt, dass so viele Entwurfsprinzipen, wie möglich von einem Modul verborgen werden sollen. Dadurch wird es ermöglicht Module wieder zu verwenden, parallel zu entwickeln und verständlicher zu machen. Zentrale Begriffe, die im Zusammenhang mit Modularität auftauchen, sind Kopplung und Kohäsion. Kopplung beschreibt die Verknüpfungen zwischen Modulen, die Verbindungen sollten möglicht lose sein, vornehmlich steigert das die Wiederverwendung von Modulen. Kohäsion beschreibt den "Zusammenhang" innerhalb eines Moduls, ein Modul sollte stets eine klar abgegrenzte Zuständigkeit haben. Das steigert sowohl die Verständlichkeit, als auch die Wiederverwendbarkeit.

Thesis Requirements

  • Wichtigster Aspekt ist, dass die angewendeten Metriken fair und über alle Plattformen hinweg vergleichbar sind
  • Insbesondere muss die Architektur von Webanwendungen berücksichtigt werden.

Milestones and Planning

Milestone no. Past days CW Ziele target Status wrench
1 DONE 4 Wochen CWXX Evaluation von Methoden zur Erhebung der Metriken erledigt
2 DONE 8 Wochen CWXX Prüfen der Vergleichbarkeit auf allen Plattformen erledigt
3 DONE 8 Wochen CWXX Auswertung erledigt
4 DONE 4 Wochen CWXX Schreiben der Ausarbeitung erledigt

Weekly Status

Week 1 (CW 09)

Activities

  • erstes Treffen

Results

Next Steps

  • Ergebnisbericht des Plat_Forms Wettbewerbs 2007 lesen

Problems

Week 2 (CW 10)

Activities

  • Lesen des Ergebnisbericht des Plat_Forms Wettbewerbs 2007

Results

  • Betrachtung der Modularität ausbaufähig
    • Bisherige Betrachtung: Kopplung von Modulen über Aufrufe, mittels Laufzeitanalyse

Next Steps

  • Modularitätsmaße anschauen, die gängig in der Literatur sind
  • Parser für die einzelnen Programmiersprachen anschauen, um technische Umsetzung zu gewährleisten

Problems

Week 3 (CW 11)

Activities

  • Literaturrecherche zu Modularität
  • Parser gesucht

Results

  • verschiedenste Parser decken kleine Bereiche von Modularitätsmaßen ab
  • Kopplung und Kohäsion sind zentrale Begriffe, im Zusammenhang mit Modularität
  • Modularitätsmaße:
    • Coupling Between Object Classes (CBO) * Anzahl der Klassen mit der eine Klasse gekoppelt ist (über Methoden- und Instanzvariablenzugriff)
    • Lack of Cohesion in Modules
      • Anzahl der Methoden die unabhängig voneinander arbeiten
      • viele unabhängige Methoden weisen auf schlechte Modularität hin
      • es gibt verschiedene Versionen
    • Law of Demeter
      • Entstammt Beobachtung im Rahmen eines Projekts namens "Demeter"
      • "Objekte sollen nur mit Objekten in ihrer Umgebung kommunizieren"
    • Cyclomatic Complexcity
      • Anzahl der Knoten und Kanten im Kontrollflußgraph
      • beschreibt die Anzahl der unabhängigen, linearen Pfade durch Quellcode eines Programms
    • Weighted Methods per Class
      • gewichte Summe aller Methoden einer Klasse
    • Depth in inheritance tree
      • Klassen tiefer in der Vererbungshierarchie erbt viele Methoden und wird durch Änderungen in den Oberklassen beeinflusst
  • Kategorisierung nach Grad der Kopplung:
    • 12 Stufen von Kopplung
  • Parser:

Next Steps

Problems

Week 4 (CW 12)

Activities

  • weitere Recherche zu Parsern

Results

Next Steps

  • Konzeptvortrag erstellen

Problems

Week 5 (CW 13)

Activities

  • vertiefte Recherche zu Modularität und Maße

Results

  • LCOM1
    • Anzahl der Methoden, die keine gemeinsamen Variablen benutzen - Anzahl der Methoden die gemeinsame Variablen nutzen
  • LCOM2
    • Anzahl der Methoden, die auf ein Attribut zugreifen - Anzahl der Attribute
  • LCOM3
    • Anzahl der Methoden, die auf ein Attribut zugreifen - Anzahl der Methoden
  • LCOM*
  • Method Hiding Factor (Sichtbarkeit auf Methodenebene)
  • Attribute Hiding Factor (Sichtbarkeit auf Klassenattributebene)

Next Steps

  • Konzeptvortrag erstellen

Problems

Week 6 (CW 14)

Activities

  • vertiefte Recherche zu Modularität und Maße
  • Konzeptvortrag

Results

  • Konzeptvortrag
  • Anmerkung zum Vortrag: näher auf Modularität über Sprachgrenzen hinweg eingehen

Next Steps

Problems

*

Week 7 (CW 15)

Activities

  • vertiefte Recherche zu Modularität und Maße

Results

Next Steps

  • Methoden zur Erhebung der Metriken analysieren

Problems

*

Week 8 (CW 16)

Activities

  • vertiefte Recherche zu Modularität und Maße

Results

Next Steps

  • Lösungen des Plat_Forms Wettberwerb 2011 anschauen, im Hinblick auf Modularität
  • Frameworkverständnis schaffen

Problems

*

Week 9-11 (CW 17-19)

Activities

  • vertiefte Recherche zu Modularität und Maße
  • Frameworkverwendung angeschaut

Results

  • Frameworks bieten Template-Engines für die generische Gestaltung vom Frontend
  • Einige Framework bieten spezielle Möglichkeit für Formularerzeugung
    • rendern erfolgt ebenfalls über Template-Engine
  • 1 Spezialfall (Team D): aus Code können unterschiedliche Frontends generiert werden; GWT-Frontend für Webanwendung

Next Steps

  • Frameworkverständnis schaffen

Problems

*

Week 12 (CW 20)

Activities

  • Templateverwendung angeschaut
  • datenbankspezifische Metriken

Results

Next Steps

Problems

*

Week 13 (CW 21)

Activities

  • weitere Recherche zu Modularität, bezüglich Templateverwendung und Datenbankanbindung

Results

  • Datenbankanbindung
    • teils durch OR-Mapper realisiert, teilweise durch Custom-Queries ergänzt * andere Teams verwenden das Active Record Pattern (ähnlich zu ORM)

Next Steps

Problems

  • schwierig Einfluss von Datenbankanbindung auf Modularität zu finden

Week 14 (CW 22)

Activities

  • Untersuchung der Vergleichbarkeit von Metriken bezüglich der Referenzierungstiefe in Templates

Results

Next Steps

Problems

*

Week 15 (CW 23)

Activities

  • weitere Untersuchung der Vergleichbarkeit von Metriken bezüglich der Referenzierungstiefe in Templates

Results

  • Team D verwendet ähnliche Zuordnung von Model zu View, wie bei Template-Engines ist also vergleichbar (evtl. mit kleine Einschränkungen)

Next Steps

Problems

*

Week 16 (CW 24)

Activities

  • konkrete Templateverwendung, Syntax der Templateengines

Results

  • Tags der verschiedenen Templates ausgearbeitet

Next Steps

Problems

*

Week 17 (CW 25)

Activities

  • Beschreibung des Vorgehens für die Analyse der Referenzierungstiefe
  • Analyse der Refenrenzierungstiefe am Beispiel von Team A durchgeführt.
    • Zunächst Auflistung welche Dateien für das Frontend verwendet wurden.
    • Dann Extraktion der Stellen mit Variablenreferenzen

Results

Next Steps

Problems

*

Week 18&19 (CW 26&27)

Activities

  • Recherche zum MVC bzw. MVP Pattern und im Speziellen deren Verwendung im Web-Umfeld
  • Referenzierungstiefe für Team B,C,F und H ausgewertet (als Ergänzung zu CW 25, um zunächst für jede Plattform eine Analyse durchgeführt zu haben)

Results

Next Steps

  • Beschreibung des genauen Vorgehens bei der Analyse der Kopplung der Templates
  • Analyse weiterer Teams

Problems

*

Week 20&21 (CW 28&29)

Activities

  • Referenzierungstiefe für Team D,E,G und I begonnen auszuwerten
  • schriftliche Aufstellung der Regeln und des Vorgehens, wie die Analyse erfolgt

Results

Next Steps

  • Referenzierungstiefe für Team D,E,G und I vollständig erfassen
  • Analyse weiterer Teams
  • Fortführen der schriftlichen Ausarbeitung

Problems

*

Week 22&23 (CW 30&31)

Activities

  • Referenzierungstiefe für Team J,K,L,M,N,P begonnen auszuwerten, das heißt die Zusammenhänge der einzelnen Views (Templates) analysiert, demnach fehlen noch die Platzhalter in den Templates und deren Tiefe
  • schriftliche Aufstellung der Regeln und des Vorgehens, wie die Analyse erfolgt wurde erweitert

Results

Next Steps

  • Vervollständigen der Analysen für alle Teams
  • Fortführen der schriftlichen Ausarbeitung

Problems

Week 24&25 (CW 32&33)

Activities

  • Fortführung der Analyse
  • Regeln und Vorgehen erweitert

Results

Next Steps

  • Vervollständigen der Analysen für alle Teams
  • Fortführen der schriftlichen Ausarbeitung (Regeln und Vorgehen anpassen)

Problems

Week 26&27 (CW 34&35)

Activities

  • Fortführung der Analyse
  • Fortführen der schriftlichen Ausarbeitung

Results

Next Steps

Problems

Week 28&29 (CW 36&37)

Activities

  • Fortführung der Analyse mit angepassten Regeln

Results

Next Steps

Problems

Week 30&31 (CW 38&39)

Activities

  • Zuordnung von Controller und Model zu den Ordnerstrukturen der Teams
  • Entwicklung eines Tools zur Auswertung der Analysen

Results

Next Steps

Problems

Week 32-34 (CW 40-42)

Activities

  • MVC-Verständnis der Frameworks betrachtet
  • Schreiben an der Ausarbeitung

Results

Next Steps

Problems

*

Week 35 (CW 43)

Activities

  • Auswertung und Untersuchung auf Plattformunterschiede
  • Schreiben an der Ausarbeitung

Results

Next Steps

  • weitere Auswertung der Plattformunterschiede

Problems

*

Week 36&37 (CW 44&45)

Activities

  • Auswertung und Untersuchung auf MVC-Verstöße
  • Schreiben an der Ausarbeitung

Results

Next Steps

Problems

*

Week 38&39 (CW 46&47)

Activities

  • Schreiben an der Ausarbeitung

Results

Next Steps

Problems

*

Literaturverzeichnis

[BC03] BALDWIN, C. Y. und K. B. CLARK: Managing in the modular age: architectures, networks, and organizations, Kapitel 5, Seiten 149–171. Wiley, 2003.

[Boc00] BOCK, D.: The paperboy, the wallet, and the law of demeter, 2000.

[Cat11] CATALYST CONTRIBUTORS: Catalyst::Manual::Intro. http://search.cpan.org/perldoc?Catalyst::Manual::Intro, 2011. Abruf am: 17. 11. 2011.

[CK94] CHIDAMBER, S.R. und C.F. KEMERER: A metrics suite for object oriented design. IEEE Transactions on software engineering, 20:476–493, 1994.

[CW00] COZENS, S. und P. WAINWRIGHT: Beginning Perl. Wrox Press Ltd., Birmingham, UK, UK, 2000.

[CWE11] CATLIN, H., N. WEIZENBAUM und C. EPPSTEIN: Haml (XHTML Abstraction Markup Language). http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html, 2011. Abruf am: 16. 06. 2011.

[Epp91] EPPINGER, S.D.: Model-based approaches to managing concurrent engineering. Journal of Engineering Design, 2(4):283–290, 1991.

[FLO11] FLOW3 CORE TEAM: FLOW3 The Definitive Guide. http://flow3.typo3.org/fileadmin/manual/nightly/TheDefinitiveGuide/PartII/View.html, 2011. Abruf am: 02. 09. 2011.

[Fow03] FOWLER, M.: Patterns of enterprise application architecture. Addison-Wesley Professional, 2003.

[Fow06] FOWLER, M.: Passive View. http://www.martinfowler.com/eaaDev/PassiveScreen.html, 2006. Abruf am: 25. 07. 2011.

[Gor08] GORDEYCHIK, S.: Web Application Security Statistics. https://files.pbworks.com/download/1ANBwCRb7j/webappsec/13247070/WASS-SS-2008.pdf, 2008. Abruf am: 16. 08. 2011.

[HHP02] HARMAN, M., R. HIERONS und M. PROCTOR: A new representation and crossover operator for search-based optimization of software modularization. In: GECCO 2002: Proceedings of the Genetic and Evolutionary Computation Conference, Seiten 1351–1358, 2002.

[HM96] HITZ, M. und B. MONTAZERI: Chidamber and Kemerer’s metrics suite: a measurement theory perspective. Software Engineering, IEEE Transactions on Software Engineering, 22(4):267–271, 1996.

[IEE90] IEEE: IEEE Standard Glossary of Software Engineering Terminology. Office, 121990(1):17,22,49, 1990.

[Joh10] JOHN, ANTANO SOLAR: Catalyst 5.8: The Perl MVC Framework. Packt Publishing Ltd., 2010.

[JPMM04] JABLONSKI, S., I. PETROV, C. MEILER und U. MAYER: Guide to web application and platform architectures. Springer Professional Computing. Springer, 2004.

[Lak93] LAKHOTIA, A.: Rule-based approach to computing module cohesion. In: Proceedings of the 15th international conference on Software Engineering, Seiten 35–44. IEEE Computer Society Press, 1993.

[LD06] LADD, S. und K. DONALD: Expert Spring MVC and Web Flows. Apress, 2006.

[LH89] LIEBERHERR, K. und I. HOLLAND: Formulations and Benefits of the Law of Demeter. ACM SIGPLAN Notices, 24(3):67–78, 1989.

[LHR88] LIEBERHERR, K., I. HOLLAND und A. RIEL: Object-oriented programming: an objective sense of style. In: ACM SIGPLAN Notices, Band 23, Seiten 323–334. ACM, 1988.

[LL07] LUDEWIG, J. und H. LICHTER: Software Engineering: Grundlagen, Menschen, Prozesse, Techniken. Dpunkt-Verl., 2007.

[LR06] LAHRES, B. und G. RAÝMAN: Praxisbuch Objektorientierung. Galileo Computing, 2006.

[McC76] MCCABE, T.J.: A complexity measure. IEEE Transactions on Software Engineering, 2:308–320, 1976.

[MGL+11] MILLER, J., M. GUNDERLOY, M. LINDSAAR, J. INIESTA, R. ARONDEKAR, Y. KATZ, S. MARTINEZ und P. SICHANUGRIST: Getting Started with Rails. http://guides.rubyonrails.org/getting_started.html, 2011. Abruf am: 16. 10. 2011.

[Mic08] MICROSOFT DEVELOPER NETWORK: Model-View-Presenter Pattern. http://msdn.microsoft.com/en-us/library/ff647543.aspx, 2008. Abruf am: 25. 07. 2011.

[MM06] MITCHELL, B.S. und S. MANCORIDIS: On the automatic modularization of software systems using the bunch tool. IEEE Transactions on Software Engineering, 32:193–208, 2006.

[OHK93] OFFUTT, A.J., M.J. HARROLD und P. KOLTE: A software metric system for module coupling. Journal of Systems and Software, 20(3):295–308, 1993.

[Ora11] ORACLE: JSP Standard Tag Library. http://www.oracle.com/technetwork/java/index-jsp-135995.html, 2011. Abruf am: 01. 09. 2011.

[Par72] PARNAS, D. L.: On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053–1058, 1972.

[PP03] PRECHELT, L. und M. PETER: Integrating a Tool into Multiple Different IDEs. In: 3rd International Workshop on Adoption-Centric Software Engineering, 2003.

[Pre07] PRECHELT, L.: Plat_Forms 2007: The Web Development Platform Comparison - Evaluation and Results. Technischer Bericht, Institut für Informatik, Freie Universität Berlin, 2007.

[Pre10] PRECHELT, L.: Software Engineering Economics. Vorlesungsskript: Softwareprozesse WS 2010/2011, 2010. Freie Universität Berlin, Institut für Informatik.

[PZ07] POTENCIER, F. und F. ZANINOTTO: The Definitive Guide to symfony. Apress, Berkely, CA, USA, 2007.

[Ree79] REENSKAUG, T.: Models-views-controllers. Technischer Bericht, Xerox PARC, 1979.

[Sen11] SENSIO LABS: A Gentle Introduction to symfony. http://www.symfony-project.org/get/pdf/gentle-introduction-1.4-en.pdf, 2011. Abruf am: 16. 06. 2011.

[SGCH01] SULLIVAN, K.J., W.G. GRISWOLD, Y. CAI und B. HALLEN: The structure and value of modularity in software design. In: ACM SIGSOFT Software Engineering Notes, Band 26, Seiten 99–108. ACM, 2001.

[Sha11] SHANK,G.: HTML::FormHandler::Manual::Reference. https://metacpan.org/module/HTML::FormHandler::Manual::Reference, 2011. Abruf am: 17. 11. 2011.

[She11] SHEIDLOWER, JESSE: Catalyst::Manual::About The philosophy of Catalyst. http://search.cpan.org/perldoc?Catalyst::Manual::About, 2011. Abruf am: 16. 07. 2011.

[SIBa] SIB VISIONS GMBH: JVx Enterprise Application Framework - Anzeige von Daten aus einer Datenbank. http://forum.sibvisions.com/viewtopic.php?f=5&t=23. o.J., Abruf am: 20. 10. 2011.

[SIBb] SIB VISIONS GMBH: JVx Enterprise Application Framework - Features. http://www.sibvisions.com/de/jvxmfeatures. o.J., Abruf am: 20. 10. 2011.

[SIBc] SIB VISIONS GMBH: JVx Enterprise Application Framework - Master/Detail-Beziehung Datenbank. http://forum.sibvisions.com/viewtopic.php?f=2&t=349. o.J., Abruf am: 29.10.2011.

[SLD+11a] SHANK, G., Z. LUKASIAK, T. DORAN, B. GRAF, O. KOSTYUK, F. RAGWITZ, L. A. MESA, D. THOMAS, K. ITA, J. NAPIORKOWSKI, D. MAKI, A. RODLAND, A. CLAYTON, B. BEELEY, C. HENTENYI, E. OISHI, L. W. SITU, MURRAY, N. LOGAN, V. TIMOFEEV, D. KUPERMAN, I. WELLS, A. BARKSDALE und V. MOSELEY: HTML::FormHandler. http://search.cpan.org/perldoc?HTML::FormHandler, 2011. Abruf am: 17. 11. 2011.

[SLD+11b] SHANK, G., Z. LUKASIAK, T. DORAN, B. GRAF, O. KOSTYUK, F. RAGWITZ, L. A. MESA, D. THOMAS, K. ITA, J. NAPIORKOWSKI, D. MAKI, A. RODLAND, A. CLAYTON, B. BEELEY, C. HENTENYI, E. OISHI, L. W. SITU, MURRAY, N. LOGAN, V. TIMOFEEV, D. KUPERMAN, I. WELLS, A. BARKSDALE und V. MOSELEY: HTML::FormHandler::TraitFor::Model::DBIC. http://search.cpan.org/perldoc?HTML::FormHandler::TraitFor::Model::DBIC, 2011. Abruf am: 16. 11. 2011.

[SP11] STÄRK, U. und L. PRECHELT: Plat_Forms 2011 Task: CaP, 2011.

[SRK07] SARKAR, S., G.M. RAMA und A.C. KAK: API-based and information-theoretic metrics for measuring the quality of software modularization. IEEE Transactions on Software Engineering, 33:14–32, 2007.

[TFH04] THOMAS, D., C. FOWLER und A. HUNT: Programming Ruby: The Pragmatic Programmer’s Guide. Pragmatic Bookshelf, Second Edition Auflage, 2004. Abruf am: 04.05.2011.

[THS+] THOMAS, D., A. HUNT, G. SINCLAIR, E. HODEL, W. WEBBER, L. JOHNSON und J. E. GRAY II: ERB - Ruby Templating. http://ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html. o.J., Abruf am: 16.06.2011.

[Tro11a] TROUT, MATT: Alarms, excursions, apologia and conclusions. http://www.shadowcat.co.uk/blog/matt-s-trout/plat-forms-redux/, 2011. Abruf am: 07.09.2011.

[Tro11b] TROUT, MATT: HTML::Zoom. http://search.cpan.org/perldoc?HTML::Zoom, 2011. Abruf am: 30.08.2011.

[TYP11a] TYPO3 ASSOCIATION: FLOW3 - The Definitive Guide - Part II: Getting Started - Controller. http://flow3.typo3.org/documentation/guide/partii/controller.html, 2011. Abruf am: 25.10.2011.

[TYP11b] TYPO3 ASSOCIATION: FLOW3 - The Definitive Guide - Part II: Getting Started - Model and Repository. http://flow3.typo3.org/documentation/guide/partii/modelandrepository.html, 2011. Abruf am: 25.10.2011.

[TYP11c] TYPO3 ASSOCIATION: FLOW3 - The Definitive Guide - Part II: Getting Started - View. http://flow3.typo3.org/documentation/guide/partii/view.html, 2011. Abruf am: 25.10.2011.

[Ull11] ULLENBOOM, C.: Java ist auch eine Insel. Galileo Computing, Bonn, 9. aktualisierte Auflage, 2011.

[Vas11] VASWANI, V.: Zend Framework - A Benginner’s Guide. The McGraw-Hill Companies, 2011.

[Wan] WANSTRATH, C.: Mustache Manual: mustache – Logic-less templates. http://mustache.github.com/mustache.5.html. o.J., Abruf am: 14.06.2011.

[War] WARDLEY, A.: Template-Toolkit-2.22. http://search.cpan.org/~abw/Template-Toolkit-2.22/lib/Template/Manual/Syntax.pod. o.J., Abruf am: 14.06.2011.

[War08] WARDLEY, ANDY: Template::Toolkit Template Processing System. http://search.cpan.org/perldoc?Template::Toolkit, 2008. Abruf am: 20.09.2011.

[YC87] YOURDON, E. und L. L. CONSTANTINE: Structured Design - Fundamentals of a Discipline of Computer Program and Systems Design. Prentice Hall, 1987.

[Zen05] ZEND TECHNOLOGIES INC.: Zend_Form - Programmer’s Reference Guide. http://framework.zend.com/manual/en/zend.form.quickstart.html, 2005. Abruf am: 16.06.2011.

[Zus98] ZUSE, H.: A framework of software measurement. de Gruyter, 1998.