Software Architektur Teil 1 Flashcards
Grundlagen Softwaretechnik
Definition Softwarearchitektur
Die Softwarearchitektur ist die grundlegende Organisation (Struktur) eines Systems
Grundlagen Software-Architektur
Abgrenzung mit physikalischer Architektur
- Software-Architektur ist nicht direkt mit physikalischer Architektur vergleichbar
- Sie folgt keinen Naturgesetzen, ist immateriell, dynamisch, sehr umfangreich und komplex
Grundlagen Software-Architektur
Anforderungen bei der Software-Architektur
Die Anforderungen beschreiben was ein Software-System zu tun hat
Grundlagen Software-Architektur
Software-Entwurf bei der Software-Architektur
- Der Software-Entwurf beschreibt WIE das WAS realisiert werden soll
- Die Software-Architektur ist ein Teil des Entwurfs
Grundlagen Software-Architektur
Änderbarkeit in der Software-Architektur
Während des Architekturentwurfs kann sich vieles verändern, wegen z.B.: später Anforderungen oder Verständnisproblemen
Information Hiding und Modularisierung in der Software Architekur
Wenn beides kombiniert kann man die Komplexität und die Größe der Software beherrschen
Kohäsion in der Software-Architkéktur
Innerhalb der Module besteht eine hohe Kohäsion
Kopplung in der Software-Architektur
Innerhalb der Module ist die Kopplung gering
Wiederverwendbarkeit in der Software-Architektur
- Wiederverwendbarkeit muss geplant sein und nicht zufällig sein
- Wiederverwendungsansätze sind Entwurfsmuster oder Produktlinienarchitekturen
Architekturebenen in der Software-Architektur
- Fachliche (konzeptuelle) Architektur
- Softwaretechnische Architektur
- Systemtechnische Architektur
Architekturebenen in der Software-Architektur
Fachliche Architektur
Die fachliche Architektur beschreibt das Software-System in fachliche Teilsysteme und Schnittstellen
Architekturebenen in der Software-Architektur
Softwaretechnische Architektur
Die softwaretechnische Architektur beschreibt konkrete technische Komponenten und deren Beziehungen
Architekturebenen in der Software-Architektur
Systemtechnische Architektur
Die systemtechnische Architektur beschreibt wie die einzelnen Komponenten auf Recheneinheiten installiert und mit existierenden Systemen verbunden werden.
Architekturebenen in der Software-Architektur
Wesentliche Elemente der fachlichen Architektur
- Fachliche Module
- Statische und dynamische Beziehungen zwischen Teilsystemen/Modulen
- Den Datenhaushalt darstellen
Architekturebenen in der Software-Architektur
Wesentliche Elemente der softwaretechnischen Architektur
- Software-Komponenten
- Interfaces und Aufrufbeziehungen
Architekturebenen in der Software-Architektur
Wesentliche Elemente der systemtechnischen Architektur
Verteilung der softwaretechnischen Komponenten auf Ressourcen
Vorgehensweisen bei der modularen Architektur
- Der Top-down-Entwurf
- Der Bottom-up-Entwurf
Modulare Architektur
Nutzung des Top-Down-Entwurfs
- Wenn keine Vorstellungen bzgl. der einzusetzenden Grundbestandteile existieren
- Die Komponenten werden solange dekomponiert bis man zu überschaubaren und realisierenden Teilen gelangt
Modulare Architektur
Nutzung des Bottom-Up-Entwurfs
- Wenn es eine Menge wiederverwendbarer Komponenten gibt, die benutzt werden sollen
- Die Komponenten werden solange komponiert, bis man zu einer überschaubaren Menge von Komponenten gelangt
Komponenten und Beziehungen in der Softwarearchitektur
Was ist eine Komponente?
- Eine abgeschlossene Einheit
- Explizite Defintion von Diensten / Leistungen
Komponenten und Beziehungen in der Softwarearchitektur
Wie wird eine Beziehung charakterisiert?
- Es werden Leistungen angeboten (provided / Export) und bezogen (required / Import)
- Werden als graphische Notation dargestellt
Beziehung zwischen Komponenten
Die Relation “benutzt”
Die “benutzt”-Relation entspricht häufig dem Aufruf einer Operation, die von der aufgerufenen Komponente angeboten wird
Beziehung zwischen Komponenten
Die Relation “ist_Bestandteil_von”
Die Relation ist_Bestandteil_von beschreibt Verfeinerung zwischen Komponenten
Beispiel zur “benutzt” und “ist_Bestandteil von” Relation
- Die benutzt Relation verbindet Komponente 1 mit Komponente 2 und 3
- Bei der ist_Bestandteil_von Relation sind mehrere kleine Komponenten von der Komponente 1 miteinander verbunden
Entwurfsmuster
Wozu dient ein Entwurfsmuster?
Es dient dazu bewährte Erfahrungen im objektorientierten Entwurf zu dokumentieren und anderen zur Verfügung zu stellen
Entwurfsmuster
Das Entwurfsmuster besteht aus den Teilen…
- Situationen, die zu einem bestimmten Problem führen
- Das (wiederkehrende) Problem im oben genannten Kontext
- Eine (bewährte) Lösung
Entwurfsmuster
Worum geht es bei dem Model-View-Controller (MVC) Entwurfsmuster
- Es geht um die interaktive Anwendung mit einer flexiblen Benutzerschnittstelle
- Benutzerschnittstellen sind besonders anfällig für Änderungen
Anwendung des Model-View-Controller (MVC)
Die Anwendung wird in drei Kernkomponenten Model,View und Controller aufgeteilt
Model-View-Controller (MVC)
Die Model-Komponente
Die Daten der Anwendung werden verwaltet, es werden Statusupdates gegeben und Status können verändert werden
Model-View-Controller (MVC)
Die Views-Komponente
Die Daten der Anwendung werden angezeigt
Model-View-Controller (MVC)
Controller-Komponente
Ein Benutzer interagiert mit dem System ausschließlich über die Controller
Entwurfsmuster
Drei Klassen von Entwurfsmustern
- Erzeugende Entwurfsmuster
- Strukturelle Entwurfsmuster
- Verhaltensentwurfsmuster
Drei Klassen von Entwurfsmuster
Erzeugende Entwurfsmuster
- Betreffen den Prozess der Erzeugung von Objekten
- Bsp. Singleton
Drei Klassen von Entwurfsmuster
Strukturelle Entwurfsmuster
- Betreffen die Komposition von Klassen oder Objekten
- Bspl. Adapter
Drei Klassen von Entwurfsmuster
Verhaltensentwurfmuster
- Betreffen die Art und Weise, in der Klassen oder Objekte miteinander kommunizieren und Aufgaben aufteilen
- Bsp. MVC, Observer
Nutzen von Entwurfsmustern
- Die Nützlichkeit ist wichtiger als die Neuheit
- Erfahrungen und bewährte Lösungen werden dokumentiert