Was ist Software?
Sammelbezeichnung für Programme für Rechensysteme einschließlich zugehöriger Dokumentation
Was ist Softwareengineering?
Ingenieursmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen mit systematischen Werkzeugen, Methoden und Prinzipien
Wie wichtig ist Software Qualität?
Bei Großprojekten
Kleine Fehler → große Wirkung
Was ist Technical Debt und Ursache?
Schlechte Prozesse, mangelhafte Software bzw. Dokumentation
Ursache: Zeitmangel oder mangelnde Sorgfalt
Was ist stetes Refactoring?
Zeiteinplanen für den Abbau von Technical Debt und Qualitätssicherung
(Bsp. Reorganisieren von Klassen, Vereinfachen von Ablauflogik)
Ansprüche an das Management von Softwareprojekten?
Scope: Funktion und Performance
Budget: Ressourcen, Kosten
Zeit
Was steht zwischen den Ansprüchen in Softwareprojekten?
Qualität
Wie kann die Qualität im Verlauf der Zeit unter Druck geraten?
Zeitmangel durch Komplexität und Technical Debt
Was für Qualitätsmaßnahmen gibt es?
Analytische: Messungen oder Testing
Konstruktive: Verhindern der Entstehung von Fehlern (Pair Programming, Refactoring)
Organisatorische unterstützende Maßnahmen für analytische und konstruktive Maßnahmen
Was sollte bezüglich Good Practice in der Programmierung beachtet werden?
In kleinen Schritten Software entwickeln und testen
Sinnvolle Benennung von Variablen
Übergabe von Variablen sinnvoll gestalten
Eine Funktion = eine Aufgabe
Was sind drei einfache Wahrheiten in SWE-Projekten bezüglich Anforderungen ?
Selten sind alle Anforderungen am Anfang erfassbar
Stakeholder ändern ihre Meinung, am Anfang fehlen immer Informationen
Immer mehr Arbeit als Geld und Zeit vorhanden – Wichtiges zuerst
Was ist das Wasserfallmodell? Vor- und Nachteile?
Reihenfolge von Aktivitäten ist fest definiert
Vorteil: Hohe Planbarkeit, einfach planbares Vorgehen mit Arbeitsteilung
Nachteil: Hohes Risiko bei geänderten Anforderungen
Nachteil: Qualität ist die einzige flexible Variable
Was ist Agile Softwareentwicklung?
Projektphasen werden kontinuierlich betrachtet und angepasst
Was ist fix und flexibel bei Wasserfall und Agile?
Wasserfall: Fix = Requirements
Wasserfall: Flexibel = Ressourcen und Zeit
Agile: Fix = Ressourcen und Zeit
Agile: Flexibel = Requirements
Was ist Scrum?
Framework zur Bearbeitung komplexer Probleme
Ziel: Produkte mit größtmöglichem Wert erstellen
Agile Methode
Leichtgewichtig
Verständlich
Schwierige Umsetzung
Was ist der Product Owner?
Erstellt und priorisiert das Product Backlog
Eine Person
Für Developer verfügbar
Entwickelt das Produktziel
Kommunikation nach außen
Was sind die Devs?
Selbstverwaltend
Keine Teamänderungen während eines Sprints
Cross-funktional
Entwickelt das Produktinkrement
Was ist der Scrum Master?
Managt den Scrum-Prozess
Beseitigt Hindernisse
Verantwortet die Effektivität des Teams
Führt Scrum ein
Was ist das Product Backlog?
Liste offener Aufgaben
Product Owner ist für Ordnung, Priorisierung und Verfügbarkeit verantwortlich
Was ist das Sprint Backlog?
Developer planen den Sprint bei der Übernahme der Items aus dem Product Backlog
Wofür: Sprintziel
Was: Product Backlog Items
Wie: Plan für die Lieferung des Inkrements
Was ist ein Product Increment?
Lauffähige Software
Auch Mehrwert für andere Lieferergebnisse
Was ist die Definition of Done?
Gemeinsames Verständnis von Vollständigkeit
Nachvollziehbare Checkliste
Gehört den Developern
Ändert sich häufig
Was ist ein Sprint und wie lang ist er?
Zeitraum, in dem Product Backlog Items zu einem Produktinkrement werden
So kurz wie möglich
Maximal 30 Tage
Was macht den Sprint zum „sicheren Hafen“?
Scrum-Team liefert nach jedem Sprint etwas Neues für den Kunden
Kunde lässt das Scrum-Team während des Sprints in Ruhe
Was ist der Daily Scrum?
Einfache Synchronisation über die letzten 24 Stunden und die nächsten 24 Stunden
Was ist das Sprint Review?
Besprechung der Sprintarbeit
Feedback sammeln
Mögliche Anpassung von Product-Backlog-Items
Was ist die Sprint Retrospective, wer und wann?
Was ist gut gelaufen?
Was ist schlecht gelaufen?
Was kann verbessert werden?
2–3 Verbesserungsmaßnahmen definieren
Emotionaler Austausch
Scrum-Team, bei Bedarf externe Teilnehmer
Nach jedem Sprint
Was ist der Unterschied zwischen Daily, Sprint Review und Retrospective?
Daily: Synchronisation des Teams
Sprint Review: Bewertung des Inkrements
Retrospective: Verbesserung des nächsten Sprints
Phasen der Retrospective und Nutzen?
Voraussetzung schaffen: Team ankommen lassen
Daten sammeln: Datenpool schaffen
Einsicht gewinnen: Muster erkennen
Aktionen beschließen: Verbesserungen festlegen
Abschließen: Selbstreflexion ermöglichen
Warum ist es schwierig, Arbeit in absoluter Zeit zu schätzen?
Wird als Commitment verstanden
Realistisch oft schwer abschätzbar
Arbeit dehnt sich oft bis zur Deadline aus
Wie funktioniert das Schätzen mit Story Points?
Product-Backlog-Items werden nach Komplexität und Größe verglichen
Nach dem ersten Sprint Umrechnung in Zeit möglich
Nur Entwickler schätzen
Was ist Velocity im Bezug auf Story Points?
Anzahl der Story Points, die pro Sprint abgeschlossen werden
Was ist ein Burndown Chart?
Visualisierung der verbleibenden Story Points im Verlauf der Zeit
Zeigt die voraussichtliche Zeit bis zum Projektende
Was ist Planning Poker bei Story Points?
Methode zur Schätzung von Story Points für Product-Backlog-Items
Entwickler legen Karten mit Zahlen
Größte und kleinste Schätzung werden diskutiert
Konsens wird gefunden
Was ist die Definition of Ready?
Anforderungen an ein Backlog-Item zur Einplanung in einen Sprint
Checkliste zwischen Developern und Product Owner
Was passiert bei schlechtem Requirements Engineering?
Fehleinschätzung von Zeit und Kosten
Falsches Produkt wird entwickelt
Missverständnisse werden oft erst im Prototyp entdeckt
Teure Fehlerbehebung
Zielsetzung bei Requirements Engineering?
Wichtigste Merkmale besitzen
Keine unnötigen Merkmale
Angemessen priorisierte Merkmale
Hoher Nutzen für den Kunden
Was ist das Ziel von Software-Design?
Gliederung in überschaubare Einheiten
Festlegung von Beziehungen zwischen Komponenten
Hierarchische Gliederung
Welche UML-Perspektiven gibt es?
Use-Case-Diagramm (Makro)
Class-Diagramm (Mikro)
Component-Diagramm
Activity-Diagramm
Was sind die Eigenschaften eines Softwaremodells?
Abbildungseigenschaft:
Abbildung existierender oder geplanter Realitäten
Verkürzende Eigenschaft:
Nur relevante Elemente werden dargestellt oder zusammengefasst
Zweckgebundenheit:
Nur für eine spezifische Verwendung gedacht
Was ist die Makro- und Mikroarchitektur?
Makroarchitektur:
Hohes Abstraktionsniveau
Organisation des Gesamtsystems
Mikroarchitektur:
Detaillierte Beschreibung einzelner Komponenten
Basis für die Implementierung
Was macht eine Klasse aus?
Sichtbarkeit (Visibility: + - #)
Attribute
Methoden
Was ist Datenkapselung und welche Vorteile hat sie?
Verbergen von Daten vor direktem Zugriff von außen
Zugriff nur über definierte Schnittstellen
Vorteile:
Bessere Testbarkeit
Mehr Übersichtlichkeit
Flexible Änderungen an privaten Teilen möglich
Was ist Klassenvererbung?
Hierarchischer Aufbau neuer Klassen auf Basis bestehender Klassen
Vorteil:
Hierarchische Dekomposition
Wiederverwendung von Eigenschaften und Methoden
Was ist Polymorphismus?
Unterschiedliches Verhalten von Unterklassen
Unterklassen können Methoden überschreiben
Austauschbarkeit von Komponenten
Was bedeutet SOLID?
Single Responsibility Principle
Open-Closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
Was ist das Single Responsibility Principle?
Jede Klasse, Komponente oder Methode soll nur eine Aufgabe besitzen
Was ist das Open-Closed Principle?
Offen für Erweiterungen
Geschlossen für Änderungen
Unterteilung in High-Level-, Mid-Level- und Low-Level-Komponenten
Schützt High-Level-Komponenten vor Änderungen
Was ist das Liskov Substitution Principle?
Unterklassen müssen die Basisklasse vollständig ersetzen können, ohne Fehler zu verursachen
Was ist das Interface Segregation Principle?
Verhindert zu große Schnittstellen und unnötige Abhängigkeiten
Lösung:
Mehrere kleine spezialisierte Schnittstellen statt einer großen
Was ist das Dependency Inversion Principle?
Entkopplung einzelner Komponenten durch Interfaces
Abhängigkeit von Abstraktionen(Interface) statt konkreten Implementierungen(Klassen)
Komponenten werden unabhängiger und leichter austauschbar
Was ist ein Datenflussdiagramm?
Beschreibt den Fluss von Informationen zwischen:
Terminatoren (Systemumgebung)
Prozessen
Datenspeichern
Zeigt, wie Daten durch ein System fließen
Was sind die Prinzipien des Software Engineerings?
Abstraktion
Strukturierung
Hierarchisierung
Modularisierung
Standardisierung
Was ist Code and Fix? Vor- und Nachteile?
Programmieren und Fehlerbehebung erfolgen im Wechsel
Schnelle Ergebnisse
Einfache Vorgehensweise
Nachteile:
Schlecht planbar
Aufwand schwer abschätzbar
Schlecht wartbar
Hohe Fehleranfälligkeit
Welche Projektphasen gibt es im Wasserfallmodell?
Requirements
Design
Implementation
Verification
Maintenance
Was bringen Ursache-Wirkung-Spiele?
Analyse eines Problems in beide Richtungen
Wirkung analysieren:
„Na und dann?“
Ursachen analysieren:
„Wieso?“
Hilft dabei, Teufelskreise zu erkennen und Lösungsansätze zu finden
Was ist ein Problemlösungsbaum?
Ein großes Problem wird in kleinere Teilprobleme zerlegt
Für jedes Teilproblem werden Lösungsansätze gesucht
Falls keine eindeutige Lösung möglich ist, erfolgt eine weitere Zerlegung
Definition des Sprintziels?
Konkretes Ziel für einen Sprint
Verpflichtung (Commitment) des Scrum-Teams für den Sprint
Definition des Produktziels?
Langfristiges Ziel des Scrum-Teams
Beschreibt den zukünftigen Zustand des Produkts
Das Product Backlog enthält die zur Zielerreichung notwendigen Arbeiten
Welche Kompetenzen benötigt ein Requirements Engineer?
Fachkompetenz:
Fachwissen
Methodenkenntnisse
Selbstkompetenz:
Selbstorganisation
Abstraktionsvermögen
Lernbereitschaft
Sozialkompetenz:
Teamfähigkeit
Empathie
Kommunikationsfähigkeit
Was ist ein Interface im Softwaremodell?
Eine definierte Schnittstelle zwischen Komponenten
Legt fest, welche Daten oder Funktionen ausgetauscht werden
Beschreibt nicht, wie die Umsetzung intern erfolgt
Nur die angebotene Funktionalität wird festgelegt
Was passiert beim Kano-Modell mit den Faktoren über die Zeit?
Begeisterungsfaktoren und Leistungsfaktoren nähern sich hinsichtlich ihrer Relevanz für den Kunden an
Begeisterungsfaktoren werden zu Leistungsfaktoren
Leistungsfaktoren werden zu Basisfaktoren
Kundenerwartungen steigen mit der Zeit
Was ist die Verwendung eines UML-Aktivitätsdiagramms und welche Vorteile hat es?
Darstellung funktionaler Abläufe und Interaktionen eines Systems
Modellierung in der Anforderungsanalyse
Modellierung in der Designphase
Vorlage für die Implementierung
Leicht verständlich
Gut lesbar
Ergänzt Use Cases um Prozessabläufe
Aus welchen Elementen besteht ein UML-Aktivitätsdiagramm (Syntax)?
Diagrammtyp
Startknoten (Vorbedingung)
Aktivität (Ereignis oder Aktion)
Bedingung (Guard Condition)
Entscheidungsknoten (Decision Node)
Kontrollfluss (Control Flow)
Endknoten (Nachbedingung)
Wie können die Elemente eines UML-Aktivitätsdiagramms interpretiert werden?
Start:
Beginn des Ablaufs
Aktivität:
Auszuführende Handlung
Bedingung:
Voraussetzung für einen Ablaufpfad
Decision Node:
Verzweigung des Ablaufs
Control Flow:
Reihenfolge der Ausführung
Ende:
Abschluss des Ablaufs
Was ist der Unterschied zwischen Aktionen und Aktivitäten?
Aktionen sind atomare Ereignisse
Aktivitäten bestehen aus einer geordneten Folge von Aktionen
Aktionsknoten sind die kleinsten Ausführungseinheiten
Was ist die Besonderheit von Parallel Split und Join?
Aktivitäten können parallel ausgeführt werden
Beim Join müssen alle parallelen Abläufe abgeschlossen sein
Synchronisation erfolgt am Ende der Parallelität
Was sind Parametersätze?
Zusammenfassung mehrerer Objekte oder Parameter
Besitzen definierte Eingabeparameter
Besitzen definierte Ausgabeparameter
Was ist ein Unterbrechungsbereich?
Ähnlich einer Exception-Behandlung
Umgibt bestimmte Aktivitätsknoten
Wird bei besonderen Ereignissen oder Fehlern aktiviert
Was ist eine Komponente im Bezug auf die Makroarchitektur?
Teil eines Systems
Besitzt bereitgestellte Schnittstellen
Besitzt benötigte Schnittstellen
Wie können Beziehungen zwischen zwei Klassen beschrieben werden?
Anzahl (Multiplizität)
Ganzes-Teil-Beziehung (Aggregation oder Komposition)
Rolle (Assoziation)
Generalisierung und Spezialisierung (Vererbung)
Was bedeutet das * bei der Anzahl (Multiplizität)?
0 bis unendlich viele Objekte
Was ist Generalisierung bzw. Spezialisierung?
Beziehung zwischen allgemeiner Superklasse und spezialisierter Subklasse
Spezialisierung erweitert eine Superklasse
Beschreibt Hierarchien in Klassenmodellen
Was sind die Prinzipien der Generalisierung und Spezialisierung?
Vererbung:
Subklasse erbt Attribute und Operationen der Superklasse
Subklasse kann die Superklasse ersetzen (Polymorphismus)
Erweiterung:
Subklasse ergänzt zusätzliche Attribute und Operationen
Überschreibung:
Subklasse definiert eigene Implementierung einer geerbten Operation
Was ist Aggregation?
Ganzes-Teil-Beziehung zwischen Klassen
Teile können unabhängig vom Ganzen existieren
Lebensdauer der Objekte ist unabhängig
Was ist eine Komposition?
Starke Ganzes-Teil-Beziehung
Teilobjekte gehören ausschließlich zum Ganzen
Wird das Ganze zerstört, werden auch die Teile zerstört
Last changed11 hours ago