Skip to content

Instantly share code, notes, and snippets.

@SMoni
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SMoni/568e2db2bf757f1f51f8 to your computer and use it in GitHub Desktop.
Save SMoni/568e2db2bf757f1f51f8 to your computer and use it in GitHub Desktop.
Lean Architecture: for Agile Software Development (Jim Coplien, Gertrud Bjørnvig)

Unterteilung

What the system is (User thinking)

  • Classes & Objects
  • Domain Experts
  • Architects
  • Database Schemata
  • Long-term stable structure
  • Form

What the system does (User doing)

  • Roles, identifiers, activation records
  • End Users
  • User Experience people
  • Interface designers
  • Ever-changing functionality
  • Function

Definition eines Problems

  • Dokumentiert und bekannt.
  • Es beschreibt den Unterschied zwischen dem aktuellen Zustand und dem benötigten.
  • Das Lösen des Problems muss messbar sein.
  • Kurze, klare Problembeschreibung in natürlicher Sprache.
  • Die Definition muss konsistent sein.

Zu beachten

  • Wem "gehört" das Problem?
  • Feature-Creeping
  • Achtung vor Lösungen in der Verkleidung von Problemen...

Akronym SMART

  • S Specific
  • M Measurable
  • A Attainable
  • R Relevant
  • T Time-bound

Akronym INVEST

  • I Independent
  • N Negotiable
  • V Valuable
  • E Estimable
  • S Sized appropriately/Small
  • T Testable

Problemanalyse

  • Die Fünf Ws Es wird so lange nachgefragt, bis die Ursache eines Problems klar ist.
  • Ishikawa Diagramm Ursache-Wirkungs-Diagramm um die Kausalitätsbeziehungen darzustellen.

What the system is

  • Architektur ist mehr Form als Struktur
  • Architektur ist mehr Verdichtung als Abstraktion
  • Architektur hat statische und dynamische Komponenten
  • Architektur geht jeden (Entwickler) was an
  • Ein Großteil der Architektur dient nicht dazu, Anwender-Probleme zu lösen
  • Architektur muss nicht schwer sein

Aufteilen

Domäne versus Verhalten

Technik 1 Auf die Form ("Was das System ist") konzentrieren ohne übermässig auf die Funktionalität ("Was das System macht") zu achten.

Technik 2 Aufteilen der Komponenten nach Wahrscheinlichkeit der Änderung.

Conway's Law

Die Struktur einer Software spiegelt die Struktur einer Organisation wieder.

Technik 3 Aufteilen der Form, so dass jeder Teil so unabhängig wie möglich ist.

Technik 4 Eigenständigkeit der Teams durch die Bestimmung, wo Änderung zusammenfallen.

Einzelne Komponenten/Subsysteme, die ein klar definiertes Gebiet verantworten, sollten

  • einen hohen Zusammenhang haben.
  • so weit wie möglich von Nachbarsystemen entkoppelt sein.

Eine agile Herangehensweise sollte sich grob nach diesen Regeln richten

  • Design-Paradigmen unterstützen die Unabhängikeiten des Teams und spiegeln die Anwender-Domäne wieder.
  • Es können in einem komplexen System mehrere Paradigmen autauchen.
  • Das Paradigma ordnet sich der Aufteilung unter.
  • Die Paradigmen sind entsprechend

Technik 5 Das Aufteilen sollten primär menschliche Überlegungen bestimmen, erst danach Software-Engineering.

Domänen

Domänen sind die wichtigsten Dinge eines Systems.

Technik 6 Domänen sollten vorsichtig aufgeteilt werden; Domänen nicht geographisch oder über Architekturartefakte aufteilen.

Technik 7 Auf die Möglichkeit einer Produktlinie achten und diese zur Unterstützung für Aufteilungen benutzen.

Design Style

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment