Please enable JavaScript.
Coggle requires JavaScript to display documents.
Besondere Aktivitäten der Entwicklungsphase - Coggle Diagram
Besondere Aktivitäten der Entwicklungsphase
Requirements Engineering
Allgemein
geforderte Funktionen und Eigenschaften = Anforderungen
Aktivitäten zur Ermittlung, Dokumentation, Abstimmung und Verwaltung = Requirements Engineering (RE)
RE = kooperativer, iterativer, inkrementeller Prozess, dessen Ziel ist zu gewährleisten, dass:
relevante Anforderungen bekannt und in erforderlichem Detaillierungsgrad verstanden sind
alle Anforderungen konform zu Dokumentationsvorschriften dokumentiert bzw. zu Spezifikationsvorschriften spezifiziert sind
die involvierten Stakeholder ausreichende Übereinstimmung über bekannte Anforderungen erzielen
Merkmale
mehrere Personen oder Personengruppen involviert
keine einzelne, abgeschlossene Aktivität zu Beginn des Projektes ⇨ erfolgt in mehreren Zyklen (Iterationen)
Kernaktivitäten
Ermittlung von Anforderungen
Identifikation der Anforderungen an das System
Anforderungen erkennen und im erforderlichen Detaillierungsgrad verstanden werden
systematische Ermittlung von Anforderungen
Systemkontext bestimmen: welche Stakeholder und andere Systeme haben direkte Abhängigkeiten zum System
Quellen für Anforderungen ermitteln: Stakeholder, Dokumente, andere Systeme (Altsysteme, Konkurrenzsysteme)
Geeignete Ermittlungstechniken auswählen: Befragung, Beobachtung, GUI-Prototypen)
Anforderungen unter Einsatz der Techniken ermitteln
Dokumentation von Anforderungen
aktueller Erkenntnisstand für alle Stakeholder sichern, Überblick für alle
oft grafische Modelle (Softwaremodelle) als Ergänzung zur Textform
Dokumentationsform von Art der Anforderung, vom Zeck und vom Personenkreis für die sie bestimmt ist und von Vorschriften und Vereinbarungen abhängig
systematische Dokumentation
Zweck und Zielgruppe bestimmen
Detailebene und Darstellungsart auswählen (z.B. Text, Grafiken, Sotwaremodelle, Prototypen)
Anforderungen dokumentieren
Prüfen: Passt Dokumentation zu Zweck und Zielgruppe ⇨ kritische Reflektion
Prüfen und Abstimmen von Anforderungen
Ziel: Qualität der Menge der dokumentierten Anforderung nach Kriterien Inhalt, Dokumentation udn Abgestimmtheit sicherstellen
Missverständnisse vermeiden
Konflikte oder Widersprüche identifizieren ⇨ unter Einbeziehung der Stakeholder auflösen
systematisches Prüfen und Abstimmen
Prüfkriterien festlegen: Fokus der Prüfung wird bestimmt
Prüfprinzipien und Prüftechniken auswählen (Review, Walkthrough, Erstellung von Softwareartefakten)
Prüfung durchführen und Ergebnisse dokumentieren: nur Ergebnisse dokumentieren
Abstimmen der Anforderungen/Konfliktmanagement
Spezifikation (Aussagen, was das System können muss)
Verwendung einer Spezifikation in der Softwareentwicklung
Grundlage für die Umsetzung des Systems (Design und Implementierung)
Grundlage für Formulierung verschiedener Testfälle für verschiedene Teststufen
Fehler in Spezifikation oder Missverständnisse beim Lesen haben weitreichende Auswirkungen auf gesamtes Projekt
für eindeutige und messbare Spezifikation gibt es viele Darstellungsmittel (z.B. Softwaremodelle) und Werkzeuge (z.B Modellierungswerkzeuge) um Elemente zu spezifizieren
Spezifikation beschreibt nur die nach außen sichtbaren Systemeigenschaften (nicht innerer Aufbau)
Elemtente einer Spezifikation
Datenmodell
Geschäftsobjekte, die im System verarbeitet werden und deren Beziehung untereinander
z.B. Schadensmeldung, Versicherungsantrag, Kundendaten
Fachfunktionen
fachliche Beschreibung der Aufgaben des Systems bzw. der spezifizierten Komponente
z.B. Algorithmus zur Prämienberechnung, Vorgehen bei Vertragskündigung, Abschluss eines Vertrags
Geschäftsregeln
Regelen zu einem Geschäftsobjekt, die nicht verletzt werden dürfen
z.B. Datum des Vertragsbeginns muss vor Vertragsende liegen
Eigenschaften zu Schnittstellen
Zweck der Schnittstelle auf fachlicher Ebene, z.B. Übertragung der Fonds-Kurse in Fondsverwaltung
technisches Protokoll/Regeln, nach denen das System mit Umfeld kommuniziert. z.B. HTTP, FTP
bei Schnittstelle zu Systemen: Datenstruktur der Nachrichten die ausgetauscht werden, z.B. CSV, XML
Schnittstelle zu Anwendern: Aufbau und Verhalten der Benutzeroberfläche
Qualitätseigenschaften
prüfbar machen durch messbare Metriken
Randbedingungen
technische und organisatorische Randbedingungen, die vom System eingehalten werden müssen z.B. Verweise auf Richtlinien, Standards, Gesetze und Styleguides
Spezifikation von Benutzerschnittstellen (GUI=Graphical User Interface)
Inhalte und Aufbau von einzelnen Dialogmasken
Detaillierte Vorgabe zu Art, Größe, Position, Farbe und Inhalt von Elementen einer Bildschirmseite
z.B. Eingabefelder, Texte, Schaltflächen
Validierung von Daten
Spezifikation der Regeln, um Eingabefelder auf fachliche Plausibilität zu prüfen
Dialogfluss
Spezifikation der Führung des Anwenders durch die Oberfläche in Abhängigkeit von eingegebenen Daten und Aktionen des Anwenders
Hilfsmittel zur Spezifikation
Skizzen
Screenshots von GUI-Prototypen
einfache Diagramme, welche Reihenfolge von Dialogmasken darstellen
Spezifikation von Aufbau und Abläufen des Systems
Identifikation und Spezifikation fachlicher Komponenten
komplexe Softwaresysteme werden in Komponenten aufgeteilt, jede Komponente ist unabhängige Softwareinheit
Aufgaben
fachl. Komponenten identifizieren und gegenüber anderen Komponenten abgrenzen (z.B. Warenkorb, Artikel, Kunde)
interne Funktionen von Komponenten spezifizieren (z.B. Berechnung der Gesamtsumme)
Abläufe und logische Struktur der ausgetauschten Nachrichten an Schnittstellen spezifizeren
Spezifikation fachlicher Datenmodelle
fachliche Entitäten und deren Zusammenhänge
mit hilfe von Softwaremodellen werden Aufbau, Zusammensetzung und Beziehungen zwischen versch. fachlichen Entitäten spezifiziert
Gewährleistung, dass eingegebene Daten mit Datenmodell übereinstimmen, die in Datenbank gespeichert werden
Spezifikation von Geschäftsregeln
Aussage, die einen fachlichen Aspekt definiert oder bedingt
mit Geschätsregelen können Struktur von Geschäftsobjekten beschireben und Verhalten von GEschäftsprozessen beeinflusst werden
Arten von Vorgaben
strukturell: z.B. Vertrag muss immer einem Versicherungsnehmer zugordnet sein
operativ: Schaden über 500.000 muss immer durch zwei Sachbearbeiter begutachtet werden
i.d.R. in Form von Text sepzifiziert
Spezifikation technischer Schnittstellen für den Datenaustausch
Spezifikation von Qualitätseigenschaften
Softwarequalität nach ISO 9126-Standard: Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung zur Erfüllung gegebener Erfordernisse bezieht
gute Usability, Datensicherheit immer garantiert, System immer erreichbar
allgemeine Anforderungen müssen in meesbare Qualitätskriterien abgeleitet werden
es muss auf Testbarkeit der Qualitätseigenschaften geachtet werden
Allgemein
Ziel: Erstellung einer technischen Dokumentation der relevanten Anforderungen, nach denen ein Softwaresystem aufgebaut werden soll
stark technisch ausgeprägte Dokumentation des Systems auf Basis der Anforderungen des RE
Erweiterung und Detaillierung der Dokumentation von Anforderungen
RE und Spezifikation unterscheiden sich in Ermittlungstechniken und Prüftechniken nicht
Architektur
Kernaktivitäten der Architekturerstellung
Erfassen der Anforderungen und Interessen der Stakeholder
fachliche Anforderungen, Interessen der Stakeholder, erste Aufwandseinschätzung, Menge der Anforderungen dokumentieren und von Stakeholder angenommen werden
Entwerfen einer Architektur, die Mende an Anforderungen erfüllt
Entwurfsentschiedungen zur Erfüllung der Anforderungen ⇨ erste Version der Architekturbeschreibung
Entscheidungen überprüfen und bewerten, ggfs . Architektur überarbeitet
Beschreiben und Dokumentieren der Architektur
getroffene Entscheidungen müssen dokumentiert werden
je detaillierter die Entscheidungen, desto technischer und präziser die Dokumentation
iterativ
Architekturbeschreibung
Ergebnis der Gestaltungsaktivitäten eines IT-Architekten
eigentliche ARchitektur manifestiert sich erst während der Implementierung des Systems
Architektur ist systemimmanent ⇨ kein Architekt notwendig, trotzdem gibt es eine Architektur
Dokumentation von IT-Architektur
Möglichkeiten der Dokumentation
Skizzen, PowerPointGrafiken ⇨ schnell angefertigt, jedoch ohne festgelegte Semantik und gefährlich großer Interpretationsspielraum
strukturierte Softwaremodelle (z.B. UML) ⇨ Notationselemente haben festgelegte Bedeutung (Semantik) und sind weltweit verbreitet
spezifische Architekturbeschreibungssprachen (ADL), die in Forschung zu Softwarearchitekturen eingesetzt werden ⇨ oft für praktische Zwecke nicht geeignet
Programmcode ⇨ immer aktuell und konsistent zum erzeugten Programmcode ⇨ kein einfacher Überblick und nur von Experten lesbar
Herausforderungen
Divergenz der dokumentierten Design-Entscheidungen in Form der Architekturbeschreibung und der tatsächlichen Systemarchitektur
Softwareentwickler sind weder physikalisch noch logisch an Vorgaben des Architekten gebunden
Einsatzszenarien für Architekturdokumentation
A priori Dokumentation
Erstellung vor der Umsetzung des Systems auf Grundlage von Designaktivitäten und -Entscheidungen
Architekturdokumentation: Vereinbarungen über Gestaltung des Systems explizieren und dokumentieren, legt Rahmen für eigenständige Entscheidungen des Entwicklerteams fest
Soll-Zustand der Softwarearchitektur
Ausgangspunkt für Validierung der Eignung einer Architektur zur Unterstützung geforferter Qualitätseigenschaften und Randbedingungen
Ex post Dokumentation
Erstellung der Beschreibung nach der Umsetzung des Systems auf Grundlage des implementierten Programmcodes
Zweck: Darstellen und Dokumentieren der tatsächlich implementierten Architektur
Ist-Zustand der Softwarearchitektur
Nutzung für Vergleich der geplanten und implementierten Architektur oder als Ausgangspunkt für Architekturbewertung hinsichtlich Einhaltung von Normen, Richtlinien oder Gesetzen
Ebenen von IT-Architektur
Facharchitektur
Softwarearchitektur
IT-Unternehmensarchitektur
Überführung von Problemraum in Lösungsraum
Architektur zwischen RE und Implementierung
IT-Architekt muss Bedürfnisse der Stakeholder analysieren, gegeneinander abwägen und durch Entscheidungen und Gestaltungsaktivitäten Architekturbeschreibung entwickeln
Architekturbeschreibung = Verbindung zwischen Lösungsraum und Problemraum ⇨ dient Entwicklerteam als Vorlage und Rahmenwerk für Implementierung
Allgemein
konstruktive Aktivitäten: erstmals konkrete Festlegungen, wie fas System die Anforderungen erfüllt
IT-Architekturbegriff umfasst
Prozess der Gestaltung von Softwaresystemen aller Art
Titel einer IT-Architekturtypologie z.B. Client-Server-Architektur
Berufsfeld des IT-Architekten also Fachgebiet IT-Architektur
Ergebnis, also Menge der Artefakte, die IT-Architekt erzeugt
Bezeichnung für Wissenschaft vom Gestalten von IT-Systemen, Lehre der IT-Architektur
Aktivitäten, in denen entschieden wird, wie System strukturiert und aufgebaut ist
Architektur: Grobentwurf
Design: Feinentwurf
Implementierung
Programmiersprachen
Faktoren
Unterstützung für zukünftige Systemplattform gesichert?
Qualität von Tutorials, HowTos und Experten?
Erfahrungen im Einsatz?
Frameworks und Bibliotheken vorhanden?
Ist Wissen über den ganzen Zyklus verfügbar?
Welche Technologien/Sprachen sind Anwendungen umgesetzt mit denen integriert wird?
Eingliederung in Anwendungslandschaft
Welche Sprache wird beherrscht?
Welche Ausführungsumgebung?
verschiedene Programmiersprachen in einem System vereint
Softwarearchitekt entscheidet, welche Programmiersprache
z.B. HTML und JavaScript für interaktive Oberflächen, Java für Geschäftslogik, SQL zum Lesen und Speichern von Daten in der Datenbank und XMl für Nachrichtenaustausch mit anderen Systemen
Beschreibungssprachen
HTM, XML, CSS für Aufbau und Inhalt von Anwendungsoberflächen oder Nachrichten
universelle (z.B SQL für Datenbanksysteme) und ganz besondere Einsatzbereiche
Web-Anwendungen
auch oft in Kombination mit Java oder C# um interaktive Benutzerdialoge zu ermöglichen
Java-Script
ältere
COBOL, Fortran (heute noch für IT-Systeme von Finanzdienstleistern wie Banken, Versicherungen und Krankenkassen
objektorientierte Programmiersprachen
Java, C#, C++ (v.a. für Informationssysteme)
C: älteste in Top 10, für hardwarenahe Programmierung, z.B. in eingebetteten Systemen
mobile Plattformen
Java (Android)
Objective-C (iOS)
Entwicklungsumgebung
typische Entwicklungsumgebungen (Integrated Development Environment IDE) eclipse IDE, Microsoft Visual Studio
Funktionen
Erzeugen einer lauffähigen Version aus dem Programmcode (Kompilieren): Build-Systeme (Zusammenstellen, Kompilieren und Testen von in Entwicklung befindlicher Software
Unterstützung der Versionsverwaltung: immer aktuelle Version für jeden Entwickler, kein Überschreiben und Löschen, bzw. Wiederherstellung der aktuellen Version ⇨ z.B. Subversion, GitHub, Microsoft Team Foundation Server
Generierung von Programmcode für triviale Aufgaben (z.B. mit grafischem GUI-Editor)
Einbindung von Bibliotheken und Framework (z.B. durch Import- und Navigationsfunktionen)
Unterstützung des Schreibens von Programmcode (z.B. Syntax-Highlighting, Kompilierfehler erkennen, automatische Vervollständigung, Navigation durch Programmcode, Ausführen des Programmes zu Testzwecken)
Programm, das von Entwicklern genutzt wird, um Programmcode zu erstellen
Erzeugen von Programmcode eines Systems
Möglichkeiten
Programmcode automatisch generieren
sinnvoll, wenn Aufwand zur erstellung und Wartung des Code-Generators geringer als für manuelle Erzeugung
Erzeugung von Programmcode für Benutzerschnittstellen aus grafischen Editoren (z.B. Microsoft Visual Studio, XCode)
aus modellierten Datenstrukturen kann Programmcode zur Anbindung an Datenbanksysteme direkt aus Modell erzeugt werden
automatische Generierung von Code aus Elementen der Architekturbeschreibung
Wiederverwendung von bestehendem Programmcode
Fertigkeiten von Entwicklern: Schreiben von Programmcode, Wissen, welches Framework welche Fuktion zur Verfügung stellt und wie sie integriert werden können
bestehende Lösungen zu allgemeinen Problemen werden in Frameworks (Bibliotheken) den Entwicklern zur Verfügung gestellt
Standardprobleme heute durch fast jede Programmiersprache unterstützt
zurückgreifen auf bereits programmierte Lösungen des Problems
Schreiben von Programmcode
Erstellung von strukturiertem Text zur gezielten Lösung von spezifischen Problemen (Datenstruktur, Algorithmus implementieren, Regeln zur verarbeitung von Daten)
Programmieren: Tätigkeit zur Erzeugung von Programmcode
zwei Manifestationsarten
ausführbare Version, die auf Rechner gestartet werden kann ⇨ kompilierte Binärversion
Menge der vom Entwicklungsteam erzeugte bzw, zusammengestelle Artefakte ⇨ Quellcode
Beziehung zu Architektur
Softwarearchitekt kann auch an Implementierung beteiligt sein
Spektrum der Aufgaben
Gesamtverantortung, Verantwortung über einzelne Komponenten, Verantwortung über einzelne Schnittstellen
mehr implementierende Personen als Architekten
entsricht Arbeiten der Gewerke Maurer, Zimmermann bei Hausbau