Software Engineering Flashcards
Was ist UML?
Die Unified Modeling Language ist eine grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Software-Teilen und anderen Systemen
Nennen Sie die wichtigsten UML-Diagramme!
-
Anwendungsfalldiagramm
Funktionale Anforderungen: Die Anforderungen der Benutzer werden anhand von sinnvollen Einheiten dargestellt. -
Klassendiagramm
Modell der Domäne: Die statische Struktur der Problemdomäne wird mit Hilfe von Klassen gezeigt. -
Sequenzdiagramm und Kollaborationsdiagramm
Objektzusammenarbeit: Zeigt die dynamische Zusammenarbeit von Objekten, welche zur Umsetzung eines Anwendungsfalles notwendig ist. -
Zustandsdiagramm
Objektzustände: Zeigt die Zustände eines Objektes oder eines Moduls während dessen Lebensdauer und deren Übergänge untereinander
Was verstehen Sie unter Anforderungsanalyse?
Ziel der Anforderungsanalyse ist es, die Anforderungen des Auftraggebers an das zu entwickelnde System zu ermitteln, zu strukturieren und zu prüfen. Das Ergebnis der Anforderungsanalyse wird meistens in einem Lastenheft dokumentiert oder bei einer agilen Software Entwicklung resultiert daraus ein Product Backlog.
Finden, verstehen und beschreiben der Anforderungen.
Vorgehensmodell Analyse:
- Verstehen. Wissensquellen finden, Domäne erlernen, Interviews durchführen.
- Strukturieren. Begriffe definieren, Anwendungsfälle identifizieren.
- Beschreiben. Modelle erstellen.
- Validieren. Modelle mit Anwender überprüfen und verbessern.
Welche UML-Diagramme können in der Analysephase verwendet werden?
- Anwendungsfalldiagramm
- Klassendiagramm
- Sequenzdiagramm
Was ist ein Sequenzdiagramm und wofür können Sequenzdiagramm eingesetzt werden?
Sequenzdiagramm zeigt die Objektzusammenarbeit. Es stellt die dynamische Zusammenarbeit von Objekten, welche zur Umsetzung eines Anwendungsfalles notwendig ist.
Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse vor und welche nach einem Ereignisauftritt auftreten müssen.
Sequenzdiagramme werden zur Darstellung der Kommunikation von Objekten eingesetzt, Sie können in der Analyse und im Design eingesetzt werden.
Welche Tätigkeiten fasst man unter dem Begriff „Design“ zusammen?
Entwurf von:
- UI-Klassen und Systemschnittstellen
- Geschäftslogik-Klassen mit Algorithmen
- Datenbasis mit Datenstrukturen
- Datenbank
Welche Beziehungen zwischen Klassen bzw Objekten können in einem Klassendiagramm eingetragen werden?
-
Assoziation
- Beziehung zwischen Klassen
- Die Objekte der Klassen kommunizieren über die Assoziationen miteinander
- Linie -
gerichtete Assoziation
- Pfeil gibt die Navigationsrichtung an
- Der Pfeil drückt die Zugriffsrechte der Objekte aus. -
Vererbung
- Vererbungsbeziehungen werden mit einem Pfeil dargestellt.
- Die Pfeilspitze zeigt auf die Oberklasse. -
Aggregation
- Das ganze Objekt besteht aus Teil-Objekten.
- leere Raute -
Komposition
- Die Teile können nicht ohne das ganze existieren.
- Wird das ganze gelöscht, so beenden auch die Teile ihre Existenz.
- gefüllte Raute
Was steht in einem Projektplan?
Der Projektplan hält das Resultat sämtlicher Planungsaktivitäten in einem konsistenten Dokument oder mehreren kohärenten Dokumenten fest –> Gesamtheit aller im Projekt vorhandenen Pläne.
Folgende Unterlagen können enthalten sein:
- Projektstrukturplan (Gliederung des Projekts in plan- und kontrollierbare Elemente)
- Meilensteinplan
- Terminliste
- Balkenplan
- Netzplan
- Kostenkalkulation
Was ist ein Meilenstein?
Meilenstein ist ein definierter Punkt (Ereignis), an dem im Rahmen eines Projekts der Abschluss einer Einzelaktivität überprüft wird.
Meilensteine markieren den Beginn einer Projektphase, die Phasenfreigabe (ein Meilenstein muss vor einem anderen abgeschlossen werden) oder das Ende einer Phase. Auch innerhalb einer Projektphase können Meilensteine liegen.
Eigenschaften:
- umsetzbar
- messbar
Ziel: Sicherstellung der im Projektplan festgelegten Termin-, Kosten- und Qualitätsanforderungen
Welche Methoden der Qualitätssicherung können in einem Software-Projekt eingesetzt werden?
- iterative Softwareentwicklung (kontinuierliche Verbesserung in kleinen Schritten)
- Spiralmodell (Ziele festlegen, Alternativen evaluieren, Realisierung und Überprüfung der Zwischenprodukte, Planung nächster Zyklus)
-
Refactoring
Verbesserung des Quelltexts(Lesbarkeit, Verständlichkeit, Wartbarkeit und Erweiterbarkeit) - Testgetriebe Entwicklung
- unterschiedliche Testarten und Methoden bei Softwaretests
Was versteht man unter Versionskontrolle?
Die Versionskontrolle dient zur Erfassung von Änderungen an Dokumenten oder Dateien. Alle Versionen werden in einem Archiv mit Zeitstempel und Benutzererkennung gesichert und können später wiederhergestellt werden. Es kann somit auch festgestellt werden wer wann was geändert hat. Bei Bedarf – beispielsweise bei versehentlicher Änderung – kann man zu einer früheren Version zurückkehren.
Hauptaufgaben:
- Protokollierung der Änderungen
- Wiederherstellung von alten Ständen einzelner Dateien
- Archivierung der einzelnen Stände eines Projekts
- Koordination des gemeinsamen Zugriffs von mehreren Entwicklern auf die Dateien.
- Gleichzeitige Entwicklung mehrerer Entwicklungszweige (engl. Branches) eines Projekts
Was beeinflusst den Aufwand eines Software-Projekts?
-
Produktbezogene Einflussfaktoren
- Quantität (Anzahl der zu erstellenden Zeilen Code oder Funktionen)
- Komplexität
Je umfassender und vielschichtiger ein Projekt ist, desto mehr steigt seine Komplexität.
(Feststellung: Aufteilung von Klassen in einfache, mittlere und komplexe) - Qualität
Qualitätsmerkmale: Funktionalität, Benutzbarkeit, Wartbarkeit und Stabilität
-
Prozessbezogene Einflussfaktoren
- Projektdauer (Mehr Mitarbeiter können sich negativ auswirken)
- Personalqualität (Ausbildungsstand und Erfahrung der Mitarbeiter)
- Entwicklungsumgebung (Je intensiver die Tools der Entwicklungsumgebung genutzt werden, desto geringer ist der Projektaufwand)
Wie kann Aufwand geschätzt werden?
-
Analogiemethode
(Erfahrungen aus vergangenen/Ähnlichen Projekten) -
Delphi-Methode
(Mehrere Experten werden um Schätzungen gebeten) -
Multiplikatormethode
(Aufteilung in vergleichbare Einzelteile; Schätzung eines solchen Einzelteils) -
Gewichtungsmethode
(Identifikation von „Cost-Driver“; Berechnung mittels Formeln (z.B.: COCOMO – Constructive Cost Model
Die Grundidee besteht darin alle kostenrelevanten Elemente zu erfassen, zu bewerten und hochzurechnen, basierend auf Erfahrungswerten))
Welche Vorgehensmodelle der Software-Entwicklung gibt es?
- Life Cycle
- Wasserfallmodell
- V-Modell
- Spiralmodell
- Inkrementelle Entwicklung
Analyse – Entwurf – Implementierung, Integration – Auslieferung an Kunden