47
ITArchitecture (Subject) / Pamela's Fragen (Lesson)
1. Semester
This lesson was created by elju272.
This lesson is not released for learning.
Advertisement
- Aus welchen Bestandteilen besteht eine Softwarearchitektur? • Bausteine/Komponenten• Schnittstellen• Konfiguration• Verschiedene Sichten / Views ◦ beschreiben Zusammenspiel der Komponenten ▪ Diagramme ▪ Textdokumente
- Bausteine Komponenten sind Elemente einer Anwendung besitzen Schnittstellen / Interfaces Austauschbarkeit und Kapselung
- Schnittstellen Bausteine kommunizieren über Schnittstellen sind der Vertrag, den jeder Baustein einhalten muss gewährlseiten eine gültige Kommunikation
- Arten von Schnittstellen Standardschnittstelle Herstellerin u. Nutzerin haben sich geeinigt ggf. durch Standardisierung angebotene Schnittstelle proprietäre Schnittstelle von Hersteller/in angeforderte Schnittstelle von Nutzerin festgelegt unabhängige Schnittstelle Adapter erlaubt die Verwendung zweier nicht kompatibler Schnittstellen
- Blackboxes Abstraktion einer Whitebox beschreibt Schnittstellen und Funktionen beschreibt Ein- und Ausgabe konkrete Implementierung bleibt im Dunkeln
- Wozu dient das Blackbox-Whitebox-Modell? verschiedene Tiefen der Detaillierung darstellen Reduktion von Komplexität Bewältigung komplexer Aufgaben
- Was sind Sichten / Views? repräsentatieren System aus unterschiedlichen Perspektiven jede Sicht beschreibt nur gewisse Eigenschaften des Gesamtsystems verschiedene Beschreibungstechniken für jede Sicht (Diagramme etc.)
- Welche Sichten gibt es und welchen Aspekt der Architektur beleuchten sie? (Sichtenmodell nach Starke) Kontextsicht: Umgebung Bausteinsicht: Komponenten Verteilungssicht: Hardware Laufzeitsicht
- Was ist die Kontextsicht? System in sehr abstrahierter Form (Blackbox) eingebettet in Umgebung Schwerpunkt Schnittstellen◦ zeigt Zusammenspiel mit externen Komponenten Beschreibung mittels:◦ Kontextdiagramme◦ Liste von Nachbarsystemen
- Was ist die Bausteinsicht und wie wird sie dargestellt? Aufbau des Systems aus Subsystemen und Komponenten Zusammenwirken der einzelnen Bausteine Darstellung mittels ◦ UML Klassendiagrammen◦ UML Komponentendiagramm◦ UML Objektdiagramm◦ UML Paketdiagramm
- Advertisement
- Was ist die Verteilungssicht? physische Verteilung der Komponenten◦ Hardwareeinheiten und ihr Zusammenspiel◦ Systembestandteile auf der Hardware Beschreibung mittels◦ UML Verteilungsdiagramm
- Was ist die Laufzeitsicht? (Aufgabe + Diagramme) … bildet das System ab, indem es Interaktionen und Verhalten von Laufzeitinstanzen zeigt Abläufe und ihre Reihenfolge Beschreibung mittels◦ UML Aktivitätsdiagramm◦ UML Kommunikationsdiagramm◦ UML Sequenzdiagramm
- Vier Problemkategorien, die sich nicht mittels Abstraktion lösen lassen Complexity - Komplexität Conformity - Anpassbarkeit Changeability - Veränderbarkeit Intangibility - Unangreifbarkeit
- Was ist Complexity? … eine der vier grundlegenden Schwierigkeiten, die sich mittels Abstraktion nicht lösen lassen Unmöglichkeit, alle Zustände einer Software zu erfassen Compexität steigt superlinear mit der Größe
- Was ist Conformity? … eine der vier grundlegenden Schwierigkeiten, die sich mittels Abstraktion nicht lösen lassen Software muss sich anpassen◦ an Betriebssystem◦ an Hardware zumeist Schlussstein anpassungsfähigster Bereich
- Was ist Conformity? … eine der vier grundlegenden Schwierigkeiten, die sich mittels Abstraktion nicht lösen lassen Software muss sich anpassen◦ an Betriebssystem◦ an Hardware zumeist Schlussstein anpassungsfähigster Bereich
- Was ist Changeability? … eine der vier grundlegenden Schwierigkeiten, die sich mittels Abstraktion nicht lösen lassen Software gilt als unendlich formbar Änderungen können viel kosten veränderte Anforderungen vorher nicht abzusehen Gründe für Veränderungen:◦ neue Anwendungen◦ neue Gesetze◦ neue Standards◦ Hardwareprobleme
- Was ist Intangibility? … eine der vier grundlegenden Schwierigkeiten, die sich mittels Abstraktion nicht lösen lassen Nichtangreifbarkeit Software existiert nicht physisch ist nicht begrenzt durch Naturgesetze keine offensichtlichen Repräsentationen
- Wofür ist Softwarearchitektur wichtig? Dokumentation von Designentscheidungen Übertragbarkeit der Abstraktion eines Systems
- Regeln der Dokumentation Schreiben aus Sicht der Leserin Diagramme verwenden Wiederholungen und Mehrdeutigkeiten vermeiden Wesentliche Entscheidungen schriftlich dokumentieren
- Einteilung UML-Diagramme … Unified Modeling Language Strukturdiagramme◦ Klassen◦ Komponenten◦ Verteilungs Verhaltensdiagramme◦ Aktivitäts◦ Sequenz◦ Kommunikations
- Welche Kategorien von Anforderungen gibt es? Funktionale Anforderungen Qualitätsmerkmale Constraints (Beschränkungen)
- Was sind Qualitätsmerkmale? Eigenschaft eines Systems◦ messbar oder testbar zeigen, wie gut Anforderungen der Stakeholder erfüllt werden
- Qualitätsmerkmale: Was sind die sechs Hauptmerkmale von Produktqualität? Benutzbarkeit Effizienz Funktionalität Übertragbarkeit Zuverlässigkeit Änderbarkeit Bitte einen Funken Zuverlässigkeit über Änderungen
- Was ist die Funktionalität? … besitzt die Software die verlangten Funktionen? Angemessenheit (z.B. Genauigkeit von Berechnungen) Richtigkeit (Eignung für bestimmte Aufgaben) Interoperabilität (Zusammenwirken mit anderen Systemen) Sicherheit (Angriffe verhindern) Ordnungsmäßigkeit (Normen und Gesetze erfüllen) AROSI
- Was ist die Zuverlässigkeit? … Leistungsnivau unter vereinbarten Bedingungen Reife (wenig Versagen durch Fehlzustände) Fehlertoleranz (Leistung trotz Fehler) Wiederherstellbarkeit (Datenwiederherstellung bei Versagen)
- Was ist die Benutzbarkeit? … ist das System leicht zu bedienen, leicht zu erlernen? verständlich erlernbar bedienbar
- Was ist die Effizienz? … wie sparsam ist die Software bei der Lösung eines Problems? Zeitverhalten (Verarbeitungszeiten) Verbrauchsverhalten (Anzahl und Dauer für Erfüllung der Funktionen)
- Was ist die Änderbarkeit? … Wie hoch ist der Aufwand für Verbesserungen oder für Fehlerbeseitigung? Analysierbarkeit (Aufwand, um Mängel zu diagnostizieren) Modifizierbarkeit (Aufwand zur Ausführung von Veränderungen) Stabilität (Wahrscheinlichkeit von unerwarteten Wirkungen) Prüfbarkeit (Aufwand zur Prüfung der geänderten Software) SPAM
- Übertragbarkeit … ist die Software auch auf anderen Systemen einsetzbar? Anpassbarkeit Installierbarkeit (Aufwand zum Installieren) Austauschbarkeit Konformität (Normen zur Übertragbarkeit) AKIA
- Advertisement
- Wozu dienen Architekturmuster? Zeit sparen→ vorgefertigte Bausteine verwenden Unsicherheiten vermindern→ Muster beschreiben auch mögliche Risiken Projektrisiko vermindern→ Muster sind praktisch erprobt
- Aspekte von Software-Entwürfen Persistenz◦ dauerhafte Datenspeicherung (am Hauptspeicher nicht möglich) Integration◦ vorhandene Systeme berücksichtigen Verteilung◦ verschiedene Hardware-Plattformen Protokollierung Sicherheit VIPPS
- Verteilung N-Tier Systeme Komponenten werden in logische Gruppen zusammengefasst (= Tiers) löst folgendes Problem:◦ in vielen Anwendungen laufen Prozesse...◦ … auf unterschiedlichen Hardware-Plattformen
- Welche konkreten Architekturmuster kennen Sie? Schichtenmuster / Schichtenarchitektur („Layered Pattern“) MVC („Model View Controller“) DAO („Data Access Object“)
- Architekturmuster: Schichtenarchitektur Architektur wird in Schichten getrennt◦ jede Schicht erfüllt nur eine Unteraufgabe◦ Abhängigkeiten existieren nur nach unten Anwendung:◦ Systeme, die Aktivitäten auf niedriger (Hardware-Ansteuerung)und hoher Ebene (Anwendung) vereinigen Ziele:◦ Austauschbarkeit der Ebenen◦ standardisierte Schnittstellen Beispiel: OSI-Modell
- Was ist MVC, wofür steht es? Teilt Anwendungen in drei Teile:◦ Model: Zuständig für Verarbeitung◦ View: Zuständig für Darstellung◦ Controller: Zuständig für Eingaben
- MVC: Model Kapselt Daten und Funktionalität ist unabhängig von der Darstellung benachrichtigt Observer bei Datenänderung
- MVC: View zuständig für Präsentation der Anwendung Verarbeitet Daten aus dem Model und präsentiert sie Darstellung der Daten Interaktion mit User gibt Input an Controller weiter
- MVC: Controller Verarbeitet Userinput ruft Funktionen des Models auf jeder Controller ist einer View zugeordnet (kann mehrere Controller pro View geben)
- Observer-Pattern (Listener-Pattern) ist 1:N Verbindung zwischen Objekten▪ alle N Objekte müssen informiert werden▪ wenn es zu einer Änderung in 1 Objekt kommt Open-Closed-Prinzip wird unterstützt:… Klasse ist offen für Erweiterungen… ohne Veränderungen der Klasse selbst
- Was ist das Push bzw. das Pullmodell? Zwei Modelle des Observer-Patterns Pushmodell▪ Subjekt sendet detaillierte Informationen über Änderungen▪ als Parameter in der update()-Methode public void update(int length, int width);▪ Vorteil: Observer braucht keine Informationen über Subjekt → stärker entkoppelt Pullmodell▪ Observer holt selbst Daten▪ über eine Referenz auf das Subjekt public void update(ConcreteSubject concreteSubject);▪ Vorteil: Observer erhält nur benötigte Information
- Vorteile- und Nachteile des MVC Vorteile:◦ Darstellung mehrerer Sichten◦ dynamisch erweiterbar um Views und Controller Nachteile:◦ Komplexität◦ starke Koppelung Model&View und Model&Controller
- Wozu wird das DAO: Data Access Object benutzt? Motivation/Problemlage:◦ Schnittstellen zu Datenquellen variieren stark◦ viele Komponenten eines Systems brauchen Zugang zu Daten wird eingesetzt zur Entkoppelung der Persistenzschicht wird verwendet um Datenquelle zu abstrahieren verwenden DTO (Data Transfer Objects = Bussines Object)zur Übertragund der Daten… aus der Datenbank ...… zur Business Schicht
- DAO-Komponenten Business Logic Data Access Object Business Object (Entity) Data Source
- Business Logic (DAO-Komponenten) Objekt im Business Layer, das Datenzugriff braucht weiß, wann Daten benötigt werden weiß nicht, wie man an Daten kommt Business Object (=Data Transfer Object):◦ Einheit innerhalb der Business Logic◦ Datenträger von und zu DAO
- Data Access Object (DAO-Komponenten) Abstrahiert Zugriffsdetails durch Kapselung verbirgt sie vor dem Business Object weiß, wie man an Daten kommt weiß nicht, wann und warum Daten gebraucht werden
- Methoden, die ein DAO zur Verfügung stellen muss: CRUD Create: Objekt erzeugen Read: Objekt auslesen Update: Objekt updaten Delete: Objekt löschen