Klausurfragen Flashcards
Refactoring (Extreme Programming)
Codeverbesserung ohne zusätzliche Funktionalität
DevOps
Teams für eine Applikation aus Entwicklern/Testern und Operatoren/Administratoren zusammengestellt
unabhängig vom Vorgehensmodell, ergibt aber besonders mit agilen Methoden und CI Sinn
In vielen IT Organisationen sind Entwicklungsprojekte und Systembetriebe traditionell voneinander getrennt
DevOps Toolchain: create, verify, package, release, configure, monitor, plan
V-Modell
V-Modell des Bundes
Vorgehensmodell für IT Systeme der öffentlichen Hand Deutschlands
Gepflegt und weiterentwickelt von Beauftragten der Bundesregierung für Informationstechnik
Wurde Jahrelang weiterentwickelt, hat viele Aspekte aus anderen Vorgehensmodellen (agile, iterative) integriert = sehr umfangreich
Lastenheft (Spezifikation von Software)
Anforderungen aus Sicht des Auftraggebers
Ist Zustand VS Soll Zustand
Funktionale Anforderungen
Nichtfunktionale Anforderungen
Grundlage der Angebote potentieller Auftragsnehmer
Pflichtenheft (Spezifikation von Software)
Realisierungsvorhaben aus Sicht des Auftragnehmers
detailliert das Lastenheft
enthält Kriterien für Abnahme
begründet grundsätzliche Plattformentscheidungen
GUI
graphical user interface (Grafische Benutzeroberfläche)
sehr entscheidend für die Zuverlässigkeit des Systems
Viele Benutzerfehler können durch eine der Zielgruppen angemessene Benutzerführung vermieden werden
3-Tier-Server Modell (Architekturentscheidung)
Zentrale Datenbankserver sorgt für Persistenz
Ein oder mehrere Applikationsserver sind für Applikationslogik zuständig
Clients übernehmen Benutzereingaben und Bildschirmdarstellung
2-Tier-Server-Modell (Architekturentscheidung)
nur zwei Stufen : Client und Server
Thin Client:
Anwendungslogik läuft komplett auf Server
Client für Benutzereingaben und Bildschirmdarstellung zuständig
Fat Client:
Server übernimmt nur die Datenhaltung
Anwedungslogik, Bildschirmdarstellung und Benutzereingaben laufen auf Client
CRUD
Testprinzip
Datenbasiertes Testen.
Testfälle werden so zusammengestellt, dass ein Objekt den Lebenszyklus Create Read Update Delete durchläuft
Schnittstellentest
Unittest (Teststufe)
Unittest werden für die einzelenen Komponten des Gesamtsystem angewandt
Sie werden über ihre Schnittstellen angesprochen
Richtlinien:
Grenzen der Gültigkeitsbereiche aller Parameter testen
Reaktionen auf ungültige Parameterkombinationen testen
Reaktion auf Überlastung durch eine Vielzahl von Aufrufen testen
Zusammenwirkende Komponenten in unterschiedlicher Reihenfolge testen
Framework
STILL IN NEED OF HELP
SCRUM
von Ken Schwaber u.a. entwickelt
Idee: Prozesse eines Softwareprojektes sind ohnehin komplexer, um sie detailliert beschreiben zu können. Scrum gibt deshalb nur einen groben Rahmen vor.
Schwerpunkt: Projektmanagment
In diesem Rahmen können Projekte gestaltet werden, indem Projektteam selbst Richtlinien gibt
Äquivalenzklasse
STILL IN NEED OF HELP
Assoziationsklasse
STILL IN NEED OF HELP
Regressionstest
STILL IN NEED OF HELP
Sprint Backlog
STILL IN NEED OF HELP
Pointcut (Aspektorierntierte Entwicklung)
Eine in einem Aspekt eingeschlossene Anweisung, die die Verbindungspunkte definiert, an denen der mit dem Aspekt verküpfte Advice ausgefährt wird
Definition, an welchen Join Points der Aspekt eingefügt werden soll
DoR (Scrum)
STILL IN NEED OF HELP
DoD (Scrum)
STILL IN NEED OF HELP
Software Engineering
STILL IN NEED OF HELP
Verbindungspunktmodell (Aspektorierntierte Entwicklung)
Satz von Ereignissen, auf die in einem Pointcut verwiesen werden kann
Anforderungsbasiertes Testen
Aus dem Use Cases werden die Test Case abgeleitet
Strukturelles Testen
Man kennt den Algorithmus und versucht, Grenzfälle abzudecken (zB mittleren Wert einer binären Suche)
Batchverarbeitende Systeme (Typen von Software)
verarbeiten Daten am Stück ohne Eingriff des Benutzers
eignen sich wenn eine große Menge von Daten auf immer ähnliche Operationen angewandt werden müssen
Architektur:
bestehen meistens aus Komponenten für Eingabe, Verarbeitung und Ausgabe
Bsp.
System, das Mahnungen über zu zahlende Zeitschriftenabonnementsgebühren druckt
Ereignisverarbeitende Systeme (Typen von Software)
reagieren ständig und sofort auf Ereignisse wie Benutzereingaben
zB Echtzeitsysteme, Graphikprogramme, Officeprogramme
meist Einbenutzersysteme
müssen schnell auf Benutzerreaktionen reagieren
bearbeiten Daten längere Zeit im Hauptspeicher
Architektur:
mehrere autonome Objekte stehen miteinander in Kommunikationsbeziehung. Sie verarbeiten Ereignisse und interpretieren Befehle
Bsp.
Fotoalbum, das Funktionen zur Wiederherstellung alter Fotografien bietet
Sprachverarbeitende Systeme (Typen von Software)
arbeiten Anweisungen ab, die in einer formalen Sprache formuliert sind
dazu gehören zB Compiler und Skriptinterpreter für Makros
Architektur:
Verschiedene Komponenten übernehmen das prüfen, auswerten und ausführen von Anweisungen
Bsp:
System, das sehbehinderten Benutzern Webseiten vorliest
Transaktionsverarbeitende Systeme (Typen von Software)
verarbeotem Schreib- und Lesezugriffe auf einen großen Datenbestand
müssen sicherstellen, dass die Benutzer sich nicht gegenseitig behindern (Isolation) und dass jede Transaktion automar ist (ganz oder garnicht)
Architekur:
bestehen oft aus Komponenten für Benutzerinteraktion, Anwendungslogik und Datenhaltung
Bsp.
Kassensystem in einem Supermarkt
UML Timing Diagramm
STILL IN NEED OF HELP
Wrapper um Legancy-Systeme
STILL IN NEED OF HELP
Aspektorientierte Softwareentwicklung
STILL IN NEED OF HELP
Seperation of Concerns
Für die Wartung eines Softwaresystems ist es ideal, seine Aufteilung in Komponenten anhand der Anforderungen vorzunehmen.
Mann kann versuchen diesem Ziel so nahe wie möglich zu kommen, doch zu 100% wird es nie erreichbar sein
Komposition
STILL IN NEED OF HELP
As low as reasonably practical
STILL IN NEED OF HELP
Klassenbasiertes Testen
STILL IN NEED OF HELP
Komponentenmodell
STILL IN NEED OF HELP
RUP
Rational Unified Process
Vorgehensmodell für Projekte der objektorientierten Softwareentwicklung, das sich auf die UML bezieht
RUP sieht an vielen Stellen den Einsatz bestimmter Werkzeuge vor
Product Backlog (nach Scrum)
Erstellt vom Product Owner, enthält alle bisher bekannten Anforderungen.
Nicht abgeschlossen sondern wird ständig weiterentwickelt
Kann vom Product Owner geändert werden
Detaillierter als Product Backlog ist der Sprint Backlog
Skalierbarkeit
Ohne Änderungen an Software kann eine größere Anzahl an Prozessen bedient werden, indem zusätzliche Hardware beschafft wird
Klassenbasiertes Testen
Ein- und Ausgabewerte werden klassifiziert nach der Art wie sie verarbeitet werden. Alle diese Äquivalenzklassen werden getestet
Kapselung
Verbergen von Daten oder Informationen vor dem Zugriff von außen.
Der direkte Zugriff auf interne Datenstruktur wird unterbunden und erfolgt stattdessen über definierte Schnittstellen
Entwurfsmuster
Bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme
OOA
objektorientieres Design
Product Owner (nach Scrum)
kommuniziert mit Kunden und vertritt diese gegenüber dem Team
definiert Projektziele anhand von User Stories
priorisiert die Einträge im Product Backlog
kommuniziert direkt mit dem Team
erstellt Product Backlog
Echtzeitsysteme (Entwurf von Software)
Ereignisverarbeitendes System
besonders zeitliche Anforderungen gestellt, Design muss dafür geeignet sein
korrekte Funktionsweise hängt von Ergebnissen und Zeit ab in der Ergebnisse erzeugt werden
Unmittelbar nach Empfang eines Stimulus von einem Sensor muss geeignete Routine aufgerufen werden
Dies erfolgt üblicherweise mit einer Menge nebenläufiger, miteinander kooperierender Prozesse
Pointcut (Aspektorierntierte Entwicklung)
Eine in einem Aspekt eingeschlossene Anweisung, die die Verbindungspunkte definiert, an denen der mit dem Aspekt verküpfte Advice ausgefährt wird
Definition, an welchen Join Points der Aspekt eingefügt werden soll
Advice (Aspektorierntierte Entwicklung)
Code zum Implementieren eines Belangs
der Quellecode gemäss den (anderen Anforderungen kreuzend) Anforderungen
Aspekt (Aspektorierntierte Entwicklung)
Programmabstraktion, die einen sich kreuzenden Belang definiert. Verhält die Definition eines Pointcuts und den mit dem Belang verknüpften Advice
bestehen aus Advice und Pointcut
Entwicklungsstandards (Extreme Programming)
Keine persönlichen Vorlieben bei der Codegestaltung
Sprialmodell
Spiralmodell nach Barry Boehm
Inkrementell iteratives Vorgehensmodell, bei dem jeder Zyklus aus 4 Quadranten besteht: Zieldefinition, Risikoabschätzung, Implementierung und Test, Planung des nächsten Zyklus
Scrum Master (Scrum)
überwacht Einhaltung der Scrum Regeln
kein Teammitglied
kein Teamleiter (Team organisiert sich selbst)bei Schwierigkeiten Ansprechpartner für Mitglieder
trägt Blockaden, die im Daily Scrum genannt werden in Impediment Backlog ein, und ist verantwortlich sie zu beseitigen
kann Sprint abbrechen, wenn Ziele unerreichbar oder Hindernisse für unüberwindbar gehalten werden
Einweben (Aspektorierntierte Entwicklung)
Einbeziehen des Advicecodes an den angegebenen Verbindungspunkten durch einen Aspect Weber
Verbindungspunktmodell (Aspektorierntierte Entwicklung)
Satz von Ereignissen, auf die in einem Pointcut verwiesen werden kann
Anforderungsbasiertes Testen
Aus dem Use Cases werden die Test Case abgeleitet
Strukturelles Testen
Man kennt den Algorithmus und versucht, Grenzfälle abzudecken (zB mittleren Wert einer binären Suche)
Pfadüberdeckungs Testen
Man versucht, alle Ausführungspfade eines Programms abzudecken (zB den Wahr und Falsch Fall aller Verweigungsbedingungen)
Testen auf Zufallswerte
Ergänzed, weil Entwickler in Testcases eher jede Eingabedaten aufnehmen, die sie schon bei der Entwicklung besonders beachtet haben
Lasttest/Stresstest
Nicht funktionale Test
simuliert große Benutzerzahlen
Usability Test
Nicht funktionaler Test
prüft die Bedienbarkeit mit Testbenutzern
Recovery Test
nicht funktionaler Test
testet die Wiederherstellung nach Systemausfällen, insbesondere die Datenintegrität nach Wiederherstellung
Sicherheitstest
nicht funktionaler Test
simuliert zB einen potentiellen Angreifer
Integrationstest / Systemtest
Teststufe
Bsp. Performance Test
Gesamtsystem wird getestet
Tester haben Zugriff auf Quellcode. Berücksichtigen diese Kenntnisse beim Entwurf des Testcases
Automatisieirte Testtools können zum Einsatz kommen. Besonders sinnvoll um große Last zu erzeugen und wenn so oft getestet werden muss, dass der Initialaufwand zum Einrichten eines Testwerkzeuges gerechtfertigt ist
Vom Systemtest spricht man erst wenn Komponenten vollständig Integriert wurden
Regressionstest
Teststufe
Wenn es sich um eine neue Version handelt und nicht um iene komplett neue Software ist es ein Regressionstest
Auch veränderter Code muss nochmals gettestet werden, um unerwüschte Seiteneffekte des Codes zu finden
Auslieferungstest
User Acceptance Test (Teststufe)
Gesamtsystem wird getestet
Tester haben keinen Zugriff auf Quellcode (Black Box)
Alphatest
Teststufe für COTS Software
Hersteller von Standardsoftware führen oft einen internen Test durch, der den SChwerpunkt ähnlich wie der User Acceptance Test auf Funktionalität und Usability setzt
Betatest
Teststufe für COTS Software
Erste Version einer Standardsoftware wird meistens an einen (eingeschränkten) Benutzerkreis ausgeben, um Fehlermeldungen zu sammeln
Danach folgen (unterschiedlich von Herstellern genannt):
Release Candidate
Release to Manufacturing
General Availability