Softwarearchitektur: Modularität, Verteilte Systeme & Echtzeit-Design

Classified in Informatik

Written at on Deutsch with a size of 8,09 KB.

Softwarearchitektur

Größe und Design

Es handelt sich um eine Reihe von Softwaresystemen, die eine gemeinsame Reihe von Fragen beantworten und die speziellen Bedürfnisse eines Marktsegments oder einer Mission verwalten.

Vorteile

  • Schnellere Lieferung von Softwareprodukten
  • Wirtschaftlicher
  • Mit besserer Qualität

Modular Decomposition

Die modulare Bauweise schlägt die Aufteilung in einzelne Teile und die Definition ihrer Schnittstellen vor. Vorteile: Klarheit, Kostensenkung und Wiederverwendung.

Die Schritte sind:

  1. Ursache von Modulen
  2. Beschreibung jedes Moduls
  3. Beschreibung der Beziehung zwischen den Modulen

Mindestanforderungen

Eine modulare Zerlegung muss bestimmte Mindestanforderungen erfüllen, damit die Qualitäten ausreichend validiert werden können.

  1. Funktionelle Unabhängigkeit
  2. Pfändung
  3. Zusammenhalt
  4. Verständlichkeit
  5. Anpassungsfähigkeit

Kräftig, mäßig und schwach

Definition: Software-Architektur

"Eine Software-Architektur ist eine Reihe von architektonischen Elementen, die auf eine bestimmte Weise angeordnet sind. Die Eigenschaften schränken die Auswahl der Elemente der Architektur ein und legen die Gründe für die Wahl des Elements und seiner Form fest."

Zusammenhalt

Ein kohärentes Modul führt eine einfache Aufgabe in einem Softwareverfahren aus und erfordert wenig Interaktion mit Verfahren, die in anderen Teilen eines Programms ausgeführt werden. Wir sagen, dass ein kohärentes Modul eine Sache macht, eine, die es nur versucht zu machen.

Verständlichkeit

Um die Änderung und Wiederverwendung von Modulen zu erleichtern, ist es notwendig, dass jedes Modul isoliert verständlich ist.

Architektur:

Client-Server-Architektur: In diesem Fall kann das System diese Dienste als eine Reihe von Diensten für Clients verwenden. Server und Clients sind in diesen Systemen unterschiedlich behandelt.

Verteilte Objektarchitekturen: Bei dieser Architektur gibt es keine Unterscheidung zwischen Servern und Clients, und das System kann als eine Menge interagierender Objekte betrachtet werden, deren Lage irrelevant ist. Es gibt keinen Unterschied zwischen einem Dienstleistungsanbieter und einem Nutzer dieser Dienste.

Beide Architekturen sind in der Industrie weit verbreitet, daher wird die intraorganisationale Verteilung unterstützt. Sie können auch zwei andere Arten von verteilten Architekturen verwenden, die sich eher für die Interorganisation eignen: Peer-to-Peer-Systemarchitektur (P2P) und serviceorientierte Architektur. Peer-to-Peer-Systeme wurden in erster Linie für den persönlichen Gebrauch verwendet, werden aber allmählich auch für Geschäftsanwendungen eingesetzt.

Multiprozessor-Architektur

Ein Multiprocessing- oder Multitasking-System ermöglicht die gleichzeitige Ausführung mehrerer Prozesse.

Der Vorteil eines Multithread-Systems liegt im sogenannten Context-Switching. Dieser Vorgang beinhaltet, dass ein Prozess die CPU verlässt, ein anderer Prozess ausgeführt wird und der erste ersetzt wird, ohne dass er etwas davon merkt.

Eine Reihe von Aufgaben kann schneller abgeschlossen werden, wenn mehrere Recheneinheiten parallel laufen.

Es umfasst zwei Hochleistungscomputer, die elektronisch miteinander verbunden sind. Diese Konfiguration ist als Multi-Threading bekannt und zeichnet sich dadurch aus, dass Daten auch bei einer Störung in einem der Computer kontinuierlich verarbeitet werden.

Beispiel:

Flugsicherungssystem. Eine Reihe von verteilten Sensoren erfasst Verkehrsflussinformationen und verarbeitet sie lokal, bevor sie an die Leitstelle gesendet werden.

Vorteil

  • Es ist wirtschaftlich.
  • Die Verwendung von allgemein verfügbaren Komponenten in großen Mengen ermöglicht es uns, eine höhere Leistung zu einem niedrigeren Preis als dem von speziell für Maschinen entwickelten Prozessoren (wie Vektorprozessoren und Spezialmaschinen) zu bieten.
  • Zusätzlich sind Computer inhärent parallel skalierbar, sodass sie bei Bedarf entsprechend den wachsenden Anforderungen aktualisiert werden können.

Nachteile

  • Manchmal gibt es physikalische Einschränkungen, die die Geschwindigkeit eines Prozessors unabhängig vom wirtschaftlichen Faktor begrenzen.
  • Unüberwindbare physikalische Barrieren, wie die Lichtgeschwindigkeit, die Größe der Prozessorelemente und die durch elektrische Phänomene auf kleinen Skalen verursachten Probleme, schränken die maximale Kapazität eines Uniprozessorsystems ein, wobei die offensichtliche Wahl darin besteht, viele Prozessoren zu platzieren, die kooperativ Berechnungen durchführen.

Client-Server-Architektur

Diese Architektur besteht im Wesentlichen aus einem Client, der auf ein anderes Programm (Server) zugreift, das geantwortet hat. Obwohl diese Idee auf einem Computer angewendet werden kann, um Programme auszuführen, ist sie in einem Multiuser-Betriebssystem vorteilhafter, das über ein Netzwerk auf mehrere Computer verteilt ist.

In dieser Architektur wird die Verarbeitungskapazität der Server zwischen den Clients aufgeteilt.

Charakteristika

Absender einer Anfrage: wird als Client bezeichnet.

  • Er ist der Initiator von Anfragen und spielt daher eine aktive Rolle in der Kommunikation (Master-Gerät).
  • Wartet und erhält Antworten vom Server.
  • Im Allgemeinen kann er, sobald die Verbindung hergestellt ist, mit mehreren Servern gleichzeitig verbunden sein.
  • Interagiert typischerweise direkt mit den Endbenutzern über eine grafische Benutzeroberfläche.

Empfänger der vom Client gesendeten Anfrage: wird als Server bezeichnet.

  • Wartet zu Beginn auf Anfragen von Clients und spielt dann eine passive Rolle in der Kommunikation (Slave-Gerät).
  • Nach Eingang einer Anfrage verarbeitet er sie und sendet dann die Antwort an den Client.
  • Hat normalerweise Verbindungen von einer großen Anzahl von Clients (in einigen Fällen kann die maximale Anzahl der Zugriffe beschränkt sein).
  • Es kommt nicht oft zu einer direkten Interaktion mit den Endnutzern.
Verteilte Systeme

"Systeme, deren Hardware- und Softwarekomponenten, die auf vernetzten Computern laufen, kommunizieren und ihre Aktionen koordinieren, indem sie Nachrichten senden, um ein Ziel zu erreichen. Die Kommunikation wird über ein Protokoll nach einem Client-Server-Schema hergestellt."

Eigenschaften:

  • Gleichzeitigkeit: Diese Eigenschaft von verteilten Systemen ermöglicht es, dass die im Netzwerk verfügbaren Ressourcen gleichzeitig von Benutzern und/oder Agenten verwendet werden, die im Netzwerk interagieren.
  • Mangel an globaler Uhr: Die Koordination für die Übertragung von Nachrichten zwischen den verschiedenen Komponenten zur Erfüllung einer Aufgabe erfolgt nicht über ein allgemeines Timing, sondern ist gleichmäßiger auf die Komponenten verteilt.
  • Unabhängige Ausfälle von Komponenten: Jede Komponente des Systems kann unabhängig ausfallen, sodass andere ihre Aktionen weiterhin ausführen können. Dies ermöglicht eine effizientere Ausführung der Aufgaben, da das gesamte System weiterhin funktioniert.

Vorteile:

Wirtschaftlichkeit, höhere Zuverlässigkeit, Flexibilität, gemeinsame Nutzung von Ressourcen

Design von Echtzeit-Software

Die Echtzeit-Software ist eng mit der externen Welt verbunden, d. h. Echtzeit-Software muss auf Probleme in einer Zeit reagieren, die durch den Umfang des Problems vorgegeben ist. Da Echtzeit-Software unter sehr strengen Leistungsbeschränkungen arbeiten muss, wird das Design der Software oft sowohl von der Software- als auch von der Hardware-Architektur, der Art des Betriebssystems für die Anwendung und sowohl der Programmiersprache als auch der voraussichtlichen Designstatistiken bestimmt.

Entradas relacionadas: