Was ist Architektur?
The 7 Blind Man and the Elephant.
Analog zu den verschiedenen Architektursichten auf ein und dasselbe System erzählt diese indische Überlieferung die Geschichte eines weisen Königs, der sieben seiner weisesten Gefolgsleute - allesamt blind - mit der Aufgabe betraute, das Aussehen eines Elefanten zu bestimmen und ihm darüber zu berichten. The 7 Blind Man and the Elephant weiterlesen
Software Architektur - Eine Vision
Der Aufbau einer technologischen Infrastruktur, von einer Anwendung bis hin zu unternehmensweiten IT Umgebungen, erfordert es eine Vision des Ergebnisses zu haben bevor man den ersten Schritt unternimmt. Diese Vision und der Weg hin zur Umsetzung ist das Wesentliche von Architektur.
Microsoft glaubt daran, dass das Ausloten des "Bereichs des Möglichen" die Grundlage alles Handelns kreativer Entwickler, IT Professionals und Business-Entscheidern ist, die einer Mission folgen. Architektur erzeugt eine über das Individuum hinausgehende Ideen-Gemeinschaft durch eine gemeinsame Design-Sprache. Architektur überwindet die Grenzen zwischen Systemen und führt deren geschäftliche Funktionen zusammen.
Microsoft glaubt, dass diese vier grundlegenden Komponenten helfen, eine Architektur zur Realität werden zu lassen:
Vorausdenken - die Zukunft vorhersehen und den Wandel einplanen
Mehr Lernen - rüsten Sie sich und Ihr Unternehmen mit dem erfolgsnotwendigen Wissen aus
Jetzt Lösen - gehen Sie schwierige Probleme mit praktikablen Ratschlägen und Werkzeugen an
Ideen teilen - bauen Sie eine Gemeinschaft von Gleichgesinnten auf, die Fragen stellen und Antworten geben können
Unsere Ressourcen für Ihren Erfolg finden Sie auf diesen Seiten und bei Microsoft Mitarbeitern in der ganzen Welt. Architektur ist komplex, deshalb haben wir die notwendigen Vorkehrungen getroffen um Ihnen die Informationen, Best Practices und Werkzeuge zu bieten, die Ihnen helfen können die Komplexität zu meistern und den Mehrwert für Ihr Business und für Sie persönlich zu erzeugen.
Der "Bereich des Möglichen" winkt, und wir sind gespannt darauf die Reise mit Ihnen gemeinsam machen zu können.
How Do You Define Software Architecture?
Oft gestellt ist die Frage nach der Definition der "Software-Architektur". Das amerikanische Software-Engineering Institute (SEI) der Carnegie-Mellon University ist sich hier ganz sicher:"There is no standard, universally-accepted definition of the term, "software architecture," although there is no shortage of definitions, either. ".
Hierzu werden auf der Online-Präsentation des Instituts gängige Definitionen gesammelt und präsentiert.
Was ist Softwarearchitektur?
Eine brauchbare Definition ist die folgende:
“Software architecture is loosely defined as the organizational structure of a software system including components, connections, constraints, and rationale. Components can be small pieces of code, such as modules, or larger chunks, such a stand-alone programs like database management systems. Connections in an architecture are abstractions for how components interact in a system, e.g., procedure calls, pipes, and remote procedure calls. An architecture has various constraints and rationales associated with it, including the constraints on component selection and the rationale for choosing a specific component in a given situation.” Paul Clements, 1994.
Softwarearchitektur beschreibt die Struktur des Anwendungssystems im Großen, die globalen Kontrollstrukturen, die Protokolle für Kommunikation, Synchronisation und Datenzugriff, die Zuordnung von Funktionalitäten zu Substrukturen und die physische Verteilung der Komponenten.
Was liefert die Software Architektur?
Software Architektur:
liefert eine Beschreibung des Systems auf einem hohen Abstraktionsgrad und ermöglicht so schon früh die Kommunikation zwischen den unterschiedlichen Interessensgruppen (Auftraggeber, Auftragnehmer, Entwickler, Nutzer, Betreiber etc.).
legt grundlegende Designentscheidungen zu einem frühen Zeitpunkt fest und bestimmt damit weitgehend die weiteren Entwicklungsschritte.
dient häufig als Basis für eine Familie von ähnlichen Applikationen und trägt durch Wiederverwendung zur Reduzierung der Entwicklungskosten bei.
Anforderungen an Software Architektur
Verständlichkeit:
Um Eigenschaften wie Changeability und Reusability zu ermöglichen, muss der Zweck, der hinter jedem Teil der Software und dessen Design steht, klar erkennbar sein. Ist der Zweck nicht erkennbar oder missverständlich, besteht die Gefahr, dass bei Veränderungen funktionale und nicht-funktionale Eigenschaften verloren gehen.
Adaptierbarkeit:
Das Softwaresystem soll leicht zu ändern bzw. zu erweitern sein.
Lose Kopplung zwischen Komponenten:
Eine enge Kopplung zwischen Komponenten bewirkt, dass Änderungen schwer durchführbar sind, da die Änderung in einer Komponente Änderung in anderen Komponenten nach sich zieht.
Interoperabilität und Kompatibilität:
Software Systeme arbeiten nicht total getrennt von der Umwelt. Es müssen genau definierte Schnittstellen nach außen geschaffen werden, über die die Kommunikation abläuft.
Wiederverwendbarkeit:
Wiederverwendbarkeit teilt sich in zwei Bereiche. Erstens in den Bereich der Wiederverwendung von bereits entwickelten Komponenten, und zweitens in den Bereich der Entwicklung von wiederverwendbaren Komponenten.
Performance:
Die Performance des Gesamtsystems muss den Anforderungen und Erwartungen der Benutzer entsprechen.
Zuverlässigkeit:
Verlässlichkeit stellt die Fähigkeit von Software dar, mit dem Auftreten von Fehlern und mit falscher Verwendung durch den Benutzer umzugehen. Der erste Aspekt wird mit Fehlertoleranz und der zweite mit Robustheit bezeichnet. Bei beiden muss im Fehlerfall mit einer geeigneten Maßnahme durch das Programm reagiert werden, um die Integrität des Systems als ganzes nicht zu gefährden.
Testbarkeit:
Das Testen von großen und komplexen Softwaresystemen bringt beträchtliche Kosten mit sich. Bei gut testbaren Systemen kann die Funktion kleiner Teile des Gesamtsystems entkoppelt vom Rest überprüft werden.