Einführung: Software Engineerings 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.
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
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
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.
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
Funktionales Konzept
Zweck basiert auf von außen wahrnehmbarer Funktion,
Zustände sowie Verhalten durch die Systemgrenze
Funktion festgelegt durch Art der Interaktion mit Systemumgebung, Schnittstellen
sowie In-/Outputs
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)
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.
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.
Was wird unter einem Softwareprodukt verstanden und grenzen Sie dies zum allgemeinen Begriff Software ab?
Ein Produkt im Allgemeinen ist das Ergebnis eines Wertschöpfungsprozesses. Damit ist Dienstleistung ein Produkt. Aber
auch ein für einen einzelnen Kunden geschaffenes Stück Software ist als Produkt zu werten. Dies spiegelt sich auch in der
Tatsache wieder, dass das Produkthaftungsgesetzfür eine derartige Auftragssoftware in vollem Umfang gilt.
Die Softwarebranche verwendet den Begriff „Produkt“ eher für mehrfach verkaufte Softwaresysteme und nennt das
einmalige Vorhaben „Projekt“. Bei Produkten gibt es daher auch ein Produktblatt. Bei Projekten gibt es nur eine
Projektbeschreibung mit detaillierten Anforderungen des Auftraggebers.
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 kundenspezifischen Programmen, sondern auch eine Reihe weiterer entscheidender Aspekte. Dazu gehört die Implementierung bewährter Softwareentwicklungspraktiken, um qualitativ hochwertigen und wartbaren Code zu gewährleisten. Die Integration von Sicherheitsmaßnahmen ist unerlässlich, um Daten vor Bedrohungen zu schützen. Zudem erfordert die professionelle
Softwareentwicklung effizientes Projektmanagement, um Zeitpläne einzuhalten und Ressourcen optimal zu nutzen.
Außerdem spielt die kontinuierliche Wartung und Aktualisierung von Software eine wichtige Rolle, um Funktionalität, Sicherheit und Kompatibilität mit neuen Technologien zu gewährleisten.