Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

ROSIK Stammtisch „Clean Architecture“

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Hier ansehen

1 von 24 Anzeige

ROSIK Stammtisch „Clean Architecture“

Herunterladen, um offline zu lesen

ROSIK Stammtisch, Mario-Leander Reimer (@LeanderReimer, CTO @QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==

Clean Architecture ist ein Architekturstil, der darauf abzielt, Code strukturiert und übersichtlich zu gestalten, damit er leicht zu verstehen, zu warten und zu erweitern ist. Es geht darum, die verschiedenen Komponenten einer Anwendung in logische Schichten aufzuteilen, die jeweils eine spezifische Aufgabe erfüllen. Durch die Anwendung universeller Regeln der Softwarearchitektur kann man die Produktivität während der gesamten Lebensdauer eines Softwaresystems drastisch verbessern.

Wir zeigen, wie Anwendungen skalierbar, wartbar und testbar gestaltet und Projekte besser organisiert und strukturiert werden können, um sie schneller und kosteneffizienter zu entwickeln.

ROSIK Stammtisch, Mario-Leander Reimer (@LeanderReimer, CTO @QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==

Clean Architecture ist ein Architekturstil, der darauf abzielt, Code strukturiert und übersichtlich zu gestalten, damit er leicht zu verstehen, zu warten und zu erweitern ist. Es geht darum, die verschiedenen Komponenten einer Anwendung in logische Schichten aufzuteilen, die jeweils eine spezifische Aufgabe erfüllen. Durch die Anwendung universeller Regeln der Softwarearchitektur kann man die Produktivität während der gesamten Lebensdauer eines Softwaresystems drastisch verbessern.

Wir zeigen, wie Anwendungen skalierbar, wartbar und testbar gestaltet und Projekte besser organisiert und strukturiert werden können, um sie schneller und kosteneffizienter zu entwickeln.

Anzeige
Anzeige

Weitere Verwandte Inhalte

Ähnlich wie ROSIK Stammtisch „Clean Architecture“ (20)

Weitere von QAware GmbH (20)

Anzeige

Aktuellste (20)

ROSIK Stammtisch „Clean Architecture“

  1. 1. qaware.de Methoden und Tools für eine nachhaltig saubere Architektur in agilen Projekten Mario-Leander Reimer mario-leander.reimer@qaware.de @LeanderReimer
  2. 2. 2 QAware
  3. 3. 3 QAware
  4. 4. 4 Mario-Leander Reimer Geschäftsführer | CTO @LeanderReimer #cloudnativenerd #qaware #gernperDude
  5. 5. 5 QAware Features Features Release Features Release Features Release Features Release Release Code wächst Abhängigkeiten nehmen zu Strukturen & Boundaries erodieren Testbarkeit leidet Änderungen werden aufwändiger Transitive Fehler entstehen Deadlines Komplexität steigt
  6. 6. Was sind die Gründe für eine Architektur Erosion in agilen Projekten? ⓘ Start presenting to display the poll results on this slide.
  7. 7. QAware | 7 Decisions
  8. 8. The Last Possible Moment != The Last Responsible Moment QAware | 8 ■ Welche Fragen sind für verantwortungsvolle Entscheidungen relevant? – Muss ich die Entscheidung jetzt treffen? – Kann ich es noch aufschieben? – Was passiert, wenn ich es nicht mache? – Wann wird die Komplexität zu hoch? – Welche Alternativen gibt es? – Was sind die Trade-Offs der Entscheidung? – Kann die Entscheidung rückgängig gemacht werden? ■ The Last Responsible Moment ist die bessere Wahl! ■ Keine Angst vor suboptimalen Entscheidungen. ■ Iterative Entwicklung, Tests, Refactoring, Continuous Integration und Architecture Fitness Functions helfen das Risiko beherrschbar zu machen
  9. 9. QAware | 9 https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions
  10. 10. Architecture Decision Records (ADR) QAware | 10 https://www.thoughtworks.com/radar/techniques/lightweight-architecture-decision-records
  11. 11. The Anatomy of an Architecture Decision Records (ADR) QAware | 11 # Title ## Context ## Decision ## Status ## Consequences ■ Short text file; 1-2 pages long, one file per decision ■ Simple format like Markdown, Asciidoc, TXT, etc. Short noun phrase and number, e.g. ADR 5: AWS as preferred cloud provider Proposed, Accepted, Deprecated, Superseded Describes the forces at play: technology, political, project local. Value neutral, simple facts. Response to the forces with justification. Stated in full sentences, with active voice. "We will …" Describe context, after applying the decision. All consequences should be listed here, not just the "positive" ones.
  12. 12. QAware | 12 Controlling
  13. 13. Nicht nur Maintainability ist wichtig. Clean Architecture ist Enabler für ganzheitliche Qualität! QAware | 13 Software Product Quality (ISO 25010) ● Modularity ● Reusability ● Analysability ● Modifiability ● Testability Maintainability ● Confidentiality ● Integrity ● Non-repudiation ● Authenticity ● Accountability Security ● Adaptability ● Installability ● Replaceability ● Evolvability Portability ● Co-existence ● Interoperability Compatibility ● Maturity ● Availability ● Fault Tolerance ● Recoverability Reliability ● Time Behaviour ● Resource Utilization ● Capacity Efficiency ● Completeness ● Correctness ● Appropriateness Functional Suitability ● Operability ● Learnability ● UI Aesthetics ● Accessibility Usability
  14. 14. Die Clean Architecture Konzepte müssen auf allen Ebenen einer Software-Architektur angewendet werden. QAware | 14
  15. 15. Architecture Fitness Functions validieren die geforderten (nicht)-funktionalen System-Eigenschaften kontinuierlich. QAware | 15 https://www.thoughtworks.com/de/radar/techniques/architectural-fitness-function
  16. 16. Fitness-function Driven Development QAware | 16 ■ Architektur ist wie ein Produkt mit User Journeys ■ Anforderungen werden von den Stakeholdern eingesammelt – Business – Compliance – Operations – Security – Infrastructure ■ Das sind häufig unsere „-illities“ und Qualitätsmerkmale ■ Die Akzeptanz-Kriterien werden mit einem BDD Test Framework formuliert. ■ Tests werden als Teil der CI/CD Pipeline ausgeführt, und anschließend verifiziert https://www.thoughtworks.com/de/insights/articles/fitness-function-driven-development
  17. 17. Beispiele für Architectural Fitness Functions QAware | 17 describe "Performance" do it "completes a transaction in under 2 seconds" do expect(k6.check_transaction_round_trip_time()).to < 2 end it "has less than 10% error rate for 10000 transactions" do expect(k6.check_error_rate_for_transactions(10000)).to < .1 end end describe "Security" do describe “Static Analysis” do it "should not have plaintext secrets in codebase" do expect(code.has_secrets_in_codebase()).to_not be(true) end end describe “Dynamic Analysis” do it "should not have any of the OWASP Top 10" do expect(zap.has_owasp_top_10_vulnerabilities()).to be(false) end end end
  18. 18. QAware | 18 Automation
  19. 19. Menschen machen Fehler. Von der Clean Architecture zum Big Ball of Mud geht’s schneller als man glaubt! QAware | 19
  20. 20. ArchUnit ermöglicht die einfache automatisierte Prüfung einer Software-Architektur in Form von Unit Tests. ■ https://www.archunit.org/ ■ Freie (Apache v2), einfache und erweiterbare Bibliothek zur Prüfung der Architektur von Java Code. Gibt es auch für .NET/C#. ■ Alle gängigen Build Tools und Unit Test Frameworks werden unterstützt ■ Das ArchUnit Library API bietet eine Sammlung an vordefinierten Regeln für wiederkehrende Architektur-Prüfungen – Architectures: Regeln zur Überprüfung von Layered und Onion Architectures – Slices: Erkennung von “Cycles” auf unterschiedlichen Ebenen – General: Sammlung von Regeln für Good Coding Practices (z.B: Logging, Exceptions, …) – PlantUML: Regeln zum Abgleich der Codebase mit einem PlantUML Modell – Freezing Arch Rules: Erlaubt die Definition einer Baseline für Violations, besonders nützlich um Technische Schulden in Altprojekten zu managen QAware | 20
  21. 21. Nur wenige Zeilen Code validieren unsere Clean Architecture kontinuierlich und wiederholbar bei jedem Build. QAware | 21 @AnalyzeClasses(packages = {"de.qaware.archunit.example.onion"}) public class OnionArchitectureFitnessTest { @ArchTest static final ArchRule onion_architecture_is_respected = onionArchitecture() .domainModels("..domain.model..") .domainServices("..domain.service..") .applicationServices("..application..") .adapter("cli", "..adapter.cli..") .adapter("persistence", "..adapter.persistence..") .adapter("rest", "..adapter.rest.."); }
  22. 22. Beyond Clean Architecture. Persönliche Leseliste für eine nachhaltig saubere Architektur. 22 QAware
  23. 23. Jfokus 2023 Quality in a Square. K8s-native Quality Assurance of Microservices with Testkube Stockholm | 6.2.2022 OOP 2023 Your APIs on Steroids: Retrofitting GraphQL by Code, Cloud-native or Serverless. Online | 6.2.2022 | 11.00 JavaLand 2023 Talks, Schulung & Aussteller in der Expo Brühl | 21.-23.3.2023 Meetup | Cloud Native Night Couchbase @ CNN München | 2.2. Meetup | Shevelopers 3/23 SAVE THE DATE! München | 29.3.2023 Upcoming Events Messen & Konferenzen Cloud Native Night Meetups Weitere Meetups Details noch nicht bekannt Meetup | Cloud Native Night Terraform is not enough! #pluginFramework #k8s #operator München | 30.3. Meetup | Codineers Rosenheim Themenabend: Moderne APIs Rosenheim | 9.3. Meetup | Clean Infrastructure as Code (IaC) IaC without tests is like a broken window… Online | 2.2.2023
  24. 24. qaware.de QAware GmbH Aschauer Straße 32 81549 München Tel. +49 89 232315-0 info@qaware.de twitter.com/qaware linkedin.com/company/qaware-gmbh xing.com/companies/qawaregmbh slideshare.net/qaware github.com/qaware Meine Kontaktdaten ...

×