Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Architektur in PHP-Applikationen

Architektur in PHP-Applikationen

Langlebige Produkte mit PHP entwickeln, 
am Beispiel von Symfony Forms integriert in TYPO3. Beispiele unter https://github.com/freshp/example-contact-form-application und https://github.com/freshp/typo3-application-connector-extension

move:elevator

January 25, 2019
Tweet

More Decks by move:elevator

Other Decks in Programming

Transcript

  1. Agenda Ausgangssituation 05 Früher 06 Benefits 07 Warum 04 Paketbasierte

    Entwicklung 9 Trennung von Business-
 & Framework-Logik 11 Wie 8 Was 13 Erfahrungen 14 Beispiele 15 Nach- & Vorteile 16
  2. Ausgangssituation Individualentwicklung mit TYPO3 Extbase Langfristig zu betreuende Projekte mindestens

    komplizierte 
 Anforderungen mögl. hohe Testabdeckung Um welchen Kontext geht es eigentlich? Abbildung 1
  3. Früher alles in Extbase meistens riesengroße Controller (wie vorher in

    piBase) keine Trennung von Business und Framework-Logik Testen meistens unmöglich, schwer oder nur mit Akzeptanztests Was haben wir vorher getan? Abbildung 2
  4. Benefits schnellerer Wechsel der Frameworks Aufteilung in Pakete für Wiederverwendbarkeit

    hohe Testabdeckung Langfristige Erweiterbarkeit und Wartbarkeit Was haben wir uns erhofft? Abbildung 3 Abbildung 4
  5. Wie

  6. Paketbasierte Entwicklung Konzeption ist alles Applikation in Schichten auftrennen (horizontal)

    Applikation nach Views aufteilen (vertikal) mehr: Principles of Package Design Composer macht es möglich Grafik 1
  7. Trennung eigenständig lauffähig kleinstmögliche Abhängigkeiten (bspw. nicht die komplette Datenbankabstraktion)

    so wenig Hürden wie möglich für die Arbeit im Team mehr: Defensive Programming mehr: Clean Coder Welche Anforderung habe ich an die Business-Logik?
  8. Was

  9. Erfahrungen Lohnt sich das? JA! (für uns auf jeden Fall)

    Es hilft die Business-Logik zu verstehen Durch die Schichten und die hohe Testabdeckung sinkt die Fehlerquote Es entstehen keine unsichtbaren Abhängigkeiten Es fördert die Dokumentation (z.B. composer-graph) Keine Entwicklung ohne Gesamtkonzept
  10. Nachteile Was stört mich daran? Abhängigkeiten zwischen den Paketen erschweren

    Updates (Bsp. Update in der untersten Ebene) Abhängigkeiten in den Paketen können mit dem Trägersystem kollidieren
  11. Vorteile Was gefällt mir am besten? Applikation auch ohne Trägersystem

    lauffähig Assets im Trägersystem überschreibbar Kernkompetenzen ausspielen Stabilität Pakete können mit sehr wenigen Abhängigkeiten entwickelt werden kleine Pakete erhöhen das Verständnis kombinierbar mit CQRS, DDD oder weiteren
  12. Quellenangabe Abbildung 1: https://www.researchgate.net/figure/Stacey-Complexity-Matrix-from-Stacey-2012_fig5_305969672 
 Stand 23.01.2019 Abbildung 2: https://www.informatik-aktuell.de/entwicklung/methoden/tdd-erfahrungen-bei-der-einfuehrung.html

    
 Stand 23.01.2019 Abbildung 3: https://thecodinglove.com/when-getting-a-first-look-at-the-project 
 Stand 23.01.2019 Abbildung 4: https://www.kunst-fuer-alle.de/english/fine-art/artist/image/prisma-(f1-online)/6248/1/432064/ eierlegende,-genmanipulation,-haehne,-schweine,-illustration/index.htm
 Stand 23.01.2019 Grafik 1: Composer Graph, erstellt aus einem Beispiel mittels https://github.com/clue/graph-composer Grafik 2: Paketübersicht, erstellt mittels https://www.draw.io/ Abbildungen