Software-Engineering Prozess Flashcards
Was ist Software?
Sammelbegriff für: - die Gesamtheit der Programme - die zugehörigen Daten - die notwendige Dokumentation , die es erlauben mit Hilfe eines Computers Aufgaben zu erledigen
Kann für bestimmten Kunden oder freien Markt entwickelt werden.
In welchen Formen widerspiegelt sich die Komplexität von Software?
Komplexität:
a) der Funktionen
b) der Daten
c) der Algorithmen
d) des zeitabhängiges Verhaltens
e) der Systemumgebung
f) der Benutzungsoberfläche
Wie unterscheidet sich Software von einem technischen Produkt?
- Software ist ein immaterielles Produkt
- Software hat keine (oder sehr geringe) Vervielfältigungskosten
- Software unterliegt keinem Verschleiß von Einzelteilen (kann aber dennoch altern –> durch ändernde Umgebungsbedingungen)
- für Software gibt es keine Ersatzteile
- der Wert von Software lässt sich schwer bemessen
Definiere Software-Engineering
Systematische Entwicklung und Gestaltung von Software unter Verwendung geeigneter Prinzipien, Methoden und Werkzeuge.
Warum gibt es Software-Engineering?
Software-Entwicklung findet in einem Spannungsfeld statt:
- Erhöhung der Qualität/ des Umfangs –> höhere Kosten/ größerer Zeitbedarf
- > Preisdruck, Qualitätsanforderungen, Funktionsumfang, Zeitdruck
- > Effizienzsteigerung gewünscht (durch Standardisierung, Einsatz kollaborativer Werkzeuge, etc.)
Was sind die Eigenschaften von guter Software
- liefert geforderte Funktionalität und Performance
- Wartbarkeit
- Verlässlichkeit
- Effizienz (verschwendet keine Systemressourcen)
- Akzeptanz
Welches sind die grundlegenden Aktivitäten des Software-Engineering?
(Bzw. grundlegende Schritte jedes Vorgehensmodells im SE)
- Spezifikation
- Entwicklung
- Validierung
- Weiterentwicklung
Worin liegt der Unterschied zwischen Software-Engineering und Informatik?
Informatik: Fokus auf Theorie und Grundlagen
Software-Engineering: Entwicklung in der Praxis + Herstellung nützlicher Software
Worin liegt der Unterschied zwischen Software-Engineering und Systems-Engineering?
Systems-Engineering: beschäftigt sich mit allen Aspekten computerbasierter Systementwicklung:
- Hardware
- Software
- Verfahren
–> Software-Engineering ist ein Teil dieses Prozesses
Worin liegen die größten Herausforderungen für das Software Engineering?
erfolgreicher Umgang mit:
- zunehmender Vielfalt
- Forderungen nach verkürzten Lieferzeiten
- Entwicklung vertrauenswürdiger Software
Was kostet das Software-Engineering
60% Entwicklungskosten - 40% Testkosten
Skizziere den Rahmen des Software-Engineering-Prozesses
Analyse –> Design –> Codierung –> Test –> Wartung
- dabei fortlaufend Projektmanagement und Qualitätssicherung
- ggf. spezifische Vertiefungsgebiete (Usability, Security, Echtzeit, …)
- übergeordnete Mechanismen: Risikomanagement, IT-Strategie, …
Nenne 4 Vorgehensmodelle im Software-Engineering
- Wasserfallmodell
- Inkrementelle Entwicklung
- Komponentenbasierte Entwicklung
- Agiles Vorgehen
Nenne Vor- und Nachteile des Wasserfallmodells
Vorteile:
- aufgrund Dokumentation stets durchschaubar
- Management-kompatibel, da starrer, transparenter Prozess
- kann beweisbar korrekte Software erzeugen
Nachteile:
- Big-Bang-Effekt: bei letztlicher Integration/Wartung werden Spezifikations-/Entwurfsfehler festgestellt
Nenne Vor- und Nachteile der Inkrementellen Entwicklung
Vorteile:
- Kosten für sich ändernde Anforderung reduziert
- Rückmeldung zu fertiggestellten Teilen einfach abzufragen
- schnelle erste Auslieferung (bspw. MVP)
Nachteile:
- Prozess/Status nicht deutlich
- Inkremente können System schwächen, wenn kein Refactoring, sondern Fixing –> Inkremente werden mit jedem Inkrement aufwändiger