Softwarearchitektur vs. Systemarchitektur vs. Klassendiagramme?


11

Ich bin ziemlich verwirrt über die folgenden Begriffe:

Softwarearchitektur

Bei der Softwareanwendungsarchitektur wird eine strukturierte Lösung definiert, die alle technischen und betrieblichen Anforderungen erfüllt und gleichzeitig gemeinsame Qualitätsmerkmale wie Leistung, Sicherheit und Verwaltbarkeit optimiert. Es beinhaltet eine Reihe von Entscheidungen, die auf einer Vielzahl von Faktoren basieren. Jede dieser Entscheidungen kann erhebliche Auswirkungen auf die Qualität, Leistung, Wartbarkeit und den Gesamterfolg der Anwendung haben. ( Microsoft )

Systemarchitektur

Eine Systemarchitektur ist ein konzeptionelles Modell, das die Struktur, das Verhalten und weitere Ansichten eines Systems definiert. 1 Eine Architekturbeschreibung ist eine formale Beschreibung und Darstellung eines Systems, die so organisiert ist, dass das Denken über die Strukturen und Verhaltensweisen des Systems ( Wiki ) unterstützt wird.

Klassendiagramme

In der Softwareentwicklung ist ein Klassendiagramm in der Unified Modeling Language (UML) eine Art statisches Strukturdiagramm, das die Struktur eines Systems beschreibt, indem die Klassen des Systems, ihre Attribute, Operationen (oder Methoden) und die Beziehungen zwischen Objekten angezeigt werden. ( Wiki )

Wenn ich diese Beschreibungen lese, beschreiben alle diese die Interaktionen zwischen verschiedenen Modulen der Anwendung. Was sind jedoch die Unterschiede zwischen diesen?
Was ich denke / versucht habe, diese Begriffe zu vergleichen :

  • Klassendiagramme sind keine Form der Systemarchitektur, da die obige Beschreibung ( structure, behavior, and more views of a system) impliziert, dass in einer Architektur keine Implementierungsdetails vorhanden sind, während Klassendiagramme die Implementierung beschreiben und wahrscheinlich eher in Richtung Design als in Richtung Architektur gehen.
  • Ich denke, Systemarchitektur ist eine Architektur, die auch externe Interaktionen (wie Datenbank) umfasst, während sich die Softwarearchitektur auf die Anwendung selbst konzentriert.

1
Vielleicht sind Klassendiagramme eine Ausgabe der Softwarearchitektur-Aktivität, ähnlich wie die Baupläne eines Gebäudes eine Ausgabe des Gebäudearchitekten ...
FrustratedWithFormsDesigner

Antworten:


7

Die Systemarchitektur beschreibt die Komponenten des Systems. Zum Beispiel könnten Sie ein Auftragserfassungssystem haben, das besteht aus:

Web-Frontend, Business Layer Service und Datenspeicher.

Sie sollten also ein Diagramm auf hoher Ebene erstellen, das dies zeigt.

Die Architektur von Softwareanwendungen beschreibt die Architektur einer bestimmten Komponente. Eine der Komponenten des Auftragserfassungssystems ist beispielsweise das Web-Frontend. Die Anwendungsarchitektur zeigt die verschiedenen Ebenen und Interaktionen dieser Komponente. Responsive UI, Model View Controller, Webdienst-Callouts, wie die Protokollierung durchgeführt wird usw. Es gibt eine Vorstellung von der einzelnen Komponente und den Ebenen in dieser Komponente, die Teil des größeren Systems ist.

In der Regel werden detailliertere Diagramme erstellt, die zeigen, wie diese Komponente erstellt wird.

Schließlich tauchen Klassendiagramme tiefer in die Architektur von Softwareanwendungen ein. Wie sieht beispielsweise der Vertrag für die Protokollierungsschnittstelle aus? Wie wird View mit dem Controller interagieren ... und so weiter. Diese werden die Softwareanwendungsarchitektur für eine bestimmte Komponente des Systems detaillierter beschreiben.

Es sollte viele davon geben, wenn die bestimmte Komponente groß und komplex ist.


2

Einige zusätzliche Punkte:

  • System ist der breiteste Begriff und in der Regel die höchste Ebene, am wenigsten detailliert.
  • Ein Teil des Systems kann als Software klassifiziert werden.
  • Ein Teil der Software kann anhand von Klassendiagrammen beschrieben werden.

Last but not least: Bei Architektur geht es um einmalige Entscheidungen, auf die man später nur schwer oder gar nicht zurückgreifen kann, ohne alles neu aufzubauen. Die beste Definition von Architektur, die sie vom Design unterscheidet, ist "alles, was wirklich teuer zu ändern ist". In der Architektur finden Sie normalerweise die Wahl für eine Programmiersprache, das Betriebssystem, die Marke einer relationalen Datenbank, was auch immer Sie an eine Art von Lösung bindet. Was als Architektur klassifiziert wird, hängt also auch vom System selbst ab und davon, wie (un) flexibel es in Bezug auf den Aspekt ist.


0

Klassendiagramme unterscheiden sich erheblich von den übrigen beiden Begriffen - sie zeigen, was Klassen anderen Klassen bieten und wie sie miteinander interagieren. Die Begriffe "Systemarchitektur" und "Softwarearchitektur" sorgen jedoch für Verwirrung und bedürfen weiterer Klärung.

Es ist wichtig zu wissen, dass sich ein "System" nicht nur auf Softwarekomponenten bezieht, sondern auch auf andere Komponenten wie Hardwarekomponenten. Wenn ein System nur ein Softwaresystem enthält, gibt es keinen Unterschied zwischen beiden Begriffen. Wenn ein System jedoch andere Nicht-Softwarekomponenten enthält, unterscheidet sich die Softwarearchitektur offensichtlich erheblich von der Systemarchitektur des Systems.


Sollte die Systemarchitektur auch so etwas wie ein GUI-Modul enthalten? @ Tushar
KingBoomie

Ja, es kann und muss keine Softwarekomponente sein. @ RickBeeloo
Tushar

Sie benötigen jedoch eine Klasse in der Software, um Benutzereingaben zu akzeptieren und dem Benutzer etwas anzuzeigen? Es sollte also auch eine Softwarekomponente sein?
KingBoomie

Ja und Nein. Nicht alle Verbraucher eines Softwaresystems sind Menschen :)
Tushar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.