VL1 + 1 Übung Flashcards
(40 cards)
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.
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 oder Softwaresysteme zu verstehen oder zu steuern, aufgrund der vielen verschiedenen Elemente im System, ihrer unterschiedlichen Wechselwirkungen und des oft unvorhersehbaren Verhaltens.
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.
Funktionales Konzept
Der Zweck des Systems wird von außen bestimmt.
Zweck des Systems: Wird von außen bestimmt, basierend darauf, wie es funktioniert und welche Zustände es hat.
Funktion des Systems: Entsteht durch Interaktionen mit der Umgebung (z. B. andere Systeme, Benutzer, Hardware).
Grenzen des Systems: Der Zweck und die Funktion werden an den Grenzen des Systems festgelegt, durch die Schnittstellen und Daten (Ein- und Ausgaben).
Strukturelles Konzept
Strukturelle Zusammensetzung des Systems
▪ Anordnung von Elementen und deren Relationen
▪ Elemente betrachtet als Blackbox sofern Zerlegung ausreichend für Verständnis des Systems / Zwecks
Hierarchisches Konzept
Tieferes Systemverständnis durch Bildung von Teilsysteme
▪ Elemente können als Teilsysteme verstanden werden
▪ Betrachtung der Teilsysteme als Whitebox und Zerlegung
▪ Rekursive Anwendung des hierarchischen Konzepts
möglich (Systemanalyse)
Holistisches Konzept
Entstehung von Emergenz
▪ Betrachtung des Systems als Ganzes und nicht nur als
Summe der Elemente
▪ Systemeigenschaften, über die die Elemente einzeln
betrachtet nicht verfügen
▪ Beispiel: Taschenlampe (Batterie und Lampe leuchten
einzeln betrachtet nicht)
Emergenz
Emergenz ist das Phänomen, bei dem komplexe Systeme Eigenschaften, Muster oder Verhalten aufweisen, die auf der Ebenen ihrer Bestandteile nicht vorhanden oder nicht unmittelbar vorhersehbar sind. Diese Systemeigenschaften entstehen durch die Wechselwirkungen der einzelnen Elemente in einem System. (пример автомобиль)
Systems Engineering
Systems Engineering ist ein transdisziplinärer und integrativer Ansatz, der sicherstellt, dass alle Teile eines Systems richtig zusammenarbeiten, um die gewünschten Ziele zu erreichen. Es bezieht sich auf die ganzheitliche Betrachtung eines Systems und berücksichtigt dabei alle technischen, wissenschaftlichen und organisatorischen Aspekte, um das System effizient zu entwickeln, zu betreiben und zu warten.
Verifikation und Validierung
Verifikation und Validierung:
Verifikation bezieht sich auf den Prozess, durch den überprüft wird, ob das System spezifizierte Anforderungen erfüllt. Dies könnte beispielsweise bedeuten, dass die Softwarefunktionen gemäß den definierten Spezifikationen arbeiten. „Bauen wir das Produkt richtig?“
Validierung hingegen bezieht sich darauf, ob das entwickelte System tatsächlich die Bedürfnisse und Anforderungen des Kunden erfüllt. Es bestätigt, dass das entwickelte System das Richtige tut.„Bauen wir das richtige Produkt?“
Was wird unter einem Softwareprodukt verstanden und grenzen Sie dies zum allgemeinen Begriff Software ab?
Ein Softwareprodukt ist das Ergebnis eines Entwicklungsprozesses, das für mehrere Kunden oder den allgemeinen Markt bestimmt ist. Im Gegensatz dazu bezeichnet der Begriff “Software” allgemein jede Art von Software, unabhängig davon, ob sie als Produkt oder Einzelanfertigung entsteht. Der Unterschied liegt darin, dass Softwareprodukte wiederholt verkauft werden, während einmalige Entwicklungen als Projekte bezeichnet werden.
Erklären Sie, warum professionelle Softwareentwicklung nicht nur die Programme einschließt, die für Kunden entwickelt werden.
Professionelle Softwareentwicklung umfasst nicht nur die Erstellung von Kundensoftware, sondern auch verschiedene Methoden und Prinzipien, um qualitativ hochwertigen und wartbaren Code zu gewährleisten. Da die Entwicklung oft vom Budget, Zeitrahmen und Projektumfang des Kunden abhängt, erfordert sie auch sorgfältige Planung und Projektmanagement, um die gewünschten Ziele effizient zu erreichen.