Software Engineering

Allgemeines

Software Engineering ist die Entdeckung und Anwendung solider Ingenieur-Prinzipien mit dem Ziel, auf wirtschaftliche Art Software zu bekommen, die zuverlässig ist und auf realen Rechnern läuft.

Im Software Engineering sind Methoden, Sprachen und Werkzeuge durch Konzepte miteinander verbunden.


Aufgaben
Ablauf
  1. Anforderungsanalyse und -modellierung
  2. Objektorientierte Analyse
  3. System- und Softwareentwurf
  4. Objektentwurf
  5. Codierung
  6. Testen

Prinzipien des Software-Engineerings

1. Abstraktion

→ Lösung allgemeiner Probleme zuerst, dann konkreter werden
→ Hierarchie, Polymorphie, Muster

2. Modularisierung

→ Teile und Herrsche
→ high module cohesion
→ Low inter-module coupling

3. Kapselung

→ Verbergen und schätzen von inneren Details der Implementierung

4. Hierarchische Zerlegung

→ Zerlegung des Problems in Teilprobleme
→ Abstraktion, Modularisierung

5. Trennung von Zuständigkeiten

→ Aufteilung eines Problems in unabhängige Teilaufgaben
→ MVC

6. Einheitlichkeit

→ besser verständlich

Durch die Anwendung der Prinzipien wird Software besser wartbar.

Prozessmodule

Agile Softwareentwicklung

Individuen und Interaktionen über Prozesse und Werkzeuge.
Funktionierende Software über Dokumentation.
Zusammenarbeit mit Kunden über Vertragsvereinbarungen.
Reagieren auf Veränderung über Folgen eines Plans.

SCRUM

image-1661154700975.png

+ Schnelle Lieferung
+ Neue, wechselnde Anforderungen
+ Neu priorisierte Funktionen
+ Kundenintegration

- Vertrauen
- Keine fixen Zeiten, Kosten
- Motivation


Sequentielles Wasserfallmodell

image-1661156876008.png

+ Ergebnisauswertung nach jeder Phase
+ Tätigkeiten des Software Engineerings

- Keine Beteiligung des Kunden
- Ausführbares Produkt erst am Ende
- Systemtests oft verkürzt


Heratives Modell

image-1661157257231.png

+ Rückschritte möglich

- Keine Parallelisieren der Teilaufgaben


Spiralmodell

image-1661157760884.png

+ Reduzierung Gesamtrisiko
+ Gemeinsame Planung

- Nicht einheitlich
- Anzahl unklar

Anforderungsanalyse

Mithilfe der Anforderungsanalyse werden die Bedarfe des Nutzers ermittelt. Fachliche Anforderungen stellen Vorgänge dar. Neben funktionalen Anforderungen gibt es Qualitätsanforderungen wie Einfachheit, Verlässlichkeit, Performance, Benutzbarkeit oder Effizienz.


UML Anwendungsfalldiagramm

Use-Case-Diagramme beschreiben Interaktionen von Akteuren mit Systemen über Anwendungsfälle.

image-1664198384359.png

Bei extend können Extension Points und Bedingungen angegeben werden.

Dokumentation eines Anwendungsfalls

Beispiel:

Name: Registrieren
Ziel: Fahrzeug bestellen
Vorbedingung: Online-Portal aufgerufen
Nachbedingung: Daten erhoben, Leistung steht zur Verfügung
Akteure: Kunde

Es können auch noch Nachbedingungen im Sonderfall definiert werden.

image-1664199288409.png


UML Aktivitätsdiagramm

Aktivitätsdiagramme bieten eine detaillierte Sicht auf Anwendungsfälle.

image-1664201291291.png

Beispiele:

image-1664202504670.png

Objektorientierte Analyse

In der Objektorientierten Analyse wird das Analysemodell erstellt, welches als Grundlage für den Entwurf dient.


Entity-Boundary-Control-Muster

Mit dem Entity-Boundary-Control-Muster können aus Use-Case-Diagrammen Klassendiagramme erstellt werden.

image-1664203644891.png

image-1664203237184.png

Entity: persistentes Wissen, Daten
Boundary: Schnittstelle zu Systemakteuren
Control: Prozesswissen

1. Boundary-Objekte für Systemgrenzen

2. Control-Objekte für Anwendungsfälle

3. Entitäten für Datenobjekte
→ evtl. aus Problembeschreibung

 

 

Lösung:

image-1664204146766.png


UML-Klassendiagramme

Klassendiagramme modellieren statische, strukturelle Beziehungen zwischen den Komponenten eines Systems.

image-1664205520044.png

image-1664205548862.png


Sequenzdiagramme

Sequenzdiagramme stellen Nachrichten dar, die zwischen Akteuren und Objekten ausgetauscht werden.

image-1664206263980.png

image-1664208831208.png

Unified Modeling Language (UML)

Die Unified-Modelling-Language ist eine grafische Modellierungssprache zur Spezifikation, Konstruktion, Dokumentation und Visualisierung von Software-Teilen und anderen Sprachen.

Ebenen der UML

image-1664292571711.png

 

image-1664293552899.png

Softwarequalität

Qualitätsmerkmale von Software sind Funktionalität, Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit und Übertragbarkeit.


Clean Code

Clean Code bezeichnet Quellcode, Dokumente, Konzepte, Regeln und Verfahren, die intuitiv verständlich sind. So sind Programme effizienter wartbar und die Entwicklungszeiten werden kürzer.

Aussagekräftige Namen
Funktionen
Kommentare
Klassen

Das Gesetz von Demeter

Eine Methode einer Klasse k kann nur zugreifen auf

Bei Clean Code laufen alle Tests durch, es gibt keine Codedubletten und die Anzahl der Klassen und Methoden sind minimal.


Testen und Staging Areas

image-1664378217977.pngENT - Entwicklungsumgebung

INT - Integrationsumgebung mit Mocks externer Systeme

CON - Konsolidierungsumgebung für das Testen mit best. Systemen

PROD - Produktivumgebung des Kunden

DEV INT CON PROD
Unit Tests (Komponente) Integrationstest (Zusammenspiel)

Systemtest

Akzeptanztest

Smoketest

Softwareentwurf

Im Softwareentwurf werden Entwurfsziele festgelegt, Subsysteme definiert und Subsysteme implementiert.


Muster

Muster beschreiben ein wiederkehrendes Problem und eine generische Lösung dafür. Sie sind plattform- und Programmiersprachenunabhängig und bieten Skizzen für gutes Design.

Strategy

Problem: Verwandte Klassen lösen gleiche Aufgaben durch verschiedene Algorithmen.

Lösung:

image-1664379143799.png

Singleton

Problem: Es soll nur ein Objekt der Klasse instanziiert werden.

Lösung:

image-1664379469211.png

Composite

Problem: In einem Objekt (Ordner) können andere Objekte (Dateien) oder gleiche Objekte (Ordner) bestehen.

Lösung:
image-1664379663377.png

Model-View-Controller

Problem: Zuständigkeiten sollen getrennt werden.

Lösung:
image-1664379902128.png

Handzettel Klausur

Für die Klausur waren bei uns zwei A4 Blätter vorder- und rückseitig zugelassen. Die vier (bzw. eher 3,5) Seiten sind nachfolgend abgebildet.

Keine Garantie für Lesbarkeit oder Verständlichkeit was das Layout angeht. Am Anfang dachten wir es muss Platz gespart werden.
Habt Nachsicht mit uns, diese Lernzettel wurden bis spät in die Nacht angefertigt.
Gez. Martin am 12.10.2022 um 01:11 Uhr.
Um 8:30 Uhr beginnt die Klausur. Wird schon schief gehen :)

Ich bitte um dein Verständnis :)


Seite 1

image-1665529671503.jpg


Seite 2

image-1665529707679.jpg


Seite 3

image-1665529721023.jpg


Seite 4

image-1665529731431.jpg