Entwurfsprozess zur
Planung von SW.
Prozess ist wichtig,
um die Komplexität,
welche die meisten
Programme aufweisen,
für die Entwickler
handhabbar zu
machen & das Risiko
von Fehlentwicklungen
zu verringern - UML
AnalyseObjektModel
(Bilder-Seite)
Verhaltensmodelle
(Bilder-Seite)
System Design
Entwurfsprinzipien
Geheimnisprinzip
Was nicht zwingend (extern)
kommuniziert werden muss,
bleibt Private. "Need to
know"-Prinzip.
Ein Subsystem erbringt eine klar definierte Leistung.
Andere Subsystem nutzen diese Leistung ohne zu wissen wie sie erbracht
wird.
ich kaufe einen Käse ohne zu wissen wie der Käse genau hergestellt wurde
Viele Teile
eines Sys
können
geheim sein,
wenn alle
Geheim ->
System läuft
nicht mehr
Nutzung v. vorhandenem
Wenn möglich können vorhandene Lösungen wiederverwendet werden
Untersuchen: Ist eine Wiederverwendung “leicht”,
d.h. ein Subsystem einzubetten ohne gravierende
Änderungen am Gesamtsystem vorzunehmen. -
Ist ein Subsystem abgeschlossen, z.B. ein
Datenbanksystem.
Modulariät
Kohäsion
Je höher die Koh. desto besser die Module
Hohe Kohäsion:
Viele Klassen die
mite. in Bezieh.
stehen und ähnlich
Aufgaben erfüllen
Geringe Kohäsion:
Zahlreiche
Klassen, die nicht
mitein. in
Beziehung stehen
Kopplung
Mass für die Stärke der Abhängigkeit zw. zwei Modulen.
Je geringer die wechsels. Kopplung, desto besser die
Modulari.
Architekturstile
Client/Server
Stärken
Eff. Nutzung von vertl Sys. (Netzwerk), Billige
Client HW (Laptop), leichte Erweiterung
(Upgrade), Availability: Mehrere Server ->
hohe Verfügbarkeit(Redundanz)
'#' Protected:
Können nur
von Klasse
& deren
Subklassen
verwedent
werden
'-' Private:
Können nur
von eigener
Klasse
aufgerufen
werden
'+' Public:
Für alle
sichtbar
Information
Hiding
s.
Geheimnispr.
Information hiding is a
technique for reducing
the dependencies
between modules: • The
intended client is
provided with all the
information needed to
use the module
correctly, and with
nothing more • The
client uses only the
(publicly) available
information (Interface).
Softwaretesting
Zielsetzungen
Ziel ist es, Testfälle zu identifizieren,
mit denen die höchste
Wahrscheinlichkeit gegeben ist
festzustellen, ob das Softwaresystem
korrekt funktioniert
Ein guter Test
hat möglichst
hohe
funktionale oder
nichtfunktionale
Abdeckung
Ein Test ist dann
erfolgreich, wenn er
einen Fehler gefunden
hat (dasselbe gilt für
eine Testerin / einen
Tester)
Testaktivitäten
Unit-Testing
Test einer
einzelne
Komponente
(Subsystem
oder Klasse)
Zielsetzung:
Fehler in
einzelnen
Komponenten
finden
Integration
Testing
Test einer
Gruppe von
Subsystemen
(allenfalls das
gesamte
System)
Zielsetzung: Fehler
im Zusammenspiel
oder den
Schnittstellen von
Subsystemen finden
System
Testing
Test des gesamten Systems
Zielsetzung:
Abweichungen
des
Gesamtsystems
von den
funktionalen und
nicht funktionalen
Anforderungen
identifizieren
User Acceptance & Usability Testing
Evaluation des
Endprodukts
(Übergabe)
Die
Kundschaft
testet
Zielsetzung: Erkennen
welche
Akzeptanzkriterien das
System (noch) nicht
erfüllt
TestMethoden
Black Box Testing
Grundlage: Kompo-Spez
Aufdecken; Fehler im Vergelich zur Spez
Aufdecken: Fehler in Spez oder Unvollstän.
Fokus auf die Zielerreichung der Software (Funktionalität)
Whitebox Testing
Grundlage: Code
Aufdecken: Fehler in Teilkompnenten
Aufdecken: Fehler in Teilkom. lokalisieren
Debugging ist auch ein Beispiel für White Box Testing