cd Blatt 6

Architektonische Entwurfsentscheidungen

Erörtert den Entwurf von Systemarchitekturen, wobei sowohl kreative als auch technische Aspekte einfließen. Betont die Bedeutung von Entscheidungen, die funktionale und nichtfunktionale Anforderungen berücksichtigen.

  • Architektonischer Entwurf

    • Kreativer Prozess: Entwurf einer Systemarchitektur, die funktionale und nichtfunktionale Anforderungen erfüllt.
      Beispiel: Berücksichtigung von Leistungsfähigkeit und Informationssicherheit im Design.
    • Variabler Entwurfsprozess: Abhängig von Systemtyp, Architekten-Erfahrung und spezifischen Anforderungen.
      Beispiel: Unterschiedliche Ansätze für eingebettete Systeme und Unternehmenssoftware.
    • Entscheidungen statt Aktivitäten: Betrachtung des Entwurfsprozesses als Reihe von Entscheidungen.
      Beispiel: Auswahl zwischen Client-Server- und Schichtenarchitektur.
    • Berücksichtigung grundlegender Fragen: Einschließlich Anwendungsarchitektur, Verteilung und Architekturmuster.
      Beispiel: Entscheidung über die Zerlegung von Komponenten und Steuerungsstrategie.
  • Einfluss nichtfunktionaler Anforderungen

    • Abhängigkeit von Anforderungen: Architekturauswahl basierend auf Leistung, Sicherheit, Zuverlässigkeit, Verfügbarkeit und Wartbarkeit.
      Beispiel: Entwurf einer Schichtenstruktur für verbesserte Sicherheit.
    • Konflikte und Kompromisse: Umgang mit widersprüchlichen Anforderungen durch Kompromissfindung.
      Beispiel: Ausgleich zwischen Leistung und Wartbarkeit.
    • Bewertung der Architektur: Vergleich mit Referenzarchitekturen und Berücksichtigung der nichtfunktionalen Merkmale von Mustern.
      Beispiel: Nutzung von Architekturmustern zur Bewertung der Systemeffizienz.
  • Kurz gesagt: Der architektonische Entwurf ist ein dynamischer und kreativer Prozess, der von verschiedenen Faktoren beeinflusst wird und maßgeblich durch nichtfunktionale Anforderungen geprägt ist. Die Auswahl und Bewertung der Architektur erfordert einen ausgewogenen Ansatz, um Konflikte zwischen verschiedenen Anforderungen zu lösen und eine effiziente, sichere und wartbare Systemarchitektur zu gewährleisten.

Architektursichten

Stellt eine Übersicht verschiedener Architekturmuster bereit, die in der Softwarearchitektur verwendet werden. Diese Muster illustrieren unterschiedliche Ansätze zur Strukturierung und Organisation von Systemkomponenten, mit einem Fokus auf deren spezifische Stärken und Herausforderungen.

  • MVC (Model-View-Controller)

    MVC trennt Präsentation und Interaktion von Systemdaten in drei Komponenten: Model, View und Controller. Das Modell verwaltet Daten und Operationen, die Ansicht definiert, wie Daten präsentiert werden, und der Controller steuert Benutzerinteraktionen.

    • Einsatzbereich: Häufig in Webanwendungen für unterschiedliche Datenansichten und flexible Interaktionen.
    • Vorteile und Nachteile: Vorteile liegen in der Trennung von Daten und Darstellung, was unabhängige Änderungen ermöglicht. Nachteile umfassen zusätzlichen Code und erhöhte Komplexität.
  • Schichtenarchitektur

    Strukturiert Systeme in Schichten, wobei jede Schicht bestimmte Funktionen bereitstellt. Geeignet für modulare Erweiterungen und mehrstufige Sicherheit.

    • Beispiel: Digitale Lernsysteme mit mehrschichtiger Struktur.
    • Vorteile und Nachteile: Vorteile sind Ersetzbarkeit von Schichten und vereinfachte Portabilität, während Nachteile in der Schichtentrennung und potenziellen Performanzproblemen liegen.

    Repository-Architektur

    Zentralisiert Systemdaten in einem Repository, auf das alle Komponenten zugreifen. Ideal für datenintensive Systeme.

    • Beispiel: Repository für Systementwurfsinformationen in Entwicklungsumgebungen.
    • Vorteile und Nachteile: Fördert Datenkonsistenz und unabhängige Komponenten, aber birgt Risiken eines Single Points of Failure und Kommunikationseffizienz.

    Client-Server-Architektur

    Besteht aus Diensten, die von Servern bereitgestellt und von Clients genutzt werden. Geeignet für verteilte Datenzugriffe und flexible Systemauslastung.

    • Beispiel: Film- und Video/DVD-Bibliotheken mit Servern und Clients.
    • Vorteile und Nachteile: Bietet Vorteile in der Verteilung und Skalierbarkeit, hat jedoch potenzielle Schwachstellen in der Performanz und Verwaltung.

    Pipes-und-Filter-Architektur

    Verarbeitet Daten durch eine Reihe von Transformationen. Ideal für sequenzielle oder parallele Datenverarbeitungsprozesse.

    • Beispiel: Datenverarbeitungssysteme mit sequenziellen Transformationen.
    • Vorteile und Nachteile: Ermöglicht effektive Datenstromverarbeitung und Integration neuer Transformationen, kann jedoch Datenflusskomplexität und Abhängigkeiten erhöhen.
  • Kurz gesagt: Architekturmuster bieten strukturierte Rahmenbedingungen für die Systemgestaltung. Sie reichen von MVC für getrennte Datenverarbeitung und Darstellung bis hin zur Pipes-und-Filter-Architektur für sequenzielle Datenverarbeitung. Jedes Muster bietet spezifische Vorteile und ist für bestimmte Szenarien optimiert, wobei die Wahl des Musters entscheidend von den Anforderungen des Projekts abhängt.

Anwendungsarchitekturen

Anwendungsarchitekturen sind entscheidend für die Gestaltung effektiver Softwaresysteme. Sie strukturieren die Interaktionen und das Zusammenspiel der Systemkomponenten, um Geschäfts- und Benutzeranforderungen zu erfüllen. Diese Architekturen bieten einen umfassenden Rahmen für die Systementwicklung und -wartung.

  • Transaktionsverarbeitende Systeme

    • Hauptziel: Verarbeiten von Benutzeranfragen für Informationen und Aktualisierungen in Datenbanken, Sicherstellung der Atomizität von Transaktionen zur Vermeidung von Dateninkonsistenzen.
      Beispiel: Geldautomatenprozesse für Kontostandsabfragen und Geldabhebungen.
    • Architektonischer Aufbau: Benutzerinteraktion durch E/A-Komponenten, Verarbeitung durch anwendungsspezifische Logik, Erstellung und Verwaltung von Transaktionen durch Transaktionsmanager, Sicherstellung der korrekten und vollständigen Ausführung von Transaktionen.
      Merkmale: Interaktivität, asynchrone Dienstanfragen, Fokus auf Konsistenz und Integrität von Datenbanktransaktionen.
  • Informationssysteme

    • Funktion und Nutzung: Management großer Informationsmengen über geteilte Datenbanken, typischerweise webbasierte Systeme mit browserbasierten Benutzerschnittstellen.
      Beispiel: Online-Bibliothekskataloge, Flugbuchungssysteme.
    • Architektonischer Aufbau: Drei-Schichten-Struktur mit Benutzerschnittstelle, anwendungsspezifischer Logik für Datenzugriff und Datenbank als Informationslager.
      Anwendungsarchitektur: Einsatz von Schichtenansätzen für effektive Datenverwaltung und Prozessorganisation.
  • Sprachverarbeitende Systeme

    • Ziel und Anwendung: Transformation einer Sprachform in eine andere, häufig in Programmier- und Entwicklungsumgebungen.
      Beispiel: Compiler, die Hochsprachen in Maschinencode übersetzen.
    • Architektonischer Prozess: Mehrstufige Verarbeitung mit lexikalischer Analyse, Verwendung von Symboltabellen, Syntax- und Semantikanalyse sowie Codegenerierung.
      Integration: Einbindung in Programmierumgebungen mit Repositories zur effektiven Informationsverteilung und Änderungsnachverfolgung.
  • Kurz gesagt: Diese Architekturen bieten strukturierte Ansätze für unterschiedliche Datenverarbeitungsanforderungen – von transaktionsbasierten Systemen für Datenbankinteraktionen über Informationssysteme zur effizienten Datenverwaltung bis hin zu sprachverarbeitenden Systemen für die Übersetzung und Ausführung von Programmcode.

Zusammenfassung

  • Architektonische Entwurfsentscheidungen

    • Entscheidungsgrundlagen: Umfassen die Anwendungsart, Systemverteilung, Architekturtyp sowie Dokumentations- und Bewertungsmethoden.
    • Dokumentationssichten: Inkludieren konzeptionelle, logische, Prozess-, Entwicklungs- und physische Sichten.
  • Architekturmuster

    • Wissenswiederverwendung: Beschreiben allgemeine Systemarchitekturen und deren Anwendungsbereiche.
    • Beispiele: Model-View-Controller, Schichtenarchitekturen, Repository-, Client-Server- und Pipes-und-Filter-Architekturen.
  • Anwendungssystemmodelle

    • Modellnutzen: Erleichtern das Verständnis der Funktion von Anwendungen und deren Vergleich.
  • Transaktionsverarbeitende Systeme

    • Interaktionsfokus: Ermöglichen den Fernzugriff und die Aktualisierung von Datenbankinformationen.
  • Sprachverarbeitende Systeme

    • Übersetzungsfunktion: Übersetzen Texte und führen Anweisungen aus; beinhalten Übersetzer und abstrakte Automaten.
  • Kurz gesagt: Die Architektur leitet wichtige Aspekte der Systemleistung und -sicherheit. Die richtige Auswahl und Anwendung von Mustern ist entscheidend für die Systementwicklung.

1 Client-Server-Architekturen

  1. Bei Client-Server-Architekturen gibt es zwei grundlegende Varianten: „thick clients“ und „thin clients“. Letzere führen keine eigenen Berechnungen durch und besitzen keine Funktionalität, außer vom Server gesendete Daten anzuzeigen und Benutzereingaben zurückzusenden. Erstere enthalten dagegen eigene Funktionalität und greifen nur für bestimmte Dinge auf den Server zu

    • Thick Client:
      • ein voll funktionsfähiger Computer, der eine Verbindung zu einem Server herstellt.
      • verfügt über ein eigenes Betriebssystem, eigene Software, eigene Verarbeitungsfunktionen und eigenen Speicherplatz, so dass er auch im Offline-Betrieb ohne Probleme weiterarbeiten kann.
      • jedes Gerät, das völlig unabhängig von einem entfernten Server funktionieren kann, ein Thick Client
      • → Beispiel: Beispiele für Thick Clients sind Desktop-PCs oder Laptops mit Windows oder MacOS.
    • Thin Client:
      • in der Regel eine abgespeckter Computer mit begrenzten Verarbeitungsfunktionen
      • speziell für den Betrieb in einer Netzwerkumgebung optimiert
      • verfügt über sehr begrenzte, lokale Speicherkapazitäten und ein optimiertes Betriebssystem.
      • Im Gegensatz zu einem Thick Client benötigt ein Thin Client Zugriff auf den Remote-Server, um ordnungsgemäß zu funktionieren
      • → primäre Zweck: als Gateway zum Netz zu fungieren und dem Endnutzer Informationen anzuzeigen
    • Welche Vor- und Nachteile ergeben sich durch „thick“ bzw. „thin“ clients? (Tabellarische-Zusammenfassung unten)
      • Kosten:
        • Thin Clients sind kostengünstiger, da sie keine teure Hardware brauchen, da sie nur eine Verbindung zum Sever herstellen müssen.
      • Stromverbauch:
        • Thin Clients verbrauchen weniger Strom, da sie wenn überhaupt nur wenige lokale Anwendungen ausführen.
      • Lokale Ressourcen:
        • Thin Clients verfügen über begrenzte lokale Ressourcen in Bezug auf Datenspeicherung und Verarbeitung. Sind somit also vom Netzwerk abhängig.
      • Netzwerkabhängigkeit:
        • Thin Clients benötigen eine stabile Netzwerkverbindung, da sie sonst nutzlos sind. Thick Clients hingegen können auch Offline arbeiten.
      • Lokale Ressourcen:
        • Thin Clients benötigen eine stabile Netzwerkverbindung, da sie sonst nutzlos sind. Thick Clients hingegen können auch Offline arbeiten.
      • Individuelle Anpassung:
        • Thin Clients werden aus ferne verwaltet und der endnutzer hat dementsprechend wenig Einfluss auf die Konfiguration hat. Thick Clients können von einzelnen Mitarbeitern durch die Installation der erforderlichen, lokalen Software und Anwendungen angepasst werden.
      • IT-Ressourcen:
        • Thin Clients werden zentral ausgerollt und maintained wodurch IT-Ressourcen geschont werden. Thick Clients hingegen führenn zu einem fragmentierten System wo jeder einzelne Comuputer individuell gewartet werden muss.
      • Mobilität:
        • Thin Clients Desktop befindet sich auf der Cloud → verbessert die Mobilität, da der Benutzer von jedem Ort aus auf seine Daten zugreifen kann.
      • Sicherheit:
        • Thin Clients sind sicherer, da die IT-Kontrolle zentralisiert stattfindet. Thick Clients sind anfälliger für Sicherheitsprobleme, da schwer kontrolliert werden kann was auf den einzelnen Geräten installiert ist.
    • Für welche Art von Software eignet sich die jeweilige Architektur? Nennen Sie Beispiele!
      • Cloud-basierte Anwendungen:
        • Thin Clients eignen sich für Cloud-basierte Anwendungen wie Office-Tools und E-Mail-Dienste, die keine lokale Verarbeitung benötigen.
      • Zentralisierte Datenverwaltung:
        • Thin Clients sind optimal in Umgebungen, wo Datenschutz und -sicherheit wichtig sind, wie in Finanzinstitutionen.
      • Virtualisierte Desktops:
        • Thin Clients sind Ideal für Unternehmen, die Virtual Desktop Infrastructure (VDI) nutzen, um Kosten und Komplexität der Endgeräteverwaltung zu reduzieren.
      • Ressourcenintensive Anwendungen:
        • Thick Clients sind geeignet für ressourcenintensive Anwendungen wie Grafikdesign-Software, Videoschnittprogramme oder Spiele.
      • Entwicklungsumgebungen:
        • Entwickler profitieren von Thick Clients durch die Nutzung leistungsfähiger lokaler Entwicklungsumgebungen und Tools.
      • Offline-Arbeit:
        • Thick Clients sind ideal für Nutzer, die unabhängig von einer Netzwerkverbindung arbeiten müssen, z.B. in ländlichen Gebieten mit unzuverlässiger Internetanbindung.

2 Architekturen im Alltag

  1. Pipes and Filters ist ein Architekturmuster in der Softwareentwicklung, bei dem eine Reihe von Verarbeitungskomponenten (die "Filters") Daten in einer Sequenz bearbeiten, wobei jeder Filter eine bestimmte Operation ausführt und die Daten über Verbindungselemente (die "Pipes") zum nächsten Filter weitergibt.


    Die Schichtenarchitektur, auch bekannt als Layered Architecture, ist ein Softwareentwurfsmuster, bei dem die Komponenten in hierarchische Schichten aufgeteilt werden. Jede Schicht hat eine spezifische Aufgabe und bietet Dienste für die darüberliegende Schicht, während sie gleichzeitig Dienste von der darunterliegenden Schicht nutzt. Diese Struktur fördert die Organisation des Codes, macht ihn wartbarer und erleichtert das Austauschen oder Erweitern einzelner Schichten, ohne die anderen zu beeinträchtigen.


    Das Repository-Architekturmuster ist ein Strukturierungsansatz in der Softwareentwicklung, bei dem ein zentraler Datenspeicher (das "Repository") verwendet wird, um die gemeinsame Datenbasis mehrerer unterschiedlicher Anwendungskomponenten zu verwalten. Die Komponenten interagieren mit dem Repository, das eine konsistente Schnittstelle zur Datenmanipulation bietet, wodurch Datenkohärenz, Datenwiederverwendung und eine klare Trennung zwischen Datenverarbeitung und -speicherung erreicht wird.

    • Nennen Sie Beispiele für Software der Sie im Alltag begegnen die einer Pipes and Filters Architektur folgt!
      • Compiler:
        • Compiler wie GCC oder Clang folgen der Pipes and Filters-Architektur, indem sie Quellcode durch mehrere Verarbeitungsschritte wie lexikalische Analyse, Parsing und Code-Generierung leiten.
      • Build-Systeme:
        • Build-Systeme wie Make oder Maven nutzen Pipes and Filters, um Quellcode zu kompilieren, Abhängigkeiten zu verwalten und Softwarepakete zu erstellen.
      • Bildbearbeitungsprogramme:
        • Bildbearbeitungsprogramme wie Photoshop oder GIMP verwenden eine Folge von Filtern, um komplexe Bildbearbeitungsaufgaben auf Bilddaten anzuwenden.
      • Netzwerkabhängigkeit:
        • Bei der Netzwerkabhängigkeit zeigen sich die Vorteile von Thick Clients, die auch ohne Netzwerkverbindung voll funktionsfähig bleiben.
      • Audio- und Videobearbeitungsprogramme:
        • Audio- und Videobearbeitungsprogramme nutzen oft eine Pipes and Filters-Architektur, um verschiedene Effekte und Bearbeitungen sequenziell auf Medienstreams anzuwenden.
      • Datenbanken:
        • Datenbanksysteme setzen auf eine Abfolge von Operationen (Filtern), um Abfragen zu bearbeiten und Daten sicher und effizient zu speichern und abzurufen.
    • Nennen Sie Beispiele für Software der Sie im Alltag begegnen die einer Schichtenarchitektur folgt!
      • Betriebssysteme:
        • Betriebssysteme wie Windows oder Linux sind ein klassisches Beispiel für Schichtenarchitektur, wobei jede Schicht spezifische Funktionen wie Hardware-Abstraktion, Prozessmanagement und Nutzerschnittstellen bereitstellt.
      • Netzwerkprotokolle:
        • Das OSI-Modell für Netzwerkprotokolle ist in Schichten aufgebaut, wobei jede Schicht spezialisierte Aufgaben wie Routing, Datenübertragung und Anwendungsdienste übernimmt.
      • Webanwendungen:
        • Viele Webanwendungen folgen einer Schichtenarchitektur, die Präsentation, Geschäftslogik und Datenzugriff in separate Schichten aufteilt, um die Wartung und Skalierbarkeit zu verbessern.
      • Datenbanken:
        • Moderne Datenbankmanagementsysteme nutzen eine Schichtenarchitektur, um Datenabfrage, Transaktionsmanagement und Speicherzugriff separat zu handhaben.
    • Nennen Sie Beispiele für Software der Sie im Alltag begegnen die einer Repository-Architektur folgt!
      • Versionsverwaltungssysteme (z.B. git):
        • Versionsverwaltungssysteme wie Git nutzen ein Repository, um den Code und dessen Historie zentral zu speichern, sodass Entwickler effizient zusammenarbeiten und Änderungen nachverfolgen können.
      • IDE (z.B. Einstellungen in VSCode):
        • In integrierten Entwicklungsumgebungen (IDEs) wie VSCode werden Einstellungen und Erweiterungen in einem zentralen Repository gespeichert, wodurch eine konsistente Arbeitsumgebung für Projekte und Benutzer geschaffen wird.
      • Datenbanken:
        • Datenbanken implementieren oft eine Repository-Architektur, um Daten zentral zu speichern und zu verwalten, wobei sie über standardisierte Schnittstellen für den Datenzugriff und die Datenmanipulation verfügen.

U Pipes and Filters

  1. Erweiterung eines Pipes and Filters Programms in der Softwareentwicklung, bei dem zusätzliche Filter-Klassen hinzugefügt werden, um spezifische Funktionen auszuführen und Daten in einer Sequenz zu bearbeiten.


    1. Die Erweiterung des Python-Programms umfasst die Implementierung zweier zusätzlicher Filter-Klassen. Die erste, PrintFilter, ist für die Ausgabe von Daten in der Konsole zuständig, während die zweite, ElimFilter, WHERE-Klauseln aus SQL-Statements entfernt.


      import sqlparse
      
      class TokenizeFilter:
          def process(self, input_data):
              tokens = sqlparse.parse(input_data)[0].tokens
              return tokens
      
      class ParseFilter:
          def process(self, input_tokens):
              parsed_statement = sqlparse.sql.Statement(input_tokens)
              return parsed_statement
      
      class PrintFilter:
          def process(self, data):
              print(data)
              return data
      
      class ElimFilter:
          def process(self, input_tokens):
              return [token for token in input_tokens if not token.ttype is sqlparse.tokens.Where]
      
      class SQLParserPipeline:
          def __init__(self):
              self.filters = []
      
          def add_filter(self, filter_instance):
              self.filters.append(filter_instance)
      
          def run_pipeline(self, input_data):
              data = input_data
              for filter_instance in self.filters:
                  data = filter_instance.process(data)
      
      if __name__ == "__main__":
          sql_statement = "SELECT * FROM my_table WHERE column = 'value';"
      
          pipeline = SQLParserPipeline()
          pipeline.add_filter(TokenizeFilter())
          pipeline.add_filter(ElimFilter())
          pipeline.add_filter(PrintFilter())
          pipeline.add_filter(ParseFilter())
      
          pipeline.run_pipeline(sql_statement)
      

3 Model-View-Controller

  1. Das Model-View-Controller (MVC) ist ein Architekturmuster, das häufig in der Softwareentwicklung verwendet wird. Es unterteilt eine Anwendung in drei miteinander verbundene Teile: das "Model", die "View" und den "Controller". - Das "Model" repräsentiert die Daten und die Geschäftslogik der Anwendung. Es verwaltet die Daten und ist verantwortlich für alle Änderungen und Aktualisierungen an diesen Daten. - Die "View" ist die Darstellung der Daten, also das, was der Benutzer sieht und mit dem er interagiert. Sie stellt die Daten dar, die im Model gespeichert sind. - Der "Controller" ist das Bindeglied zwischen Model und View. Er verarbeitet die Benutzereingaben und aktualisiert das Model und die View entsprechend.

    • Skizzieren Sie die Struktur des MVC-Architekturmusters. Geben Sie den zeitlichen Ablauf der Kommunikation zwischen den Komponenten an. Als Startpunkt können Sie von einer Interaktion des Benutzers mit der Benutzeroberfläche ausgehen.
      • MVC:
        • Controller → Model: Model Access and Editing / State Change
        • Controller → View: View Selection / View Messages
        • Model → View (gestrichelt): Change Notification
        • View → Model: Model Access / State Query
        • optional: Model → Controller (gestrichelt): Change Notification
        • optional: View → Controller (gestrichelt möglich): User Input
      • Gesture (gegeben)
      • View Selection (auch an 4. Stelle denkbar)
      • State Change
      • Change Notification
      • State Query
    • Welche Vorteile ergeben sich durch den Einsatz der MVC-Architektur? Warum?
      • Trennung von Anliegen:
        • MVC ermöglicht eine klare Trennung zwischen Daten (Model), Benutzeroberfläche (View) und Steuerungslogik (Controller). Dies erleichtert die Wartung und Änderung einzelner Teile der Anwendung ohne Beeinträchtigung der anderen.
      • Wiederverwendbarkeit und Modularität:
        • Da die Komponenten in MVC getrennt sind, können sie unabhängig voneinander entwickelt und wiederverwendet werden. Dies fördert die Modularität und Wiederverwendbarkeit des Codes.
      • Parallelentwicklung:
        • Mit MVC können Entwickler gleichzeitig an verschiedenen Komponenten arbeiten. Zum Beispiel können einige Entwickler am Model arbeiten, während andere an der View oder am Controller arbeiten.
      • Einfache Anpassung an neue Technologien:
        • Da die View-Komponente in MVC getrennt ist, kann die Benutzeroberfläche leicht an neue Technologien angepasst werden, ohne die Geschäftslogik oder Datenzugriffskomponenten zu beeinflussen.

P Model-View-Controller (Implementierung)

  1. Bei P Aufgaben handlet es sich um optionale Praxisaufgaben. Diese Aufgaben sollen ihnen die Vorlesungsinhalte durch Projekte näher bringen und sind nicht Teil der Prüfung.


    Weist du was das bedeutet? Genau, du musst sie nicht machen. Aber wenn du sie machst, dann kannst du sie mir gerne zeigen.


    Nein Spass, bitte zeig sie mir nicht. Ich kann kein SWT mehr sehen :'(

K Agile Entwicklungsprozesses

  1. a) Beschreiben Sie den Kommunikationsablauf zwischen den Komponenten im MVC-Muster, nachdem ein Nutzer Daten in der View geändert hat.

    • Ablauf: Die View nimmt Benutzereingaben auf und sendet sie an den Controller, dieser aktualisiert das Model, und das Model informiert die View über die Änderungen zur Anzeigeaktualisierung.
  2. b) In einem Unix ähnlichen System gibt es eine Reihe an Programmen und Tools die alle eine ganz bestimmte Aufgabe erfüllen. Mit dem besonderen | Operator können die Ausgaben von einem Programm an ein anderes in Textform weitergeleitet werden.

    • i) Die Architektur wird als Pipes-und-Filter-Architektur bezeichnet.
    • ii) Ein Vorteil ist die Modularität, die eine einfache Wiederverwendung und Kombination von Programmen ermöglicht.
    • iii) Ein Nachteil ist die potenzielle Ineffizienz durch das Verarbeiten großer Datenmengen in Textform.
  3. c) Beschriften Sie die folgende Skizze so, dass sie die konzeptionelle Sicht der Client-Server Architektur darstellt.

    • Skizzenbeschriftung: Die Skizze sollte Clients, die Anfragen senden, und den Server, der diese Anfragen bearbeitet und die Ergebnisse zurückliefert, darstellen.
    • ACHTUNG! ES SOLLTE: CLIENT ↔ INTERNET ↔ SERVER SEIN