Einführung: Software Engineerings VL1 Flashcards
Produktentstehungsprozess (PEP)
Der Produktentstehungsprozess ist eine systematische Abfolge von Schritten und Aktivitäten, die zur Produktidee, Planung, Konzeption, Entwicklung, Herstellung und Wartung sowie dem Betriebsende eines neuen oder verbesserten Produkts führen. Dieser Prozess umfasst alle Lebensphasen eines Produkts und variiert je nach Branche.
Software Engineering
Software Engineering ist die Teildisziplin der Informatik, welche sich
mit der Erarbeitung und Anwendung von Prinzipien, Methoden und
Werkzeugen zur Entwicklung, zur Herstellung, zum Betrieb und zur
Wartung von komplexen Softwaresystemen befasst.
alle Lebensphasen eines Produkts
(картинка с 7 фазами проекта)
Produktidee, Produktplanung, Produktkonzept, Entwicklung, Herstellung, Betrieb/Wartung, Betriebs-/Lebenssende
Softwaresystem
Softwaresystem ist ein System von miteinander kommunizierenden Komponenten auf Basis von Software und Teil eines Computersystems. Ein Softwaresystem besteht aus einer Reihe separater Programme, Konfigurationsdateien, System- und Benutzerdokumentation.
Merkmale von Softwaresystemen:
-kann vereinfacht in Systemsoftware, Betriebssysteme, Anwendungssoftware sowie weiterer Software kategorisiert werden (Могут быть упрощены и категоризированы как системное программное обеспечение)
-beschreibt Sicht eines Entwicklers auf Dekomposition einer Software mit Prinzipien des Software Engineering
Bedeutung von Software Engineering für softwareintensive Systeme
Fehler in reinen Softwareprodukten häufig nicht sicherheitskritisch, z.B.
▪ Fahrplanapps/-auskünfte
▪ fehlerhafte Webseiten/-apps
Betrachtung softwareintensiver Systeme ggf. sicherheitskritisch, z.B.
▪ Flugzeuglandung LH 2904
▪ Selbstzerstörung Ariane 5
Softwareanteil in softwareintensiven Systemen (z.B. für Strahlentherapie, Fahrassistenz) birgt Gefährdungspotential ohne Software Engineering
softwareintensives System
Ein softwareintensives System ist ein System aus Soft- und Hardware,
in der Software die bedeutende und essentielle Rolle für Betrieb,
Funktionalität sowie Leistung spielt. Softwareintensive Systeme sind
gekennzeichnet durch die Komplexität der Algorithmen, der
Systemumgebung und des zeitabhängigen Verhaltens.
Herausforderungen
▪ Entwicklung, Betrieb und Wartung von Softwarekomponenten in softwareintensiven
Systemen erfordert sorgfältige Anwendung von Software Engineering Prinzipien
▪ Zusammenarbeit zwischen Softwareingenieuren und weiteren Fachexperten ist aufgrund
Komplexitätsbeherrschung für Zuverlässigkeit, Sicherheit und Effizienz notwendig
Case Trends
Connected (Vernetzung des Fahrzeugs mit weiteren Fahrzeugen und Infrastruktur) Softwareanteil durch neue Dienstleistungen
Autonomes (Autonomes Fahren und hochautomatisierte Fahrfunktionen) Softwareanteil steigt durch Fahrassistenz
Shared (Mobilität als Dienstleistung, statt besitzt von Fahrzeugen/Hardware) Stellenwert der Hardware (z.B Design) sinkt
Electric (Elektrische Fahrzeugantriebe und
Reduktion der Antriebsstrangkomplexität)
→ mechanische Komplexität steigt kaum noch
Annual Percentage Value Added in Automotive Industry
2020 - 26%, 2025 - 51 %, 2030 - 69%
Lines of Code als Softwaremetrik
▪ häufige Methode zur Messung der Komplexität
▪ reine Anzahl der Codezeilen keine genaue
Darstellung der tatsächlichen Komplexität
Weitere Faktoren für Komplexität
▪ Code-Struktur, Algorithmen, Abhängigkeiten,
Anzahl der Funktionen und Variablen
▪ Verschachtelung von Kontrollstrukturen,
Wartbarkeit, Dokumentation, Designprinzipien
▪ statische Codeanalyse ermöglicht tiefgehende
Untersuchung der Softwarestruktur
Dimensionen der Komplexität (измерения сложности)
Durch Implementierung bedingt: Die Komplexität der Funktionen, die Komplexität der Datenstrukturen und die Komplexität der Algorithmen hängen davon ab, wie sie in das System eingebunden sind.
Durch Anwendungskontext bedingt: Die Komplexität des zeitabhängigen Verhaltens, die Komplexität der Systemumgebung und die Komplexität der Benutzerinteraktion hängen vom konkreten Einsatzgebiet und den Anforderungen ab.
Komplexität
Komplexität bezeichnet die Herausforderung, Software bzw.
Softwaresysteme aufgrund der zahlreichen Systemelemente, ihrer
vielfältigen Beziehungen untereinander und des meist
emergenten Verhaltens zu analysieren oder zu beherrschen.
Systemumgebung
Die Systemumgebung ist die Gesamtheit aller externen Faktoren, die ein Softwaresystem oder softwareintensives System umgeben und das
Verhalten beeinflussen können. Die Berücksichtigung der Systemumgebung ist für nutzergerechte Entwicklung, Herstellung, Wartung sowie den effizienten Betrieb von Software notwendig.
Beispiele externe Faktoren
▪ Hardware (z.B. Computerhardware) und Software (z.B. Betriebssystem)
▪ Menschen (Human Factors später vertieft) und organisatorische Aspekte
▪ Daten und Netzwerke, insbesondere bei hochvernetzen Systemen
Herausforderungen bei hochvernetzten Systemen
Hohe Vernetzung mit externen Systemen
▪ Dynamisches Umfeld während Laufzeit
▪ Co-Entwicklung Software und externe
Systeme mit verschiedenen Reifegraden
▪ Anforderungen im nicht-funktionalen
Bereich („Qualitätsanforderungen“)
▪ Hohe Notwendigkeit für frühes Testen
▪ Hohe Anforderungen an funktionale
Sicherheit bei Vielzahl Abhängigkeiten
System
Ein System ist eine Anordnung von Elementen, die gemeinsam ein
Verhalten besitzen, die die Bestandteile nicht aufweisen (Emergenz). Es
ist durch seine Systemgrenze von der Systemumgebung abgegrenzt,
erfüllt einen definierten Zweck und besitzt eine vorgegebene Funktion.