SWE

Description

Flashcards on SWE, created by Sakine Mehmet on 02/06/2016.
Sakine Mehmet
Flashcards by Sakine Mehmet, updated more than 1 year ago
Sakine Mehmet
Created by Sakine Mehmet almost 8 years ago
20
2

Resource summary

Question Answer
Was ist SWE ? SWE ist die zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen SW-Systemen.
Wie läuft SWE im Projekt ab?
Was war die Softwarekriese? Mit dem Sinken der Hardwarepreise wurden die Computer für eine größere Zielgruppe erschwinglich, dadurch wurde Software in zunehmendem Maße für die verschiedensten Bereiche gebraucht. Der Umfang und die Komplexität wuchsen. Durch fehlerhafte unzuverlässige Programme, nicht termingerechte Fertigstellung und dem Überschreiten der geplanten Kosten, wurde klar, dass neue herangehensweißen her mussten. Dieser Zustand der Software-Industrie wurde charakterisiert mit dem Begriff „Softwarekriese“.
Was ist Software? Es gibt verschiedenen Verständnisse von Software… Enges Verständnis: „Alle immateriellen Teile“, d.h. alle auf einer Datenverarbeitungsanlage einsetzbaren Programme Mittleres Verständnis: Sammelbezeichnung für Programme, die für den Betrieb von Rechnersystemen zur Verfügung stehen, einschl. der dazugehörigen Dokumentation Weiteres Verständnis: (unser Verständnis) Menge von Programmen oder Daten zusammen mit beiliegenden Dokumenten, die für ihr Anwendung notwendig oder hilfreich sind.
Warum benötigt man SWE? SE wird in komplexen Projekten benötigt, denn in komplexen Projekten… • kann und will eine Person nicht mehr alles wissen • ist Aufgabenteilung erforderlich • gibt es oft verteilte Entwicklung • gibt es Wartungsverpflichtungen • muss ein Budget realistisch eingeschätzt und dann eingehalten werden • gibt es Mitarbeiterfluktuation während der Laufzeit • gibt es Qualitätsauflagen (interne und externe)
Worum geht es in SWE? In SWE geht es darum, wie Software „ingenieurmäßig“ erstellt wird. SWE beinhaltet Themen, wie: • die Spezifikation • Abnahme und Systemtests • Architektur • Design • Implementierung • Testen von Software • Vorgehens- und Prozessmodelle • Manuelle Qualitätssicherung • Software-Metriken • Technisches Management • Prozessorientiertes Qualitätsmanagement
Was sind die Kennzeichen von komplexen Projekten? Komplexe SW-Projekte sind gekennzeichnet durch… • SW wird in mehreren Versionen entwickelt und erweitert • lange Entwicklungszeit • Einsatz von Entwicklungsteams an evtl. mehreren Sandorten • lange Lebensdauer mit sich verändernden Anforderungen
Was ist das magische Dreieck? „Die Kunst, wie man Softwaresysteme in der erforderlichen Qualität, zum gewünschten Termin mit gegebenen Kosten erstellt“ Es gilt, den Schwerpunkt des Dreiecks richtig „auszuloten“!
Was ist der Softwarelebenszyklus? Der Software-Lebens-Zyklus beschreibt das „Leben“ einer Software, in folgenden Phasen: • Analyse • Definition • Architektur • Design • Implementation • Komponententest • Integration • Integrationstest • Abnahme • Einführung, Betrieb
Was versteht man unter der strukturierten Entwicklung von Programmen? Unter der strukturierten Entwicklung von Programmen versteht man: • strukturierte Programmierung • schrittweise Verfeinerung • Geheimnis-Prinzip • Programmmodularisierung • Software-Life-Cycle • Entitiy-Relationship-Modell • Software-Ergonomie
Was ist die UML? Die UML… • wurde entwickelt von Jacobson, Booch, Rumbaugh • soll die Schwächen der frühen OO-Methoden beseitigen • ist weltweit gültiger und einheitlicher Standard
Was ist Qualität von Software? (1) Die Qualität von Software muss aus zwei verschiedenen Blinkwinkeln gesehen werden: Aus der „Benutzersicht“ und aus der „Entwicklersicht“. Die Qualitätsmerkmale aus Benutzersicht sind: • Funktionserfüllung • Effizienz • Zuverlässigkeit • Benutzbarkeit • Sicherheit • Robustheit • Fehlertoleranz
Was ist Qualität von Software? (2) Die Qualitätsmerkmale aus Entwicklersicht sind: • Erweiterbarkeit • Wartbarkeit • Übertragbarkeit • Wiederverwendbarkeit • Änderbarkeit • Verständlichkeit • Testbarkeit
Was ist das Problem bei der Umsetzung von Qualitätseigenschaften? Die Umsetzung von Qualitätseigenschaften verursacht erhebliche Aufwände. Eine nachträgliche Änderung von nicht eingeplanten Qualitätseigenschaften sind aufwendig, da diese ineinander abhängig sind. Die Festlegung der Qualitätseigenschaften für eine Software ist somit genauso wichtig, wie die Festlegung der Funktionalität.
Was bedeutet Funktionserfüllung im Bezug auf SW-Qualität? Funktionserfüllung bedeutet, dass der tatsächlich realisierte Funktionsumfang mit dem Geplanten übereinstimmt.
Was bedeutet Effizienz im Bezug auf SW-Qualität? Effizienz bedeutet: • hohe Ablaufgeschwindigkeit (Performance) • wenig HW-Ressourcen • schnelle Algorithmen
Was bedeutet Zuverlässigkeit im Bezug auf SW-Qualität? Zuverlässigkeit bedeutet, dass… • in der Zeit 0 – t kein Fehler auftritt • bei „kleineren“ Eingabefehlern nicht sofort das komplette Programm abstürzt
Was bedeutet Benutzbarkeit im Bezug auf SW-Qualität? Benutzbarkeit bedeutet, dass… • die SW leicht und intuitiv zu bedienen ist • falsche Eingaben nicht zum Absturz führen
Was bedeutet Sicherheit im Bezug auf SW-Qualität? Sicherheit bedeutet, dass… • die Rechtevergabe der SW sich nicht austricksen lässt • Code-Injections abgefangen werden (siehe EWA) • Man-in-the-Middle-Attacken nicht so einfach möglich sind • …
Was bedeutet Erweiterbarkeit im Bezug auf SW-Qualität? Erweiterbarkeit bedeutet, dass das Programm so aufgebaut ist, dass Ergänzungen gut hinzugefügt werden können, ohne dabei die vorhandene Struktur umgehen zu können. (Beispiel aus Vorlesung: Textformatierung)
Was bedeutet Wartbarkeit im Bezug auf SW-Qualität? Wartbarkeit bedeutet, dass… • eine detaillierte Dokumentation verfügbar ist • das Programm so geschrieben ist, dass man es warten kann (siehe „strukturierte Entwicklung von Programmen“)
Was bedeutet Übertragbarkeit im Bezug auf SW-Qualität? Übertragbarkeit bedeutet, dass der entwickelte Lösungsansatz auf ein anderes Problem mit der selben Methodik angewendet werden kann. (seihe „Design Patterns“)
Was bedeutet Wiederverwendbarkeit im Bezug auf SW-Qualität? Wiederverwendbarkeit bedeutet, dass der gleiche Code auf ein anderes Problem angewendet werden kann. (z.B. Frameworks)
Welche Phasenmodelle gibt es? Es gibt folgendes Phasenmodelle: • Wasserfallmodell • V-Modell • Evolutionäres Modell • Inkrementelles Modell • Prototypen Modell • RUP • V-Modell XT • Extreme Programming
Welche Phasen gibt es bei der SW-Entwicklung? Bei der SW-Entwicklung gibt es folgende Phasen: • Analyse • Definition • Architektur • Design • Implementation • Abnahme • Einführung • Betrieb
Was passiert in der Analysephase? In der Analysephase wird: • erarbeitet und verstanden, was die Software leisten soll • dokumentiert, was fachlich gewünscht ist • geklärt, ob die Aufgabe durchführbar/lösbar ist • eine erste Kalkulation durchgeführt, um Finanzierung zu klären • geprüft, ob notwendiges Personal vorhanden ist Fehler, die in der Analysephase gemacht werden, sind sehr teuer und wirken sich auf alle folgenden Phasen aus.
Was passiert in der Definitionsphase? In der Definitionsphase werden die informellen Anforderungen der Analyse in eine möglichst vollständige, konsistente und implementationsunabhängige Spezifikation überführt, sodass klar ist, was das System können soll. Es wird definiert, wie… • das Produkt aus Benutzersicht funktionieren soll • der Abnahmetest aussieht • es um die Qualitätseigenschaften im einzelnen bestellt ist
Was passiert in der Architekturphase? In der Architekturphase wird die IT-Lösung auf einer hohen Abstraktionsebene entworfen, sodass klar ist, wie das System in etwa aufgebaut ist. Es wird festgelegt… • aus welchen Systembestandteilen sie aufgebaut ist • welche internen und externen Schnittstellen es gibt • welche Architekturart genommen wird • wie die grundlegenden Eigenschaften (z.B. Qualität) des Systems getestet werden
Was passiert in der Designphase? In der Designphase wird die IT-Lösung nahe am Zielsystem entworfen, sodass klar ist, wie das System im Detail aufgebaut ist. Es wird festgelegt… • für welches Betriebssystem entwickelt wird • welche Programmiersprache zum Einsatz kommt • welche Hardware unterstützt wird • welche grundlegenden Umsetzungsprinzipien (z.B. Design Patterns) zum Einsatz kommen • was notwendige Systemschnittstellen zu Fremdsystemen sind (z.B. Datenbanken) • wie die einzelnen Komponenten genau in Klassen zerlegt werden • wie die Testpläne für die einzelnen Klassen und Komponenten aussehen
Was passiert während der Implementierungsphase? In der Implementierungsphase wird die Software geschrieben. Vor Beginn der eigentlichen Codierungen… • müssen die Testpläne zum Testen von Einzelkomponenten und Teilsystemen fertiggestellt sein • wird entschieden, in welcher Reihenfolge die Komponenten implementiert werden (topdown/ bottom-up) Auch während dem Schreiben der Software werden kleinere Tests nebenbei durchgeführt.
Was passiert in der Abnahmephase? In der Abnahmephase wird die Leistung des Systems mit der vereinbarten Spezifikation überprüft: „Abnahmetest“
Was passiert in der Einführungsphase? (1) In der Einführungsphase wird das neue System in Betrieb genommen und evtl. ein altes abgeschaltet. Dies kann auf drei verschiedene Arten passieren: • sofortige Umstellung • stückweise Umstellung • anfängliche Parallelarbeit im alten und neuen System
Was passiert in der Einführungsphase? (2) Folgende Schritte sind notwendig • Planung der Einführung • Schulung des Personals • Datenmigration • Installation von Hard- und Software • Bereitstellung einer Hotline • die eigentliche Umstellung
Was passiert in der Betriebsphase? In der Betriebsphase wird das System aktiv vom Anwender genutzt. Sie ist die längste aller Phasen. Fehler im Produkt werden hier bereinigt und es erfolgt eine genauere Abstimmung mit den betrieblichen Abläufen.
Welches Ziel verfolgt die Anforderungsanalyse Die Anforderungsanalyse verfolgt das Ziel, den Lieferumfang und die Vertragsinhalte fest zu legen. Zu den Vertragsinhalten gehören: • Funktionalität • Bezahlung • Termine • Abnahme • Strafen • Iteration des Pflichtenhefts und Lastenhefts • ein gemeinsames Verständnis
Was wird in der Anforderungsanalyse gemacht? In der Anforderungsanalyse wird… • erarbeitet und verstanden, was die Software leisten soll • dokumentiert, was fachlich gewünscht ist • geklärt, ob die Aufgabe durchführbar/lösbar ist • eine erste Kalkulation durchgeführt, um die Finanzierung zu klären • geprüft, ob notwendiges Personal vorhanden ist • ein gemeinsames Verständnis erarbeitet
Warum ist die Anforderungsanalyse so schwierig? Die Anforderungsanalyse ist aus zwei verschiedenen Gründen schwierig: • die Welten des Auftragnehmer und Auftraggeber treffen aufeinander • der Auftraggeber nennt selten direkt Anforderungen, meist sind diese versteckt und müssen herausgefunden werden • Anforderungen ändern sich mit der Zeit, können nicht umgesetzt werden, müssen priorisiert, verwaltet und konsistent gehalten werden
Was geschieht, wenn man ein Projekt ohne aufwändige Anforderungsanalyse angeht/angehen muss? Die Chance steht gut, dass nichts draus wird.
Welche Dokumente gehören zu einer Anforderungs-Spezifikation? Zu einer Anforderungs-Spezifikation gehören das Lasten- und das Pflichtenheft.
Wie sieht die Welt des Auftraggebers aus? Der Auftraggeber… • hat ein Problem und sucht eine Lösung • hat ein gewisses Budget • formuliert den Bedarf • formuliert evtl. die Randbedingungen • kennt sich oft nicht mit SW aus • hat eine eigene Sprache • hat eigene Prozesse
Wie sieht die Welt des Auftragnehmers aus? Der Auftragnehmer… • soll einen Lösungsansatz erstellen • hat bestimmtes Fachwissen in SW • kennt die Randbedingungen nicht • soll ein Angebot machen • kennt sich nicht mit der Anwender-Domäne aus • hat eine eigene Sprache • hat eigene Prozesse
Was ist der Inhalt des Lastenhefts? Der Inhalt des Lastenhefts umfasst… • Zielbestimmungen und Zielgruppen (Produktperspektive, Einsatzkontext) • Funktionale Anforderungen • Nicht-funktionale Anforderungen • Lieferumfang • Abnahmekriterien • Anhänge
Was ist der Inhalt des Pflichtenhefts? Der Inhalt des Pflichtenhefts umfasst… • Funktionale Anforderungen, mit konkreten Anwendungsfällen und Abläufen • Nicht-funktionale Anforderungen, mit einer systematischen und priorisierten Betrachtung der Qualitätseigenschaften • Infos zur Benutzerschnittstellt, mit Skizzen, Snapshots, Navigationskonzepten, Dialogführung • Glossar, mit einer Definition, aller wichtigen Begriffe, für das gemeinsame Verständnis • Sonstiges
Was sind funktionale Anforderungen? Funktionale Anforderungen sind Eigenschaften, die dem Anwender direkt angeboten werden, hierzu zählen: • Produktfunktion • Produktschnittstellen • Anwenderprofile
Welche Methode eignet sich zur Dokumentation von funktionalen Anforderungen? Zur Dokumentation von funktionalen Anforderungen eignet sich die grafische Methode gut. Es gibt einige Diagramme, die diese abbilden können: • Use-Case-Diagramm • Datenflussplan • Komponenten-Diagramm • Aktivitäts-Diagramm • Analyse-Klassendiagramm • Skizzen für GUI • usw.
Was sind nicht-funktionale Anforderungen? Nicht-funktionale Anforderungen sind Eigenschaften, die dem Anwender indirekt geboten werden, hierzu zählen: • Qualitätsanforderungen • technische Anforderungen
Welche Schritte werden beim Erstellen eines Pflichtenheftes durchlaufen? Beim Erstellen eines Pflichtenheftes werden folgende Schritte durchlaufen: • Extrahieren • Spezifizieren • Validieren • Verifizieren • Verhandeln
Was passiert beim Extrahieren? Beim Extrahieren wird… • die Anwendungsdomäne kennen gelernt • Ist Istablauf aufgenommen • gemeinsam Brainstorming betrieben • nach Schwachstellen und verborgenen Anforderungen gesucht • Dokument- und Literaturstudium betrieben Außerdem werden… • Verbesserungsvorschläge und Wünsche mit eingebracht • Lösungsalternativen gefunden und ausgewählt • Diskussionen und Anwenderbefragungen durchgeführt
Was passiert beim Spezifizieren? Beim Spezifizieren wird… • das Thema verständlich und kommunizierbar gemacht • dokumentiert und kommuniziert
Was passiert beim Validieren? Beim Validieren wird geprüft, ob die Erwartungen der Benutzer/Auftraggeber erfüllt werden, dabei diskutieren beide Seiten miteinander.
Was passiert beim Verifizieren? Beim Verifizieren wird… • die Konsistenz der Einzelspezifikationen überprüft • eine technische Überprüfung durch das Test-Team durchgeführt
Was passiert beim Verhandeln? Beim Verhandeln wird mit den Stakeholdern diskutiert, dabei wird sich geeinigt auf die Reihenfolge, Priorität, Umfang usw. einer Realisierung.
Kapitel 4 Abnahmetest ...
Welches Ziel haben Abnahmetests? Abnahmetests haben zum Ziel, die Aussage darüber zu treffen, ob das erstellte System gleich dem spezifizierten System ist. Bei bestandenem Abnahmetest ist der Vertrag erfüllt.
Wann werden Abnahmetests festgelegt? Die Abnahmetests werden direkt bei der Anforderungsdefinition festgelegt.
Wie wird der Abnahmetest durchgeführt? Der Abnahmetest wird zusammen mit dem Auftraggeber durchgeführt und das Ergebnis in einem Protokoll festgehalten.
Was muss getestet werden? Frups… muss getestet werden… • F: Functionality (Funktionalität) • U: Usability (Benutzbarkeit) • R: Reliability (Zuverlässigkeit) • P: Performance (Leistung) • S: Supportability (Wartbarkeit)
Wie finden Sie Tests für funktionale Anforderungen? In der Anforderungsanalyse wurde die Funktionalität durch Eingaben und die darauf erwartete Reaktion des Systems beschrieben. Diese können als einzelne Testfälle herangezogen werden. Die Funktionalität kann z.B. durch Anwendungsfälle beschrieben worden sein.
Was wird bei Funktionstests überprüft? Bei Funktionstests wird auf die korrekte Funktionalität des Systems getestet.
Wie wird ein Funktionstest aus einem Use-Case abgeleitet? .
Wie wird ein Funktionstest aus einem Use-Case abgeleitet? Die Menge der Testfälle wird so eingeteilt, dass die Aussage getroffen werden kann, dass, wenn ein Testfall aus der Menge der Testfälle der Klasse richtig abläuft, die Anderen, mit großer Wahrscheinlichkeit auch richtig ablaufen.
Wie testen sie nicht-funktionale Anforderungen? Nicht-funktionale Anforderungen können nur bedingt über die Tests für die funktionalen Anforderungen durchgeführt werden. Man kann zum Teil einige Tests durch Simulationen durchführen. Der beste Test für nicht-funktionale Anforderungen ist die Realität/der Einsatz.
Was wird bei Benutzbarkeitstests überprüft? Bei Benutzbarkeitstests überprüfen Endanwender die Bedienoberfläche auf: • intuitive Bedienung • Lesbarkeit • Realität
Was wird bei Zuverlässigkeitstests überprüft? Bei Zuverlässigkeitstests wird die maximale Anzahl der Abstürze / Fehlfunktionen innerhalb eines bestimmten Zeitintervalls ermittelt. Der eigentliche Zuverlässigkeitstest kann erst im Einsatz erfolgen. Hinweise auf die Zuverlässigkeit bekommt man aber auch schon beim Funktionstest.
Was wird bei Leistungstests überprüft? Bei einem Leistungstest wird die Performance und Robustheit getestet. Die Performance sagt aus, ob das System innerhalb einer gesetzten Zeit reagiert hat. Die Robustheit sagt aus, ob das System auch unter der festgesetzten maximalen Last funktioniert hat.
Was wird bei Wartbarkeitstests überprüft? Bei einem Wartbarkeitstest überprüft der Entwickler den Code und die Dokumentation auf Verständlichkeit. Auch Softwaremetriken können hier angesetzt werden.
Was bedeutet Aktivitätstest? Aktivitätstest heißt, dass jeder Kasten des Aktivitätsdiagramms 1 Mal durchlaufen wird.
Was bedeutet Zweigtest? Zweigtest heißt, dass jeder der Zweige (Pfeile) des Aktivitätsdiagramms mindestens einmal durchlaufen wird. Jeder Durchlauf ist ein Testfall.
Was bedeutet Pfadtest? Pfadtest heißt, dass jedes mögliche Szenario mindestens einmal getestet wird. Dabei kann es, z.B. bei Endlosschleifen vorkommen, dass es unendlich viele Testpfade gibt.
Was ist ein Pfadgraph? Ein Pfadgraph stellt alle möglichen Pfade dar. Er hat keine Rückwärtssprünge. Ein Szenario ist ein Weg vom Startknoten bis zu einem Endknoten.
Was tun Sie, wenn es zu viele Testpfade gibt? Wenn es zu viele Testpfade gibt, müssen Äquivalenzklassen gebildet werden. Aus ihnen werden dann Stellvertreter ausgewählt, die getestet werden.
Was ist der Unterschied zwischen Zweig und Pfad? Der Zweig ist eine Kante, der Pfad eine Folge von Kanten.
Kapitel 05 Software-Architektur ...
Was ist eine Software-Architektur überhaupt? Die Software-Architektur … • gibt die Zerlegung in Arbeitspakete mit Verantwortlichkeiten vor • macht Vorgaben für das weitere Vorgehen und die Umsetzung • ist eine grobe/abstrakte Skizze, es fehlen noch sämtliche detaillierte Beschreibungen
Welche Aspekte des Entwurfs drückt man in der Software-Architektur aus? Im Entwurf der SW-Architektur wird darüber eine Aussage getroffen, wie das System logisch aufgeteilt ist.
Wie wirkt sich die Verwendung eines Architekturstils aus? Die Verwendung eines Architekturstils wirkt sich unmittelbar auf die Aufteilung der verschiedenen Komponenten, Subsysteme und Schnittstellen aus. Ein Architektur-Stil gibt einen bestimmten Rahmen vor.
Hängt die SW-Architektur von der Programmiersprache / dem Betriebssystem ab? Ja, denn es gibt z.B. Programmiersprachen, die keine Objekt Orientierte Entwicklung unterstützen.
Wie dokumentieren Sie eine SW-Architektur? Eine SW-Architektur kann in Diagrammform dargestellt werden: • frei Hand • mit den UML-Diagrammen
Wie wirken sich Fehler in der SW-Architektur aus? Bei einer ungeschickten Aufteilung bzw. Festlegung der Verantwortlichkeiten haben kleine Änderungen große Auswirkungen. Ist die Struktur zu grob, gibt es keine ausreichenden Vorgaben für die Entwicklung, was dazu führt, dass Probleme übersehen werden. Eine zu feine Struktur verursacht eine ineffiziente Architekturarbeit. Architekturentwicklung ist somit immer eine Gratwanderung.
Woher wissen Sie, dass Ihre Architektur optimal ist? Eine Architektur kann nur dann optimal gewählt sein, wenn die Anforderungen richtig verstanden wurden und die Architekturtreiber bei der Auswahl der Architektur entsprechend ihren Einfluss gefunden haben, der ihnen zusteht. Ob eine Architektur optimal ist, stellt sich daher meist erst zum Ende des Projektes wirklich heraus, da die Anforderungen sehr dynamisch sein können. Außerdem sollten beim Planen der Architektur die Designrichtlinien beachtet werden.
Warum ist eine Software-Architektur für ein großes Projekt wichtig? Eine SW-Architektur ist für ein großes Projekt wichtig, weil… • sie den Entwicklungsprozess strukturiert • sie die Einheiten zur Planung liefert • nur über sie nachweißbar ist, dass es machbar ist • sie die Kosten reduziert, durch Wiederverwendung im Großen
Für welche Bereiche nützt eine SW-Architektur etwas? Eine SW-Architektur nutzt… • dem Entwicklungsprozess • der Planbarkeit • der Wettbewerbsfähigkeit
Was nutzt eine Software-Architektur für den Entwicklungsporzess? Eine SWA nutzt dem Entwicklungsprozess, indem sie… • früh verschiedene Designentscheidungen trifft • die Machbarkeit von SW-Funktionalität nachweist • Vorgaben für Design und Implementierung macht • den Entwicklungsprozess strukturiert • eine Kommunikationsplattform bietet
Was nutzt eine Software-Architektur für die Planbarkeit? Eine SWA nutzt der Planbarkeit, da sie die Einheiten der Planung für Design, Implementierung, Test und Wartung liefert.
Was nutzt eine Software-Architektur für die Wettbewerbsfähigkeit? Eine SWA nutzt für die Wettbewerbsfähigkeit, indem sie… • die Kosten, durch Wiederverwendung im Großen, reduziert • die Flexibilität erhöht, durch die Betrachtung von Varianten ohne Umsetzung
Was ist ein Architekturtreiber? Ein Architekturtreiber ist eine Anforderung, an ein SW-System, dass die Architektur maßgeblich mitbestimmt.
Welche Architekturtreiber gibt es? Es gibt folgende Architekturtreiber… • Qualitätsanforderungen • geschäftliche Anforderungen • wesentliche, funktionale Anforderungen
Wie findet man die SW-Architektur? Es gibt nicht die SWA, es gibt verschiedene mit speziellen Eigenschaften. Die Architektur muss entsprechend den Anforderungen entworfen werden. Zu Beginn mögliche Komponenten entwerfen und diese dann in einen Zusammenhang bringen.
Was passiert, wenn die Bedeutung einer Anforderung unterschätzt wird? Wird die Bedeutung einer Anforderung unterschätzt, hat dies schwerwiegende Änderungen zur Folge und es entstehen neben unnötiger Arbeit auch unnötige Kosten. Dies kann bis hin zur Wahl der falschen Architektur führen, welche eine Verfehlung des Projektziels nach sich zieht.
Welche Architekturstil-Kategorien gibt es? Es gibt folgende Architekturstil-Kategorien: • Datenflusssysteme (Batch, Pipes & Filter, Prozesskontrollschleifen) • Kontrollfluss (funktionale Zerlegung, objektorientierte Organisation, Schichten) • unabhängige Komponenten (kommunizierende Prozesse, eventgesteuerte Systeme) • datenzentrierte Systeme (Repositories, Blackboard) • virtuelle Maschinen (Interpreter, regelbasierte Systeme)
Wie ist der Aufbau des prozeduralen Architekturstils? Der Aufbau der prozeduralen Architekturstils ist, wie folgt: • Zerlegung in Basisfunktionen • Koordination durch ein Hauptprogramm • Daten werden als gemeinsame Ressource von den Modulen verwendet • keine Kapselung der Daten
Wie ist der Aufbau des objektorientierten Architekturstils? Der Aufbau des objektorientierten Architekturstils ist, wie folgt: • Kontrollfluss durch zentrale Koordination • prozedurale Abstraktion durch Kapselung der Zugriffsmethoden • Datenkapselung • Algorithmen und Datenrepräsentation der einzelnen Klassen kann geändert werden, ohne die anderen zu beeinflussen
Wie ist der Aufbau des eventgesteuerten Architekturstils? Der Aufbau des eventgesteuerten Architekturstils ist, wie folgt: • keine zentrale Steuerung • Veränderung der Daten löst Events aus • Events führen zu Aktionen, die ihrerseits Events erzeugen
Wie ist der Aufbau des Pipes & Filters Architekturstils? Der Aufbau des Pipes & Filters Architekturstils ist, wie folgt: • verteilte Steuerung, jeder Filter arbeitet, sobald Daten an seiner Eingabe anliegen • die Daten existieren nur temporär als I/O zwischen den Filtern • die Filter sind voneinander unabhängig, sie kommunizieren über die Pipes zwischen ihnen • Datenfluss und Kontrollfluss fallen zusammen
Wie ist der Aufbau des Schichten Architekturstils? Im Schichten Architekturstil werden die Teilaufgaben in Gruppen zerlegt. Diese Gruppen liegen auf verschiedenen Abstraktionsebenen.
Was ist die logische Architektur? In der logischen Architektur… • werden Dinge organisiert, die zur Designzeit existieren • wird das System in Pakete gegliedert • werden die Pakete in Abhängigkeitshierachien gegliedert • die einzelnen Artifakte einem Paket zugewiesen
Was ist die physikalische Architektur? In der physikalischen Architektur… • wird das Zusammenspiel der Systemteile dargestellt (inklusive Subsysteme, Komponenten, Tasks, Objekte…) • werden nur instanziierbare Dinge dargestellt • wird die Nutzung der Infrastruktur des Systems beschrieben
Welche Sichten auf die SW-Architektur gibt es? Es gibt folgende Sichten auf die SW-Architektur: • Komponentensicht • Subsystemsicht • Prozesssicht • Implementierungssicht • Einsatzsicht
Was ist die Komponentensicht? Die Komponentensicht wird mit dem Komponenten-Diagramm der UML dargestellt. Einzelne Komponenten können Schnittstellen zu anderen Komponenten haben. Die Komponentensicht gibt einen Überblick über die einzelnen Komponenten der Software.
Was ist die Subsystemsicht? Die Subsystemsicht… • identifiziert die großen Teile des Systems • wird mit dem Komponenten-Diagramm dargestellt • unterscheidet nicht zwischen Subsystemen und Komponenten Ein Subsystem stellt gut definierte Interfaces zur Verfügung und deligiert die Dienste zu internen versteckten Teilen.
Was ist die Prozesssicht? Die Prozesssicht… • gibt einen Überblick auf das Management von Ressourcen und die Nebenläufigkeitsaspekte der Systemausführung • beschreibt die Synchronisation von Threads und die gemeinsame Nutzung von Ressourcen • stellt bei den Embedded Systemen und Prozesssteuerungssystemen eine der wichtigsten Sichten dar
Was ist die Implementations-Sicht? Die Implementationssicht wird mit Hilfe des Komponentendiagramms dargestellt. Sie gibt Aufschluss über Dateien, Repositories und deren Beziehungen untereinander.
Was ist die Einsatz-Sicht? Die Einsatzsicht betrachtet, wie die Softwarearchitektur auf die phyiskalischen Komponenten abgebildet werden wird (Rechnerknoten im Netz, Prozessoren etc.).
Welche UML-Diagramme gibt es? Es gibt folgende UML-Diagramme: • Komponenten-Diagramm • Paket-Diagramm • Klassendiagramm • Kompositionsstruktur-Diagramm • Kommunikations-Diagramm • Sequenz-Diagramm • Zustandsdiagramm • Aktivitätsdiagramm • Timingdiagramm • Verteilungsdiagramm
Welche Diagramme kommen wo zum Einsatz? (1) • Logische Architektur / Domänen-Sicht / Paket-Sicht: Paketdiagramm • Subsystem und Komponenten / Logische Sicht (Statik): Komponentendiagramm, Klassendiagramm, Kompositionsstrukturdiagramm • Subsystem und Komponenten / Logische Sicht (Dynamik): Kommunikationsdiagramm, Sequenzdiagramm
Welche Diagramme kommen wo zum Einsatz? (2) • Prozess- / Thread-Sicht: Zustandsdiagramm, Kommunikationsdiagramm, Sequenzdiagramm, Aktivitätsdiagramm, Timingdiagramm • Einsatz- / Deployment- / Physische Sicht: Verteilungsdiagramm, Komponentendiagramm • Implementierungs- /Dateien-Sicht: Komponentendiagramm
Welche Arten von Klassen gibt es? Es gibt folgende Arten von Klassen… • Schnittstellenklassen • Kontrollklassen • Entinitätsklassen
Was sind Schnittstellenklassen? Schnittstellenklassen… • sind zuständig für die Interaktion mit der Außenwelt • interagieren durch die Auswahl und Aktivierung bestimmter Funktionen oder durch eine Einund Ausgabe von Daten • setzen die Interaktion der Akteure in anwendungsinterne Ereignisse um • setzten Daten in eine für Akteure anwendbare Form um • können aus Use-Cases abgeleitet werden
Was sind Kontrollklassen? Kontrollklassen… • beinhalten die anwendungsfallbezogene fachliche Logik • steuern die Abläufe • sind Vermittler zwischen Schnittstellen- und Entinitätsklassen und kontrollieren den Zugriff auf die Entinitäten
Was sind Entinitätsklassen? Entinitätsklassen… • enthalten Daten • enthalten die fachliche Logik für die Daten • sind für die Gültigkeit der Daten gemäß Geschäftsregeln selbst verantwortlich • stammen oft von den Domainklassen der Anforderungsermittlung ab
Kapitel 06 Design ...
Was ist Aufgabe des Designs? Im Design… • erfolgt die Umsetzung auf Programmiersprachen-, Betriebssystem-, und Hardware-Ebene • werden Details ausgearbeitet (z.B. Klassen mit Methoden und Datentypen, Abläufe und Betriebssystemanbindung) • entstehen Skizzen und Diagramme (z.B. Klassendiagramme, Sequenzdiagramme, Zustandsdiagramme usw.)
Wie komme ich zu einem guten Design? Man kommt zu einem guten Design, indem man bekannte und gute Lösungen einsetzt und aus bekannten Fehlern lernt.
Welche Grundprinzipien für das Design kennen Sie? Es gibt folgende Grundprinzipien für das Design: • Trennung von Zuständigkeiten • Minimierung von Abhängigkeiten • Geheimnisprinzip • Homogenität • Redundanzfreiheit
Was bedeutet das Grundprinzip „Trennung von Zuständigkeiten“? „Trennung von Zuständigkeiten“ bedeutet, dass das einzelne Unterteil eines Systems genau eine Aufgabe hat. Dies erhöht die Wartbarkeit, da sich das einzelne Unterteil nur dann ändert, wenn dort eine Änderung notwendig wird. starke Kohäsion : jedes Modul hat einen einzigen und klaren Zweck
Was bedeutet das Grundprinzip „Minimierung von Abhängigkeiten“? „Minimierung von Abhängigkeiten“ bedeutet, dass stark zusammenhängende Teile ggf. zusammengefasst werden. Dies erhöht die Wartbarkeit und Wiederverwendbarkeit, da die Veränderungen eines Systemteils nur wenige andere Klassen tangieren. schwache Kohäsion : ein Modul ist verantwortlich für viele Aufgaben
Was bedeutet das „Geheimnisprinzip“? Das „Geheimnisprinzip“ bedeutet, dass ein Systemteil nur das „verrät“, was ein anderer wissen muss, um mit ihm zu arbeiten, dass er selbst nur das „weiß“, was er wissen muss, um seinen Job zu machen. Dies erleichtert die verteilte Entwicklung, Wartbarkeit, Änderbarkeit und Testbarkeit, da dies zu einer Trennung von Zuständigkeiten und Minimierung der Abhängigkeiten führt.
Was bedeutet das Grundprinzip „Homogenität“? Homogenität bedeutet, dass… • innerhalb einer Strukturierungsebene ähnliche Strukturierungsgrößen verwendet werden • ähnliche Probleme mit ähnlichen Lösungen gelöst werden Dies vermeidet unnötiges Neuerfinden von vorhandenen Lösungen, erleichtert somit die Entscheidungsfindung und fördert Wartbarkeit und Verständlichkeit.
Was bedeutet das Grundprinzip „Redundanzfreiheit“? Redundanzfreiheit bedeutet, dass das System so entworfen ist, dass jedes Stück know-how an nur genau einer Stelle umgesetzt ist, die eindeutig und zuständig ist. Dies fördert die Trennung von Zuständigkeiten, erleichtert Korrekturen, fördert die Wiederverwendbarkeit, Wartbarkeit und Verständlichkeit.
Welche Arten von Mustern gibt es? • Architekturmuster (beziehen sich auf Aspekte des Gesamtsystems) • Entwurfsmuster (beziehen sich auf einige wenige Klassen) • Anti-Patterns (Entwurfsfehler) • Frameworks (ganze Entwürfe, umfassen Gruppe ähnlicher Anwendungssysteme)
Wozu sind Anti-Patterns gut? Anti-Patterns sind dazu gut, um zu sehen, wie man es nicht machen sollte.
Warum sollte man Design-Patterns verwenden? (1) Design-Patterns sollten verwendet werden, weil… • sie bewährte Lösungen für immer wiederkehrende Probleme im Design bieten • sie als Lösung durch Literatur dokumentiert und international bekannt sind • sie den Entwurf änderbar und flexibel machen • sie helfen existierende SW-Entwürfe zu analysieren und zu reorganisieren
Warum sollte man Design-Patterns verwenden? (2) Aber, Design-Patterns… • machen das Design komplizierter und abstrakter • müssen nicht überall angewendet werden • sollten nur dann eingebaut werden, wenn die Flexibilität auch tatsächlich benötigt wird
Welche Design-Patterns gibt es? • Strategie-Muster • Observer-Muster • Kompositum-Muster
Was ist das Strategie-Muster? (1) Das Strategie-Muster… • ermöglicht es, einen Algorithmus unabhängig von den ihn nutzenden Klienten zu variieren • kann mehrere Algorithmen austauschbar machen • ist auch bekannt als „Policy“ • „kapselt“ einen Algorithmus
Was ist das Strategie-Muster? (2) Das Strategiemuster wird dann eingesetzt, wenn… • sich viele verwandte Klassen nur in ihrem Verhalten unterscheiden • unterschiedliche Varianten eines Algorithmus benötigt werden • es Daten gibt, die für den Algorithmus relevant sind, aber dem Aufrufer nicht bekannt sein sollen
Was ist das Strategie-Muster? (3) Vor- und Nachteile ? • Strategien können leicht hinzugefügt oder entfernt werden • Aufruf wird nicht komplizierter, bloß, weil es verschiedene Strategien gib • Implementierung ist etwas schwieriger
Warum kann man Strategien nicht einfach als Vererbung umsetzen? Man kann Strategien nicht einfach als Vererbung umsetzen, weil damit die Flexibilität für den einfachen Austausch, der über die Aggregation gegeben ist, verloren gehen würde.
Was ist das Observer-Muster? (1)
Was ist das Observer-Muster? (2) Vor- und Nachteile ? • Beobachter können leicht hinzugefügt oder entfernt werden • Es wird nur aktualisiert, wenn sich etwas ändert (kein Polling notwendig) • bei wenigen Beobachtern, ist es etwas komplizierter als eine direkte Implementierung
Anwendungsbeispiele ? • Emailverteiler für SW-Updates • Anzeige der Uhr in vielen Clients auf einem PC
Was ist das Kompositum-Muster? (1)
Was ist das Kompositum-Muster? (2) Das Kompositum-Muster fügt Objekte zu Baumstrukturen zusammen, um Teil-Ganzes-Hierachien zu repräsentieren. Der Klient soll… • in der Lage sein, die Unterschiede zwischen zusammengesetzten und einzelnen Objekten zu ignorieren • alle Objekte im Kompositum einheitlich behandeln können
Wie wird ein Klassendiagramm entwickelt? Ein Klassendiagramm wird, wie folgt, entwickelt: • Klassen finden (durch Bestimmung der Substantive, Operationen über Verben suchen) • Spezialisierungsbeziehungen suchen (durch Anwendung der „ist-ein“-Regel) • Assoziationen zwischen Klassen bestimmen („kennt“ / „besteht aus“) • Multiplizitäten und Navigationsrichtungen eintragen
Wie lauten die Regeln zum Entwurf von Klassen? Die Regeln zum Entwurf von Klassen lauten: • setze Vererbung sparsam ein (nur bei Auftauchen einer echten „ist ein“-Beziehung) • normalisiere das Datenmodell (Redundanzen vermeiden) • vermeide transitive Assoziationen (keine Doppeldeutigen Assoziationen, Constraints, wo es nicht anders geht) • analysiere m:n - Beziehungen genau • vermeide 1:1 – Beziehungen • modelliere nur fachliche, nie technische Aspekte • beschränke dich auf das für das System notwendige
Wie lauten die Regeln zum Entwurf von Operationen? Die Regeln zum Entwurf von Operationen lauten: • Operationen sind unabhängig von der verwendeten Technologie • gib keine Referenzen nach außen • normalisiere die Schnittstelle • mache die Operation grobgranular (selbstständiger) • mache die Operation idempotent (in sich schlüssig) • mache die Operation kontextfrei (damit sie wiederverwendet werden kann)
Was ist ein BLOB? Ein Blob ist eine Klasse, welche die gesamte Verarbeitung als Monopol verwaltet, während andere Klassen primär die Daten kapseln.
Kapitel 07 Implementierung ...
Was sind die Ziele von Programmierrichtlinien? Programmierrichtlinien sollen… • die Zusammenarbeit in einem Projekt erleichtern • Integration und Test erleichtern • langjährige Wartung ermöglichen • Zuverlässigkeit und Robustheit erhöhen • die Effizienz in der Entwicklung steigern
Was kennzeichnet Richtlinien? Richtlinien… • sind verbindlich für den Entwickler • sollten nach Möglichkeit eingehalten werden • werden bei Beauftragungen zur Auflage gemacht
Was kann eine Programmierrichtlinie enthalten? Eine Programmierrichtlinie kann Festlegungen enthalten… • zur Kommentierung • zu Namenskonventionen • zu Deklarationen • zur Fehlerbehebung • zum Zeichensatz
Was sind die Vorteile einer Programmierrichtlinie? Die Vorteile einer Programmierrichtlinie äußern sich in… • der Wartbarkeit (Code ist lesbar) • Integrierbarkeit (keine inkompatibilitäten von Bibliotheken) • Zuverlässigkeit (klare Regelung zum Umgang mit fehlerträchtigen Konstrukten) • Robustheit (Initialisierungsregeln, Zuweisungsregeln) • Testbarkeit (einheitliche Fehlerbehandlung) • Effizienz in der Entwicklung (bietet Kommunikationsbasis)
Warum wird die Einhaltung von Regeln höher gewichtet als Effizienz, Stimmung und Entwicklungsgeschwindigkeit? Damit ein großes Projekt entwickelt werden kann, müssen gemeinsame Spielregeln vereinbart werden.
Was passiert in einem großen Projekt, wenn es keine Programmierrichtlinien gibt? Es kann passieren, dass… • der Code nur noch von dem Entwickler gelesen werden kann, der ihn geschrieben hat • Programmteile nicht zusammengesetzt werden können, wegen inkompatiblen Bibliotheken • Zuverlässigkeit, Robustheit, Testbarkeit und die Effizienz der Entwicklung sehr negativ beeinträchtigt werden
Warum sind Programmierrichtlinien oft unbeliebt? Programmierrichtlinien sind oft unbeliebt, weil… • sie eine Einschränkung der Individualität des Entwicklers darstellen • sich die Entwickler erst an die vorgegebenen Lösungen gewöhnen müssen
Wie kann man den Widerstand der Entwickler reduzieren? Der Wiederstand der Entwickler kann reduziert werden, indem man die Programmierrichtlinien mit ihnen zusammen entwirft.
Kapitel 08 Test und Integration ...
Was gibt es allgemeines zum Testen zu sagen? Es gibt allgemeines zum Testen zu sagen, dass… • durch testen, nicht die Fehlerfreiheit nachgewiesen werden, aber die Zuverlässigkeit verbessert werden kann • die Anzahl der Testfällen zu groß werden kann, sodass nicht alle Testfälle durchlaufen werden können (-> Auswahl geschickter Stichproben erforderlich!)
Was ist Integration? Integration ist, dass Zusammenbauen aller Programmteile zu einem großen Programm
Welche Fehlerarten gibt es? Es gibt folgende Fehlerarten… • „normaler“ Fehler o ein Absturz o ein Datenverlust o ein Fehlverhalten / eine unerfüllte Erwartung o schlechte Performance o inkonsistente Benutzerschnittstellen • Laufzeitfehler o ein Speicherübergriff o eine uninitialisierte Variable
Wo treten besonders häufig Fehler auf und wie wählt man geschickt Testfälle aus? Fehler… • werden da gemacht, wo sich etwas ändert • z.B. bei Kontrollstrukturen (Schleifen, Bedingungen, Fallunterscheidungen usw.) Man wählt Testfälle aus… • indem man Äquivalenzklassen bildet • je einen Vertreter nimmt, sowie die Grenzwerte
Welche Prinzipien zur Auswahl von Testfällen kennen Sie? Es gibt folgende Prinzipien zur Auswahl von Testfällen: • Bildung/Kombinierung von Äquivalenzklassen • Grenzwertanalyse • intuitive Testfallermittlung • vollständige Zweigüberdeckung • vollständige Pfadüberdeckung • vollständige Bedingungsüberdeckung • vollständige Anweisungsüberdeckung Black-box White-Box
Was ist ein Test durch Äquivalenzklassen? Bei einem Äquivalenzklassen-Test … • werden un-/gültige Äquivalenzklassen gebildet • wird angenommen, dass sich das zu testende Objekt bei einem Wert aus einer Äquivalenzklasse genauso verhält, wie bei einem anderen Wert, der gleichen Äquivalenzklasse • können bei mehreren Äquivalenzklassen-Kombinationen Kreuzprodukte und davon auch wieder, bei Bedarf, Äquivalenzklassen gebildet werden
Was ist ein Test durch Grenzwertanalyse? Ein Grenzwertanalyse-Test ist nur sinnvoll, wenn die Äquivalenzklasse auf natürliche Weise geordnet ist. Bei einem Grenzwertanalyse-Test… • werden mehrere Elemente an den Rändern der Äquivalenzklasse getestet • steigt die Wahrscheinlichkeit, Fehler zu finden
Was ist ein Test durch intuitive Testfallermittlung? Der Tester… • kennt die beliebten Fehler der Entwickler • macht Annahmen über das Innenleben der Black-Box und ergänzt die Testfälle entsprechend • sollte dabei nicht der Entwickler sein
Was bedeutet Zweigüberdeckung? Ein Zweig ist dabei eine Kante im gerichteten Programmgraphen. Zweigüberdeckung bedeutet, … • jeder Zweig des Programms wird mindestens einmal durchlaufen • dass auch leere Else-Zweige berücksichtig werden
Was bedeutet Pfadüberdeckung? Ein Pfad ist dabei der Weg durch den Ausführungsbaum von seinem Anfang bist zu seinem Ende. Pfadüberdeckung bedeutet… • jeder Pfad im Ablauf des Programms wird einmal durchlaufen • Schleifen werden mehrmals durchlaufen (Endlosschleife -> unendlich viele Testfälle)
Was bedeutet Bedingungsüberdeckung? Bedingungsüberdeckung bedeutet… • jede Teilbedingung einer Abfrage ist mindestens einmal „true“ und „false“ gewesen • Fehler in den Bedingungen besser zu erkennen
Was bedeutet Anweisungsüberdeckung? Anweisungsüberdeckung bedeutet… • jede Anweisung des zu testenden Programms wird mindestens einmal ausgeführt • Laufzeitfehler besser aufspüren zu können
Welche Testarten auf den Bezug von Programmen gibt es? Es gibt folgende Testarten, im Bezug auf Programme: Entwicklertest, Modultest Integrationstest,Systemtest,Abnahmetest,Robustheitstest,Leistungstest, Volumentest,Stresstest, Benutzbarkeitstest,Sicherheitstest,
Was ist ein Entwicklertest? Ein Entwicklertest… • ist ein demonstrativer Test • soll zeigen, dass das Programm funktioniert • überprüft, ob sich die Software im Normalbetrieb korrekt verhält
Was ist ein Modultest? Bei einem Modultest, … • wird ein einzelnes Modul getestet • wird die Erfüllung der Spezifikation geprüft • läuft das einzelne Modul in einer Testumgebung • können Fehler mit dem Debugger lokalisiert werden
Was ist ein Integrationstest? (1) Beim Integrationstest… • werden Teile des Gesamtsystems getestet • wird von einem Test-/Integrations-Team getestet • wird geprüft, ob mehrere Module fehlerfrei zusammenwirken • liegt der Fokus auf dem Zusammenspiel der Systemkomponenten • werden vorrübergehend noch nicht eingebaute Module durch Drivers/Stubs ersetzt
Was ist ein Integrationstest? (2) Driver : Testmodul, dass das Aufrufverhalten einer echten Funktion simuliert Stub : Testfunktion, die das Antwortverhalten einer echten Funktion simuliert
Was ist ein Integrationstest? (3) Beim Integrationstest gibt es folgende Richtungen: • Top-Down o zuerst Implementierung, Montierung und Test der obersten Schicht o Simulierung der noch nicht hinzugefügten Funktionen durch Stubs o sukzessives Ersetzen der darunter liegenden Stubs durch echte Funktionen • Bottom-Up o zuerst Implementierung, Montierung und Test der untersten Schicht o Simulierung der darüber liegenden Module durch Driver o sukzessives Ersetzen der darüber liegenden Driver durch echte Funktionen
Was ist ein Systemtest? Bei einem Systemtest… • wird das integrierte Gesamtsystem getestet • wird mehr getestet, als beim Abnahmetest • wird folgendes getestet… o alles, was im Abnahmetest getestet wird o Backup / Recovery o Test mit Extremsituationen o Tests mit Schnittstellen zu anderen Systemen o Sicherheit, Zuverlässigkeit, Wartbarkeit, Dokumentation o Installation, Datenkonvertierung, Start und Initialisierung
Was ist ein Abnahmetest? Ein Abnahmetest… • ist Vertragsbestandteil, nach erfolgreichem Abschluss wird bezahlt • wird zusammen mit dem Auftraggeber in der echten Zielumgebung und mit formeller Protokollierung durchgeführt • wird getestet FURPS…
Was ist ein Robustheitstest? Ein Robustheitstest… • überprüft die Funktion der Software auf ihre Korrektheit am Rande bzw. außerhalb des normalen Betriebs • wird oft von einem speziellen Test-Team durchgeführt • versucht Fehler gezielt zu entdecken
Was ist ein Leistungstest? Bei einem Leistungstest werden die Antwortzeiten und Kapazitäten unter „normaler Last“ gemessen.
Was ist ein Volumentest? Bei einem Volumentest wird das System mit Daten zu gemüllt. Es wird dabei folgendes getestet: • verliert das System Daten? • verfälscht das System Daten? • stoppt das System mit/ohne Meldung? • braucht das System enorm viel Zeit?
Was ist ein Stresstest? (1) Bei einem Stresstest wird das System… • mit vielen Anfragen zur gleichen Zeit überhäuft • werden komplexe Funktionen aufgerufen • wird ein Teil der Systemressourcen unzugänglich gemacht
Was ist ein Stresstest? (2) Es wird auf folgende Reaktionen des Systems geachtet: • werden Eingaben vergessen? • bricht das System zusammen? • braucht es zu lange? • werden Daten verfälscht? Der Stresstest ist ein ungeheuer wichtiger Test bei Realzeitsystemen.
Was ist ein Benutzbarkeitstest? Beim Benutzbarkeitstest… • wird die Handhabung durch Experten bewertet • wird ausgewertet, wie schnell sich der Umgang erlernen lässt
Was ist ein Sicherheitstest? Der Sicherheitstest prüft… • ob die Backup- und Recovery-Funktionen funktionieren • ob es möglich ist, die Zugangskontrolle des Systems zu durchbrechen • ob die Zugangsprivilegien für jede Benutzerklasse und Funktion richtig sind
Welche Varianten von Testobjekten gibt es? Es gibt zwei Varianten von Testobjekten: • Black-Box (das Innere ist nicht sichtbar, nur die Schnittstelle ist sichtbar, Funktionalität der Schnittstellt wird überprüft) • White-Box (das Innere ist sichtbar, das Innere wird getestet)
Was muss bei der Spezifikation eines Testfalls angegeben werden? Bei der Spezifikation eines Testfalls muss folgendes angegeben werden: • Eingabe- / Rückgabe-Parameter einer Funktion • Daten, die über den Bildschirm ein- und ausgegeben werden • Daten, die geschrieben und gelesen werden • globale Variablen, die zur Laufzeit modifiziert werden • Attribute von Klasseninstanzen, die genutzt werden • Rückgabewerte von aufgerufenen Unterfunktionen
Wie wird in größeren Projekten getestet? In einem größeren Projekt müssen Tests… • automatisiert durchgeführt werden • mindestens einmal wöchentlich durchgeführt werden • verteilt und unabhängig voneinander entwickelt werden
Warum gibt es im V-Modell 4 Testphasen? Wie unterschieden sie sich? Im V-Modell gibt es zu den 4 Phasen der Softwareentwicklung parallel 4 Testphasen: • Modultest (arbeitet die kleinste Einheit korrekt?) • Integrationstest (arbeiten die kleinen Einheiten zusammen?) • Systemtest (werden alle getesteten Anforderungen erfüllt?) • Abnahmetest (erfüllt das System den Vertrag?)
Wo finden wir im SW-Entwurf mit UML für den OO-Test die Aufrufhierachie? Wir finden im SW-Entwurf mit der UML die Aufrufhierachie in den Sequenzdiagrammen.
Was sind die Vorteile von XUnit? Die Vorteile von XUnit sind: • die verteilte und unabhängige Entwicklung von funktionalen Tests • die einfache Zusammenführung der verschiedenen Tests • die automatische Durchführung von Tests • die automatisierte Protokollierung und Überprüfung der Ergebnisse • Tests in der gleichen Programmiersprache, wie die Anwendung
Woher weiß CppUnit, welche Tests ausgeführt werden sollen, wenn die Testklassen nicht in der Main-Funktion instanziiert werden? CppUnit weiß dies, über die Test-Suite, die die Pointer auf die Datentypen enthält.
Kapitel 09 Qualitätssicherung ...
Worum geht es bei der Qualitätssicherung? Die Qualitätssicherung beinhaltet Maßnahmen, die sicherstellen sollen, dass ein Produkt ein vorgegebenes Qualitätsniveau erreicht
Welche Arten von Qualität gibt es? Es gibt zwei verschiedene Arten von Qualität: • Produktqualität • Prozessqualität
Was bedeutet Produktqualität im Bezug auf Qualitätssicherung? Bei der Produktqualität zielen die Maßnahmen auf die Qualität der Bestandteile des Produkts. Man unterscheidet zwischen konstruktiven und analytischen Maßnahmen.
Was bedeutet Prozessqualität im Bezug auf Qualitätssicherung? Bei der Prozessqualität zielen die Maßnahmen auf die Qualität des Prozesses, mit dem das Produkt erstellt wird
Was bedeutet „konstruktive Qualitätssicherung“ im Bezug auf Produktqualität? In der konstruktiven Qualitätssicherung wird versucht, das Entstehen von Qualitätsmängeln bereits während der Entwicklung des Produktes zu verhindern, wozu währenddessen geeignete Maßnahmen eingesetzt werden. Dazu zählen: Vorgehensmodell, Architekturen usw..
Was bedeutet „Analytische Qualitätssicherung“ im Bezug auf Produktqualität? In der Analytischen Qualitätssicherung wird, nach der Fertigstellung versucht entstandene Fehler zu entdecken und diese ggf. zu verbessern. Hier wird zwischen dynamischen (Software läuft) und statischen (bevor Software läuft) Maßnahmen unterschieden.
Was sind Beispiele für eine analytische Qualitätssicherung? Beispiele für eine analytische Qualitätssicherung sind: • statische Codeanalyse • Konsistenz-Checks über dem UML-Modell • das Auffinden von Syntaxfehlern • Metriken • Performancetest / Robustheitstest • Formale Verifikation
Was soll in einer Analytischen Qualitätssicherung formal verifiziert werden? In einer Analytischen Qualitätssicherung soll formal verifiziert werden, dass ein Programm zu zulässigen Eingabewerten die richtigen Ergebnisse liefert und das der Algorithmus in jedem Fall terminiert.
Wie wird bei einer formalen Verifikation vorgegangen? Bei einer formalen Verifikation wird eine Funktionalität mit bestimmten Anfangsbedingungen (Precondition) aufgerufen. Diese muss eine bestimmte Endbedingung (Postcondition) herbeiführen.
Wie verläuft eine formale Verifikation? Die formale Verifikation eines Systems verläuft so, dass durch formales Anwenden der Prädikatenlogik über die Wirkungsweiße des Algorithmus der Beweis geführt wird, dass er aus seinen Anfangsbedingungen die Endbedingungen herstellt.
Kapitel 10 Metriken ...
Was ist eine Metrik? Eine Metrik… • ist ein mathematisches Verfahren, dass eine Charakteristik erfasst • trifft über eine Maßzahl, eine Aussage über eine Softwareeigenschaft • ist wichtig, weil sie ein Hinweis auf eine Problemstelle sein kann
Was ist die Grundidee von Metriken? Die Grundidee von Metriken ist… • die Ableitung elementarer Eigenschaften aus Arbeitsergebnissen • durch deren Kombination eine Aussage über die SW-Qualitätseigenschaften ableiten zu können
Wie aussagekräftig sind die Messungen der einzelnen Metriken? Man kann fast alles messen und aus den Messungen folgern. Die Auswahl der richtigen Metriken, sowie Erfahrung, um die Ergebnisse zu interpretieren, ist entscheidend!
Was passiert, wenn zusätzliche Metriken/Maßzahlen erfasst werden, um den Verzug eines Projektes zu verstehen? Es kann passieren, dass die Metriken am Ende immer mehr Zeit in Anspruch nehmen.
Wie sollte mit Metriken umgegangen und was sollte berechnet werden? Es sollten einige wenige angebrachte Metriken ausgewählt und konsequent verfolgt werden. Die Interpretation der Ergebnisse erfordert oft viel Erfahrung und Sachkenntnis, ein Manager darf diese darum nicht überbewerten.
Warum sind Metriken oft bei Managern beliebt und bei Entwicklern unbeliebt? Manager lieben Zahlen und die Entwickler haben, zum Teil, sehr viel Arbeit damit. Zudem sind Metriken mit einer gewissen Vorsicht und auch nur mit Sachverstand ein zu setzen.
Wie können Tools die Einhaltung von Metriken mit Software visualisieren? Tools können die Einhaltung von Metriken in einem Kiviatdiagramm darstellen.
Show full summary Hide full summary

Similar

Blood Brothers (Characters)
nuhaheza
Of Mice and Men
becky_e
Common Irish Words
silviaod119
Presentations in English
Alice McClean
Vectors
Andrea Leyden
Biology B2.2
Jade Allatt
GCSE Computing: Hardware
Yasmin F
1PR101 2.test - Část 4.
Nikola Truong
1PR101 2.test - Část 11.
Nikola Truong
Specific topic 7.6 Timber (processes)
T Andrews
AAHI_Card set 5 (Vital sign terminology)
Tafe Teachers SB