Software Engineering Flashcards
Software-Engineering
Technicken zur Entwicklung von Software
Softwareprodukte
Software, die für Bedürfnisse einer bestimmten Nutzergruppe erstellt wird
- genersiche Softwareprodukte
- Individuelle Softwareprodukte
Genersiche Softwareprodukte
für Breite Nutzergruppe
allgemeinere Funktionen & Eigenschaften
z.B Microsoft
+ Günstiger als Individual
- ggf. Prozesse an Software anpassen
Individual Softwareprodukte
für einzelnen Kunden
spezielle Funktionen & Eigenschaften
+ genau auf Kunden zugeschnitten
- teurer als generische Softwareprodukte
Komponenten eines Softwareproduktes
Produktdesign
Funktionalität und Features
Inhalt
Komponenten eines Softwareproduktes - Produktdesign
visuelles Erscheinungsbild
interaktive Benutzeroberfläche
Komponenten eines Softwareproduktes - Funktionalität & Features
Benutzerinteraktion mit Software
Komponenten eines Softwareproduktes - Inhalt
Daten
Informationen
Projekt-bezogenes Software-Engineering
Individualsoftware
Kunde definiert Leistungsumfang der Software
Entwicklerteam intern oder extern
Software wird lange verwendet -> Änderungen teuer
Produkt-bezogenes Software-Engineering
Software für großen Personenkreis
Entwickler entscheidet über Eigenschafte, Versionen, Platformen etc
für einzelnen Kunden günstiger als Individualsoftware
Prozesse müssen ggf. an Produkt angepasst werden
Produktvision
Ausgangspunkt für Produktentwicklung
Was für ein Produkt?
Was unterscheidet Produkt von Konkurrenzprodukten?
Wer sind Zielpersonen/Kunden?
Warum sollten Kunden das Produkt kaufen?
Produktmanager
Gesamtverantwortung für Softwareprodukt
Planung
Entwiclung
Marketing
Produktmanager - Schnitstellen
Entwicklerteam
Kunde des Produktes
weitere Organisation
Produktmanager - Aufgaben
Kundenkontakt
Entwicklung der Produkt Roadmap
Entwickung von User-Storys & Szenarios
Verwaltung des Produkt-Backlogs
Kunden- & Abnahmetests
Produkt-Roadmap
zeitlicher Plan inkl:
- Vermarktung
- Releases
- Produktlebensende
Softwareentwurf
technischer Plan für Entwicklung einer Software
dients als Bauplan für Programmierer
hilft Anforderungen effizient & strukturert umzusetzten
Softwareentwurf - Aspekte
Anforderungsanalyse
Architektur
Komponenten & Module
Schnittstellen
Datenmodelle
Algorithmen & Logik
Entwicklungsumgebung
Softwareentwurf - Aspekte - Architektur
grundlegende Struktur der Software
Hauptkomponenten und Interaktion untereinander
Softwareentwurf - Aspekte - Komponenten & Module
detaillierte Beschreibung der einzelnen Softwareteile
Module, Klassen und Beziehungen untereinander
Softwareentwurf - Aspekte - Schnittstellen
Definition Schnittstellen zwischen Komponenten & Modulen
Softwareentwurf - Aspekte - Datenmodelle
Beschreibung Datenstrukturen & Datenbanken
Softwareentwurf - Aspekte - Algorithmen & Logik
Logik & Algorithmen, die die Funktionalität der Software bestimmen
Softwareentwurf - Aspekte - Entwicklungsumgebung
Tools & Umgebung, die für Entwicklung verwendet werden
Programmiersprachen und Bibliotheken
Klasse
definiert Eigenschaften (Attribute)
und das Verhalten (Methoden), die die Objekte haben sollen