SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Softwarequalität



                 Architektur & Qualität



Prof. Dr. Wolfgang Golubski      Gerrit Beine, M.Sc.
      golubski@fh-zwickau.de        mail@gerritbeine.com


                                                           1
Aufgaben von Software-Architektur




                                    2
Aufgaben der Software-Architektur


●   Software-Architektur:
    Beschreibt die Komponenten einer Software sowie deren funktionales Zusammenspiel.
●   SWEBOK (Software Engineering Body of Knowledge, IEEE) ordnet Software-Architektur zur
    der Entwurfsphase zu
●   Software-Architektur ist die Summe von Design-Entscheidung vor der Implementierung
●   Praktisch ist die Software-Architektur der IT-Architektur und der
    Unternehmensarchitektur untergeordnet
     ●   IT-Architektur: Infrastruktur (Hard- und Software) im Unternehmen
     ●   Unternehmensarchitektur: Zusammenspiel der IT-Elemente im Sinne des
         geschäftlichen Zwecks
●   Software-Architektur verantwortet im Wesentlich Nicht-Funktionale Anforderung
     ●   FURPS (Functionality, Usability, Reliability, Performance, Supportability)
         siehe auch ISO 9126




                                                                                         3
Kollaborative Aufgaben des Software-Architekten


●   Requirements Engineering
     ●     Festlegen von Nicht-Funktionalen Anforderungen
     ●     Bewerten von funktionalen Anforderungen hinsichtlich ihrer Bedeutung für die
           Architektur
●   Betriebsführung
     ●     Definition der Laufzeitumgebung, Hardware, Betriebssystem, Datenbank
     ●     Festlegung des Deployments, Verteilung von Client-Anwendungen
●   Test
     ●     Design for Testability während Design und Implementierung
     ●     Unterstützung des Testmanagements in allen Phasen
●   Projektmanagement
     ●     Tracking der Nicht-Funktionalen Anforderungen
     ●     Auswahl und Definition einer Architektur mit Blick auf Zeit und Kosten




                                                                                          4
Software-Architekten & Software-Entwickler


●   Software-Architekten machen Vorgaben für Projekte
     ●   Überblick des Gesamtprojektes, Kontext-bezogenes Wissen
●   Software-Entwickler realisieren konkrete Lösungen für Teilaspekte des Projektes
     ●   Tiefes Detailwissen bezüglich Frameworks und Problemstellungen


●   Software-Architekten sollten:
     ●   Erklären, WARUM sie welche Vorgabe machen
     ●   Kontext-Wissen transparent machen, Überblick ermöglichen
     ●   Programmieren können; Code-Beispiele sind gute Eisbrecher
     ●   Zuhören
●   Software-Entwickler sollten:
     ●   Fragen, warum etwas vorgegeben wurde
     ●   Begründen, warum abgewichen werden sollte




                                                                                      5
Architektur, Conway's Law und das Problem der
              Komponententeams




                                                6
Conway's Law


“… organizations which design systems … are constrained to produce designs which are copies
                  of the communication structures of these organizations”
                                    Melvin Conway, 1968

●   Bedeutung für die Software-Architektur
     ●   Die fachliche Architektur einer Anwendung sollte immer der Struktur des
         Fachbereichs folgen, der die Anwendung nutzen wird.
     ●   Die technische Architektur sollte immer die fachlichen Architektur widerspiegeln und
         sie erweitern.
     ●   Build-Strukturen sollten immer der technischen Architektur folgen.
●   Bei der Planung von Software und dem Team-Setup eines Projektes sollte Conway's Law
    berücksichtigt werden.




                                                                                            7
Conway's Law und Modellebenen


        Sicht                       Artefakte                      Beziehungen
Geschäftsobjektsicht     Business Objects, repräsentiert   Ausschließlich zwischen
                         durch Klassen, sehr hohes         Business Objects
                         Abstraktionsniveau
Anforderungssicht        Requirements, Functional &        Verbindung zwischen Functional
                         Non-Functional                    & Non-Functional Requirements,
                                                           Abhängigkeiten zu Business
                                                           Objects
Anwendungsfallsicht      Use Cases, Actors                 Use Cases realisieren
                         Manchmal hier sinnvoll:           Requirements
                         Fachklassenmodelle                Use Cases benötigen Business
                                                           Objects (oder Fachklassen)
Fachliche Architektur    Components, Dependencies,         Component realisiert Use Case
                         Fachlich orientiert, Keine
                         technologische Aspekte
Technische Architektur   Components, Dependencies,         Component realisiert
                         Technische Aspekte sichtbar,      Component aus Fachlicher
                         Grundlage für Build Process       Architektur


                                                                                           8
Komponenten und Subsysteme


●   Komponente:
    ●   "A software component is a unit of composition with contractually specified
        interfaces and explicit context dependencies only. A software component can be
        deployed independently and is subject to composition by third parties."
        (Clemens Szyperski, Component Software, ACM Press/Addison-Wesley, England, 1998)

    ●   "Eine Software-Komponente ist ein Software-Element, das konform zu einem
        Komponentenmodell ist und gemäß einem Composition-Standard ohne Änderungen
        mit anderen Komponenten verknüpft und ausgeführt werden kann."
        (William T. Councill, George T. Heineman: Component-Based Software Engineering. Addison-Wesley, 2001, ISBN 0-201-70485-4)

●   Subsystem:
    ●   Ein Subsystem (Teilsystem) ist eine Komponente, die sehr groß ist oder sich aus
        mehreren Komponenten zusammensetzt.
    ●   Agiles Identifizieren von Subsystem: Ein Subsystem besteht aus einer oder mehreren
        Komponenten, die für sich stehend einen Geschäftswert erzeugen.




                                                                                                                                    9
Komponententeams und Featureteams


●   Komponententeams haben in der Regel eine hohe Domänenkompetenz tendieren aber
    zur Wasserfall-Entwicklung.
●   Feature-Teams sind in der Regel Cross-Funktional, haben kaum Übergabepunkte und
    tendieren eher zu agilen und emergenten Entwicklungen.
●   Wann lohnen sich Komponententeams?
     ●   In großen Wartungsprojekten, wenn Änderungen kontinuierlich erfolgen.
●   Wann lohnen sich Featureteams?
     ●   In Greenfield-Projekten
     ●   In Brownfield-Projekten, wenn ein schlechter Komponentenschnitt vorliegt oder nicht
         kontinuierlich an einzelnen Komponenten weiterentwickelt wird.
●   Das Problem mit dem Collaborative-Code-Ownership:
     ●   Idealerweise sollte nur ein Feature-Team zu einem Zeitpunkt ein Teilsystem
         bearbeiten, klappt das nicht, sollte pro Komponente nur ein Team arbeiten.
     ●   In großen Projekten sollte ein Feature-Team für die betroffenen Komponenten
         verantwortlich sein, bis das Feature implementiert ist.



                                                                                          10
Architektur-Dokumentation




                            11
Die vier Sichten von Architekturdokumentation


●   Kontextabgrenzung
    Einbettung in der Umgebung,                       Kontextabgrenzung
    Schnittstellen zu Nachbarsystemen,
    System ist Blackbox
●   Bausteinsicht
    Interne Sicht des Systems, statische                                                 Laufzeitsichten
    Strukturen, Abhängigkeiten zwischen
    Komponenten
●   Laufzeitsicht
    Interne Sicht, Verhaltensbeschreibungen,
    Interaktion der Bausteine zur Laufzeit,                                             Bausteinsichten
    Beschreibung des dynamischen
    Strukturen
●   Verteilungssicht
    Externe Sicht, Topologie des Systems,                                            Verteilungssichten
    Infrastruktur, Hardware, Deployment
                                               Vier Arten von Sichten
                                               (Nach „Effektive Software-Architekturen“, Gernot Starke, 4. Auflage, 2009,
                                               Carl Hanser Verlag München)




                                                                                                                            12
Schnittstellendokumentation


●   Schnittstellen zu externen Systemen müssen dokumentiert sein
●   Formal mit Beschreibungssprachen wie WSDL, WADL, Corba-IDL oder API-Dokumentation
●   Elemente der Schnittstellendokumentation
     ●   Versionsinformationen der Schnittstelle
     ●   Bereitgestellte Ressourcen (API-Dokumentation)
     ●   Semantik der Ressourcen (Events, Daten, Zustände) sowie potentieller Änderungen
     ●   Restriktionen hinsichtlich der Benutzung der Schnittstelle
     ●   Fehlerszenarien, Konfigurationsparameter
     ●   Erklärung der Entwurfsentscheidungen
     ●   Verfügbarkeit der Schnittstellen (sowohl operativ als auch strategisch)
     ●   Reaktionszeiten bei Problemen
     ●   Ansprechpartner beider beteiligten Systeme
     ●   Beispiele zur Verwendung



                                                                                           13
Architektur-Dokumentation


●   Inhalte
     ●   Strukturen des Systems (Vier Sichten)
     ●   Schnittstellen, idealerweise als Kontrakte mit Ansprechpartnern
     ●   Architektur-Entscheidungen mit ihren Begründungen
●   Umfang von Architektur-Dokumentation
     ●   So wenig wie möglich, so viel wie nötig
     ●   Weniger ist oft mehr, lange Prosa-Dokumente schrecken oft ab
     ●   Bilder sagen mehr als Worte, Zusammenhänge lassen sich visuell gut transportieren
●   Verständlichkeit ist zwingend, Sprachen wie UML sind optional
●   Gut geeignet ist Architekturtapete
     ●   Einzelne Aspekte der Architektur werden auf Packpapier an der Wand verewigt
     ●   Erklärungen und Diskussionen lassen sich wie an einem Scrum-Board führen




                                                                                         14
Kommunikationsprotokolle aus Architektursicht




                                                15
Kommunikationsprotokolle


●   Notwendig, um Informationen zwischen Anwendungen auszutauschen
●   In der Regel ab OSI-Layer 5 (Session Layer) implementiert, oft noch auf
    Anwendungsprotokollen aufbauend (z.B. HTTP)
●   Architekturentscheidungen berühren folgende Punkte:
     ●   Sicherheit
         Ist das Protokoll zulässig? Erfüllt es die notwendigen Sicherheitskriterien?
     ●   Performance
         Kann der Informationsaustausch schnell genug durchgeführt werden?
     ●   Beschränkungen
         Kann der Umfang der Informationen durch das Protokoll übertragen werden?




                                                                                        16
Common Object Request Broker Architecture (CORBA)


●   Objektorientierte Middleware und plattformübergreifender Protokollstack
●   Definiert durch die Object Management Group
●   Basiert auf TCP/IP, kann Secure Socket Layer verwenden
●   CORBA IIOP Standard-Port 683 (Port 684 für CORBA IIOP over SSL)
●   Schnittstellenspezifikation durch Interface Definition Language
     ●   IDL wird mit Compiler in jeweilige Programmiersprache übersetzt
     ●   Stubs und Skeletons entsprechen dem Mediator-Pattern
●   Service-basierte Architektur (u.a. Naming Service, Trading Service, Event Service, Life Cycle
    Service, Relationship Service)
●   Datenbeschreibung als struct, union und sequence, bestehend aus primitiven Typen wie
    long, double, string, boolean, enum
●   Wurde großteils durch Java und .NET Remoting verdrängt
●   Relevante Implementierungen in IBM WebSphere (Basis für Java-Remoting) und ORBit
    (verwendet von Mozilla und LibreOffice)




                                                                                                17
Remote Procedure Call


●   Protokoll zur Interprozesskommunikation, erstmals 1976 beschrieben (RFC 707)
●   Aktuelle Version in RFC 1057 und 5531 beschrieben
●   Basiert in der Regel auf UDP, prinzipiell aber auch TCP möglich
●   Standard-Port für Sun-RPC ist 111, DCE RPC Port ist 135
●   Verschiedene Implementierungen, die inkompatibel sind
     ●   Open Network Computing (ONC) RPC (Sun-RPC)
     ●   Distributed Computing Environment (DCE) RPC
     ●   Microsoft RPC (MSRPC), abgeleitet von DCE RPC, Grundlage für DCOM
●   Client-Server-Modell, Verzeichnisdienst oder Broadcast notwendig
●   Koordination der vom Client initiierten Aufrufe übernimmt ein Portmapper
●   Basis von NFS und NIS
●   Für die Entwicklung moderner Anwendung kaum von Bedeutung




                                                                                   18
Extensible Markup Language Remote Procedure Call (XML-RPC)


●   Protokoll auf Basis von HTTP(S) und XML
●   Hauptsächlich von Microsoft entwickelt
●   Plattformübergreifend und unabhängig von Programmiersprachen durch XML-Format
●   Sehr leichtgewichtig, einfach zu implementieren und zu verstehen
●   XML-RPC kennt kein NULL
●   Datenbeschreibung mit struct und array, bestehend aus primitiven Typen int, double,
    boolean, string, datetime.ISO8601 und base64 (für binäre Daten)
●   Mittlerweile durch SOAP überholt und im Wesentlichen ersetzt




                                                                                          19
Simple Object Access Protocol (SOAP)


●   Weiterentwicklung von XML-RPC
●   Transportprotokolle HTTP(S), FTP, SMTP oder direkt TCP
●   Hautpsächlich von Microsoft entwickelt
●   Plattformunabhängig und theoretisch auch unabhängig von Programmiersprachen
●   Sehr komplexe Definition von XML-Strukturen zum Nachrichtenaustausch
●   Ermöglicht Remote Procedure Calls und Event-basierten Nachrichtenaustausch
●   Primäres Ziel ist die schwache Kopplung von Systemen
●   Extrem hoher Protokoll-Overhead:
    Übertragung eines einzigen Boolean-Wertes benötigt mehrere hundert Bytes
●   Relativ langsame Verarbeitung durch Protokoll-Verschachtelung (TCP, HTTP, SOAP), Parser-
    Aufwände (SOAP XML) und Verarbeitung (Mapping der Nachricht auf
    Programmstrukturen bzw. Methoden)




                                                                                           20
Representational State Transfer (ReST)


●   Programmierparadigma, geht über Kommunikationsprotokoll hinaus
●   Beschreibt Dienste auf Basis von HTTP(S)
●   ReST-Services müssen fünf Eigenschaften erfüllen
     ●   Eindeutige Adressierbarkeit
     ●   Unterschiedliche Repräsentationen (ReST macht keine Vorgaben über das
         Austauschformat, möglich sind JSON, XML, CSV)
     ●   Zustandslosigkeit (Erbe von HTTP, ermöglicht strikte Trennung zwischen Client und
         Server, alle Nachrichten müssen vollständig sein)
     ●   Operationen GET, PUT, DELETE (HTTP-Verben) müssen idempotent sein
     ●   Navigierbarkeit über Ressourcen hinweg (Nutzen von Hyper-Links zur Adressierung)
●   ReST nutzt Fähigkeiten des World Wide Web um Dienste zu realisieren, ohne die
    Komplexität zu erhöhen (wie das bei SOAP der Fall ist).
●   Kann auch als Architekturparadigma verstanden werden und ohne HTTP mit Hilfe von
    RPC-Modellen implementiert werden.




                                                                                             21
Architektur in agilen Projekten




                                  22
Das Architektur-Paradoxon


●   Architektur bildet die fachlichen Anforderungen unter Berücksichtigung der
    nichtfunktionalen Anforderungen auf technische Strukturen ab
●   Üblicherweise sind nicht alle fachlichen Anforderungen zu Beginn bekannt
●   Architektur soll stabil sein und sich möglichst nicht ändern


                                                                 Kann das funktionieren?

●   „Es gibt kein deterministisches Verfahren, das in jedem Fall zu guten Software-
    Architekturen führt“
    („Effektive Software-Architekturen“, Gernot Starke, 4. Auflage, 2009, Carl Hanser Verlag München)

●   „Prognosen sind schwierig, insbesondere wenn sie die Zukunft betreffen.“
    (Winston Churchill)

●   Software-Architektur basiert im Wesentlichen auf der Erfahrung des Architekten mit
    ähnlichen Domänen




                                                                                                        23
Emergenz und ihre Grenzen


●   Die Nicht-Vorhersagbarkeit fachlicher Anforderungen führt zwangsläufig zu Emergenz
●   Klassische Vorgehensmodelle lösen das durch Change Requests auf
●   Agile Vorgehensmodelle akzeptieren die Emergenz der Architektur als gegeben

●   Führt emergente Architektur zu schlechter Software und Unvorhersehbarkeit?

●   Software-Architektur muss zu IT-Architektur und Unternehmensarchitektur passen
●   Zwischen den unterschiedlichen Architekturen muss abgestimmt werden
●   Klassische Architektur versucht oft, viele potentielle Probleme zu lösen
●   Agile Architektur verzichtet auf die Lösung zukünftiger Probleme -
    das bedeutet nicht, dass sie nicht zukunftsfähig ist!
●   Fachliche Anforderungen, die Änderungen der Architektur bedingen, sind entsprechend
    aufwändiger → Refactoring muss bei der Implementierung erfolgen
●   Emergenz: Architektur entwickelt sich anhand der fachlichen Anforderungen




                                                                                          24
Architektur-Pattern erkennen und beschreiben




                                               25
Pattern jenseits der GoF


●   GoF-Pattern führen nicht zwangsläufig zu gutem Design
●   Projekt-Pattern liefern oft elegantere Lösungen für spezifische Problemklassen

●   Vorteile von Projekt-Pattern
     ●   Großer Teil der Architektur-Dokumentation kann durch Pattern erzeugt werden
     ●   Einstieg in ein Projekt wird erleichtert
     ●   Refactoring auf Basis von Pattern ist leichter und besser abzuschätzen


●   Anwendungsfälle für Projekt-Pattern
     ●   Nutzung von Frameworks im Projekt angleichen
     ●   Architekturvorgaben strukturiert beschreiben
     ●   Architektur-Prototypen in Projekt-Pattern transformieren




                                                                                       26
Projektpattern erkennen & beschreiben


●   Erkennen (der Notwendigkeit) von Projekt-Pattern
     ●   Gruppen ähnlicher fachlicher Funktionalitäten
     ●   Gruppen ähnlicher Unit-Tests
     ●   Frameworks werden unterschiedlich eingesetzt
     ●   Häufige Erstellung von Prototypen für ähnliche Probleme


●   Beschreiben von Projekt-Pattern: Der Pattern-Spannungsbogen
     ●   Umfeld: Wo taucht das Problem auf?
     ●   Problem/Ziel:
         Welches Problem adressiert das Pattern? Welches Ziel soll erreicht werden?
     ●   Spannungsfeld:
         Warum ist es schwierig, das Problem zu lösen oder das Ziel zu erreichen?
     ●   Lösung: Die Lösung für das Problem, Code-Beispiele, Modelle oder Dokumentation
     ●   Folgen: Vor- und Nachteile der Lösung
         (Sehr gut beschrieben in: http://www.tim-wellhausen.de/papers/PatternsSelbstGemacht-Zusammenfassung.pdf)




                                                                                                                    27
Projekt-Pattern anwenden


●   Pattern im Projekt kann jeder Stakeholder beisteuern
●   Pattern sollten in gleicher Struktur zentral dokumentiert werden
●   Architekten sollten Pattern reviewen (und natürlich auch entdecken!)
●   Abstimmungsgremium zum Beschluss vorgeschlagener Pattern hat sich bewährt
●   Pattern, die unvollständig sind (gerne werden Nachteile vergessen), sollten nicht
    zugelassen werden

●   Refactoring to Pattern
     ●   Ob ein neues Pattern ein Refactoring nach sich zieht, hängt vom Aufwand ab
         (Der wird aber immer nur steigen!)
     ●   Neue Pattern bieten sich zur Einarbeitung für Projekt-Einsteiger an




                                                                                        28
Zwischen den Welten: Kommunikation mit
      Entwicklern und Anwendern




                                         29
Kommunikation im Projekt


●   Architekten, die lediglich technische Expertise aufweisen, werden scheitern
●   Technische Sachverhalte und Entscheidungen müssen unterschiedlichen Gruppen
    vermittelt werden:
     ●   Entwicklern: Architektur muss aus technischer Sicht akzeptiert werden –
         Architekten, die nicht programmieren können, stehen auf verlorenem Posten
     ●   Projektleitung: Architektur muss innerhalb des Projektbudgets realisiert werden
         können und optimal auf die Bedürfnisse des Projektes eingehen –
         Architekten, die nicht betriebswirtschaftlich fundiert entscheiden können,
         bekommen an dieser Stelle schnell ein Problem
     ●   Fachbereiche: Architektur muss aus fachlicher Sicht akzeptiert werden –
         Fehlendes fachliches Wissen und Verständnis um die Probleme des Fachbereichs und
         der Anwender führen zur Ablehnung, unabhängig von der Qualität der Architektur




                                                                                           30
Mittel und Wege zur Kommunikation


●   Architekten benötigen ein breites Toolset zur Kommunikation
     ●   Einfache Modelle und Screenshots eignen sich sehr gut zur Diskussion mit
         Fachbereichen
     ●   Excel-Tabellen die Entscheidungswege objektivieren oder Budgetkalkulationen
         transparent machen erfreuen die Projektleitung
     ●   Code-Beispiele können Entwickler im positiven Sinne herausfordern
     ●   Powerpoint-Präsentationen mit den notwendigen Fakten für das Management


●   Das wichtigste Werkzeug: Zuhören!




                                                                                       31
Fragen




         32
Was versteht man unter einer Shared-Nothing
               Architektur?




                                              33
Was versteht man unter einer Shared Nothing Architektur?


●   Zum Beispiel das World-Wide-Web

●   In einer Shared Nothing Architektur spielen viele Komponenten zusammen, ohne dass sie
    sich etwas zentral teilen.
●   Shared Nothing Architekturen erreichen damit eine hohe Ausfalltoleranz.




                                                                                        34
Wie kann man Transkations-Handling über mehrere
          Systeme hinweg realisieren?




                                              35
Wie kann man Transkations-Handling über mehrere Systeme hinweg realisieren?


●    Verteilte Transaktion benötigt
     Koordinator
●    Üblicherweise Behandlung nach 2-Phase-
     Commit-Protokoll der X/Open XA
      ●   Korrektheit auch bei Ausfall eines
          Teilnehmers garantiert
      ●   Grundsätzliches Problem: Blockade
          eines Teilnehmers während der
          Transaktion
●    3PC-Protokoll: Erhöhung der
     Nachrichtenanzahl mit dem Ziel, trotz
     eines Ausfalls des Koordinators die
     Transaktion beenden zu können




                                               2-Phasen-Commit-Protokoll
                                               (Quelle: http://de.wikipedia.org/wiki/Commit-Protokoll)




                                                                                                         36
Feature Teams und die Arbeit an mehreren
             Komponenten




                                           37
Feature Teams und die Arbeit an mehreren Komponenten


●   Häufige Diskussion: Feature-Teams, Komponenten-Teams oder Tier-Teams
●   Tier-Teams machen Projekte schwer planbar durch Abhängigkeiten zwischen den Tiers
●   Komponenten-Teams sind schwer kontinuierlich
     ●   Hohes Know-How innerhalb der Komponente, wenig Know-How außerhalb
●   In Agilen Projekten werden generell Feature-Teams eingesetzt
     ●   Generalisten mit Detail-Know-How: cross-funktionale Teams
     ●   Hoher Kommunikationsaufwand bei paralleler Arbeit an mehreren Komponenten
     ●   Geschickter Komponentenschnitt und saubere Architektur erlauben Koordination


●   Feature-Teams haben sich für viele Entwicklungsprojekte bewährt




                                                                                        38
DevOps und Architektur




                         39
DevOps und Architektur


●   DevOps setzt die Agilen Ideale konsequent für den Betrieb von Softwaresystemen fort
●   Betriebsführung wird von Beginn an als Stakeholder ins Projekt einbezogen
●   Anforderungen der Betriebsführung werden in der Architektur berücksichtigt

●   Sinnvoll in Kombination mit Continuous Integration und Contionuous Delivery
●   Rollout der Software wird weitestgehend automatisiert („Zero Downtime Deployment“)
●   Hohe Änderungsfrequenz („Every Commit is a Release Candidate“)
●   Akzeptanz von Offshoring und Parallelität in Entwicklung und Betrieb

●   Architektur bildet bei DevOps die Schnittstelle zwischen Entwicklung und Betrieb
●   Architektur treibt Automation voran und löst Wissensinseln auf
●   Tools von Entwicklung und Betrieb werden vereinheitlicht

●   Mehr dazu unter: http://devops.com/




                                                                                          40
Verwendung dieser Unterlagen


●   Wir stellen diese Unterlagen unter der Creative Commons Lizenz CC-BY-NC-SA zur allen
    am Thema Interessierten Verfügung.
●   Es ist erlaubt, die Unterlagen unter gleichen Bedingungen zu
     ●   kopieren
     ●   verteilen
     ●   übertragen und
     ●   adaptieren, wenn
●   die ursprünglichen Autoren genannt werden und
●   die Verwendung nicht zu kommerziellen Zwecken stattfindet.

●   Details zur Lizenz sind hier zu finden:
    http://creativecommons.org/licenses/by-nc-sa/3.0/




                                                                                           41

Contenu connexe

Tendances

XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0thoemmes
 
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...Intelliact AG
 
Prozesse im Spiegel des Projektalltags
Prozesse im Spiegel des ProjektalltagsProzesse im Spiegel des Projektalltags
Prozesse im Spiegel des ProjektalltagsmicroTOOL GmbH
 
Ergosign-wpf-ui-development-best-practices-dotnet
Ergosign-wpf-ui-development-best-practices-dotnetErgosign-wpf-ui-development-best-practices-dotnet
Ergosign-wpf-ui-development-best-practices-dotnetErgosign GmbH
 
Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...
Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...
Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...Helko Glathe
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
 
UE in der agilen Produktentwicklung #iak10
UE in der agilen Produktentwicklung #iak10UE in der agilen Produktentwicklung #iak10
UE in der agilen Produktentwicklung #iak10Sandra Griffel
 
Agilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der SoftwareentwicklungAgilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der Softwareentwicklungrico.fritzsche
 
Die unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles AnforderungsmanagementDie unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles AnforderungsmanagementThomas Moedl
 
Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...
Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...
Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...MID GmbH
 
WPF Custom Control Development Unchained
WPF Custom Control Development UnchainedWPF Custom Control Development Unchained
WPF Custom Control Development Unchainedthoemmes
 

Tendances (12)

XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0
 
Architekturbewertung
ArchitekturbewertungArchitekturbewertung
Architekturbewertung
 
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
 
Prozesse im Spiegel des Projektalltags
Prozesse im Spiegel des ProjektalltagsProzesse im Spiegel des Projektalltags
Prozesse im Spiegel des Projektalltags
 
Ergosign-wpf-ui-development-best-practices-dotnet
Ergosign-wpf-ui-development-best-practices-dotnetErgosign-wpf-ui-development-best-practices-dotnet
Ergosign-wpf-ui-development-best-practices-dotnet
 
Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...
Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...
Konzeption eines auf Feature-Modellierung basierenden Frameworks zur modellge...
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
UE in der agilen Produktentwicklung #iak10
UE in der agilen Produktentwicklung #iak10UE in der agilen Produktentwicklung #iak10
UE in der agilen Produktentwicklung #iak10
 
Agilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der SoftwareentwicklungAgilität und Qualitätskriterien in der Softwareentwicklung
Agilität und Qualitätskriterien in der Softwareentwicklung
 
Die unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles AnforderungsmanagementDie unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles Anforderungsmanagement
 
Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...
Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...
Requirements Engineering for SOA Services with BPMN 2.0 – From Analysis to Sp...
 
WPF Custom Control Development Unchained
WPF Custom Control Development UnchainedWPF Custom Control Development Unchained
WPF Custom Control Development Unchained
 

En vedette

Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerGerrit Beine
 
Technische Schulden - mit Notizen
Technische Schulden - mit NotizenTechnische Schulden - mit Notizen
Technische Schulden - mit NotizenGerrit Beine
 
Softwarequalität - Metriken
Softwarequalität - MetrikenSoftwarequalität - Metriken
Softwarequalität - MetrikenGerrit Beine
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJSSebastian Springer
 
Introduction to Protractor
Introduction to ProtractorIntroduction to Protractor
Introduction to ProtractorFlorian Fesseler
 
Exibri Software Product Lines Aosd
Exibri Software Product Lines AosdExibri Software Product Lines Aosd
Exibri Software Product Lines AosdCédric WILLIAMSON
 
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...Club Alliances
 
Torsten Grote: Freie Software
Torsten Grote: Freie SoftwareTorsten Grote: Freie Software
Torsten Grote: Freie SoftwareStefanMz
 
(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando CódigosRafael Rosa
 
Freie Software in der (Groß-)Forschung
Freie Software in der (Groß-)ForschungFreie Software in der (Groß-)Forschung
Freie Software in der (Groß-)ForschungAndreas Schreiber
 
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et MoovementSoftware Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et MoovementALTAIDE
 
Präsentation PM Forum - Social Software
Präsentation PM Forum  - Social SoftwarePräsentation PM Forum  - Social Software
Präsentation PM Forum - Social SoftwareGPMS
 
Wertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-SystemenWertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-SystemenMichael Moser
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010MD DAY
 
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...ljaquet
 
Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?Matthias Stürmer
 

En vedette (20)

Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product Owner
 
Technische Schulden - mit Notizen
Technische Schulden - mit NotizenTechnische Schulden - mit Notizen
Technische Schulden - mit Notizen
 
Softwarequalität - Metriken
Softwarequalität - MetrikenSoftwarequalität - Metriken
Softwarequalität - Metriken
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
 
Introduction to Protractor
Introduction to ProtractorIntroduction to Protractor
Introduction to Protractor
 
Protractor: Tips & Tricks
Protractor: Tips & TricksProtractor: Tips & Tricks
Protractor: Tips & Tricks
 
Exibri Software Product Lines Aosd
Exibri Software Product Lines AosdExibri Software Product Lines Aosd
Exibri Software Product Lines Aosd
 
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
 
FABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriertFABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriert
 
Torsten Grote: Freie Software
Torsten Grote: Freie SoftwareTorsten Grote: Freie Software
Torsten Grote: Freie Software
 
Lm software
Lm softwareLm software
Lm software
 
(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos
 
Freie Software in der (Groß-)Forschung
Freie Software in der (Groß-)ForschungFreie Software in der (Groß-)Forschung
Freie Software in der (Groß-)Forschung
 
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et MoovementSoftware Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
 
Präsentation PM Forum - Social Software
Präsentation PM Forum  - Social SoftwarePräsentation PM Forum  - Social Software
Präsentation PM Forum - Social Software
 
Wertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-SystemenWertstoff Software - Wissenssicherung in Legacy-Systemen
Wertstoff Software - Wissenssicherung in Legacy-Systemen
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
 
Slide Lewis Chimarro
Slide   Lewis ChimarroSlide   Lewis Chimarro
Slide Lewis Chimarro
 
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
 
Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?
 

Similaire à Softwarequalität - Architektur

JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven DesignTobiasFrischholz
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRAlexander Hundt
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der PraxisMichael Mirold
 
Der Enterprise-Java-Architekt – eine aussterbende Gattung!?
Der Enterprise-Java-Architekt – eine aussterbende Gattung!?Der Enterprise-Java-Architekt – eine aussterbende Gattung!?
Der Enterprise-Java-Architekt – eine aussterbende Gattung!?OPEN KNOWLEDGE GmbH
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudAarno Aukia
 
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der ArchitekturdokumentationSteht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentationoose
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
Microservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenMicroservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenJan Thielscher
 
Portale 2.0 mit Liferay
Portale 2.0 mit LiferayPortale 2.0 mit Liferay
Portale 2.0 mit Liferayinovex GmbH
 
Skalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine EinführungSkalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine EinführungMarkus Kühle
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...Aberla
 
Agilität im Systems Engineering – geht das?
Agilität im Systems Engineering – geht das?Agilität im Systems Engineering – geht das?
Agilität im Systems Engineering – geht das?HOOD Group
 
ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“QAware GmbH
 
Microservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternMicroservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternBrockhaus Consulting GmbH
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungMarc Müller
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 

Similaire à Softwarequalität - Architektur (20)

JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
OSLC in Aktion
OSLC in AktionOSLC in Aktion
OSLC in Aktion
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der Praxis
 
Der Enterprise-Java-Architekt – eine aussterbende Gattung!?
Der Enterprise-Java-Architekt – eine aussterbende Gattung!?Der Enterprise-Java-Architekt – eine aussterbende Gattung!?
Der Enterprise-Java-Architekt – eine aussterbende Gattung!?
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
 
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der ArchitekturdokumentationSteht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
CDI
CDICDI
CDI
 
Microservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenMicroservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen sollten
 
Portale 2.0 mit Liferay
Portale 2.0 mit LiferayPortale 2.0 mit Liferay
Portale 2.0 mit Liferay
 
Skalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine EinführungSkalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine Einführung
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
 
Agilität im Systems Engineering – geht das?
Agilität im Systems Engineering – geht das?Agilität im Systems Engineering – geht das?
Agilität im Systems Engineering – geht das?
 
ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“
 
Microservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternMicroservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary Pattern
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 

Plus de Gerrit Beine

Auf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredAuf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredGerrit Beine
 
Mastering Cargo Cult
Mastering Cargo CultMastering Cargo Cult
Mastering Cargo CultGerrit Beine
 
Conway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturConway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturGerrit Beine
 
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdBeyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdGerrit Beine
 
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveMastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveGerrit Beine
 
Gut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGerrit Beine
 
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternBeyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternGerrit Beine
 
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Gerrit Beine
 
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenBacklog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenGerrit Beine
 
Der hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientDer hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientGerrit Beine
 
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisDie Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisGerrit Beine
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerGerrit Beine
 
Technische Schulden
Technische SchuldenTechnische Schulden
Technische SchuldenGerrit Beine
 
Die Product Owner Toolbox
Die Product Owner ToolboxDie Product Owner Toolbox
Die Product Owner ToolboxGerrit Beine
 
Agile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenAgile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenGerrit Beine
 
Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Gerrit Beine
 
Scaled, Distributed, Agile - Produktentwicklung auf neuen Wegen
Scaled, Distributed, Agile - Produktentwicklung auf neuen WegenScaled, Distributed, Agile - Produktentwicklung auf neuen Wegen
Scaled, Distributed, Agile - Produktentwicklung auf neuen WegenGerrit Beine
 
NTFS On Disk Structure
NTFS On Disk StructureNTFS On Disk Structure
NTFS On Disk StructureGerrit Beine
 

Plus de Gerrit Beine (20)

Auf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredAuf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und Fred
 
Mastering Cargo Cult
Mastering Cargo CultMastering Cargo Cult
Mastering Cargo Cult
 
Conway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturConway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-Architektur
 
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdBeyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
 
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveMastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
 
Gut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile Architekturen
 
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternBeyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
 
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
 
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenBacklog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
 
Der hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientDer hyperbolische Thread-Koeffizient
Der hyperbolische Thread-Koeffizient
 
Broken by Design
Broken by DesignBroken by Design
Broken by Design
 
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisDie Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product Owner
 
Antifragilität
AntifragilitätAntifragilität
Antifragilität
 
Technische Schulden
Technische SchuldenTechnische Schulden
Technische Schulden
 
Die Product Owner Toolbox
Die Product Owner ToolboxDie Product Owner Toolbox
Die Product Owner Toolbox
 
Agile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenAgile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit Notizen
 
Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...
 
Scaled, Distributed, Agile - Produktentwicklung auf neuen Wegen
Scaled, Distributed, Agile - Produktentwicklung auf neuen WegenScaled, Distributed, Agile - Produktentwicklung auf neuen Wegen
Scaled, Distributed, Agile - Produktentwicklung auf neuen Wegen
 
NTFS On Disk Structure
NTFS On Disk StructureNTFS On Disk Structure
NTFS On Disk Structure
 

Dernier

Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamEus van Hove
 
Konjunktiv II - Theorie undd Beispiele - DaF mit Power
Konjunktiv II - Theorie undd Beispiele - DaF mit PowerKonjunktiv II - Theorie undd Beispiele - DaF mit Power
Konjunktiv II - Theorie undd Beispiele - DaF mit PowerMaria Vaz König
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächOlenaKarlsTkachenko
 
Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfHenning Urs
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaOlenaKarlsTkachenko
 

Dernier (6)

Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von Rotterdam
 
Konjunktiv II - Theorie undd Beispiele - DaF mit Power
Konjunktiv II - Theorie undd Beispiele - DaF mit PowerKonjunktiv II - Theorie undd Beispiele - DaF mit Power
Konjunktiv II - Theorie undd Beispiele - DaF mit Power
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
 
Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdf
 
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdfDíptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt Popasna
 

Softwarequalität - Architektur

  • 1. Softwarequalität Architektur & Qualität Prof. Dr. Wolfgang Golubski Gerrit Beine, M.Sc. golubski@fh-zwickau.de mail@gerritbeine.com 1
  • 3. Aufgaben der Software-Architektur ● Software-Architektur: Beschreibt die Komponenten einer Software sowie deren funktionales Zusammenspiel. ● SWEBOK (Software Engineering Body of Knowledge, IEEE) ordnet Software-Architektur zur der Entwurfsphase zu ● Software-Architektur ist die Summe von Design-Entscheidung vor der Implementierung ● Praktisch ist die Software-Architektur der IT-Architektur und der Unternehmensarchitektur untergeordnet ● IT-Architektur: Infrastruktur (Hard- und Software) im Unternehmen ● Unternehmensarchitektur: Zusammenspiel der IT-Elemente im Sinne des geschäftlichen Zwecks ● Software-Architektur verantwortet im Wesentlich Nicht-Funktionale Anforderung ● FURPS (Functionality, Usability, Reliability, Performance, Supportability) siehe auch ISO 9126 3
  • 4. Kollaborative Aufgaben des Software-Architekten ● Requirements Engineering ● Festlegen von Nicht-Funktionalen Anforderungen ● Bewerten von funktionalen Anforderungen hinsichtlich ihrer Bedeutung für die Architektur ● Betriebsführung ● Definition der Laufzeitumgebung, Hardware, Betriebssystem, Datenbank ● Festlegung des Deployments, Verteilung von Client-Anwendungen ● Test ● Design for Testability während Design und Implementierung ● Unterstützung des Testmanagements in allen Phasen ● Projektmanagement ● Tracking der Nicht-Funktionalen Anforderungen ● Auswahl und Definition einer Architektur mit Blick auf Zeit und Kosten 4
  • 5. Software-Architekten & Software-Entwickler ● Software-Architekten machen Vorgaben für Projekte ● Überblick des Gesamtprojektes, Kontext-bezogenes Wissen ● Software-Entwickler realisieren konkrete Lösungen für Teilaspekte des Projektes ● Tiefes Detailwissen bezüglich Frameworks und Problemstellungen ● Software-Architekten sollten: ● Erklären, WARUM sie welche Vorgabe machen ● Kontext-Wissen transparent machen, Überblick ermöglichen ● Programmieren können; Code-Beispiele sind gute Eisbrecher ● Zuhören ● Software-Entwickler sollten: ● Fragen, warum etwas vorgegeben wurde ● Begründen, warum abgewichen werden sollte 5
  • 6. Architektur, Conway's Law und das Problem der Komponententeams 6
  • 7. Conway's Law “… organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations” Melvin Conway, 1968 ● Bedeutung für die Software-Architektur ● Die fachliche Architektur einer Anwendung sollte immer der Struktur des Fachbereichs folgen, der die Anwendung nutzen wird. ● Die technische Architektur sollte immer die fachlichen Architektur widerspiegeln und sie erweitern. ● Build-Strukturen sollten immer der technischen Architektur folgen. ● Bei der Planung von Software und dem Team-Setup eines Projektes sollte Conway's Law berücksichtigt werden. 7
  • 8. Conway's Law und Modellebenen Sicht Artefakte Beziehungen Geschäftsobjektsicht Business Objects, repräsentiert Ausschließlich zwischen durch Klassen, sehr hohes Business Objects Abstraktionsniveau Anforderungssicht Requirements, Functional & Verbindung zwischen Functional Non-Functional & Non-Functional Requirements, Abhängigkeiten zu Business Objects Anwendungsfallsicht Use Cases, Actors Use Cases realisieren Manchmal hier sinnvoll: Requirements Fachklassenmodelle Use Cases benötigen Business Objects (oder Fachklassen) Fachliche Architektur Components, Dependencies, Component realisiert Use Case Fachlich orientiert, Keine technologische Aspekte Technische Architektur Components, Dependencies, Component realisiert Technische Aspekte sichtbar, Component aus Fachlicher Grundlage für Build Process Architektur 8
  • 9. Komponenten und Subsysteme ● Komponente: ● "A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties." (Clemens Szyperski, Component Software, ACM Press/Addison-Wesley, England, 1998) ● "Eine Software-Komponente ist ein Software-Element, das konform zu einem Komponentenmodell ist und gemäß einem Composition-Standard ohne Änderungen mit anderen Komponenten verknüpft und ausgeführt werden kann." (William T. Councill, George T. Heineman: Component-Based Software Engineering. Addison-Wesley, 2001, ISBN 0-201-70485-4) ● Subsystem: ● Ein Subsystem (Teilsystem) ist eine Komponente, die sehr groß ist oder sich aus mehreren Komponenten zusammensetzt. ● Agiles Identifizieren von Subsystem: Ein Subsystem besteht aus einer oder mehreren Komponenten, die für sich stehend einen Geschäftswert erzeugen. 9
  • 10. Komponententeams und Featureteams ● Komponententeams haben in der Regel eine hohe Domänenkompetenz tendieren aber zur Wasserfall-Entwicklung. ● Feature-Teams sind in der Regel Cross-Funktional, haben kaum Übergabepunkte und tendieren eher zu agilen und emergenten Entwicklungen. ● Wann lohnen sich Komponententeams? ● In großen Wartungsprojekten, wenn Änderungen kontinuierlich erfolgen. ● Wann lohnen sich Featureteams? ● In Greenfield-Projekten ● In Brownfield-Projekten, wenn ein schlechter Komponentenschnitt vorliegt oder nicht kontinuierlich an einzelnen Komponenten weiterentwickelt wird. ● Das Problem mit dem Collaborative-Code-Ownership: ● Idealerweise sollte nur ein Feature-Team zu einem Zeitpunkt ein Teilsystem bearbeiten, klappt das nicht, sollte pro Komponente nur ein Team arbeiten. ● In großen Projekten sollte ein Feature-Team für die betroffenen Komponenten verantwortlich sein, bis das Feature implementiert ist. 10
  • 12. Die vier Sichten von Architekturdokumentation ● Kontextabgrenzung Einbettung in der Umgebung, Kontextabgrenzung Schnittstellen zu Nachbarsystemen, System ist Blackbox ● Bausteinsicht Interne Sicht des Systems, statische Laufzeitsichten Strukturen, Abhängigkeiten zwischen Komponenten ● Laufzeitsicht Interne Sicht, Verhaltensbeschreibungen, Interaktion der Bausteine zur Laufzeit, Bausteinsichten Beschreibung des dynamischen Strukturen ● Verteilungssicht Externe Sicht, Topologie des Systems, Verteilungssichten Infrastruktur, Hardware, Deployment Vier Arten von Sichten (Nach „Effektive Software-Architekturen“, Gernot Starke, 4. Auflage, 2009, Carl Hanser Verlag München) 12
  • 13. Schnittstellendokumentation ● Schnittstellen zu externen Systemen müssen dokumentiert sein ● Formal mit Beschreibungssprachen wie WSDL, WADL, Corba-IDL oder API-Dokumentation ● Elemente der Schnittstellendokumentation ● Versionsinformationen der Schnittstelle ● Bereitgestellte Ressourcen (API-Dokumentation) ● Semantik der Ressourcen (Events, Daten, Zustände) sowie potentieller Änderungen ● Restriktionen hinsichtlich der Benutzung der Schnittstelle ● Fehlerszenarien, Konfigurationsparameter ● Erklärung der Entwurfsentscheidungen ● Verfügbarkeit der Schnittstellen (sowohl operativ als auch strategisch) ● Reaktionszeiten bei Problemen ● Ansprechpartner beider beteiligten Systeme ● Beispiele zur Verwendung 13
  • 14. Architektur-Dokumentation ● Inhalte ● Strukturen des Systems (Vier Sichten) ● Schnittstellen, idealerweise als Kontrakte mit Ansprechpartnern ● Architektur-Entscheidungen mit ihren Begründungen ● Umfang von Architektur-Dokumentation ● So wenig wie möglich, so viel wie nötig ● Weniger ist oft mehr, lange Prosa-Dokumente schrecken oft ab ● Bilder sagen mehr als Worte, Zusammenhänge lassen sich visuell gut transportieren ● Verständlichkeit ist zwingend, Sprachen wie UML sind optional ● Gut geeignet ist Architekturtapete ● Einzelne Aspekte der Architektur werden auf Packpapier an der Wand verewigt ● Erklärungen und Diskussionen lassen sich wie an einem Scrum-Board führen 14
  • 16. Kommunikationsprotokolle ● Notwendig, um Informationen zwischen Anwendungen auszutauschen ● In der Regel ab OSI-Layer 5 (Session Layer) implementiert, oft noch auf Anwendungsprotokollen aufbauend (z.B. HTTP) ● Architekturentscheidungen berühren folgende Punkte: ● Sicherheit Ist das Protokoll zulässig? Erfüllt es die notwendigen Sicherheitskriterien? ● Performance Kann der Informationsaustausch schnell genug durchgeführt werden? ● Beschränkungen Kann der Umfang der Informationen durch das Protokoll übertragen werden? 16
  • 17. Common Object Request Broker Architecture (CORBA) ● Objektorientierte Middleware und plattformübergreifender Protokollstack ● Definiert durch die Object Management Group ● Basiert auf TCP/IP, kann Secure Socket Layer verwenden ● CORBA IIOP Standard-Port 683 (Port 684 für CORBA IIOP over SSL) ● Schnittstellenspezifikation durch Interface Definition Language ● IDL wird mit Compiler in jeweilige Programmiersprache übersetzt ● Stubs und Skeletons entsprechen dem Mediator-Pattern ● Service-basierte Architektur (u.a. Naming Service, Trading Service, Event Service, Life Cycle Service, Relationship Service) ● Datenbeschreibung als struct, union und sequence, bestehend aus primitiven Typen wie long, double, string, boolean, enum ● Wurde großteils durch Java und .NET Remoting verdrängt ● Relevante Implementierungen in IBM WebSphere (Basis für Java-Remoting) und ORBit (verwendet von Mozilla und LibreOffice) 17
  • 18. Remote Procedure Call ● Protokoll zur Interprozesskommunikation, erstmals 1976 beschrieben (RFC 707) ● Aktuelle Version in RFC 1057 und 5531 beschrieben ● Basiert in der Regel auf UDP, prinzipiell aber auch TCP möglich ● Standard-Port für Sun-RPC ist 111, DCE RPC Port ist 135 ● Verschiedene Implementierungen, die inkompatibel sind ● Open Network Computing (ONC) RPC (Sun-RPC) ● Distributed Computing Environment (DCE) RPC ● Microsoft RPC (MSRPC), abgeleitet von DCE RPC, Grundlage für DCOM ● Client-Server-Modell, Verzeichnisdienst oder Broadcast notwendig ● Koordination der vom Client initiierten Aufrufe übernimmt ein Portmapper ● Basis von NFS und NIS ● Für die Entwicklung moderner Anwendung kaum von Bedeutung 18
  • 19. Extensible Markup Language Remote Procedure Call (XML-RPC) ● Protokoll auf Basis von HTTP(S) und XML ● Hauptsächlich von Microsoft entwickelt ● Plattformübergreifend und unabhängig von Programmiersprachen durch XML-Format ● Sehr leichtgewichtig, einfach zu implementieren und zu verstehen ● XML-RPC kennt kein NULL ● Datenbeschreibung mit struct und array, bestehend aus primitiven Typen int, double, boolean, string, datetime.ISO8601 und base64 (für binäre Daten) ● Mittlerweile durch SOAP überholt und im Wesentlichen ersetzt 19
  • 20. Simple Object Access Protocol (SOAP) ● Weiterentwicklung von XML-RPC ● Transportprotokolle HTTP(S), FTP, SMTP oder direkt TCP ● Hautpsächlich von Microsoft entwickelt ● Plattformunabhängig und theoretisch auch unabhängig von Programmiersprachen ● Sehr komplexe Definition von XML-Strukturen zum Nachrichtenaustausch ● Ermöglicht Remote Procedure Calls und Event-basierten Nachrichtenaustausch ● Primäres Ziel ist die schwache Kopplung von Systemen ● Extrem hoher Protokoll-Overhead: Übertragung eines einzigen Boolean-Wertes benötigt mehrere hundert Bytes ● Relativ langsame Verarbeitung durch Protokoll-Verschachtelung (TCP, HTTP, SOAP), Parser- Aufwände (SOAP XML) und Verarbeitung (Mapping der Nachricht auf Programmstrukturen bzw. Methoden) 20
  • 21. Representational State Transfer (ReST) ● Programmierparadigma, geht über Kommunikationsprotokoll hinaus ● Beschreibt Dienste auf Basis von HTTP(S) ● ReST-Services müssen fünf Eigenschaften erfüllen ● Eindeutige Adressierbarkeit ● Unterschiedliche Repräsentationen (ReST macht keine Vorgaben über das Austauschformat, möglich sind JSON, XML, CSV) ● Zustandslosigkeit (Erbe von HTTP, ermöglicht strikte Trennung zwischen Client und Server, alle Nachrichten müssen vollständig sein) ● Operationen GET, PUT, DELETE (HTTP-Verben) müssen idempotent sein ● Navigierbarkeit über Ressourcen hinweg (Nutzen von Hyper-Links zur Adressierung) ● ReST nutzt Fähigkeiten des World Wide Web um Dienste zu realisieren, ohne die Komplexität zu erhöhen (wie das bei SOAP der Fall ist). ● Kann auch als Architekturparadigma verstanden werden und ohne HTTP mit Hilfe von RPC-Modellen implementiert werden. 21
  • 22. Architektur in agilen Projekten 22
  • 23. Das Architektur-Paradoxon ● Architektur bildet die fachlichen Anforderungen unter Berücksichtigung der nichtfunktionalen Anforderungen auf technische Strukturen ab ● Üblicherweise sind nicht alle fachlichen Anforderungen zu Beginn bekannt ● Architektur soll stabil sein und sich möglichst nicht ändern Kann das funktionieren? ● „Es gibt kein deterministisches Verfahren, das in jedem Fall zu guten Software- Architekturen führt“ („Effektive Software-Architekturen“, Gernot Starke, 4. Auflage, 2009, Carl Hanser Verlag München) ● „Prognosen sind schwierig, insbesondere wenn sie die Zukunft betreffen.“ (Winston Churchill) ● Software-Architektur basiert im Wesentlichen auf der Erfahrung des Architekten mit ähnlichen Domänen 23
  • 24. Emergenz und ihre Grenzen ● Die Nicht-Vorhersagbarkeit fachlicher Anforderungen führt zwangsläufig zu Emergenz ● Klassische Vorgehensmodelle lösen das durch Change Requests auf ● Agile Vorgehensmodelle akzeptieren die Emergenz der Architektur als gegeben ● Führt emergente Architektur zu schlechter Software und Unvorhersehbarkeit? ● Software-Architektur muss zu IT-Architektur und Unternehmensarchitektur passen ● Zwischen den unterschiedlichen Architekturen muss abgestimmt werden ● Klassische Architektur versucht oft, viele potentielle Probleme zu lösen ● Agile Architektur verzichtet auf die Lösung zukünftiger Probleme - das bedeutet nicht, dass sie nicht zukunftsfähig ist! ● Fachliche Anforderungen, die Änderungen der Architektur bedingen, sind entsprechend aufwändiger → Refactoring muss bei der Implementierung erfolgen ● Emergenz: Architektur entwickelt sich anhand der fachlichen Anforderungen 24
  • 26. Pattern jenseits der GoF ● GoF-Pattern führen nicht zwangsläufig zu gutem Design ● Projekt-Pattern liefern oft elegantere Lösungen für spezifische Problemklassen ● Vorteile von Projekt-Pattern ● Großer Teil der Architektur-Dokumentation kann durch Pattern erzeugt werden ● Einstieg in ein Projekt wird erleichtert ● Refactoring auf Basis von Pattern ist leichter und besser abzuschätzen ● Anwendungsfälle für Projekt-Pattern ● Nutzung von Frameworks im Projekt angleichen ● Architekturvorgaben strukturiert beschreiben ● Architektur-Prototypen in Projekt-Pattern transformieren 26
  • 27. Projektpattern erkennen & beschreiben ● Erkennen (der Notwendigkeit) von Projekt-Pattern ● Gruppen ähnlicher fachlicher Funktionalitäten ● Gruppen ähnlicher Unit-Tests ● Frameworks werden unterschiedlich eingesetzt ● Häufige Erstellung von Prototypen für ähnliche Probleme ● Beschreiben von Projekt-Pattern: Der Pattern-Spannungsbogen ● Umfeld: Wo taucht das Problem auf? ● Problem/Ziel: Welches Problem adressiert das Pattern? Welches Ziel soll erreicht werden? ● Spannungsfeld: Warum ist es schwierig, das Problem zu lösen oder das Ziel zu erreichen? ● Lösung: Die Lösung für das Problem, Code-Beispiele, Modelle oder Dokumentation ● Folgen: Vor- und Nachteile der Lösung (Sehr gut beschrieben in: http://www.tim-wellhausen.de/papers/PatternsSelbstGemacht-Zusammenfassung.pdf) 27
  • 28. Projekt-Pattern anwenden ● Pattern im Projekt kann jeder Stakeholder beisteuern ● Pattern sollten in gleicher Struktur zentral dokumentiert werden ● Architekten sollten Pattern reviewen (und natürlich auch entdecken!) ● Abstimmungsgremium zum Beschluss vorgeschlagener Pattern hat sich bewährt ● Pattern, die unvollständig sind (gerne werden Nachteile vergessen), sollten nicht zugelassen werden ● Refactoring to Pattern ● Ob ein neues Pattern ein Refactoring nach sich zieht, hängt vom Aufwand ab (Der wird aber immer nur steigen!) ● Neue Pattern bieten sich zur Einarbeitung für Projekt-Einsteiger an 28
  • 29. Zwischen den Welten: Kommunikation mit Entwicklern und Anwendern 29
  • 30. Kommunikation im Projekt ● Architekten, die lediglich technische Expertise aufweisen, werden scheitern ● Technische Sachverhalte und Entscheidungen müssen unterschiedlichen Gruppen vermittelt werden: ● Entwicklern: Architektur muss aus technischer Sicht akzeptiert werden – Architekten, die nicht programmieren können, stehen auf verlorenem Posten ● Projektleitung: Architektur muss innerhalb des Projektbudgets realisiert werden können und optimal auf die Bedürfnisse des Projektes eingehen – Architekten, die nicht betriebswirtschaftlich fundiert entscheiden können, bekommen an dieser Stelle schnell ein Problem ● Fachbereiche: Architektur muss aus fachlicher Sicht akzeptiert werden – Fehlendes fachliches Wissen und Verständnis um die Probleme des Fachbereichs und der Anwender führen zur Ablehnung, unabhängig von der Qualität der Architektur 30
  • 31. Mittel und Wege zur Kommunikation ● Architekten benötigen ein breites Toolset zur Kommunikation ● Einfache Modelle und Screenshots eignen sich sehr gut zur Diskussion mit Fachbereichen ● Excel-Tabellen die Entscheidungswege objektivieren oder Budgetkalkulationen transparent machen erfreuen die Projektleitung ● Code-Beispiele können Entwickler im positiven Sinne herausfordern ● Powerpoint-Präsentationen mit den notwendigen Fakten für das Management ● Das wichtigste Werkzeug: Zuhören! 31
  • 32. Fragen 32
  • 33. Was versteht man unter einer Shared-Nothing Architektur? 33
  • 34. Was versteht man unter einer Shared Nothing Architektur? ● Zum Beispiel das World-Wide-Web ● In einer Shared Nothing Architektur spielen viele Komponenten zusammen, ohne dass sie sich etwas zentral teilen. ● Shared Nothing Architekturen erreichen damit eine hohe Ausfalltoleranz. 34
  • 35. Wie kann man Transkations-Handling über mehrere Systeme hinweg realisieren? 35
  • 36. Wie kann man Transkations-Handling über mehrere Systeme hinweg realisieren? ● Verteilte Transaktion benötigt Koordinator ● Üblicherweise Behandlung nach 2-Phase- Commit-Protokoll der X/Open XA ● Korrektheit auch bei Ausfall eines Teilnehmers garantiert ● Grundsätzliches Problem: Blockade eines Teilnehmers während der Transaktion ● 3PC-Protokoll: Erhöhung der Nachrichtenanzahl mit dem Ziel, trotz eines Ausfalls des Koordinators die Transaktion beenden zu können 2-Phasen-Commit-Protokoll (Quelle: http://de.wikipedia.org/wiki/Commit-Protokoll) 36
  • 37. Feature Teams und die Arbeit an mehreren Komponenten 37
  • 38. Feature Teams und die Arbeit an mehreren Komponenten ● Häufige Diskussion: Feature-Teams, Komponenten-Teams oder Tier-Teams ● Tier-Teams machen Projekte schwer planbar durch Abhängigkeiten zwischen den Tiers ● Komponenten-Teams sind schwer kontinuierlich ● Hohes Know-How innerhalb der Komponente, wenig Know-How außerhalb ● In Agilen Projekten werden generell Feature-Teams eingesetzt ● Generalisten mit Detail-Know-How: cross-funktionale Teams ● Hoher Kommunikationsaufwand bei paralleler Arbeit an mehreren Komponenten ● Geschickter Komponentenschnitt und saubere Architektur erlauben Koordination ● Feature-Teams haben sich für viele Entwicklungsprojekte bewährt 38
  • 40. DevOps und Architektur ● DevOps setzt die Agilen Ideale konsequent für den Betrieb von Softwaresystemen fort ● Betriebsführung wird von Beginn an als Stakeholder ins Projekt einbezogen ● Anforderungen der Betriebsführung werden in der Architektur berücksichtigt ● Sinnvoll in Kombination mit Continuous Integration und Contionuous Delivery ● Rollout der Software wird weitestgehend automatisiert („Zero Downtime Deployment“) ● Hohe Änderungsfrequenz („Every Commit is a Release Candidate“) ● Akzeptanz von Offshoring und Parallelität in Entwicklung und Betrieb ● Architektur bildet bei DevOps die Schnittstelle zwischen Entwicklung und Betrieb ● Architektur treibt Automation voran und löst Wissensinseln auf ● Tools von Entwicklung und Betrieb werden vereinheitlicht ● Mehr dazu unter: http://devops.com/ 40
  • 41. Verwendung dieser Unterlagen ● Wir stellen diese Unterlagen unter der Creative Commons Lizenz CC-BY-NC-SA zur allen am Thema Interessierten Verfügung. ● Es ist erlaubt, die Unterlagen unter gleichen Bedingungen zu ● kopieren ● verteilen ● übertragen und ● adaptieren, wenn ● die ursprünglichen Autoren genannt werden und ● die Verwendung nicht zu kommerziellen Zwecken stattfindet. ● Details zur Lizenz sind hier zu finden: http://creativecommons.org/licenses/by-nc-sa/3.0/ 41