Zusammenfassung der Ressource
sweGL
- Wissen
- Kernaktivität - Ziele
- Requirements Engineering - Die
Anforderungen der Kunden &
Enduser erheben und analysieren
- 1. Spezifikation der
Anforderungen
(unmissverständlich
& eindeutig)
- 2. Anfo (FA/NFA), die
beschreiben, was
das zu entwickelnde
System können
muss
- 3. Kundenvertrag
- Software Design - Wie sieht die
technische Lösung aus? Wie soll die
Software werden?
- 1. Vorgaben vom RE
werden umgesetzt
- 2. Entwurfsprinzipien
um die Qualität zu
steigern
- 3. Management
Apsekt:
Verteiltes,
paralleles
Arbeit im Team
- Tätigkeiten des SWE
- 1. Requirements Eng. |
RE-Elicitation &
Analysis
- 2. Design | System-
& Detaileddesign
- 3. Implementation |
Programming
- 4. Integration & Test |
Validation
- Requirements Elicitation
- Funktionale Anforderungen
- Was soll das Sys
können?
- Schnittstellen
- Wie soll das Sys
interagieren? Die kommuni.
von/mit User oder die externe
Interaktion mit Server/ Bank
- Nicht-Funktionale-Anfo.
- Funktionalität
- Angemessenheit,
Richtigkeit,
Sicherheit
- Zuverlässigkeit
- Reife,
Fehlertoleranz,
Wiederherstellbarkeit
- Benutzbarkeit
- Verständlichkeit,
Erlernbarkeit,
Bedienbarkeit
- Effizienz
- Zeitverhalten, Verbrauchsver.
- Wartbarkeit
- Modifizierbarkeit,
Stabilität,
Analysierbarkeit,
Prüfbarkeit
- Übertragbarkeit
- Anpassbarkeit,
Installierbarkeit,
Austauschbarkeit
- RE-Elicitation Vorgehen
- 1. Akteure iden.
- 2. Szenarios iden.
- 3. Usecases id.
- 4. Zusammenhänge zw. Usecase & Akteuren
- 5. NFA iden.
- Requirements Analysis
- Zweck
Modellierung
- 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)
- Schwächen
- Datenaustausch
erschwert, versch.
Dateiformate,
Netzwerk &
Serverprobleme
- Varianten
- Thick/Fat Client
- Client übern. viel arbeit (Lo&Be),
leitet nur wenige Daten
an Server weiter (Speicherung)
- +: Netzwerke nicht
stark beansprucht ->
niedrige HW anfo.
- Thin Client
- Client übern. wenig
arbeit, Hauptarbeit vom
Server (Logik,
Berechnung)
- Peer2Peer, Repository,
ModelViewController,
Pipes&Filters, Layered
Arch.
- Subsystem
Zerlegung
(2Seite)
- Detailed
Design
- Spezifikationen
- Subsystem
wählen
- 1. Attribute,
Methoden
ergängen
anpassen
(Typen,
Sig)
- 2. Sichtbarkeit
spez.
- 3. Randbedingungen spez.
- 4. Ausnahmefälle spez.
- Exceptions
- Vor-, Nachbedingungen & Invarianten
- Zugriff
- '#' 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