Ein Systemarchitekt ist ein Experte für Informations- und Kommunikationstechnologie . Systemarchitekten definieren die Architektur eines computergestützten Systems (d. h. eines Systems aus Software und Hardware), um bestimmte Anforderungen zu erfüllen . Diese Definitionen umfassen: die Aufteilung des Systems in Komponenten, die Interaktionen und Schnittstellen der Komponenten (einschließlich der Interaktionen mit der Umgebung, insbesondere dem Benutzer) sowie die Technologien und Ressourcen, die für Design und Implementierung verwendet werden.
Die Arbeit des Systemarchitekten sollte darauf abzielen, Implementierungsprobleme zu vermeiden und unvorhergesehene Erweiterungen/Änderungen in späteren Phasen problemlos zu ermöglichen. Aufgrund der hierfür erforderlichen umfassenden Erfahrung ist der Systemarchitekt typischerweise ein sehr erfahrener Technologieexperte mit fundierten, aber allgemeinen Kenntnissen in Hardware, Software und ähnlichen (Benutzer-)Systemen. Vor allem muss der Systemarchitekt über ein gutes Verständnis der Erfahrungswelt der Benutzer verfügen. Beispielsweise muss der Architekt eines Flugsicherungssystems mit allen Aufgaben eines Flugsicherungssystems, einschließlich derer aller Benutzerebenen, mehr als nur oberflächlich vertraut sein.
Der Titel Systemarchitekt impliziert eine höhere Verantwortung für das Design als ein Systemingenieur , Softwareingenieur oder Programmierer , obwohl sich die täglichen Tätigkeiten überschneiden können.
Überblick
Systemarchitekten arbeiten mit verschiedenen Stakeholdern innerhalb einer Organisation zusammen, um die unterschiedlichen Anforderungsebenen, den Anwendungsbereich, die geeigneten Technologien und den voraussichtlichen Entwicklungsprozess zu verstehen. Ihre Arbeit umfasst die Ermittlung mehrerer Design- und Implementierungsalternativen, deren Bewertung anhand aller identifizierten Einschränkungen (wie Kosten, Zeitplan, Platzbedarf, Energieverbrauch, Sicherheit, Benutzerfreundlichkeit, Zuverlässigkeit, Wartbarkeit, Verfügbarkeit und weitere Eigenschaften ) sowie die Auswahl der geeignetsten Optionen für die weitere Entwicklung. Die Ergebnisse dieser Arbeit definieren die Kerneigenschaften des Systems und diejenigen, die später am schwierigsten zu ändern sind.
In kleinen Systemen wird die Architektur typischerweise direkt von den Entwicklern definiert. In größeren Systemen sollte jedoch ein Systemarchitekt eingesetzt werden, der das Gesamtsystem entwirft und als Schnittstelle zwischen Nutzern, Auftraggebern und anderen Stakeholdern einerseits und den Entwicklern andererseits fungiert. Sehr große, hochkomplexe Systeme können mehrere Architekten umfassen. In diesem Fall arbeiten die Architekten zusammen, um ihre Subsysteme oder Aspekte zu integrieren und berichten an einen Hauptarchitekten, der für das Gesamtsystem verantwortlich ist. Im Allgemeinen besteht die Rolle des Architekten darin, als Vermittler zwischen Nutzern und Entwicklern zu agieren und die Bedürfnisse und Anforderungen der Nutzer mit dem in Einklang zu bringen, was die Entwickler innerhalb der gegebenen technischen Rahmenbedingungen für realisierbar halten.
Im Systemdesign sind die Architekten (und Ingenieure) verantwortlich für:
- Die Interaktion mit dem /den Benutzer (n), dem/den Sponsor (en) und allen anderen Beteiligten , um deren (sich entwickelnde) Bedürfnisse zu ermitteln.
- Erstellung von Systemanforderungen auf höchstem Niveau , basierend auf den Bedürfnissen der Nutzer und anderen Einschränkungen.
- Sicherstellen, dass diese Reihe von übergeordneten Anforderungen konsistent , vollständig, korrekt und operationell definiert ist .
- Durchführung von Kosten-Nutzen-Analysen , um zu ermitteln, ob die Anforderungen am besten durch manuelle, Software- oder Hardwarefunktionen erfüllt werden ; maximale Nutzung von handelsüblichen oder bereits entwickelten Komponenten .
- Entwicklung von Partitionierungsalgorithmen ( und anderen Prozessen ), um alle gegenwärtigen und absehbaren Anforderungen in diskrete Partitionen aufzuteilen , sodass ein Minimum an Kommunikation zwischen den Partitionen sowie zwischen den Benutzern und dem System erforderlich ist.
- Die Aufteilung großer Systeme in (aufeinanderfolgende Schichten von) Subsystemen und Komponenten, die jeweils von einem einzelnen Ingenieur oder einem Team von Ingenieuren oder einem untergeordneten Architekten bearbeitet werden können.
- Die Schnittstelle zu den Konstruktions- und Implementierungsingenieuren sowie den Architekten soll so gestaltet werden, dass alle während der Konstruktion oder Implementierung auftretenden Probleme im Einklang mit den grundlegenden Konstruktionskonzepten sowie den Bedürfnissen und Einschränkungen der Benutzer gelöst werden können.
- Sicherstellen, dass ein maximal robustes und erweiterbares Design entwickelt wird.
- Gemeinsam mit den Designern, Testingenieuren und Benutzern wird ein Satz von Akzeptanztestanforderungen erstellt, der sicherstellt, dass alle übergeordneten Anforderungen, insbesondere für die Mensch-Computer-Schnittstelle , erfüllt wurden .
- Erstellung von Produkten wie Skizzen , Modellen , einer ersten Bedienungsanleitung und Prototypen , um die Anwender und die Ingenieure stets auf dem Laufenden zu halten und die Übereinstimmung über das bereitzustellende System während seiner Weiterentwicklung sicherzustellen.
- Sicherstellen, dass alle Architekturprodukte und Produkte mit architektonischem Input stets auf dem neuesten Stand sind und niemals ernsthaft ins Hintertreffen geraten oder veralten.
Systemarchitekt: Themen
Die Architektur großer Systeme wurde entwickelt, um Systeme zu handhaben, die zu komplex sind, als dass eine einzelne Person sie konzipieren, geschweige denn entwerfen könnte. Systeme dieser Größenordnung werden immer häufiger zur Norm, weshalb Architekturansätze und Architekten zunehmend benötigt werden, um die Probleme großer bis sehr großer Systeme zu lösen. Im Allgemeinen werden immer größere Systeme durch einen Schichtenaufbau auf ein überschaubares Maß reduziert. Jede Schicht besteht dabei aus mehreren einzeln verständlichen Unterschichten, von denen jede ihren eigenen leitenden Ingenieur und/oder Architekten hat. Eine vollständige Schicht einer Ebene wird als funktionale Komponente einer höheren Schicht dargestellt (und kann in den obersten Schichten vollständig verschwinden).
Nutzer und Sponsoren
Von Architekten wird erwartet, dass sie menschliche Bedürfnisse verstehen und funktionale sowie ästhetisch ansprechende Produkte entwickeln. Ein guter Architekt ist zudem maßgeblich daran beteiligt, die Vision der Nutzer vom Endprodukt zu bewahren und den Prozess der Ableitung von Anforderungen aus dieser Vision sowie deren Umsetzung zu steuern.
Architekten folgen keinen starren Vorgaben. Sie kommunizieren mit Nutzern/Auftraggebern auf eine interaktive und eher informelle Weise – gemeinsam ermitteln sie die tatsächlichen Anforderungen an das geplante Endsystem. Der Architekt muss ständig mit den Endnutzern und den (leitenden) Systemingenieuren in Kontakt bleiben. Daher muss er die Nutzerumgebung und das Problem sowie die technischen Rahmenbedingungen potenzieller Lösungsräume genau kennen.
Hohe Anforderungen
Die Spezifikation der Benutzeranforderungen sollte ein gemeinsames Ergebnis von Benutzern und Architekt sein: Die Benutzer bringen ihre Bedürfnisse und Wünsche ein, der Architekt sein Wissen darüber, was unter Berücksichtigung von Kosten, Zeit und anderen Einschränkungen realisierbar ist. Sobald die Benutzerbedürfnisse in eine Reihe von übergeordneten Anforderungen übersetzt sind, ist der beste Zeitpunkt, die erste Version des Akzeptanztests zu schreiben . Dieser sollte anschließend sorgfältig an die Anforderungen angepasst werden. So wissen die Benutzer genau, was sie erhalten. Dies dient auch als Schutz vor nicht testbaren Anforderungen, Missverständnissen und einer schleichenden Ausweitung der Anforderungen.
Die Entwicklung der ersten Ebene der technischen Anforderungen ist keine rein analytische Aufgabe und sollte sowohl Architekt als auch Ingenieur einbeziehen. Müssen Kompromisse eingegangen werden, um Einschränkungen zu erfüllen, muss der Architekt sicherstellen, dass das Endprodukt und sein Erscheinungsbild den Benutzervorgaben möglichst nahekommen. Der Ingenieur sollte sich auf die Entwicklung eines Designs konzentrieren, das die Einschränkungen optimiert und gleichzeitig ein funktionsfähiges, zuverlässiges, erweiterbares und robustes Produkt gewährleistet. Die Bereitstellung der benötigten Dienste für die Benutzer ist die eigentliche Funktion eines entwickelten Systems. Da Systeme jedoch immer größer und komplexer werden und sich ihr Fokus von einfachen Hardware- und Softwarekomponenten entfernt, hat sich die enge Anwendung traditioneller Systementwicklungsprinzipien als unzureichend erwiesen – die Anwendung allgemeinerer Prinzipien der System-, Hardware- und Softwarearchitektur auf den Entwurf von (Sub-)Systemen ist erforderlich. Architektur kann auch als vereinfachtes Modell des fertigen Endprodukts betrachtet werden. Ihre Hauptfunktion besteht darin, die Teile und ihre Beziehungen zueinander so zu definieren, dass das Ganze eine konsistente, vollständige und korrekte Darstellung dessen ist, was die Nutzer im Sinn hatten – insbesondere bei der Mensch-Computer-Schnittstelle. Sie dient außerdem dazu, sicherzustellen, dass die Teile wie gewünscht zusammenpassen und zueinander in Beziehung stehen.
Es ist wichtig, zwischen der Architektur der Benutzerwelt und der Systemarchitektur zu unterscheiden. Erstere repräsentiert und adressiert Probleme und Lösungen in der Benutzerwelt . Sie wird hauptsächlich in den Mensch-Computer-Schnittstellen (MCI) des Systems abgebildet. Das System selbst repräsentiert die technischen Lösungen – wie der Ingenieur die Komponenten der technischen Infrastruktur zur Unterstützung der MCI entwickeln, auswählen und kombinieren möchte. Fehlt ein erfahrener Systemarchitekt, besteht leider die Tendenz, die beiden Architekturen zu verwechseln. Doch der Ingenieur denkt in Hardware- und Softwarekategorien und im technischen Lösungsraum, während die Benutzer beispielsweise Probleme lösen wollen, wie etwa Personen in angemessener Zeit und mit vertretbarem Energieaufwand von Punkt A nach Punkt B zu bringen oder Kunden und Mitarbeitern die benötigten Informationen zukommen zu lassen. Von einem Systemarchitekten wird erwartet, dass er sowohl Kenntnisse über die Architektur der Benutzerwelt als auch über (alle potenziell nützlichen) Systemarchitekturen vereint . Erstere ist eine gemeinsame Aufgabe mit den Benutzern, letztere eine gemeinsame Aufgabe mit den Ingenieuren. Das Produkt ist ein Satz von übergeordneten Anforderungen, die die Bedürfnisse der Nutzer widerspiegeln und von den Ingenieuren zur Entwicklung von Systemdesignanforderungen verwendet werden können.
Da sich die Anforderungen im Laufe eines Projekts, insbesondere eines langen Projekts, weiterentwickeln, wird ein Architekt benötigt, bis das System vom Benutzer akzeptiert wird: Der Architekt stellt sicher, dass alle Änderungen und Interpretationen, die während der Entwicklung vorgenommen werden, die Sichtweise der Benutzer nicht beeinträchtigen.
Kosten-Nutzen-Analysen
Architekten sind Generalisten. Von ihnen wird nicht erwartet, dass sie Experten für eine bestimmte Technologie sind, sondern dass sie über Kenntnisse in vielen Technologien verfügen und deren Anwendbarkeit in spezifischen Situationen beurteilen können. Sie wenden ihr Wissen in der Praxis an, bewerten die Kosten und Vorteile verschiedener Lösungen mit unterschiedlichen Technologien, beispielsweise Hardware, Software oder manuelle Eingriffe, und stellen sicher, dass das Gesamtsystem die Erwartungen der Nutzer erfüllt.
Viele handelsübliche oder bereits entwickelte Hardware- und Softwarekomponenten können unabhängig voneinander nach Kriterien wie Kosten, Reaktionszeit, Durchsatz usw. ausgewählt werden. In manchen Fällen kann der Architekt das Endsystem bereits (nahezu) selbstständig zusammenstellen. Andernfalls benötigt er möglicherweise noch die Unterstützung eines Hardware- oder Softwareentwicklers, um Komponenten auszuwählen und spezielle Funktionen zu entwerfen und zu implementieren. Die Architekten (oder Entwickler) können auch weitere Spezialisten hinzuziehen – beispielsweise in den Bereichen Sicherheit , Kommunikation , Spezialhardware , Grafik , Ergonomie , Test und Bewertung , Qualitätskontrolle , Zuverlässigkeit , Wartbarkeit , Verfügbarkeit , Schnittstellenmanagement usw. Ein effektives Systemarchitekturteam muss bei Bedarf Zugriff auf Spezialisten in kritischen Fachgebieten haben.
Partitionierung und Schichtung
Ein Architekt, der ein Gebäude plant, arbeitet am Gesamtentwurf und stellt sicher, dass es den Bewohnern gefällt und ihnen nützt. Während für den Bau eines Einfamilienhauses ein einzelner Architekt ausreichen mag, sind bei der Planung eines neuartigen Hochhauses oft zusätzlich viele Ingenieure erforderlich, um die detaillierten Probleme zu lösen. Bei großen und komplexen Projekten können Teile der Architektur als unabhängige Komponenten geplant werden. So kann beispielsweise beim Bau einer Wohnanlage ein Architekt für die gesamte Anlage und je ein weiterer Architekt für die einzelnen Gebäudetypen Teil eines Architektenteams sein.
Auch große Automatisierungssysteme benötigen einen Architekten und umfangreiche Ingenieurskenntnisse. Bei ausreichend großen und komplexen Systemen kann der Systemarchitekt Teile der Arbeit an einen Hardware- und/oder Softwarearchitekten delegieren, obwohl alle Mitglieder eines gemeinsamen Architekturteams sein können.
Der Architekt sollte die Systemanforderungen auf Hauptkomponenten oder Subsysteme aufteilen, die in den Verantwortungsbereich eines einzelnen Hardware- oder Softwareentwicklers bzw. eines Entwicklungsleiters und seines Teams fallen. Der Architekt darf jedoch niemals als Entwicklungsleiter betrachtet werden. (Bei ausreichend großen und/oder komplexen Komponenten delegiert der Chefarchitekt Teilaufgaben an spezialisierte Architekten.) Idealerweise ist jede Komponente bzw. jedes Subsystem so eigenständig, dass es als vollständige Komponente, getrennt vom Gesamtsystem, mit einer einfachen Testumgebung getestet werden kann, die simulierte Eingaben liefert und Ausgaben aufzeichnet. Das heißt, es ist nicht notwendig, die Funktionsweise eines Flugsicherungssystems zu kennen, um ein Datenmanagement-Subsystem dafür zu entwerfen und zu entwickeln. Es genügt, die Betriebsbedingungen des Subsystems zu kennen.
Ein guter Architekt stellt sicher, dass das System, egal wie komplex, auf relativ einfachen und klaren Konzepten für jedes (Sub-)System oder jede Schicht basiert und für alle, insbesondere die Benutzer, ohne spezielle Schulung leicht verständlich ist. Der Architekt verwendet ein Minimum an Heuristiken , um sicherzustellen, dass jede Partition klar definiert und frei von Behelfslösungen , Workarounds , Abkürzungen oder verwirrenden Details und Ausnahmen ist. Wenn sich die Benutzerbedürfnisse ändern (sobald das System eingeführt und in Betrieb ist), lässt sich ein einfaches Konzept viel leichter weiterentwickeln als eines, das mit Ausnahmen, Sonderfällen und viel Kleingedrucktem überladen ist.
Die Schichtung der Architektur ist wichtig, um sie auf jeder Ebene ausreichend einfach zu halten , sodass sie für eine einzelne Person verständlich bleibt. Beim Aufstieg in höhere Ebenen werden ganze Systeme der unteren Ebenen zu einfachen Komponenten der oberen Ebenen und können auf den obersten Ebenen vollständig verschwinden .
Abnahmetest
Der Abnahmetest ist eine Hauptverantwortung des Systemarchitekten. Er ist das wichtigste Mittel, mit dem der Projektleiter den Anwendern nachweist, dass das System den ursprünglichen Plänen entspricht und dass alle beteiligten Architekten und Ingenieure ihre Ziele erreicht haben.
Kommunikation mit Benutzern und Ingenieuren
Ein Bauarchitekt verwendet Skizzen, Modelle und Zeichnungen. Ein Architekt für Automatisierungssysteme (oder Software bzw. Hardware) sollte Skizzen, Modelle und Prototypen nutzen, um verschiedene Lösungen und Ergebnisse mit Anwendern, Ingenieuren und anderen Architekten zu diskutieren. Ein früher Entwurf des Benutzerhandbuchs ist von unschätzbarem Wert, insbesondere in Verbindung mit einem Prototyp. Dennoch ist es wichtig, dass ein praktikables, gut formuliertes Anforderungsprofil erstellt wird , das für den Kunden verständlich ist (damit er es ordnungsgemäß freigeben kann; die wichtigsten Anwenderanforderungen sollten jedoch zur besseren Verständlichkeit in einem vorläufigen Benutzerhandbuch festgehalten werden). Es muss präzise und eindeutig formuliert sein, damit Designer und andere Umsetzer keine Zweifel an Bedeutung oder Intentionen haben. Insbesondere müssen alle Anforderungen testbar sein , und der erste Entwurf des Testplans sollte parallel zu den Anforderungen entwickelt werden. Alle Beteiligten sollten die Abnahmetestbeschreibungen oder ein gleichwertiges Dokument zu Beginn des Programms als alleinigen Maßstab für die Erfüllung der Anforderungen freigeben .
Architektenmetapher
Die Verwendung des Begriffs „Architekt“ in jeglicher Form ist in vielen US-Bundesstaaten durch sogenannte „Title Acts“ geregelt, und man muss als Bauarchitekt zugelassen sein, um ihn verwenden zu dürfen. [ 1 ]
In Großbritannien ist die Verwendung des Begriffs „Architekt“ (im Kontext von Software und IT) von den Nutzungsbeschränkungen der Architektenkammer ausgenommen. [ 2 ]
Siehe auch
- Unternehmensarchitektur
- Unternehmensarchitekt
- Hardwarearchitektur
- Anforderungsanalyse
- Softwarearchitektur
- Softwareentwicklung
- Systemarchitektur
- Systemmodellierung
- Systemtechnik
- Systemdesign
- Business-Analyst
- Serviceorientiertes Modellierungsframework (SOMF)
Referenzen
- Der Begriff „Architekt“ ist ein gesetzlich geschützter Berufstitel , der in den meisten Ländern der Welt auf Personen beschränkt ist, die in der Planung, dem Entwurf und der Bauleitung von Gebäuden ausgebildet sind . In diesen Ländern ist es Nicht-Architekten untersagt, diesen Titel zu verwenden. Im Bundesstaat New York und anderen US-Bundesstaaten ist die unbefugte Verwendung des Titels „Architekt“ eine Straftat und wird strafrechtlich verfolgt . ( Quelle : „Architecture: What's Legal, What's Not“ (PDF) . AIA New York State . Abgerufen am 9. Juli 2012. )„NYS Architektur: Gesetze, Regeln & Vorschriften: Artikel 147 Architektur“ . Abgerufen am 9. Juli 2012 .
- ^ „Was wir tun, um die Verwendung des Titels ‚Architekt‘ zu regeln“" . Architects Registration Board . Abgerufen am 8. Juli 2019 .
Weiterführende Literatur
- Donald Firesmith et al.: Der Methodenrahmen für die Entwicklung von Systemarchitekturen , (2008)
- Mark W. Maier und Rechtin, Eberhardt, Die Kunst der Systemarchitektur , dritte Auflage (2009)
- Gerrit Muller, „Systemarchitektur: Eine betriebswirtschaftliche Perspektive“, CRC Press, (2012).
- Eberhardt Rechtin , Systems Architecting: Creating & Building Complex Systems , 1991.
- JH Saltzer , MF Kaashoek, Principles of Computer System Design: An Introduction , Morgan Kaufmann, 2009.
- Rob Williams, Computer Systems Architecture: a Networking Approach , Zweite Auflage (Dezember 2006).
Externe Links
- Grundlagen des Rechner-Systemdesigns: Eine Einführung – MIT OpenCourseWare
- Systemarchitektur: Canaxia holt einen Architekten an Bord , Artikel