SWE 1. Vorlesung Flashcards
Wer prägte den Begriff „Software“ und was beschreibt dieser Begriff?
Der Begriff „Software“ wurde 1958 von John Tukey geprägt. Er beschreibt eine Reihe von Programmen und ggf. zugehörige Dokumentationen und Daten, die notwendig sind, um einen Computer zu betreiben.
Welche historischen Persönlichkeiten haben maßgeblich zur Entwicklung der Software- und Computerprinzipien beigetragen?
Alan Turing beschrieb das prototypische Verhalten von Software (1936-1937), John von Neumann entwickelte die Grundprinzipien für Computer-Algorithmen (1945), und Noam Chomsky etablierte Syntaxregeln für Programmiersprachen (1957-1958).
Warum ist Software Engineering wichtig?
Software Engineering ist wichtig, um qualitativ hochwertige, fehlerfreie Software systematisch und effizient zu entwickeln. Computer sind nicht fehlertolerant, daher ist es entscheidend, strukturierte Methoden und Prozesse zu nutzen, um Software korrekt und zuverlässig zu gestalten.
Nenne drei typische Herausforderungen in komplexen Softwareprojekten
- Die Verarbeitung und das Design der Daten
- Die Systemarchitektur und Kopplung der Komponenten
- Die Wahl der Programmiersprache und der Software-Konzepte, um die Anforderungen der Anwendungsdomäne optimal zu erfüllen.
Welche Phasen umfasst der Software Development Life Cycle (SDLC)?
Der SDLC umfasst die Phasen Anforderungsanalyse, Design, Implementierung, Validierung und Verifikation sowie die Inbetriebnahme und den Support.
Nenne zwei traditionelle und zwei agile Vorgehensmodelle im Software Engineering und ihre Charakteristika.
Traditionelle Modelle:
Wasserfallmodell: Ein lineares, phasenbasiertes Modell, das strikt sequenziell vorgeht.
V-Modell: Ein Modell, das Projektmanagement integriert und auf eine klare Abfolge von Entwicklungs- und Testphasen setzt.
Agile Modelle:
Extreme Programming (XP): Ein agiles Modell, das sich auf kurze Entwicklungszyklen und kontinuierliches Feedback konzentriert.
Scrum: Ein agiles Framework, das auf iterative und inkrementelle Entwicklung fokussiert ist und in Sprints arbeitet.
Was ist Requirements Engineering und warum ist es wichtig?
Requirements Engineering ist der Prozess der Erfassung, Analyse und Dokumentation von Anforderungen für ein Softwareprojekt. Es ist wichtig, da klare Anforderungen die Grundlage für eine erfolgreiche Entwicklung und eine funktionierende Software bilden.
Welche Rolle spielt die Qualitätssicherung (QA) im Software Engineering?
Die Qualitätssicherung sorgt dafür, dass die Software die festgelegten Qualitätsstandards erfüllt. Sie umfasst Methoden wie Tests, Code-Reviews und kontinuierliche Integration, um Fehler frühzeitig zu identifizieren und die Zuverlässigkeit der Software zu gewährleisten.
5. Ethik im Software Engineering
Nenne vier ethische Prinzipien im Software Engineering gemäß der ACM/IEEE-Richtlinien.
PUBLIC – Software-Ingenieure sollen im öffentlichen Interesse handeln.
CLIENT AND EMPLOYER – Sie sollen im besten Interesse ihrer Kunden und Arbeitgeber handeln.
PRODUCT – Sie sollen sicherstellen, dass ihre Produkte höchste professionelle Standards erfüllen.
JUDGMENT – Sie sollen in ihrer beruflichen Urteilsfindung unabhängig und integer bleiben.
Was ist ein Modell im Kontext des Software Engineerings?
Ein Modell ist eine abstrahierte Darstellung der Realität, die bestimmte Aspekte vereinfacht, um sie besser verständlich zu machen. Im Software Engineering helfen Modelle, Daten, Architektur, Abläufe und Deployment strukturiert und übersichtlich zu planen.
Erkläre den Unterschied zwischen einem Datenmodell und einem Architekturmodell.
Ein Datenmodell beschreibt die Struktur und Beziehung der Daten im System, während ein Architekturmodell die Systemkomponenten und deren Interaktion beschreibt. Das Datenmodell konzentriert sich auf den Inhalt, das Architekturmodell auf die Struktur des Systems.
Was ist der Zweck von Design Patterns im Software Engineering?
Design Patterns bieten erprobte Lösungen für häufig auftretende Probleme in der Softwareentwicklung. Sie fördern die Wiederverwendbarkeit und Wartbarkeit des Codes und helfen Entwicklern, bewährte Lösungen effizient umzusetzen.
Was ist Refactoring, und warum wird es eingesetzt?
Refactoring ist der Prozess der Code-Verbesserung, ohne das äußere Verhalten der Software zu verändern. Es wird eingesetzt, um den Code lesbarer, effizienter und wartungsfreundlicher zu machen.
Welche Rolle spielt das Projektmanagement (PM) im Software Engineering?
Projektmanagement im Software Engineering sorgt für eine strukturierte Planung, Durchführung und Kontrolle des Softwareentwicklungsprozesses. Es hilft, Ressourcen zu verwalten, Zeitpläne einzuhalten und die Projektziele zu erreichen.
Nenne ein weit verbreitetes Projektmanagement-Framework und beschreibe dessen Verbindung zu Software Engineering.
PRINCE2 ist ein gängiges Framework, das oft in Kombination mit dem V-Modell XT im Software Engineering eingesetzt wird. Es bietet Richtlinien zur Planung und Überwachung von Projekten, jedoch ohne spezifische Vorgaben zur Entwicklungsmethodik.