Softwareentwicklung Flashcards
Eine zentrale Aufgabe der Wirtschaftsinformatik?
Die Entwicklung von (betrieblichen) Informations- und Kommunikationssystemen
Was ist eine Phase der Softwareentwicklung?
Zeitlicher Abschnitt der Softwareentwicklung, der sachlich
von anderen Abschnitten getrennt abläuft (DIN 69901)
Was ist der Vorteil durch Einteilung in Phasen?
- besserer Überblick über Fortschritt
- Zuordnung von eindeutigen Verantwortlichkeiten
- > bessere Kontrolle
- > geringeres Risiko von Fehlentwicklungen
Wie lautet der Softwarelebenszyklus?
- Initiierung
- Planung
- Anforderungsanalyse
- Entwurf
- Implementierung
- Test, Integration und Einführung
- Wartung und Pflege
(8. ). Stilllegung
Was geschieht bei der Phase Planung?
Das Projekt wird initiiert und Problemanalyse.
Grundlegene Anforderungen an ein Entwicklungsprojekt werden erarbeitet und es erfolgt eine Grobplanung. Durchführbarkeit und Wirtschaftlichkeit wird überprüft.
- > Lastenheft/Produktbeschreibung
- wesentliche funktionale Anforderungen
- fachliche und technische Ebene berücksichtigen
Was geschieht bei der Phase Anforderungsanalyse?
Erarbeitung von detaillierten und verbindlichen Anforderungen an
die Software. Grundlage für spätere Softwaretests und Detaillierung des Projekts.
- > Pflichtenheft/Anforderungsspezifikation
- geforderte Funktion
- Datenbasis
- technische Randbedingungen
- Benutzerschnittstellen
- Qualitäts- und Dokumentationsanforderungen
- Projektentwicklungsplan (Zeitplan für die weiteren Aktivitäten)
- Software-Testplan für die Abnahme und Einführung der Software
Was geschieht bei der Phase Entwurf?
Es wird noch nicht programmiert.
Beschreibung der Softewarearchitektur. Bestandteil sind z.B. Module bzw. Komponenten mit definierten Schnittstellen und Beziehungen.
- > Entwurfsspezifikation
- Vorgehensweise zur Realisierung
- Grob- und Feinentwurf
Was geschieht bei der Phase Implementierung?
Anhand des Entwurfs Software programmieren. Entwicklungsumgebungen oder CASE Tools werden eingesetzt.
->Programmcode, Module/Komponenten, Dokumentation
Was geschieht bei der Phase Test, Integration und Einführung?
Verschiedene Aufgaben:
Gesamttest:
-gesamte Software testen
Verifikation:
Korrektheit anhand der Anforderungsspezifikation überprüfen
Validierung:
Ist Software für Einsatz geeignet
->oft experimentelle Testmethoden, keine Fehlerfreiheit nachweisbar
Was geschieht bei der Phase Wartung und Pflege?
Wartung:
Laufende Korrektur von im Betrieb festgestellten Fehlern
Pflege:
Anpassung der Software an neue Anforderungen
->neue Versionen, davor braucht es Qualitätssicherung
Was ist Qualitätssicherung?
Basiert auf Softwarequalität. Ob die Software sich eignet und Erfordernisse erfüllt.
Primärer Qualitätsfaktor:
korrekte Erfüllung der funktionalen Anforderungen
sekundär:
- Erweiterbarkeit /Anpassbarkeit
- Robustheit / Zuverlässigkeit
- Effizienz
- Portabilität und Kompatibilität
- Wiederverwendbarkeit
Was sind Vorgehensmodelle in der Softwareentwicklung?
Alle Aktivitäten der Softwareentwicklung können durch verschiedene Modellierungsmethoden dargestellt werden.
Z.B.
ER-Modell,EPK,BPMN(Anforderungsanalyse und Entwurf)
Was ist das Wasserfallmodell?
Die Erweiterung des Softwarelebenszyklus um Rücksprünge um jeweils eine Aktivität.
Was ist das V-Modell?
Folgt sequenziellen Ablauf, Qualitätssicherung spielt aber übergeordnete Rolle, während der einzelnen Phasen Testfälle.
+erhöhte Qualitätssicherheit
+Verifikation und Validierung
-hoher Dokumentationsaufwand
Was ist agile Softwareentwicklung?
Hauptziel ist funktionierende Software, dabei Vorgehen flexibel halten
Was sind die Maximen der agilen Softwareentwicklung?
- Ergebnisorientierung (alles tun, was für das Hauptziel nötig ist)
- Angemessenheit (nur das tun, was für das Hauptziel nötig ist)
- best Practices aus Erfahrung nutzen (statt verordnete Vorgaben)
- miteinander reden (statt viele unnütze Dokumente erstellen)
- flexibel und offen für Änderungen sein (statt starre Pläne)
- Menschen und Kommunikation (statt Prozesse und Tools)
Was ist Inrementell-terative Softwareentwicklung?
Annahme: komplexe Systeme können kaum in einem einmal zu
durchlaufenden sequenziellen Prozess entwickelt werden
->wiederholtes (iteratives) Durchlaufen von Anforderungsanalyse,
Entwurf und Implementierung
->Verwendung von Implementierungstechniken, die eine starke
Modularisierung ermöglichen (z.B. Komponententechnik)
Was ist Prototyping?
Schnelle Entwicklung von rudimentären, aber
ablauffähigen Vorversionen (Prototypen) des Systems.
Wozu braucht man Software-Wiederverwendung?
Steigerung der Effizienz der Softwareentwicklung durch
Wiederverwendung von Teilen bereits existierender Software, d.h.
Nutzung dieser Teile in einem neuen Kontext
->Software sollte so entwickelt werden, dass Wiederverwendung von
Teilen dieser Software später relativ einfach möglich ist:
Was ist Domain Engineering?
Domäne (Domain): Gruppe von ähnlichen Softwaresystemen eines
Anwendungsgebiets
Domain Engineering: Softwareentwicklung nicht an konkrete Erfordernissen einer Anwendung auszurichten, sondern an ihrer Domäne.
Was ist Komponententechnik?
Anwendung wird aus verschiedenen, wiederverwendbaren Modulen zusammengesetzt. Module von Anfang an getrennt entwicklen.
Aufgaben der Komponententechnik
- Design der Systemarchitektur (Aufbau des Gesamtsystems)
- Identifikation der benötigten Komponenten
- Spezifikation der Schnittstellen für die Funktionalitäten
-Entscheidung, ob Komponenten erstellt werden müssen
(oder vorhanden sind bzw. beschafft werden können)
Vorteile der Komponententechnik?
- Effizienzsteigerung bei der Anwendungsentwicklung
- paralleles Entwickeln verschiedener Komponenten möglich
- isoliertes Testen der Komponenten ( Qualitätssicherung)
- höhere Zuverlässigkeit von Komponenten durch vielfachen Einsatz
- Erhöhung der Wartbarkeit und Skalierbarkeit des Softwaresystems
Was ist Modellgetriebene Architektur(MDA)?
Ein teilautomatisierter Entwurf und Implementierung von Software ausgehend von fachlichen Modellen.
Mögliche Ausprägungen:
- Modelltransformation(Modell in ein anderes)
- Codetransformation(Modell in ein Code)
Was sind die Ziele der MDA?
- effiziente Softwareentwicklung
- geringere Fehleranfälligkeit durch Vermeidung von Medienbrüchen
- Entwickler beschäftigen sich (nur) mit technischen Aspekten
Was ist ein Projekt?
Vorhaben, das im Wesentlichen durch seine Einmaligkeit der
Bedingungen in ihrer Gesamtheit gekennzeichnet ist, wie z.B.
-Zielvorgabe
-zeitliche, finanzielle oder andere Begrenzungen
-Abgrenzungen gegenüber anderen Vorhaben
-projektspezifische Organisation
Was ist Projektmanagement?
Gesamtheit von Führungsaufgaben, -organisation, -techniken
und -mitteln für die Abwicklung eines Projektes
Was sind die Aufgaben des Projektmanagements?
- Projektziele
- Aufbauorganisation (Aufbau einer Projektorganisation)
- Ablauforganisation(geeigneter Projektablauf)
- Projektplanung(Planung realistischer Leistungen, Termine, Kosten, Kapazitäten
- Führung (Motivation, Engagement und Zusammenarbeit aller betroffenen Mitarbeiter)
- Projektcontrolling(laufende Überwachung und Abweichungen steuern)
Wie ist der Ablauf der Projektplanung?
- Strukturplanung(Funktionen, Teilaufgaben)
- Ablaufplanung(Abhängigkeiten, Prioritäten)
- Kapazitätsplanung
- Terminplanung
- Kostenplanung
Kapazitäten, Kosten und Termine hängen eng zusammen und beeinflussen sich gegenseitig.
Was ist eine Aufwandsschätzung im Software-Projektmanagement?
Die Schätzung des Aufwands für ein Projekt. Bei Softwareprojekten sind das meistens Schätzungen des Entwicklungsaufwandes. Sind aber nur ein einfacher Anhaltspunkt und diese werden oft aus Erfahrungswerten gebildet.
Was sind die Probleme einer Aufwandsschätzung?
-Wie misst bzw. schätzt man die Kenngrößen? (Problem: Aufwandsschätzung
ist oft sehr früh im Softwareentwicklungsprozess.)
-Sind die angenommenen Zusammenhänge aus früheren Projekten im
aktuellen Projekt gültig?
-Gibt es überhaupt gültige
Daten zum Aufwand früherer Projekte?
(Probleme: Wurde der tatsächliche oder geplante Aufwand
dokumentiert? Wurde der Bezug zu Funktionalitäten dokumentiert?)