Requirements for Software Architects

Requirements for Software Architects

Requirements for Software Architects

Agile Requirements Engineering und seine Rollen
 

 

Willkommen zurück zum zweiten Artikel in unserer Blog-Serie „Requirements for Software Architects“. Wir widmen uns in diesem Beitrag dem agilen Requirements Engineering und seinen Rollen.

Grundbegriffe von Softwarearchitektur

Definition

Es befinden sich zahlreichen Definitionen von Softwarearchitektur. Wir beschränken uns deshalb nur auf zwei davon:

  1. Die grundlegenden Konzepte oder Eigenschaften eines Systems in seiner Umgebung, verkörpert in seinen Elementen, Beziehungen und in den Prinzipien seines Designs und seiner Entwicklung. (ISO/IEC/IEEE 42010)
  2. Die Softwarearchitektur einer Software oder Computersystems ist die eine oder mehrere Strukturen des Systems, welche die Softwareelemente, die extern sichtbaren Eigenschaften dieser Elemente und die Beziehungen zwischen ihnen, umfassen. (Bass, Clements, Kazman Software Architecture in Practice, Addison Wesley, 2003.) 
Aufgaben von Softwarearchitekten

Softwarearchitekten haben die Aufgabe die Softwarearchitektur aktiv zu gestalten und ihre Umsetzung und Wirksamkeit sicherzustellen. Dabei sollen sie im Wesentlichen die folgenden Ziele in einem Projekt erreichen:

  • Unterstützung von Entwurf, Implementierung, Pflege und Betrieb des Systems
  • Erfüllbarkeit der funktionalen Anforderungen sicherstellen
  • Qualitätsanforderungen in gewünschtem Maße erreichen
  • Komplexität systematisch reduzieren
  • Architekturrelevante Richtlinien für Implementierung und Betrieb spezifizieren

Die Arbeit eines Architekten kann dabei in sechs Tätigkeiten gegliedert werden:

  • Anforderungen klären
  • Strukturen entwerfen
  • Querschnittskonzepte erstellen
  • Architekturen bewerten
  • die Umsetzung begleiten
  • Architekturen kommunizieren

Der erste Schritt „Anforderungen klären“ stellt dabei die Schnittstelle unter anderem zum Requirements Engineering dar. Hierbei probiert der Architekt herauszufinden, welche Anforderungen architektonisch relevant sind.

ASR: Architektonisch bedeutende Anforderungen

Architecturally Significant Requirements (ASRs) umfassen die wichtigsten architektonischen Anforderungen. Dabei ist es egal, ob es sich um Funktionale oder nicht Funktionale Anforderungen handelt. Somit sind ASRs Anforderungen, die sich direkt auf das Architekturdesign auswirken.

Ein Architekt sollte alle NFRs mit den Stakeholdern abgestimmt und dokumentiert haben. Es ist üblich, dass eine funktionale oder nichtfunktionale Anforderung in unterschiedlichen Phasen des Software-Lebenszyklus den Status einer ASR erlangen oder verlieren kann.

Sein Entwurf und insbesondere seine Entwurfsentscheidungen sollten daher transparent machen auf Basis welcher ASRs eine Entscheidung oder ein Entwurf beruht, um Nachvollziehbarkeit zu erlangen und eine wirksame Architektur sicherzustellen.

Abbildung 9: Architecture in Technical Perspective View

Um diese zu erreichen, sollen Softwarearchitekten diese Anforderungen stets überprüfen und die Unterschiede und Besonderheiten erklären. Insbesondere der PO, RE und BA, aber auch andere Akteure, sollten für ein besseres Verständnis und eine bessere Kommunikation sensibilisiert werden .

Einige gängige Quellen für ASRs sind,

  • Anforderungsdokumentation (z.B. Product Backlog)
  • Vereinbarung zum Servicelevel (SLA)
  • Fachwissen
  • Anwendbare Standards, Richtlinien oder Richtlinien

 Solange ASRs in der Dokumentation vorhanden sind, können sie von Softwarearchitekten analysiert und verbessert werden. Sind sie jedoch nicht oder unvollständig dokumentiert, so besteht das Risiko einer unwirksamen Architektur. Eine unwirksame Architektur ist nicht in der Lage die funktionalen und nichtfunktionalen Anforderungen zu erfüllen und stellt nicht nur ein signifikantes Projektrisiko dar, sondern ist mit fortschreitender Projektlaufzeit zudem teuer zu ändern.

Architecturally Significant Requirements (ASRs) müssen deshalb Vorrang bei der Identifizierung und Dokumentation haben, um das Architekturdesign in die richtige Richtung zu leiten.

Agile Requirements Engineering

Wie bereits zuvor etabliert sollen Anforderungen nicht nur korrekt erhoben werden, sondern auch verständlich kommuniziert und ihre Erreichung geprüft werden. Dabei sind Anforderungen stetig um Wandel und bedürfen Pflege.

Agile Requirements Engineering ist ein kooperativer, iterativer und inkrementeller Ansatz, der dies erreichen soll. Er gliedert sich groß in zwei Phasen: Die Definitionsphase (Anforderungserstellung) und die eigentliche Umsetzungsphase (Entwicklung). Im Gegensatz zu den herkömmlichen Vorgehensweisen laufen die beiden Phasen, Definition und Implementierung, parallel ab.

Daraus ergeben sich viele Vorteile. Zu diesen Vorteilen gehört die schnelle und flexible Reaktion auf veränderte oder neue Gegebenheiten.

Dies wird dadurch gewährleistet, dass die Anforderungsbeschreibung nie abgeschlossen und während der gesamten Entwicklungsdauer ständig neu erfasst und angepasst wird. Das heißt, wenn einzelne Aspekte eines Prozesses von den akzeptablen Grenzen abweichen oder das resultierende Produkt nicht akzeptabel ist, muss der Prozess oder die erzielten Ergebnisse angepasst werden. Eine Anpassung sollte so schnell wie möglich erfolgen, um weitere Abweichungen zu reduzieren. Dieser Ansatz folgt vier Zielen:

  1. Kenntnis der relevanten Anforderungen auf einem angemessenen Detaillierungsgrad (zu jedem Zeitpunkt während des Systementwicklungsprozesses).
  2. Ausreichende Übereinstimmung über Anforderungen unter den Stakeholdern erreichen.
  3. Erfassen und Dokumentieren der Anforderungen gemäß der Einschränkungen und Vorgaben der Organisation.
  4. Durchführung aller anforderungsbezogenen Aktivitäten gemäß den Prinzipien des agilen Manifests.

Requirements Engineering Aktivitäten sind sehr weit gefächert und von der Art des zu entwickelnden Systems und der Organisationsspezifikation abhängig. Nichtsdestotrotz gehören auch im agile Requirements Engineering folgende vier zentrale Tätigkeiten, die von IREB etabliert wurden, dazu:

 

  • Anforderungserhebung: Die Anforderungen werden anhand unterschiedlicher Methoden möglichst effizient, vollständig und fehlerfrei ermittelt. Auch Detaillierung und Verfeinerung gehören dazu.
  • Anforderungsdokumentation: Die Anforderungen müssen adäquat und qualitativ hochwertig beschrieben werden, um die Anforderungsspezifikation mit allen relevanten Anforderungen entstehen zu lassen.
  • Anforderungsprüfung und -abstimmung: Die Anforderungsspezifikation wird auf ihre Gesamtqualität geprüft. Dazu gehört auch die inhaltliche Abstimmung mit den Stakeholdern.
  • Anforderungsverwaltung: Auch Anforderungsmanagement genannt, geht es bei der Verwaltung der Anforderungen darum, sie zur Nutzung bereitzustellen, die Versionsstände zu pflegen, eine Priorisierung zu erstellen, etc.
Der Unterschied zwischen Requirements Engineering und Requirements Management

 Die Begriffe Requirements Engineering und Requirements Management werden oft fälschlicherweise als Synonym verwendet. Wenn man von einem ganzheitlichen Requirements-Engineering-Ansatz spricht, muss man das streng genommen immer im Sinne des Anforderungsmanagements tun. Rückblickend auf die bereits genannten vier zentralen Aktivitäten bezieht sich Requirements Engineering hauptsächlich auf die ersten drei Punkte. Requirement Engineering, was ins Deutsche übersetzt wird, bedeutet Anforderungsmanagement und umfasst damit die vierte zentrale Aktivität.

Die beiden Fachtermini sind jedoch untrennbar miteinander verbunden und gehen Hand in Hand mit Requirements Management: Ohne Ermittlung gibt es keine Verwaltung und ohne effiziente Verwaltung und Aufbereitung hat die Ermittlung von Anforderungen keinen Nutzen.

Die Product Owner (PO), Business Analyst (BA) und Requirements Engineer (RE) Rollen

 Agiles Requirements Engineering geschieht nicht ad-hoc, sondern über unterschiedlichen Rollen. In der Praxis kommt es oft vor, dass es nur eine Rolle gibt (wie PO, BA, RE oder alle zusammen). Unabhängig davon wie viele Rollen in der Praxis vorhanden sind, kann die Unterteilung genutzt werden, um die unterschiedlichen Tätigkeiten und Verantwortlichkeiten des Requirements Engineering und Management gewinnbringend zu gliedern und die eigene Arbeit zu strukturieren.

Der Product Owner ist für die Wertsteigerung, genauer gesagt die Rentabilität (= ROI, Return of Investment) verantwortlich, nicht nur was das Produkt angeht, sondern auch in Bezug auf das Projektteam. Es handelt sich also um eine anspruchsvolle Aufgabe. Hierbei sind ihm drei zentrale Aufgaben zugeordnet:

  1. Vertretung der Kundeninteressen
  2. Zusammenarbeit mit dem Entwicklungsteam und Scrum Master
  3. Verwaltung des Product Backlogs

Dabei sollte er die richtige Funktionalität in der richtigen Priorität ins Projekt bringen. Daraus abgeleitet sollte er die folgenden Skills und Aufgaben meistern können:

  • Stakeholder Analyse
  • Erhebungstechniken
  • Konfliktmanagement
  • Priorisierung (z.B. Priority Poker)

Ähnlich zur PO-Rolle sollte der Business Analyst (BA) über Kreativitäts- und Erhebungstechniken verfügen. Zudem unterstützt er den Product Owner bei der Erhebung fachlicher Anforderungen, deren Akzeptanzkriterien und der Prüfung, ob und wie die Anforderungen zu den Geschäftsprozessen passen.

Zu guter Letzt kümmert sich der Requirements Engineer (RE) für die nachhaltige Spezifizierung von Anforderungen und ihre Übersetzung in das technische Umfeld.

Alle drei Rollen sollten über die folgenden Skills verfügen:

  • Stakeholder Analyse
  • Kreativitätstechniken
  • Erhebungstechniken (typischerweise mittels Befragung, Design Thinking, Persona usw.),
  • Dokumentationstechniken
  • Modellierung (typischerweise mittels UML)
  • Priorisierung von Anforderungen

Alle diese Skills können je nach Bedarf und Aufgabengebiet verwendet werden.

 

Welche verschiedenen modernen Techniken in Requirement Engineerings eingesetzt werden können, sehen wir uns im nächsten und letzten Teil der Blog-Serie an. Wir freuen uns schon Sie wiederzusehen.

 

Quellen
  • Sommerville, Ian (2009). Softwareengineering (9th ed.). Addison-Wesley. ISBN 978-0-13-703515-1.
  • Andreas Wintersteiger, Scrum Schnelleinstieg
  • McGreal, Don; Jocham, Ralph (June 4, 2018). The Professional Product Owner: Leveraging Scrum as a Competitive Advantage. Addison-Wesley Professional. ISBN 9780134686653.
  • https://t2informatik.de/
  • North, Introducing Behaviour Driven Development
  • Dan North et al.: Question about Chapter 11: Writing software that matters. (Nicht mehr online verfügbar.) Archiviert vom Original am 7. November 2009; abgerufen am 9. November 2011 (englisch): „The phrase ‘BDD is TDD done well’, while a nice compliment, is a bit out of date. […] BDD has evolved considerably over the years into the methodology we describe in the book. Back when it was focused purely on the TDD space– around 2003-2004 – this was a valid description. Now it only covers a small part of the BDD proposition“
  • Schwaber, Ken; Sutherland, Jeff (November 2017), The Scrum Guide: The Definitive Guide to Scrum: The Rules of the Game, retrieved May 13, 2020
  • “Lessons learned: Using Scrum in non-technical teams”. Agile Alliance. May 18, 2018. Retrieved April 8, 2019.
  • Ken Schwaber; Jeff Sutherland. “The Scrum Guide”. Scrum.org. Retrieved October 27, 2017.
  • https://www.scrum.org/
  • http://agilemanifesto.org/
  • https://www.isaqb.org/
  • https://swissq.it/agile/die-rollen-des-po-re-und-ba-im-vergleich/

 

 

Abbildungen

Abbildung 9: https://media.geeksforgeeks.org/wp-content/uploads/20200704172739/Untitled-Diagram160.png

Requirements for Software Architects

Requirements for Software Architects

Requirements for Software Architects

Mit Requirements Engineering zu den besten Anforderungen

 

 

Herzlich Willkommen zu unserer neuen Blog-Serie, Requirements for Software Architects!
Erfahren Sie in dieser dreiteiligen Reihe etwas über die Signifikanz von Anforderungen Ihrer Kunden, die verschiedenen Rollen des Agile Requirement Engineerings und moderne Techniken.

Abbildungs 1: Wie Projekte wirklich funktionieren

Einführung und Überblick

Requirements Engineering und Softwarearchitektur sind in der Welt der Softwareentwicklung Tätigkeitsbereiche, die große Teilverantwortungen tragen, um Softwareentwicklungsprojekte erfolgreich abzuschließen. Letztlich geht es darum, die Kundenbedürfnisse zu erfüllen und den Kunden zufrieden zu stellen. Um dies zu erreichen, muss man den Kunden richtig verstehen und wissen, was er tatsächlich braucht.
In diesem Stadium sind Anforderungen und deren Management Hauptakteure im Softwareentwicklungsprozess .
Anforderungen sind in Softwareprojekten das Abbild der Kundenwünsche. Sie dienen als zentrale Briefings für fast alle weiteren Tätigkeiten. Die korrekte Erhebung, Erfassung, Überprüfung, Pflege und Verfeinerung von Anforderungen beeinflusst folglich den gesamten Software-Lebenszyklus und ist somit entscheidend für den Erfolg von Softwareentwicklungsprojekten.
Im Software-Lebenszyklus sind die Phasen der Anforderung und der Softwarearchitektur direkt aufeinander folgend und daher besonders stark miteinander verzahnt, fehlerhaftes Anforderungsmanagement hat dementsprechend direkte, schwerwiegende Folgen auf architektonische Entscheidungen.

Abbildung 2: Software-Lebenszyklus

An dieser Stelle geht es nicht nur darum, dass der Requirements Engineer oder der Product Owner die richtigen Anforderungen (von den Kunden) aufgenommen hat, vielmehr geht es darum, dass der Softwarearchitekt den Product Owner richtig versteht und die von ihm bereitgestellten Anforderungen überprüft und analysiert, um darauf aufbauend seine architektonische Entscheidung treffen zu können.
In den folgenden Abschnitten geben wir einen Überblick über Anforderungsmanagement und Softwarearchitektur, bzw. wie sie sich einander ergänzen und gegenseitig beeinflussen. Dazu betrachten wir die beiden Rollen des Softwarearchitekten und eines Product Owners, sowie ihre Verantwortlichkeiten und Aufgaben in Softwareentwicklungsprojekten. Zuvor klären wir einige Grundbegriffe.
Anforderungen Definition und Grundbegriffe

„Requirement“ (englisch) bedeutet so viel, wie „Vorausgesetztes“ oder „verpflichtendes Erfordernis“, aber auch Erwartung. Wie bei vielen Begriffen aus der IT-Welt gibt es für den Begriff „Anforderung“ zahlreiche Definitionen.

Requirements Engineering Board (IREB) definiert Anforderung hingegen als:
• ein Bedürfnis, das von einem Stakeholder wahrgenommen wird.
• eine Fähigkeit oder Eigenschaft, die ein System haben soll.
• eine dokumentierte Darstellung eines Bedarfs, einer Fähigkeit oder eines Eigentums.

Für das International Institute of Business Analysis (IIBA) ist eine Anforderung eine brauchbare Darstellung eines Bedürfnisses, die in der Regel durch Dokumente beschrieben wird.
Daraus abgeleitet können Anforderungen als eine Aussage über den zu erreichenden Merkmalen oder die zu erbringenden Leistungen für eine Software oder System definiert werden.

Arten von Anforderungen

In der Literatur gibt es viele Unterteilungen oder Klassifizierungen von Anforderungen. Zum Zwecke dieses Inhalts betrachten wir nur zwei (bekannte) Hauptkategorien, funktionale (FR) und nicht-funktionale Anforderungen (NFR).
Nichtfunktionalen Anforderungen fallen wiederum in zwei Kategorien: Die Qualitätsanforderung oder Qualitätskriterien und die Einschränkungen (eng. constraints)

Abbildung 3: Gute vs. schlechte Anforderungen

Funktionale Anforderungen

Das „WAS“ legt die Funktionale Anforderungen fest, was das Produkt tun soll. Ein Beispiel:
„Das System soll die geleisteten Arbeitsstunden eines Mitarbeiters für einen bestimmten Zeitraum berechnen.“
Das bedeutet, dass sich die funktionalen Anforderungen lediglich auf die Verhaltensergebnisse beziehen, die die Funktionalität des Systems oder der Software liefern soll.

Nichtfunktionale Anforderungen (NFRs)

Die nicht-funktionalen Anforderungen (NFR) beschreiben, wie gut das System die Leistung erbringen soll und unter welchen Rahmenbedingungen und sind eine Herausforderung für jeden PO. Sie werden typischerweise in zwei Bereiche untergliedert:
• Qualitätskriterien
• Einschränkungen

Qualitätskriterien

… sind Anforderungen, die sich auf ein Qualitätsproblem beziehen, das nicht durch funktionale Anforderungen abgedeckt ist.
Diese werden (z.B. nach Volere) in Ausführungsqualität und Weiterentwicklungsqualität gegliedert.

Ausführungsqualität (während des Betriebs / zur Laufzeit)

  • Zuverlässigkeit (Systemreife, Wiederherstellbarkeit, Fehlertoleranz)
  • Aussehen und Handhabung (Look-and-feel)
  • Benutzbarkeit (Verständlichkeit, Erlernbarkeit, Bedienbarkeit)
  • Leistung und Effizienz (Antwortzeiten, Ressourcenbedarf, Wirtschaftlichkeit)
  • Sicherheitsanforderungen (Vertraulichkeit, Informationssicherheit, Datenintegrität, Verfügbarkeit)
  • Korrektheit (Ergebnisse fehlerfrei)

Weiterentwicklungs- und Evolutionsqualität

  • Betriebs- und Umgebungsbedingungen
  • Wartbarkeit, Änderbarkeit (Analysierbarkeit, Stabilität, Prüfbarkeit, Erweiterbarkeit)
  • Portierbarkeit und Übertragbarkeit (Anpassbarkeit, Installierbarkeit, Konformität, Austauschbarkeit)
  • Flexibilität (Unterstützung von Standards)
  • Skalierbarkeit (Änderungen des Problemumfangs bewältigen)

Eine andere Aufteilung von Nichtfunktionalen Anforderungen findet man in der ISO 25010. Hier werden die Qualitätsanforderungen anhand 8 Kriterien beschrieben.

Abbildung 7: Standard ISO/IEC 25010. Software product quality model

1. Funktionale Eignung
  • Funktionelle Vollständigkeit
  • Korrekte Funktionalität
  • Angemessene Funktionalität
2. Verlässlichkeit
  • Reife
  • Verfügbarkeit
  • Fehlertoleranz
  • Wiederherstellbarkeit
3. Leistungseffizienz
  • Zeitverhalten
  • Ressourcennutzung
  • Kapazitätsaufwand
4. Nutzbarkeit
  • Angemessene Erkennbarkeit
  • Erlernbarkeit
  • Bedienbarkeit
  • Schutz vor Fehlbedienung durch den Nutzer
  • User-Interface Ästhetik
  • Zugänglichkeit
5. Wartbarkeit
  • Modularität
  • Wiederverwendbarkeit
  • Analysierbarkeit
  • Modifizierbarkeit
  • Testfähigkeit
6. Sicherheit
  • Datenschutz
  • Integrität
  • Unmanipulierbarkeit
  • Administrationsfähigkeit
  • Authentifizierbarkeit
7. Kompatibilität
  • Co-Existenz (zu weiterer Software)
  • Interoperabilität
8. Portierbarkeit
  • Anpassungsfähigkeit
  • Installierbarkeit
  • Austauschbarkeit
Einschränkungen

… sind Anforderungen, die den Lösungsraum über das hinaus beschränken, was zur Erfüllung spezifizierter funktionaler Anforderungen und Qualitätsanforderungen erforderlich ist.

Es gibt verschiedene Arten von Einschränkungen, z.B. zeitliche Terminplanbeschränkung, regulatorische oder gesetzliche Beschränkungen usw.

In Softwareprojekten spricht man von Einschränkungen, wenn Faktoren wie Zeit, Geld, Umfang (das sogenannte „Magische Dreieck“) oder Ressourcen, wie Ausrüstung oder Personalmangel das Projekt beeinflussen.

 

Abbildung 8: Das magische Dreieck

Die Einschränkungen hängen auch von dem Tätigkeitsbereich des Unternehmens sowie den Dienstleistungen ab, welches es anbietet.

Im Gesundheitswesen beispielsweise können bestimmte Vorschriften oder Gesetze die Qualität von Software oder sogar die Implementierung der gesamten Softwarearchitektur beeinträchtigen.

Aus allen diesen Gründen ist es wichtig, dass sich der Softwarearchitekt bereits zu Beginn des Projekts mit den verschiedenen Einschränkungen auseinandersetzt und mit den Key Rollen abklärt.

 

Wir freuen uns schon, Sie beim nächsten Artikel unserer Blog-Serie wieder begrüßen zu dürfen – dem Agile Requirements Engineering und seine Rollen.

 

Quellen
  • Sommerville, Ian (2009). Softwareengineering (9th ed.). Addison-Wesley. ISBN 978-0-13-703515-1.
  • Andreas Wintersteiger, Scrum Schnelleinstieg
  • McGreal, Don; Jocham, Ralph (June 4, 2018). The Professional Product Owner: Leveraging Scrum as a Competitive Advantage. Addison-Wesley Professional. ISBN 9780134686653.
  • https://t2informatik.de/
  • North, Introducing Behaviour Driven Development
  • Dan North et al.: Question about Chapter 11: Writing software that matters. (Nicht mehr online verfügbar.) Archiviert vom Original am 7. November 2009; abgerufen am 9. November 2011 (englisch): „The phrase ‘BDD is TDD done well’, while a nice compliment, is a bit out of date. […] BDD has evolved considerably over the years into the methodology we describe in the book. Back when it was focused purely on the TDD space– around 2003-2004 – this was a valid description. Now it only covers a small part of the BDD proposition“
  • Schwaber, Ken; Sutherland, Jeff (November 2017), The Scrum Guide: The Definitive Guide to Scrum: The Rules of the Game, retrieved May 13, 2020
  • “Lessons learned: Using Scrum in non-technical teams”. Agile Alliance. May 18, 2018. Retrieved April 8, 2019.
  • Ken Schwaber; Jeff Sutherland. “The Scrum Guide”. Scrum.org. Retrieved October 27, 2017.
  • https://www.scrum.org/
  • http://agilemanifesto.org/
  • https://www.isaqb.org/
  • https://swissq.it/agile/die-rollen-des-po-re-und-ba-im-vergleich/

 

Abbildungen

Abbildung 1: https://cdn-images-1.medium.com/max/1200/1*ApoaIZicyU0b7Jgg9MMJhw.jpeg

Abbildung 2: ITech Progress CPSA-Foundation Kurs (Präsentation) – Kapitel 1: Grundbegriffe – Einordnung der Softwarearchitektur in Software-Lebenszyklus

Abbildung 3: https://www.softwareone.com/-/media/global/social-media-and-blog/content/requirements-engineering-4-graph1.png?mw=1024&rev=bc1dea2cb4d145c79f1f5b544e3a10cd&sc_lang=de-at&hash=43114D2C3FE79F36503891506BDBA9FA

Abbildung 4: https://www.nasa.gov/images/content/549928main_jfk_speech_226.jpg

Abbildung 5: https://www.nasa.gov/sites/default/files/styles/side_image/public/62297main_neil_on_moon_full.jpg?itok=1c8GTfbJ

Abbildung 6: https://miro.medium.com/max/1762/0*ohypH8bVpf2O0uIc.png

Abbildung 7: https://www.researchgate.net/profile/Lina-Garces/publication/326584873/figure/fig2/AS:652083346808834@1532480193500/Standard-ISO-IEC-25010-Software-product-quality-model-and-system-quality-in-use-model.png

Abbildung 8: https://i.pinimg.com/originals/a1/3c/ed/a13cedd07eb87e2fab0baa483d9877fd.png

Native Cloud Application (NCA) – Entwicklung unter den Wolken

Native Cloud Application (NCA) – Entwicklung unter den Wolken

Waldemar Artes

Waldemar Artes hat langjährige Erfahrung als Anwendungsentwickler. Er unterstützt Kunden als Senior-Entwickler bei der Umsetzung und Instandhaltung von Fachanwendungen. Er interessiert sich für technischen Fortschritt und alles, was uns weiterbringt.

Nichts hat die Art und Weise, wie in der IT-Welt Software konzipiert und entwickelt wird in den letzten Jahren so sehr verändert wie Microservices. Heutige Anwendungen müssen in einem Cluster von mehreren Knoten funktionieren, dynamisch platzierbar, skalierbar und fehlertolerant sein.

Microservices wiederum bilden die Basis von Cloud Native Applikationen. Die einzelnen Microservices sind voneinander unabhängig und können auf mehreren Servern an verschiedenen Standorten laufen. Cloud Native Anwendungen nutzen diese lose gekoppelten Cloud Services. Bei Cloud Native handelt es sich um einen Ansatz, der gewährleisten soll, dass Anwendungen für die Cloud-Computing-Architektur entworfen und entwickelt werden. Die Besonderheiten der Cloud-Computing-Architektur sollen zum Vorteil der Anwendungen genutzt und alle Möglichkeiten voll ausgeschöpft werden. Für diese Art von Anwendungen wird oft die Abkürzung NCA verwendet, welche für Native Cloud Application steht.

Eine Native Cloud Application ist ein echtes Multitalent

Native Cloud Applications haben zahlreiche Vorteile. Sie sind weder an eine spezielle Hardware noch an bestimmte Betriebssysteme gebunden, lassen sich leicht skalieren, sind einfach zu deployen, und sie sind georedundant. „Redundanz“ heißt, dass mindestens eine zusätzliche Ressource als Back-up für den Notfall vorhanden ist. In der Kombination mit „Geo“ bedeutet es, dass diese Ressourcen zusätzlich räumlich voneinander getrennt sind. Nur so kann wirklich sichergestellt werden, dass auch bei schwerwiegenden technischen Problemen an dem einen Ort noch immer ein intaktes Back-up an einem anderen Ort verfügbar ist. Laut Bundesamt für Sicherheit in der Informationstechnik (BSI) sollten es sogar mindestens 200 km sein, um auch vor Naturkatastrophen gut geschützt zu sein.

Die vier zentralen Bestandteile der Entwicklung einer Native Cloud Application: DevOps, Continuous Delivery, Microservices und Container

Vier zentrale Bestandteile für die Entwicklung einer Native Cloud Application

 

  • DevOps ist die Zusammenarbeit zwischen Entwicklung und Betrieb mit dem Ziel, den Auslieferungsprozess zu automatisieren.
  • Continuous Delivery erlaubt die schnellere und zuverlässigere Auslieferung von Software mit weniger Risiken
  • Microservices ist ein Architekturansatz, in dem eine Anwendung als Verbund von mehreren kleinen Services gebaut wird.
  • Container bieten leichtgewichtige Virtualisierung. Sie sind schneller und effizienter als normale Virtualisierung. Container können miteinander verknüpft und gemeinsam orchestriert werden.

Diese vier Prinzipien erlauben es gemeinsam, schnell und risikoarm eine verteile Anwendung zu entwickeln, auf verteilter Infrastruktur auszuliefern und zu betreiben. Als Infrastruktur kann zum Beispiel Amazon Web Services oder Microsoft Azure genutzt werden.

Herausforderungen bei der Entwicklung und dem Betrieb von NCAs

Die Entwicklung einer Native Cloud Application bringt neue Herausforderungen mit sich, die ein Umdenken in der Entwicklung erfordern.

 

  • Persistente Datenablage: Container lassen sich nur kaum zur Datenhaltung nutzen, da diese sehr flüchtig sind. Wird ein Container gelöscht oder abgebaut, sind die Daten auch weg. Persistente Daten sollten deshalb außerhalb der Microservices gehalten werden. Auf diese Daten kann dann mittels einer Service-Schnittstelle zugegriffen werden.
  • Integration der Services: Verteilte Anwendungen bringen eine eigene Komplexität mit sich. So müssen die einzelnen Microservices über Server oder sogar Cloud-Provider hinweg miteinander integriert werden. Sie müssen sich gegenseitig finden und die Kommunikation soll fehlertolerant verlaufen.
  • Monitoring: NCAs können aus mehreren hundert bis tausend einzelnen Microservices bestehen. Umso wichtiger ist es, alle im Blick zu behalten. So müssen Werte wie Auslastung und Antwortzeiten beobachtet werden, um die Stabilität des gesamten Produktes zu gewährleisten.
  • Cloud Lock-in vermeiden: Durch die Einfachheit in ihrer Bedienung passiert es schnell, dass man sich von einem einzigen Cloud-Provider abhängig macht. Dessen sollte man sich bei der Planung bereits bewusst sein und so viele Industrie-Standards wie möglich anstelle von proprietären Lösungen nutzen.
  • Bauen von Pipelines zum Ausliefern der NCAs: NCAs arbeiten typischerweise in der Cloud. Möglicherweise sogar bei mehreren Cloud-Providern. Das erschwert das Ausliefern von NCAs, da diese stark verteilt sind und miteinander integriert werden müssen. Zudem können unterschiedliche Microservices unterschiedliche Abhängigkeiten fordern. Es werden Pipelines benötigt, die die einzelnen Microservices dorthin und in der benötigten Redundanz deployen, wo sie gebraucht werden.

Vorteile einer Native Cloud Application

Mit all den Herausforderungen, um eine Native Cloud Application zu entwickeln und zu Betreiben stellt sich immer die Frage: Ist es den Aufwand wert? Was sind die Vorteile?

 

  • Kosten: Wird die Anwendung auf einem Cloud-Anbieter betrieben, zahlt man nur das, was verbraucht. So können die Kosten für den Betrieb in nicht-aktiven Zeiten gesenkt werden.
  • Skalierbarkeit: Native Cloud Applications sind durch ihre Microservice-Architektur stark skalierbar. So können einzelne Microservices bei Bedarf dupliziert werden.
  • Kundennähe: NCAs können auf Servern weltweit betrieben werden. So müssen Anwender die Daten nicht über die ganze Welt verschicken und die Latenz sinkt.
  • Life-Cycle: NCAs können schneller und mit weniger Aufwand und Kosten aktualisiert werden. Dadurch erhöht sich die Auslieferungsgeschwindigkeit und das Time-To-Market sinkt.
  • Robustheit: NCAs können georedundant betrieben werden, wodurch Ausfälle bei lokalen technischen Problemen deutlich verringert werden.

Tools für Entwicklung und Betrieb einer Native Cloud Application

Die Cloud Native Computing Foundation ist eine neutrale Plattform für die meisten Open-Source-Projekte, die dabei helfen, die Herausforderungen und Probleme bei der Entwicklung und im Betrieb einer Native Cloud Application zu meistern. Darunter fällt das Orchestrierungstool Kubernetes, sowie das Monitoring-Tool Prometheus.

Die CNCF stellt eine Übersicht über alle Projekte, Tools und Provider zur Verfügung, die bei der Entwicklung, Auslieferung und Betrieb von NCAs helfen.

Was Softwarearchitekt:innen beachten müssen

Das Sicherstellen der ACID-Eigenschaften (Atomic, Consistency, Isolated, Durability) bei der Datenhaltung ist in hoch verteilten Anwendungen mit mehreren Datenbanken sehr schwierig bis unmöglich. In der Regel kann für eine gewisse Zeit auf Konsistenz der Daten verzichtet werden. In diesen Fällen sind Datenbanken mit BASE-Eigenschaften (Basically Available, Soft state, Eventual consistency) interessant, denn hier wird die Datenkonsistenz im Laufe der Zeit hergestellt. Ein gutes Beispiel ist Twitter, da auf dieser Plattform die Follower-Zahlen nicht in Echtzeit aktualisiert werden.

Softwarearchitekt:innen müssen entscheiden, für welche Daten Konsistenz benötigt wird und für welche nicht. Genauso müssen Sie darauf achten, die richtige Anzahl und Größe zu finden, da sie miteinander integriert werden. So sollte vermieden werden, aus reiner Bequemlichkeit neue Microservices zu implementieren. Microservices sollten immer nur eine Funktion erfüllen.

Je mehr Microservices es gibt, desto schwieriger und wichtiger wird es, diese zu beobachten. Wichtige Daten wie Durchlaufzeiten und Aufrufe pro Zeiteinheit können kritische Bereiche, Fehler und Flaschenhälse aufdecken. Monitoring-Lösungen wie der ELK-Stack helfen dabei, die verteilten Metriken zu sammeln, zentralisieren und visualisieren. So können auch Grenzwerte gesetzt werden, deren Überschreitung oder Unterschreitung einen Alarm auslösen. Diese Grenzwerte sollten aber auch immer wieder evaluiert und angepasst werden.

Best Practices bei der Entwicklung und Betrieb von Native Cloud Applications

Die Microservices einer NCA sollten sauber in zustandlose Services und zustandsbehaftete Services getrennt werden. Zustandslose Services können problemlos dupliziert und wieder abgebaut werden, ohne den Zustand der Anwendung zu ändern.

Microservices sollten nach Möglichkeit auch keine Anforderungen an das zu Grunde liegende System wie beispielsweise SSDs oder GPU haben. So lassen sie sich simpel in verschiedenen Umgebungen deployen.

Bei der Entwicklung der NCAs ist es wichtig, so viel wie möglich zu automatisieren. Das hilft, die vielen Microservices und die verteilte Natur einer solchen Anwendung beherrschbar zu machen. Infrastructure-as-Code automatisiert die Bereitstellung der Infrastruktur. Dieser Code kann und sollte auch mit versioniert werden. Das garantiert, dass jeder Service immer und in jeder Umgebung für ihn passend konfigurierte Infrastruktur besitzt.

Wenn dann ein weitverbreiteter Standard zur Kommunikation benutzt wird, wie etwa HTTP, können Microservices mit Technologien und Sprachen entwickelt werden, die am besten zur Aufgabe passen.

Fazit

Native Cloud Applications erlauben es den großen Internetgiganten wie Google und Twitter global ihre Services anzubieten, schnell Änderungen und neue Funktionen an die Nutzer:innen zu bringen. Herausforderungen, die sie mit sich bringen, lassen sich durch bereits etablierte Entwurfsmuster und Open Source Tools und Projekte ohne große Schwierigkeiten meistern. Die Hürden bei der Entwicklung und dem Betrieb einer Anwendung in der Cloud werden immer geringer, sodass heute jeder die Möglichkeit hat NCAs zu entwickeln und zu betreiben.

Training zu ‘Infrastruktur, Container und Cloud Native (CLOUDINFRA)‘

Unser 3-tägiges Training ‘Infrastruktur, Container und Cloud Native (CLOUDINFRA)‘ vermittelt das notwendige Wissen und die Fähigkeiten, um dynamische Cloud Native Architekturen konzipieren und implementieren zu können. Es werden zentrale Themen wie Container Application Design, Logging/Monitoring/Alerting, Container Native Storage, Möglichkeiten zur UI Integration sowie Container Manager vorgestellt. Wenn Sie die Zertifizierung zum Certified Professional for Software Architecture – Advanced Level (CPSA-A) nach dem iSAQB-Programm anstreben, erhalten Sie für dieses Training 20 Credit Points im Kompetenzbereich Technologie und 10 Credit Points im Kompetenzbereich Methodik.

Termine zum Training 'Infrastruktur, Container und Cloud Native (CLOUDINFRA)'

ITech Academy stellt 10 neue Trainings vor!

ITech Academy stellt 10 neue Trainings vor!

Neue Trainings in den Bereichen: Softwaremodellierung, Softwareentwicklung und Softwarearchitektur

Wenn Sie unsere ITech Academy bereits kennen, wissen sie bestimmt, dass Softwarearchitektur ein untrennbarer Teil unserer DNA und vor allem unsere Leidenschaft ist! Das spiegelt sich auch in unserem großen Angebot an iSAQB-akkreditierten Softwarearchitektur Trainings wider. Von den Grundlagen bis hin zu fortgeschrittenen Trainings sind alle relevanten und aktuellen Themen aus der Welt der Softwarearchitektur vertreten. Als IT-Beratungsunternehmen beraten wir unsere Kunden neben innovativen Architekturparadigmen wie Microservices und Cloud Architekturen seit über 17 Jahren auch in allen Phasen ihrer IT-Projekte, von der Konzeption über den Entwurf und die Implementierung bis hin zu Testing, Fertigstellung und Qualitätssicherung.

Wir als ITech Progress haben uns mit der ITech Academy einen Ort geschaffen, um genau diese langjährige Erfahrung in den Bereichen Softwaremodellierung, Softwareentwicklung und Softwarearchitektur in Form von theoretischem und praktischem Wissen weiterzugeben. Denn einer unserer Grundsätze lautet: Wissensmonopole sind für uns tabu!

Aus diesem Grund haben wir 10 neue Trainings und Workshops nach eigenem Lehrplan entwickelt, die jetzt ein Teil unseres Academy-Portfolios sind! In allen Trainings und Workshops steckt das Beste aus unserer Arbeit und Erfahrung mit komplexen Systemen, bewährten Tools, Technologien, Architekturen und den Best Practices der Softwareentwicklung und -architektur. Und all das: Immer auf dem neuesten Stand!

Das sind die neuen Trainings und Workshops:

Softwaremodellierung

Objektorientierter Softwareentwurf mit UML und Objektorientierung

Dieses 3-tägige Grund- und Aufbautraining richtet sich an alle Softwareentwickler:innen und –architekt:innen im objektorientierten Umfeld, die UML als effektives Entwurfs-, Planungs- und Kontrollinstrument einsetzen möchten.

Softwareentwicklung

SQL & DB Design (5 Tage inkl. Workshopzeit)

Java und OOP (5 Tage inkl. Workshopzeit)

html und CSS (3 Tage inkl. Workshopzeit)

JEE (3 Tage inkl. Workshopzeit)

Programmieren für Fortgeschrittene mit JAVA

Diese Trainings eignen sich ideal zur Mitarbeiterbefähigung, wenn in Ihrem Unternehmen beispielsweise noch Legacy-Systeme genutzt werden und der Umstieg auf zeitgemäße Technologien und Architekturen erfolgen soll.

Softwarearchitektur

Methodischer Fokus:

Enterprise Application Integration Patterns

In diesem 2-tägigen Training für Softwareentwickler:innen und -architekt:innen lernen sie Enterprise Application Integration (EAI) Patterns kennen, um Geschäftsfunktionen entlang der Wertschöpfungskette eines Unternehmens, die über diverse Applikationen auf verschiedenen Plattformen verteilt sind, zu integrieren.

Design Patterns

In diesem 2-tägigen Training für Softwareentwickler:innen und -architekt:innen lernen sie das Konzept und den Sinn von Entwurfsmusstern kennen.  Wir geben Ihnen aus unserer jahrelangen Projekterfahrung eine Auswahl wichtiger Entwurfsmuster an die Hand und führen sie mithilfe verschiedener Methoden in die praktische Anwendung.

Technologischer Fokus:

Clean Code

In diesem Training lernen Sie die Werte, Regeln und Prinzipien kennen, auf denen die Handwerkskunst der Softwareentwicklung fußt und können damit dem Sprichwort „Wie der Meister, so das Werk“ folgend, sauberen, änderbaren, testbaren und objektorientierten Code entwickeln.

Kommunikativer Fokus:

Führungskräfteentwicklung

In diesem 2-tägigen branchenübergreifenden Training geben wir Führungskräften das Know How für situationsgerechte Kommunikation, Reflexion und Verantwortungsdelegation als aktive Bestandteile einer effektiven und erfolgreichen täglichen Arbeit mit. Teilnehmer:innen erlernen, die eigenen Rollen und Ziele zu definieren und darauf aufbauend Ihr Verhalten auszurichten.

So nehmen Sie an unseren neuen Trainings und Workshops teil

Vorläufig ist das neue Portfolio nur in Form von Inhouse-Trainings (auch remote) buchbar, aber wir freuen uns auf Ihre direkte Rückmeldung, wenn Interesse an offenen Terminen besteht! Kommen Sie hierfür gerne über die unten angegebenen Kontaktmöglichkeiten auf uns zu oder melden Sie sich für unseren monatlichen Newsletter an, um keine Termine und Neuigkeiten zu verpassen. Aus unserer Erfahrung heraus wissen wir, dass eine Lernatmosphäre außerhalb des eigenen Standortes eine echte Bereicherung für das Team sein kann, weshalb wir Ihnen an unseren Standorten in Ludwigshafen und Nürnberg gerne auch großflächige, modern ausgestattete Schulungsräume zur Verfügung stellen.

Sie haben Interesse an den neuen Trainings oder eine Frage?

Dann rufen Sie uns bitte unter +49 621 595702 41 an, schreiben Sie eine E-Mail an training@itech-progress.com oder schicken Sie uns über das Kontaktformular eine schriftliche Anfrage:

10 + 2 =

Woran erkennt man gute Zertifikate?

Woran erkennt man gute Zertifikate?

Ein Artikel von: Mahbouba Gharbi und Dr. Carola Lilienthal

Erschienen auf: https://www.isaqb.org/de/isaqb-blog/

Einleitung

Seit ca. fünfzehn Jahren lässt sich in der IT ein neuer Trend beobachten: Wir dürfen nicht mehr nur lebenslang lernen, sondern wir können Zertifikate dafür erwerben, dass wir unser Wissen erweitert haben. Zwei Worte in diesem letzten Satz sollten interessierte Leser:innen aufhorchen lassen: „erwerben“ und „Wissen“.

Für ein Zertifikat muss Geld bezahlt werden! Deshalb wollen wir uns als erstes die Frage stellen, ob man ein Zertifikat kaufen kann, ohne dass man sein Wissen substanziell erweitert hat. Wie sind die Zertifizierungsverfahren organisiert, um einen solchen Missbrauch zu verhindern?

Als zweites wenden wir uns der Frage zu, was Zertifikate prüfen bzw. prüfen können: theoretisches Wissen – also alles, was man aus Büchern lernen kann – oder echte praktische Erfahrung, die über die Jahre wächst und sich verändert. Sollten Zertifikate vielleicht sogar ein Verfallsdatum haben? Gibt es Zertifikate, die prüfen, ob ich mein einmal zertifiziertes Wissen und meine Erfahrung beibehalte oder erweitere? Mit welchen Versprechen werden Zertifikate beworben und was ist von diesen Versprechen zu halten?

Zertifizierungsverfahren

Das Angebot an Zertifikaten ist vielfältig, trotzdem liegt den meisten Zertifikaten und Zertifizierungsverfahren ein ähnlicher Prozess mit einigen vergleichbaren Varianten zugrunde. In Abbildung 1 ist das grundsätzliche Muster für Zertifizierungsverfahren dargestellt.

Will ein Schulungsanbieter zu einem Zertifikat eine Schulung anbieten, so muss er zuerst überprüfen, ob er in der Lage ist, die im Lehrplan enthaltenen Themen zu vermitteln (Schritt 1 in Abbildung 1). Ist dies der Fall, so muss sich der Schulungsanbieter von dem für dieses Zertifikat zuständigen Board lizensieren lassen (Schritt 2). Mit dem entsprechenden Lizenzvertrag stellt das Board sicher, dass der Schulungsanbieter den Lehrplan des Boards umsetzt und seine Schulungsunterlagen ggf. durch das Board qualitätssichern lässt. Ist man als zukünftiger Prüfling auf der Suche nach einem Schulungsanbieter für ein Zertifikat, so sollte man stets kontrollieren, ob der Schulungsanbieter die entsprechende Lizenz tatsächlich besitzt.

Hat der Prüfling den für sich passenden Schulungsanbieter gefunden, so meldet er sich dort für die entsprechende Schulung an und entrichtet die Schulungsgebühr (Schritt 3+4). Möchte der Prüfling die Prüfung direkt im Anschluss an die Schulung machen, so meldet ihn der Schulungsanbieter kurz vor oder auch während der Schulung bei einer Zertifizierungsstelle für die Prüfung an (Schritt 5). Zertifizierungsstellen werden vom für das Zertifikat zuständigen Board für die Prüfung autorisiert. Der Pool von Fragen, aus dem die Zertifizierungsstelle jeweils die Prüfungsbögen zusammenstellt, wird von dem gleichen unabhängigen Board ausgearbeitet, das auch den Lehrplan für die Schulung festgelegt hat.

Die meisten Schulungen sind so organisiert, dass im Anschluss an eine mehrtägige Schulung (Schritt 6) direkt die Prüfung abgelegt werden kann. Dazu wird von der Zertifizierungsstelle eine unabhängige fachfremde Prüferin oder ein unabhängiger fachfremder Prüfer bestellt, die oder der die Prüfung vor Ort durchführt. Die Prüfung wird von einer fachfremden Prüferin bzw. einem fachfremden Prüfer abgenommen, damit auf jeden Fall verhindert wird, dass den Prüflingen bei der Prüfung geholfen werden kann.

Die Zertifizierungsstelle erhält für diese Dienstleistung vom Prüfling eine Prüfungsgebühr (Schritt 7). Der oder die Prüfer:in lässt die Prüflinge einen Multiple-Choice-Test ausfüllen (Schritt 9) – entweder digital oder in Papierform. Die Tests in Papierform hat er bzw. sie von der zuständigen Zertifizierungsstelle bekommen (Schritt 8). Im Anschluss an die Prüfung werden die digitalen Tests direkt von der Zertifizierungsstelle ausgewertet (Schritt 11) und das Ergebnis bekannt gegeben (Schritt 12). Falls Prüfungsbögen in Papierform verwendet werden, schickt der oder die Prüfer:in die ausgefüllten Prüfungsbögen zurück an die Zertifizierungsstelle (Schritt 10). Dort werden die Antworten ausgewertet und die Anzahl der richtigen Antworten festgestellt (Schritt 11). Im Anschluss wird der Prüfling per E‑Mail über das Ergebnis informiert. Hat der Prüfling genug richtige Antworten gegeben, erhält er sein Zertifikat (Schritt 13).

Abbildung 1: Zertifizierungsverfahren aus Sicht des Prüflings [DST]

Dieser auf den ersten Blick für den Prüfling relativ komplizierte Prozess wurde geschaffen, um der in der Einleitung präsentierten Gefahr entgegenzuwirken, dass man Zertifikate einfach kaufen kann.

Gute Zertifikate zeichnen sich dadurch aus, dass die Definition der Inhalte, die Schulung und die Prüfung von verschiedenen voneinander unabhängigen Institutionen verantwortet werden (s. Abbildung 2).

Abbildung 2: Aufgabenteilung [DST]

Zu diesem vollumfänglichen Zertifizierungsverfahren gibt es verschiedene Varianten für einzelne Teilprozesse:

  1. Vorbereitung ohne Schulung (s. Abbildung 3)
  2. Remote-Prüfung (s. Abbildung 4)
  3. Öffentliche Prüfung
  4. Prüfung im Testcenter

Will ein Prüfling ohne eine Vorbereitung durch einen Schulungsanbieter die Prüfung für ein Zertifikat ablegen, so ist die Prüfungsgebühr bei den meisten Zertifikaten etwas höher (Schritt 5 in Abbildung 3). Zu den meisten Zertifikaten werden Bücher angeboten, die das Selbststudium erleichtern (Schritt 6 in Abbildung 3).

Abbildung 3: Vorbereitung ohne Schulung [DST]

Für die Prüfung hat der Prüfling die drei oben aufgeführten Alternativen.

Seit der Coronapandemie werden viele Schulungen remote und damit ortsunabhängig angeboten, sodass eine Remote-Prüfung der logische Schritt ist. Deshalb wird inzwischen bei vielen Zertifikaten eine Remote-Prüfung angeboten. Die Prüfung wird vom Prüfling remote durchgeführt und von einem oder einer Prüfer:in überwacht, der bzw. die sich auf den Rechner des Prüflings aufschaltet und ihn mit der Kamera beobachtet. So entfällt für alle Beteiligten die Notwendigkeit zu reisen. Verfahren, bei denen die Online-Prüfung ohne Aufsicht abgelegt werden kann, laden im Gegensatz dazu zum Missbrauch ein.

Abbildung 4: Remote-Prüfung [DST]

Außerdem gibt es bei einigen Zertifizierungsverfahren die Möglichkeit, dass der Prüfling eine öffentliche Prüfung oder ein Testcenter besucht, wo er seine Prüfung unter persönlicher Aufsicht ablegt.

Für unsere erste Frage stellen wir also zusammenfassend fest: Bei Verfahren, die dem hier vorgestellten Ablauf mit einer Trennung der Verantwortlichkeiten folgen und bei denen die Prüfung unter Aufsicht abgelegt wird, ist sichergestellt, dass man das Zertifikat nicht kaufen kann.

Wissen oder Erfahrung?

Was ist aber mit dem zweiten Thema? Was überprüfen Zertifikate? Theoretisches Wissen oder praktische Erfahrung? Nun, diese Frage hängt tatsächlich von der Art des Zertifikats ab!

Alle Zertifikate, die lediglich aus einem Multiple-Choice-Test bestehen, fragen nur theoretisches Wissen ab. Natürlich versuchen die Boards Prüfungsfragen zu ersinnen, die nur mit praktischer Erfahrung zu beantworten sind, aber im Multiple-Choice-Schema ist das sehr schwierig.

Die Zertifikate, die in diese Kategorie fallen, haben in der Regel den Zusatz „Foundation Level“. Der Foundation Level wird von den Anbietern ausdrücklich als Basis-Zertifikat beworben [FGG10]. Der Prüfling beherrscht anschließend die Grundbegriffe eines Gebiets. Diese Grundbegriffe kann man lernen und sich ihren Sinn erklären lassen. Nach der Prüfung bzw. der Schulung spricht der Prüfling die Sprache dieses Gebiets.

Die Zertifikate, die auf dem „Foundation Level“ aufbauen, gehen in der Regel über einen reinen Multiple-Choice-Test hinaus. Diese Zertifikate tragen oft den Zusatz „Advanced Level“, manchmal auch „Professional“ oder „Master“. Für diese weiterführenden Zertifikate muss man auf irgendeine Weise praktische Erfahrung nachweisen.

Bei einigen Zertifikaten muss man Testimonials von Arbeitgebern für Projekte vorweisen, die zum Thema des Zertifikats passen: z. B. 18 Monate Testaufgaben in Projekten oder 18 Monate Projektleitung bzw. Teilprojektleitung.

Bei einigen anderen weiterführenden Zertifikaten gehört zur Prüfungsleistung zusätzlich zum Multiple-Choice-Test eine mündliche Prüfung. In manchen Fällen wird außerdem keine Schulung im herkömmlichen Sinne abgehalten, sondern es wird versucht, eine Art Projektsituation zu simulieren, in der die Teilnehmenden im jeweiligen Gebiet zusammenarbeiten.

Dann haben einige Zertifikate noch die unangenehme Eigenschaft, dass sie regelmäßig alle drei oder fünf Jahre erneuert werden müssen. Entweder muss die Prüfung erneut durchgeführt werden oder die Prüflinge müssen Credit Points sammeln, die bestimmte Aktivitäten im zertifizierten Bereich nachweisen: Konferenzbesuche, Vorträge, Vorlesungen, Artikelveröffentlichungen. Auf diese Weise wird sichergestellt, dass die Erfahrung der Prüflinge nicht veraltet.

Was die Frage nach dem Wissen und den Erfahrungen angeht, so halten wir fest: das Basiszertifikat, der Foundation Level, entspricht einer theoretischen Führerscheinprüfung. Die Theorie, also die Begriffsbildung und die Regeln, werden beherrscht, praktische Erfahrung liegt aber nicht vor. Insofern sollte man die Basiszertifikate immer als das betrachten, was sie sind: Theoretisches Wissen, das man erwerben muss, um die Aufbauzertifikate ablegen zu können.

Fazit

Falls Sie nach einer Weiterbildung mit Zertifikat suchen, so planen Sie je nach Ihrem aktuellen Wissensstand ein Basiszertifikat und entsprechende Aufbauzertifikate ein. Nur die Aufbauzertifikate sind wirklich in der Lage, Ihnen praktische Erfahrung zu attestieren.

Darüber hinaus sollten Sie auf eine Prüfung mit Aufsicht bestehen und nur Zertifikate wählen, bei denen die Verantwortung für Inhalte, Schulung und Prüfung klar getrennt ist.

Außerdem sollten Sie sich bei der Recherche nach dem passenden Schulungsanbieter nicht von hübschen Broschüren und Äußerlichkeiten täuschen lassen. Versuchen Sie sich ein Bild zu machen, ob die Ihnen angebotenen Schulungsleiter den Hauptteil Ihrer Zeit in Projekten in der Praxis verbringen – also ihr Geld nur gelegentlich mit Schulungen verdienen. Haben Sie einen solchen Schulungsanbieter gefunden, so ist die Wahrscheinlichkeit sehr viel größer, dass Sie nicht nur mit einem Zertifikat, sondern tatsächlich mit praxistauglichen Ratschlägen aus der Schulung zurückkehren.

Wir hoffen, dass Sie, mit diesem Wissen ausgestattet, in der Lage sind, die Qualität der am Markt angebotenen Zertifikate einzuschätzen und die für sich passende Weiterbildung zu identifizieren.

[FGG10] Fahl, W.; Ghadir, P.; Gharbi, M.: Vom Sinn und Unsinn einer Zertifizierung für Softwarearchitekten – CPSA‑F: Ein gemeinsamer Nenner für Softwarearchitekten; Sonderdruck OBJEKTspektrum 11/2010

[DST] Bei den Prozessmodellen handelt es sich um Domainstories: www.domainstorytelling.org

Alles soll fließen: Die Prozesse, die Daten, die Services

Alles soll fließen: Die Prozesse, die Daten, die Services

Feix

Axel Feix

Axel Feix hat langjährige Projekterfahrung als Analyst und Softwarearchitekt. Er unterstützt Kunden als Senior Consultant und Trainer bei der Einführung und Umsetzung von Software-Engineering, Requirements-Engineering, Softwarearchitektur-Management und Architekturdokumentation. Er interessiert sich für was fliegt, alles was man visualisieren und spielen kann, und was die Welt zusammenhält.

Eine Zeitreise nach Paris vor 180 Jahren

Stellen Sie sich vor: Sie leben im Jahre 1853 in Paris und sind der frischgebackene Präfekt der Metropole. Die Stadt hat sich seit der Revolution kaum verändert und ist im Kern noch mittelalterlich geprägt mit feinen Stadthäusern, aber auch vielen engen Gassen in denen die armen Bürger:innen von Paris leben. Ihr König Napoleon III. ist aus seinem Londoner Exil zurückgekehrt und begeistert von der modernen Stadt, den Parks, den Boulevards und den prächtigen Bahnhöfen. Er gibt Ihnen den Auftrag: Baron Haussmann – machen Sie Paris zu einer modernen Stadt.

Sie sind dieser Baron Haussmann und lieben gerade Linien, Ordnung, Hygiene und Autorität. Sie bauen ein interdisziplinäres Team auf und beginnen damit, die Stadt tiefgreifend umzubauen. Ihr Motto ist: Mehr Raum, mehr Einheitlichkeit und mehr Schönheit. Sie schaffen Boulevards, die so breit sind, dass keine Barrikaden mehr aufgebaut werden können und dass jeder Ort von der nächsten Feuerwache innerhalb kürzester Zeit erreichbar ist. Sie kreieren durch Ihre geradlinige Straßenführung Blickachsen an deren Ende, sodass Sehenswürdigkeiten wie Bahnhöfe, Kirchen, Stadttore, Reiterstatuen oder Brunnen zu sehen sind. Die Kanalisation folgt den Straßen und das Stadtmobiliar bestehend aus Bänken, Straßenlaternen, Kiosken und Werbesäulen wird vereinheitlicht. 

Haussmann BNF Gallica

Georges-Eugène Haussmann, Städteplaner

Auch die Häuser werden nach dem immer gleichen Schema mit sechs Stockwerken aufgebaut: im Erdgeschoss sind in der Regel Läden und im 1. Stock, einer Art Zwischengeschoss, leben die Unternehmer:innen oder nutzen den Raum zur Lagerung. Im 2. Stock, der Étage noble, gibt es großzügige Balkone für die wohlhabenden Bürger:innen. In den Stockwerken drei und vier wohnt der Mittelstand. Je nach Architektur des Gebäudes gibt es in diesen Stockwerken kleine Balkone oder sie fehlen ganz. Der 5. Stock ist wie eine Loge mit durchgehendem, aber weniger edlem Balkon und direkt unter dem Dach befinden sich Wohnungen für die Dienstboten.

Straßen in Paris

Geradlinige Straßenführung, die einen Blick auf den Eiffelturm ermöglicht

Üblicher Aufbau der Häuser in Paris

In Rekordzeit haben Sie Paris grundlegend verändert: Sie ziehen 70 Schneisen durch die Stadt, bauen neun Brücken, errichten 40.000 Wohnhäuser, legen 585 km Kanalisation, bauen 20 Grünanlagen, zwei große Stadtparks und zwei Stadtwälder auf. 80.000 neugepflanzte Bäume tragen außerdem zu einer verbesserten Atmosphäre bei. Noch heute sind mehr als die Hälfte der Pariser Häuser nach Ihrem Stil kreiert.

Diese Reise in die Vergangenheit soll Ihnen bildlich nahelegen, dass es eine gewaltige Aufgabe ist, städteplanerisch unterwegs zu sein und dass Ihre Entscheidungen das Gesamtsystem, egal ob es sich dabei um eine Stadt oder eine Unternehmensarchitektur handelt, tiefgreifend beeinflussen. All das lässt sich auf die IT übertragen: Dort heißt das entsprechende stadtplanerische Mittel Enterprise Architecture Management (EAM). Das Enterprise Architecture Management gibt den Enterprise-Architekt:innen Hilfsmittel zur Hand, um dieser gewaltigen Aufgabe gewachsen zu sein.

Einflussmöglichkeiten der IT-Strategie auf die Enterprise Architektur

Was ist eigentlich eine Unternehmensarchitektur?

Eine Unternehmensarchitektur vereint die gemeinsame Betrachtung der IT-Architektur und der Business-Architektur. Enterprise-Architekt:innen sind für die Entwicklung und Pflege der Enterprise-Architektur eines Unternehmens verantwortlich. Enterprise-Architekt:innen pflegen einen Unternehmens-Stack, der aus mehreren Schichten besteht. In der untersten Schicht befindet sich die IT mit all ihrer Hardware-Infrastruktur, den Servern und Netzen, in denen die Legacy-Hardware betrieben wird. Also kurz: Alles, was sich anfassen lässt. In der zweiten Ebene befindet sich die Software mit ihren Applikationen und der im Unternehmen betriebenen Middleware. In der dritten Schicht folgt die Welt der Daten und Geschäftsfunktionen und in der vierten Schicht liegen die Geschäftsprozesse, die das eigentliche Business eines Unternehmens ausmachen. Auf den Geschäftsprozessen werden schließlich die Produkte des Unternehmens realisiert.

Business, Daten, Anwendungen und Technologien bilden die vier Schichten der Enterprise Architektur

Der Umbau einer Enterprise-Architektur ist eine Herausforderung

So wie Paris als moderne Großstadt muss sich auch der Unternehmens-Stack weiterentwickeln. Ein solcher Umbau ist eine echte Herausforderung. Oftmals wird zunächst versucht, eine der Schichten zu transformieren. Beispielsweise durch Konsolidierung der Hardware-Landschaft soll die gewachsene IT-Architektur modernisiert werden. Doch diese ist meist sehr eng mit der Applikationsschicht verkoppelt, sodass ein einfacher Austausch schwierig ist. Mutige Unternehmen erstellen ganz neue Geschäftsprozesse und nehmen es in Kauf, dass dabei ältere Produkte nicht mehr bedient werden können.

Der Enterprise-Architekt als Transformator

Jetzt kommen die Enterprise-Architekt:innen ins Spiel. Diese verstehen jede Ebene des Unternehmens-Stacks und schaffen es mit Hilfsmitteln aus dem Enterprise Architecture Management eine ganzheitliche Unternehmenstransformation durchzuführen. Zu solchen Hilfsmitteln gehören Enterprise Architecture Frameworks (EAF) wie z. B. das Zachman Framework oder das Open Group Architecture Framework (TOGAF). Das Ergebnis sind aufgeräumte Geschäftsprozesse mit passenden Daten, weniger Applikationen und eine moderne zukunftsfähige IT-Infrastruktur. Das Wissen für eine komplexe Aufgabe wie das Enterprise Architecture Management (EAM) zu erlangen, ist zeitaufwendig.

Training zu ‘Enterprise Architecture Management (EAM)‘

Unser 3-tägiges Training ‘Enterprise Architecture Management (EAM)‘ vermittelt das notwendige Wissen und die Fähigkeiten, um EAM für mittlere und große Systeme ein- und durchzuführen. Am Ende dieser Schulung haben Sie das Rüstzeug, um eine IT-Strategie für eine Unternehmensarchitektur zu formulieren, Prozesse und Strukturen der IT-Governance einzurichten, zu überwachen und Migrationspläne für die IT-Landschaft abzuleiten. Im Lauf der Weiterbildung lernen die Teilnehmer:innen verschiedene Frameworks wie TOGAF und COBIT kennen. Wenn Sie die Zertifizierung zum Certified Professional for Software Architecture – Advanced Level (CPSA-A) nach dem iSAQB-Programm anstreben, erhalten Sie für dieses Training 30 Credit Points im Kompetenzbereich Methodik.

Termine zum Training 'Enterprise Architecture Management (EAM)'