Next:
Impressum
OOA
1
Impressum
2
Softwareentwicklungsprozesse
2.1
Ideenfindung und Konzeptualisierung
2.2
Anforderungsanalyse
2.3
Design und Prototyping
2.4
Entwicklung
2.5
Testing
2.6
Deployment
2.7
Wartung und Weiterentwicklung
3
Von der Idee zum Projekt
3.1
Ideensammlung
3.1.1
Der erste Schritt
3.1.2
Ideenerweiterung und -bewertung
3.1.3
Formulierung und Dokumentation
3.1.4
Werkzeuge und Techniken
3.2
Die Bedeutung der Verschriftlichung in der frühen Projektphase
3.2.1
Die Rolle der Verschriftlichung
3.2.2
Überwindung von Herausforderungen durch Verschriftlichung
3.2.3
Flexibilität des Mediums
3.3
Übungsaufgabe: Ideensammlung für ein Bürgeranfragen-Portal
3.4
Fragekatalog zur Bewertung der Durchführung einer Ideenfindungsübung
3.5
Musterlösung
3.5.1
Projektziel
3.5.2
Kernanforderungen
3.5.3
Identifikation von Stakeholdern
3.5.4
Methoden der Anforderungserhebung
4
Anforderungsanalyse
4.1
Überblick
4.1.1
Ziel der Anforderungsanalyse
4.1.2
Prozess der Anforderungsanalyse
4.1.3
Wichtigkeit der Stakeholder-Einbindung
4.1.4
Herausforderungen
4.2
Grundlagen der Anforderungsanalyse
4.2.1
Definition der Anforderungsanalyse
4.2.2
Bedeutung der Anforderungsanalyse
4.3
Stakeholder-Identifikation und -Einbindung
4.3.1
Identifikation der Stakeholder
4.3.2
Einbindung der Stakeholder
4.3.3
Herausforderungen bei der Stakeholder-Einbindung
4.4
Methoden der Anforderungserhebung
4.4.1
Interviews
4.4.2
Umfragen und Fragebögen
4.4.3
Workshops
4.4.4
Beobachtungen
4.4.5
Prototyping
4.5
Dokumentation von Anforderungen
4.5.1
User Stories
4.5.2
Use Cases
4.5.3
Funktionale Spezifikationen
4.5.4
Best Practices für die Anforderungsdokumentation
4.6
Dokumentenformat
4.6.1
Bedeutung von Standards
4.6.2
Empfehlung für das Markdown-Format
4.6.3
Proprietäre Formate: Risiken und Nachteile
4.6.4
Fazit
4.7
Priorisierung und Validierung von Anforderungen
4.7.1
Priorisierung von Anforderungen
4.7.2
Validierung von Anforderungen
4.8
Umgang mit sich ändernden Anforderungen
4.8.1
Akzeptanz von Änderungen als Norm
4.8.2
Strategien für das Management von Änderungen
4.9
Amplified Feedback im DevOps-Prozessmodell
4.9.1
Prinzipien des Amplified Feedback
4.9.2
Vorteile des Amplified Feedback
4.9.3
Implementierung von Amplified Feedback
4.9.4
Beispiel zur Veranschaulichung
4.10
Aufgabe: Durchführung einer Anforderungsanalyse
4.10.1
Zielsetzung
4.10.2
Dauer: 1 Stunde
4.10.3
Aufgabenbeschreibung
4.10.4
Ergebnispräsentation
4.10.5
Hinweise für die Durchführung
4.11
Musterlösung
4.11.1
Anforderungsanalyse: Website für Bürgeranfragen
4.11.2
Zeitrahmen für die Gruppenarbeit
4.12
Aufgabenstellung: Erstellung eines Use-Case-Diagramms für ein Bürgerportal
4.12.1
Ziel:
4.12.2
Werkzeugauswahl:
4.12.3
Voraussetzungen (optional):
4.13
Musterlösung: Use-Case-Diagramm für ein Bürgerportal
4.13.1
Akteure:
4.13.2
Use-Cases:
4.13.3
Beziehungen zwischen Use-Cases:
4.14
Aufgabenstellung: Erstellung eines Aktivitätsdiagramms für ein Bürgerportal
4.14.1
Ziel:
4.14.2
Aufgabenbeschreibung:
4.14.3
Anforderungen an das Aktivitätsdiagramm:
4.14.4
Werkzeuge:
4.14.5
Hinweise:
4.15
Musterlösung
4.16
Aufgabenstellung: Erstellung eines Sequenzdiagramms für ein Bürgerportal
4.16.1
Ziel:
4.16.2
Aufgabenbeschreibung:
4.16.3
Anforderungen an das Sequenzdiagramm:
4.16.4
Werkzeuge:
4.16.5
Hinweise:
4.17
Musterlösung
5
Architecture Decision Records (ADR): Einsatz in Projektphasen
5.1
ADRs in den Projektphasen
5.1.1
Initiale Planungsphase
5.1.2
Entwurfs- und Entwicklungsphase
5.1.3
Test- und Integrationsphase
5.1.4
Betriebs- und Wartungsphase
5.1.5
Projektabschluss und Dokumentation
5.2
Komponenten eines Architecture Decision Records (ADR)
5.2.1
Komponenten und ihre Bedeutung
5.2.2
Tabelle: Komponenten eines ADR mit Beschreibung und Beispiel
5.3
Beispiel für einen Architecture Decision Record (ADR) und dessen Stati
5.3.1
ADR Titel: Einsatz von Microservices für die Systemarchitektur
5.3.2
Entscheidung
6
Systemanalyse in der Softwareentwicklung
6.1
Teilaufgaben der Systemanalyse
6.2
Bedarfsermittlung: Identifikation und Priorisierung von Stakeholder-Anforderungen
6.2.1
Identifikation der Anforderungen
6.2.2
Priorisierung der Anforderungen
6.2.3
Definition von Zielen und Umfang
6.3
Ist-Analyse: Untersuchung des aktuellen Systems
6.3.1
Bewertung der vorhandenen Infrastruktur
6.3.2
Untersuchung der Software
6.3.3
Bewertung der Arbeitsabläufe
6.3.4
Analyse der Daten
6.4
Soll-Konzept: Entwicklung eines Zielmodells des Systems
6.4.1
Definition der Systemarchitektur
6.4.2
Technologieauswahl
6.4.3
Planung von Systemfunktionen
6.5
Feasibility-Studie (Machbarkeitsstudie)
6.5.1
Technische Machbarkeit
6.5.2
Wirtschaftliche Machbarkeit
6.5.3
Rechtliche Machbarkeit
6.5.4
Risikoanalyse
6.6
Anforderungsspezifikation
6.6.1
Funktionale Anforderungen
6.6.2
Nicht-funktionale Anforderungen
6.6.3
Erstellung der Anforderungsspezifikation
6.7
Modellierung: Entwicklung von Systemmodellen
6.7.1
Bedeutung der Modellierung
6.7.2
Typen von Modellen
6.7.3
Prozess der Modellierung
6.8
Aufgabe: Systemanalyse in der Praxis
6.8.1
Ziel
6.8.2
Schritte
6.8.3
Anforderungen
6.8.4
Hinweise für die Durchführung
6.9
Musterlösung: Systemanalyse für eine Bürgeranfragen-Website
6.9.1
1. Soll-Konzept Skizzierung
6.9.2
2. Technologieauswahl
6.9.3
3. Einfache Modellierung
6.10
Präsentation der Ergebnisse
7
Unified Modelling Language (UML)
7.1
Diagrammtypen
7.2
Artefakte in der Softwareentwicklung
7.3
Tools
7.3.1
Textbasierte UML-Diagramme
7.3.2
PlantUML
7.3.3
Mermaid
7.3.4
Abhängigkeit von Tools
7.4
Klassendiagramme in UML
7.4.1
Kernkonzepte von Klassendiagrammen
7.4.2
Beziehungstypen
7.4.3
Beispiel für eine Aggregation
7.4.4
Beispiel für eine Komposition
7.4.5
Access Modifier
7.4.6
Public
7.4.7
Private
7.4.8
Protected
7.4.9
Zusammenfassung
7.4.10
Beispiel: Bürgeranfragen-System
7.5
Anwendungsfalldiagramme (Use Case Diagrams)
7.5.1
Kernkomponenten von Anwendungsfalldiagrammen
7.5.2
Beispiel mit PlantUML
7.5.3
Erklärung des Beispiels
7.5.4
Weitere Elemente
7.6
Sequenzdiagramme
7.6.1
Kernkonzepte von Sequenzdiagrammen
7.6.2
Beispiel: Sequenzdiagramm für eine Bürgeranfrage
7.6.3
Erklärung des Beispiels
7.7
Zustandsdiagramme
7.7.1
Kernkonzepte von Zustandsdiagrammen
7.7.2
Beispiel: Zustandsdiagramm für eine Bürgeranfrage
7.7.3
Erklärung des Beispiels
7.8
Aktivitätsdiagramme
7.8.1
Kernkomponenten von Aktivitätsdiagrammen
7.8.2
Beispiel: Aktivitätsdiagramm für die Bearbeitung von Bürgeranfragen
7.8.3
Erklärung des Beispiels
7.9
Komponentendiagramme
7.9.1
Kernkomponenten von Komponentendiagrammen
7.9.2
Beispiel: Komponentendiagramm für ein Bürgeranfragen-Management-System
7.9.3
Erklärung des Beispiels
7.10
Verteilungsdiagramme
7.10.1
Kernkomponenten von Verteilungsdiagrammen
7.10.2
Beispiel: Verteilungsdiagramm für ein Web-basiertes Anwendungssystem
7.10.3
Erklärung des Beispiels
7.11
Kommunikationsdiagramme
7.11.1
Kernkonzepte von Kommunikationsdiagrammen
7.11.2
Beispiel: Kommunikationsdiagramm für eine Bürgeranfrage
7.11.3
Erklärung des Beispiels
7.12
Paketdiagramme
7.12.1
Struktur des Paketdiagramms
7.12.2
Beispiel eines Paketdiagramms in Mermaid-Syntax
7.12.3
Beschreibung der Paketbeziehungen
7.13
Objektdiagramme
7.13.1
Kernkomponenten von Objektdiagrammen
7.13.2
Beispiel: Objektdiagramm für ein Bürgeranfragen-Management-System
7.13.3
Erklärung des Beispiels
7.14
Zeitverlaufsdiagramme
7.14.1
Kernkomponenten von Zeitverlaufsdiagrammen
7.14.2
Beispiel: Timing Diagramm für ein Thermostat-System
7.14.3
Anwendungsbereiche von Timing Diagrammen
7.14.4
Beispiel
7.15
Interaktionsübersichtsdiagramme
7.15.1
Kernkonzepte von Interaktionsübersichtsdiagrammen
7.15.2
Beispiel: Interaktionsübersicht für die Bearbeitung von Bürgeranfragen
8
OOA
8.1
Ziele der Objektorientierten Analyse
8.2
Prozess der Objektorientierten Analyse
8.3
Bedeutung der Objektorientierten Analyse
8.4
Beispiel
8.4.1
Schritt 1: Anforderungserhebung
8.4.2
Schritt 2: Identifikation von Schlüsselkonzepten
8.4.3
Schritt 3: Definition von Klassen und Objekten
8.4.4
Schritt 4: Beziehung und Dynamik
8.4.5
Schritt 5: Erstellung von Modellen
9
OOD
9.1
Ziele des Objektorientierten Designs
9.2
Prozess des Objektorientierten Designs
9.3
Bedeutung des Objektorientierten Designs
10
Design Patterns
10.0.1
Klassifikation von Design Patterns
10.0.2
Bedeutung von Design Patterns
10.0.3
Anwendung von Design Patterns
11
Gängige Design Patterns und ihre Anwendung
11.1
Singleton
11.2
Observer
11.3
Factory Method
11.4
Abstract Factory
11.5
Strategy
11.6
Adapter (Wrapper)
11.7
Decorator
11.8
Command
11.9
State
11.10
Template Method
12
Enterprise Patterns
12.1
Kategorien von Enterprise Patterns
12.2
Bedeutung von Enterprise Patterns
12.3
Anwendung von Enterprise Patterns
12.4
Layered Architecture (Schichtenarchitektur)
12.5
Service-Oriented Architecture (SOA)
12.6
Microservices Architecture
12.7
Domain-Driven Design (DDD)
12.8
Event-Driven Architecture (EDA)
13
Zusammenhang zwischen Phasen der Softwareentwicklung und objektorientierter Analyse
13.1
Anforderungsanalyse
13.2
System- und Software-Design
13.3
Implementierung
13.4
Testen
13.5
Wartung
14
Änderbarkeit durch Microservices und Protokollebenenkommunikation
14.1
Microservices-Architektur
14.2
Änderbarkeit
14.3
Hebung der Kommunikation auf die Protokollebene
14.4
OpenAPI und REST Services
14.5
Beispiel: Austausch eines Technologie-Stacks
15
Integration von OOA/OOD und Contract-First-Ansatz
15.1
OOA und Contract-First-Ansatz
15.2
OOD und Implementierung des Contracts
15.3
Synthese von OOA/OOD und Contract-First
16
Auswirkungen von OOA/OOD auf die Strukturierung von Teams
16.1
Vertikale Skalierung und Ende-zu-Ende-Verantwortlichkeit
16.2
Auswirkungen auf die Teamstruktur
16.3
Vermeidung von Conway’s Law Problemen
16.4
Schlussfolgerung
17
Projekt ADR
17.1
Projektbeschreibung: Entwicklung eines Systems zur Verwaltung von Architecture Decision Records (ADR)
17.1.1
Zielsetzung
17.1.2
Anforderungen
17.1.3
Aufgabenstellung
17.1.4
Zeitrahmen
17.1.5
Hinweise zur Bearbeitung
17.1.6
Zusatzaufgabe - OpenAPI Contract
17.2
Ideenfindungsphase: Musterlösung
17.2.1
Ermittlung der Stakeholder und deren Bedürfnisse
17.2.2
Definition der Kernfunktionalitäten des Systems
17.2.3
Erstellung erster Skizzen zur Benutzeroberfläche und zum allgemeinen Workflow
17.3
Objektorientierte Analyse: Identifikation der Objekte/Klassen
17.3.1
PlantUML-Diagramm
17.4
Erstellung von Anwendungsfalldiagrammen
17.4.1
Akteure
17.4.2
Anwendungsfälle
17.4.3
PlantUML-Anwendungsfalldiagramm
17.5
Sequenzdiagramme für Kernfunktionalitäten
17.5.1
ADR erstellen
17.5.2
ADR suchen
17.6
Definition der Attribute und Methoden der identifizierten Klassen
17.6.1
ADR (Architecture Decision Record)
17.6.2
User
17.6.3
Category
17.6.4
Tag
17.6.5
Comment
17.7
OOD: Entwurf der Klassenstruktur unter Verwendung von Klassendiagrammen
17.7.1
Klassendiagramm
17.7.2
Erklärung des Klassendiagramms
17.8
Ausarbeitung der Beziehungen und Abhängigkeiten zwischen den Klassen
17.8.1
Klassendiagramm mit Beziehungen und Abhängigkeiten
17.8.2
Erläuterung der Beziehungen und Abhängigkeiten
17.9
OOD: Definition der Schnittstellen für die Interaktion mit externen Systemen und Diensten (z.B. Datenbanken, Authentifizierungsservices)
17.9.1
IDataAccess Interface
17.9.2
IAuthenticationService Interface
17.9.3
Integration externer Dienste
17.9.4
Vorteile der Schnittstellendefinition
17.10
OOD: Erstellung von Aktivitätsdiagrammen zur detaillierten Beschreibung der Prozesse
17.10.1
ADR erstellen
17.10.2
ADR suchen
17.11
OpenAPI Contract
17.11.1
OpenAPI Contract Beispiel