View
220
Download
0
Category
Preview:
Citation preview
Architektur und QualitätArchitektur und Qualität
Seminar Software-Analyse
WS 04/05
Daniel Zaum
<mail@cowhen.org>
2Daniel Zaum: Architektur und Qualität
GliederungGliederung
Architektur
•Definitionen•Motivation
Qualität Architekturstile
Beispiel
•Anforderungen •5 Typen•Eigenschaften
•Anwendung•Zusammenhang Qualität/Architektur
Einordnung des Themas
Hauptteil
Zusammenfassung
Einleitung
3Daniel Zaum: Architektur und Qualität
Einordung des ThemasEinordung des Themas
Architektur
Qualität
Software-AnalyseMetrikenHilfsmittel
Macht Aussage über
Bestimmt
Macht Aussage über
Fordert
4Daniel Zaum: Architektur und Qualität
Einleitung: Konzept und MotivationEinleitung: Konzept und Motivation
• Ziel: Architektur und Qualität– Als Werkzeuge zur Software-Analyse darstellen
– Greifbar und erkennbar machen
• Dazu:– Knappe Definitionen
– Muster und Eigenschaften, Beispiele
• Motivation:– Software-Design
• Rechtzeitig planen
• Qualität sicherstellen
– Software-Analyse• Herausfinden, was man von einem System erwarten kann
5Daniel Zaum: Architektur und Qualität
Gliederung - ArchitekturGliederung - Architektur
Architektur
•Definitionen•Motivation
Qualität Architekturstile
Beispiel
•Anforderungen •5 Typen•Eigenschaften
•Anwendung•Zusammenhang Qualität/Architektur
6Daniel Zaum: Architektur und Qualität
Was ist eine Software-Architektur?Was ist eine Software-Architektur?
• Stellt das Diagramm eine Architektur dar?
Control-Prozess
LogikGUIDaten-bank
7Daniel Zaum: Architektur und Qualität
Was ist eine Software-Architektur?Was ist eine Software-Architektur?
• Stellt das Diagramm eine Architektur dar?
• Nein, denn wichtige Fragen bleiben unbeantwortet:– Was sind die Komponenten?
– Was sind die Verknüpfungen?
– Warum wurde das Diagramm so strukturiert?
– Wie verhält sich das System zur Laufzeit?
Control-Prozess
LogikGUIDaten-bank
8Daniel Zaum: Architektur und Qualität
Definition Software-ArchitekturDefinition Software-Architektur
• Architektur steht am Anfang des System-Designs– Zum High-Level-Design gehören jedoch auch noch andere Dinge
• Eine Architektur legt die Struktur eines Systems fest– Eine System kann jedoch mehrere Strukturen haben
• Eine Architektur definiert Komponenten und Beziehungen– Man muss zwischen Runtime und Designtime unterscheiden
„Die Struktur der Software-Komponenten eines Systems mit ihren nach außen sichtbaren Eigenschaften und
ihren Beziehungen untereinander.“ [Bass]
9Daniel Zaum: Architektur und Qualität
Motivation für ArchitekturenMotivation für Architekturen
• Kommunikation zwischen den Projektmitgliedern– Besonders geeignet für Stakeholder-Kommunikation
– Relativ leicht zugänglich, da auf hoher Ebene
• Erste Möglichkeit, Design-Entscheidungen zu treffen– Entscheidungen der Architektur betreffen den gesamten Produktzyklus
– Die Architektur ist der erste analysierbare Teil eines SW-Systems
• Wiederverwendbare Abstraktion eines Systems– Vergleiche Design-Patterns
10Daniel Zaum: Architektur und Qualität
Gliederung - QualitätGliederung - Qualität
Architektur
•Definitionen•Motivation
Qualität Architekturstile
Beispiel
•Anforderungen •5 Typen•Eigenschaften
•Anwendung•Zusammenhang Qualität/Architektur
11Daniel Zaum: Architektur und Qualität
Was ist Qualität?Was ist Qualität?
• Definition von Qualität ist sehr schwierig
• Alternative Definitionen:
– „Qualität ist Kundenzufriedenheit“ [Datev]
– „Qualität heißt, die Anforderungen eines Menschen zu erfüllen“ [Weinberg]
– „Qualität ist die Fehlerfreiheit eines Produktes“ [Thraller]
„Gesamtheit von Merkmalen einer Einheit bezüglich ihrerEignung, festgelegte Erfordernisse zu erfüllen.“ [ISO8402]
12Daniel Zaum: Architektur und Qualität
QualitätsanforderungenQualitätsanforderungen
Funktionale Anforderungen „Was?“• Programm berechnet Produkt zweier Zahlen.
nichtfunktionale Anforderungen
„Wie?“
• Die Zahlen müssen je 10 hoch 10 Stellen haben
• Antwortzeit muss unter 5ms liegen
• laufzeit-relevant
• nicht laufzeit-relevant
Typ Beschr. Beispiel
13Daniel Zaum: Architektur und Qualität
QualitätsanforderungenQualitätsanforderungen
Funktionale Anforderungen „Was?“• Programm berechnet Produkt zweier Zahlen.
nichtfunktionale Anforderungen
„Wie?“
• Die Zahlen müssen je 10 hoch 10 Stellen haben
• Antwortzeit muss unter 5ms liegen
• laufzeit-relevant
• nicht laufzeit-relevant
Typ Beschr. Beispiel
• Wichtiger Unterschied: bei der Architektur-Auswahl beachten• Beispiel: Modularität der Architektur != Modularität zur Laufzeit
14Daniel Zaum: Architektur und Qualität
Zeit, die vergeht, bis auf ein Ereignis reagiert wirdVerarbeitungsschritte pro Zeiteinheit
Performanz (Performance)Performanz (Performance)
• Abhängig von:– Kommunikation (dauert meist länger als Berechnung)
– Effiziente Algorithmen
• Kann auf Architektur-Ebene gemessen werden
• Simulation auf Grundlage der Architektur möglich
• Früher war Performanz die treibende Anforderung
• Heute rücken wegen Overprovisioning andere Anforderungen in den Vordergrund
architekturabhängiglaufzeit-relevant
15Daniel Zaum: Architektur und Qualität
Sicherheit (Security)Sicherheit (Security)
Fähigkeit, unautorisiertem Zugriff zu widerstehenFähigkeit, denial-of-service Angriffen zu widerstehen
• Abhängig von:– Authorisierungsserver
– Netzwerk-Monitor
– Firewall
– Trusted Kernel
• Folgerung: Es werden spezielle Komponenten und Schnittstellen benötigt
architekturabhängiglaufzeit-relevant
16Daniel Zaum: Architektur und Qualität
Verfügbarkeit (Availability)Verfügbarkeit (Availability)
• Abhängig von:– Fehlertoleranz des Systems / der Architektur
– Error-Handling
– Verdopplung kritischer Komponenten und Schnittstellen
– Wartbarkeit und Testbarkeit
• Maß für die Zeit, in der ein System wie vorgesehen läuft
• Eng verknüpft mit Zuverlässigkeit
mean time to failuremean time to failure + mean time to repair
architekturabhängiglaufzeit-relevant
17Daniel Zaum: Architektur und Qualität
Bedienbarkeit (Usability)Bedienbarkeit (Usability)
Lernbarkeit und EinprägsamkeitEffizienz, Fehlertoleranz und Zufriedenheit
• Abhängig von:– Genaue Beobachtung der Benutzer
– Abbildung des Denk-Modells der Nutzer in Software-Modell
– Standards
• Größtenteils nicht durch Architektur beeinflussbar
• Jedoch: Schnittstellen beispielsweise zur GUI beeinflussen die Bedienbarkeit
nicht architekturabhängiglaufzeit-relevant
18Daniel Zaum: Architektur und Qualität
Die Fähigkeit, schnell und günstig Änderungen durchzuführenLokalität von Änderungen
Modfizierbarkeit (Modifiability)Modfizierbarkeit (Modifiability)
• Abhängig von:– Wie begrenzt sind Änderungen (Lokalität)?
• Erweiterung der Funktionalität
• Löschen oder Vereinfachen
• Anpassung/Portierung auf neue Systeme
• Umstrukturierungen
– Lose Kopplung von Komponenten
• Faustregel: Lokale Änderungen sind billiger als globale
• Spezialfall: Wiederverwendbarkeit
architekturabhängignicht laufzeit-relevant
19Daniel Zaum: Architektur und Qualität
Fähigkeit eines Systems, unter verschiedenen Umgebungen zu laufen
Portierbarkeit (Portability)Portierbarkeit (Portability)
• Abhängig von:– Kapselung von plattform-spezifischen Eigenschaften
– „Portability-Layer“
• Verschiedene Umgebungen sind:– Hardware
– Software
– Kombination von beidem
• „Portability-Layer“ ist nur auf Architektur-Ebene sichtbar
architekturabhängignicht laufzeit-relevant
20Daniel Zaum: Architektur und Qualität
Die Fähigkeit von Einzelkomponenten zum Zusammenspiel
Integrierbarkeit (Integrability)Integrierbarkeit (Integrability)
• Abhängig von:– Komplexität der Komponenten nach aussen
– Interaktions-Mechanismen
– Protokolle
– Klare Aufteilung der Aufgaben
• Interoperabilität: Zusammenspiel von Systemen
architekturabhängignicht laufzeit-relevant
21Daniel Zaum: Architektur und Qualität
Fähigkeit eines Systems, seine Fehler aufzuzeigen
Testbarkeit (Testability)Testbarkeit (Testability)
• Abhängig von:– Kontrollieren des Zustands jeder Komponente
– Überwachen der Ausgaben jeder Komponente
• Genauer:– Das System hat mindestens einen Fehler
– Das System ist gut testbar, wenn dieser Fehler beim nächsten Test auch auftritt
– Also schnell gefunden werden kann
architekturabhängignicht laufzeit-relevant
22Daniel Zaum: Architektur und Qualität
Übersicht: QualitätsanforderungenÜbersicht: Qualitätsanforderungen
laufzeit-relevant
Performanz
Sicherheit
Verfügbarkeit
Benutzbarkeit
nicht laufzeit-relevant
Modifizierbarkeit
Portierbarkeit
Integrierbarkeit
Testbarkeit
++ Kommunikation, Parallelisierung
o Spezielle Sicherheits-Komponenten
++ Fehlertoleranz, Redundanz
- -
++ Modularisierung, Kapselung
++ Portability-Layer
+ Einfache Schnitstellen, Protokolle
+ Kontrolle, Überwachung (einzelner Komponenten)
23Daniel Zaum: Architektur und Qualität
KompromisseKompromisse
• Qualitätsanforderungen beeinflussen sich gegenseitig
• Es können nicht alle Anforderungen zu 100% erfüllt werden
• Qualitäten müssen priorisiert werden
Sicherheit
Bedienbarkeit
Gummiband
„I will contend that conceptual integrity is the most importantconsideration in system design.“ [Fred Brooks]
24Daniel Zaum: Architektur und Qualität
Gliederung - ArchitekturstileGliederung - Architekturstile
Architektur
•Definitionen•Motivation
Qualität Architekturstile
Beispiel
•Anforderungen •5 Typen•Eigenschaften
•Anwendung•Zusammenhang Qualität/Architektur
25Daniel Zaum: Architektur und Qualität
ArchitekturstileArchitekturstile
• Schlüssel-Komponenten und Regeln, um diese zu verbinden:
– Komponenten-Typen • z.B. Prozess, Speicher, Prozedur
– Topologische Anordnung • um die Laufzeit-Zusammenhänge zu verdeutlichen
– Semantische Beschränkungen • z.B. Ein Speicher kann seinen Inhalt nicht selber ändern
– Verbinder, die Kommunikation, Koordination und Kooperation zwischen Komponenten ermöglichen
• z.B. Routinen-Aufruf, RPC, Sockets
• Stil als abstrakte Klasse, von Architektur implementiert
26Daniel Zaum: Architektur und Qualität
NotationNotation
Komponenten
Verbinder
Prozess
Komponente oder Objekt
Passiver Speicher
Aktiver Speicher
Kontroll-Fluss
Daten-Fluss
27Daniel Zaum: Architektur und Qualität
Architekturstile: ÜbersichtArchitekturstile: Übersicht
Independent Components
CommunicatingProcesses
Event Systems
Implicit Invocation Explicit Invocation
Data Flow
BatchSequential
Pipes andFilters
Data-Centered
Repository Blackboard
Virtual Machine
Interpreter Rule-BasedSystem
Call and Return
Programmand Subroutine
ObjectOriented
Layered
28Daniel Zaum: Architektur und Qualität
„„Data-Centered“-ArchitekturData-Centered“-Architektur
Zugriff und Veränderung eines gemeinsamen Daten-Speichers
• Bietet:– Integrierbarkeit der Daten
• Typen:– Repository: Passiver Daten-Speicher (Bsp.: Datei)
– Blackboard: Aktiver Daten-Speicher (Bsp.: Datenbank)
Client
Daten-Speicher
Client
Client
Client
29Daniel Zaum: Architektur und Qualität
„„Data-Flow“-ArchitekturData-Flow“-Architektur
Eine Abfolge von Operationen auf Eingangs-Daten anwenden
• Bietet:– Modifizierbarkeit
– Wiederverwendbarkeit
• Typen:– Batch-Sequential: Komponenten sind eigenständige Programme
– Pipes and Filters: Ein System, verarbeitet Daten als Stream
Syntax-Check Parsen Sortieren
30Daniel Zaum: Architektur und Qualität
„„Virtual Machine“-ArchitekturVirtual Machine“-Architektur
Erschaffung einer Abstraktions-Ebene durch Simulation
• Bietet:– Portierbarkeit
• Typen:– Interpreter
– Rule-Based
Interpreter
Programm-Zustand
internerZustand
interpretiertesProgramm
Eingaben
Ausgaben
31Daniel Zaum: Architektur und Qualität
„„Call and Return“-Architektur(1)Call and Return“-Architektur(1)
Aufteilen eines Programms in kleinere Einzelteile
• Bietet:– Modifizierbarkeit
– Skalierbarkeit
– Wiederverwendbarkeit (Portierbarkeit)
• Typen:– Main Program and Subroutine: Hierarchische Aufteilung
• RPC: Wie oben nur im Netzwerk verteilt
– Object-Oriented: Aufteilung in Objekte
– Layered: Aufeinander aufbauende Schichten
32Daniel Zaum: Architektur und Qualität
„„Call and Return“-Architektur(2)Call and Return“-Architektur(2)
Main
Sub1
Sub2
User Interface
Spezielle Funktionen
Allgemeine Funktionen
Main and Subroutine
LayeredObject-OrientedObjekt
Objekt
Objekt
Objekt
33Daniel Zaum: Architektur und Qualität
„„Independent Component“-ArchitekturIndependent Component“-Architektur
Kommunizierende Objekte, die sich nicht direkt kontrollieren
• Bietet:– Modifizierbarkeit
– Wiederverwendbarkeit
– Skalierbarkeit und Performanz
• Typen:– Event Systems: Observer-Prinzip
– Communicating Processes: Bsp.: Client-Server
Server
Client
Client
Client
34Daniel Zaum: Architektur und Qualität
Heterogene ArchitekturenHeterogene Architekturen
• Lokal heterogen– Scheint zur Laufzeit eine einheitliche Architektur zu haben
– Besteht jedoch aus mehreren Architekturen
– Bsp.: „Main and Subroutines“ mit gemeinsamem Speicher
• Hierarchisch heterogen– Architekturen sind ineinander verschachtelt
– Unter-Komponenten sind anders aufgebaut, als Gesamt-System
• Heutzutage häufig– Kombination von Objekt-Orientierter „Tier“-Architektur mit
„Layered“-Architektur.
35Daniel Zaum: Architektur und Qualität
Architekturstile: ZusammenfassungArchitekturstile: Zusammenfassung
Performanz
Sicherheit
Verfügbarkeit
Benutzbarkeit
Modifizierbarkeit
Portierbarkeit
Integrierbarkeit
Testbarkeit
Independent Components
Data-Flow
Data-Centered
Virtual Machine
Call and Return
Wiederverwendbark.
36Daniel Zaum: Architektur und Qualität
Gliederung - BeispielGliederung - Beispiel
Architektur
•Definitionen•Motivation
Qualität Architekturstile
Beispiel
•Anforderungen •5 Typen•Eigenschaften
•Anwendung•Zusammenhang Qualität/Architektur
37Daniel Zaum: Architektur und Qualität
Beispiel: KWIC (Keyword in Context)Beispiel: KWIC (Keyword in Context)
• Liest Strings ein
• Vertauscht die Wörter der Strings zyklisch miteinander
• Sortiert die resultierenden Strings alphabetisch
• Sinn: Schnell durchsuchbaren Index erzeugen
Ich wünsche ein frohes Festund einen guten Rutsch
6) Ich wünsche ein frohes Fest
3) Fest Ich wünsche ein frohes
4) frohes Fest Ich wünsche ein
1) ein frohes Fest Ich wünsche
9) wünsche ein frohes Fest Ich
8) und einen guten Rutsch
7) Rutsch und einen guten
5) guten Rutsch und einen
2) einen guten Rutsch und
38Daniel Zaum: Architektur und Qualität
Beispiel: „Data Centered“-ArchitekturBeispiel: „Data Centered“-Architektur
Eingabe Vertauschen Sortieren Ausgabe
Zeichen Indexsortierter
Index
Kontrolle
39Daniel Zaum: Architektur und Qualität
Beispiel: „Call and Return (OO)“-ArchitekturBeispiel: „Call and Return (OO)“-Architektur
Eingabe
Vertauschen Sortieren
Ausgabe
Zeichen Indexsortierter
Index
Kontrolle
Zeichen
40Daniel Zaum: Architektur und Qualität
Beispiel: „Pipe and Filter“-ArchitekturBeispiel: „Pipe and Filter“-Architektur
Vertauschen Sortieren
Eingabe Vertauschte Zeilen Sortierte Ausgabe
41Daniel Zaum: Architektur und Qualität
Beispiel: VergleichBeispiel: Vergleich
Ändern des Datentyps
Ändern der Funktionalität
Performanz
Wiederverwendbarkeit
DataCentered
Call andReturn
Pipe andFilter
--
-
++
-
+
+
-
++
-
++
o
+
„There is no silver bullet.“ [Fred Brooks]
42Daniel Zaum: Architektur und Qualität
LiteraturempfehlungLiteraturempfehlung
Software Architecture in Practice2nd edition
L.Bass, P.Clements, R. Kazman
512 SeitenAddison-Wesley Professional 2003
ca. 50,- eur
43Daniel Zaum: Architektur und Qualität
ZusammenfassungZusammenfassung
Performanz
Sicherheit
Verfügbarkeit
Benutzbarkeit
Modifizierbarkeit
Portierbarkeit
Integrierbarkeit
Testbarkeit
Independent Components
Data-Flow
Data-Centered
Virtual Machine
Call and Return
Wiederverwendbark.
C. Processes
Event System
Batch
Pipe
Repository
Blackboard
Main and Sub
Object Oriented
Layered
44Daniel Zaum: Architektur und Qualität
AnhangAnhang
Anhang
45Daniel Zaum: Architektur und Qualität
Einleitung: MotivationEinleitung: Motivation
• Mit dem Auto unterwegs in einer fremden Stadt– Unter Zeitdruck
– Lesen einer Karte oder Passanten fragen kostet Zeit, die man nicht hat
– Man fährt nach Gefühl drauf los
– ...und kommt erst recht zu spät
„We don't have the time to be efficient.“
46Daniel Zaum: Architektur und Qualität
Weitere BegriffeWeitere Begriffe
ReferenzModell
ArchitekturStil
ReferenzArchitektur
SoftwareArchitektur
Architektur Stil
• Einer Architektur auferlegte Zwänge
• Beschreibung von Typen und Mustern
• Beispiel: Client-Server
Referenz Modell
• Teilfunktionalität eines Systems inklusive Datenfluss
• Beispiel: Standard Komponenten einer Datenbank-Anwendung
Referenz Architektur
• Projektion eines Referenz Modells auf ein Software-Sytem
• Beispiel: iLam-System, SE-Anmelde-System
47Daniel Zaum: Architektur und Qualität
Struktur oder Komponenten eines Systems können später wiederverwendet werden
Wiederverwendbarkeit (Reusability)Wiederverwendbarkeit (Reusability)
• Abhängig von:– Lose Kopplung zwischen Komponenten
– Um eine Komponente in einem neuen System zu nutzen muss man• Die dazu erforderlichen Komponenten mitnehmen
• Äquivalente bereitstellen
• Spezialfall von Modifizierbarkeit
architekturabhängig
48Daniel Zaum: Architektur und Qualität
Anforderungen an die ArchitekturAnforderungen an die Architektur
• Architektur selbst kann gewissen Anforderungen erfüllen:
– Konzeptuelle Integrität (conceptual integrity)
– Richtigkeit und Vollständigkeit (correctnes and completeness)
– Umsetzbarkeit (buildability)
• Lieber auf einzelne Qualitäts-Anforderungen verzichten, als auf ein durchgängiges und einheitliches Architektur-Konzept
„I will contend that conceptual integrity is the most importantconsideration in system design.“ [Fred Brooks]
49Daniel Zaum: Architektur und Qualität
Motivation für Architekturen (2)Motivation für Architekturen (2)
• Was leistet eine Architektur?
– Legt Struktur der Implementation fest
– Damit auch teilweise die Organisation des Projektes
– Erlaubt Optimierung auf bestimmte Qualitäten hin
– Erleichtert Änderungen (einzelner Komponenten)
– Ermöglicht den Aufbau ganzer Produkt-Linien
– Erleichtert das Verwenden von vorgefertigten Komponenten
– Ein wichtiger Teil der Dokumentation
Recommended