update
This commit is contained in:
55
Writerside/topics/OOAD/AgileDesign.md
Normal file
55
Writerside/topics/OOAD/AgileDesign.md
Normal file
@ -0,0 +1,55 @@
|
||||
# Agile Design
|
||||
> [UML](UML.md) ist nicht Software Design
|
||||
|
||||
- Diagramme repräsentieren einen Teil des SW-Designs
|
||||
- Source Code
|
||||
- Design ist ein abstraktes Konzept
|
||||
- Struktur und Form des Projekts
|
||||
- Detaillierte Beschreibung der Klassen, Module, Methoden
|
||||
|
||||
|
||||
## What goes wrong with Software
|
||||
- Im besten Fall
|
||||
- Projekt startet mit klarem Bild, was das System tun soll
|
||||
- Design ist ein Bild in den Köpfen der Devs
|
||||
- Mit Glück: Klarheit des Designs schafft es bis zum ersten Release
|
||||
- Häufig geht vorher was schief
|
||||
- Programm wird schwieriger wartbar
|
||||
- kleinste Änderungen werden kompliziert
|
||||
- Neudesign geht meistens schief
|
||||
- Das alte System wächst weiter, neues muss mithalten
|
||||
- Probleme im neuen Design entstehen
|
||||
- Software geht kaputt, wenn es anfängt mit Design Smells:
|
||||
|
||||
## Design Smells
|
||||
### Rigidity (Steifigkeit)
|
||||
- Das Design ist schwer zu ändern
|
||||
- Code ist schwer zu ändern
|
||||
- kleine Änderungen erzeugen Probleme in dependent Modulen
|
||||
- je mehr Module geändert werden müssen, desto mehr steif ist das Design
|
||||
- Ergebnis:
|
||||
- Änderungen dauern deutlich länger als gedacht
|
||||
|
||||
### Fragility (Zerbrechlichkeit)
|
||||
- Das Design ist einfach kaputtzumachen
|
||||
- Neue Probleme sind in unvorhergesehenen Umgebungen
|
||||
- Lösen dieser Probleme führt zu neuen Problemen
|
||||
- Fragilität wird mit der Zeit höher
|
||||
- Ist sehr normal
|
||||
- Module sind bekannt dafür, dass sie repariert werden müssen
|
||||
- Sind auf der Bug Liste
|
||||
- Niemand will sich der Aufgabe widmen
|
||||
|
||||
### Immobility
|
||||
- Das Design ist kaum neu zu benutzen
|
||||
- Enthält Teile, die in anderen Systemen sinnvoll wären
|
||||
- Risiko involviert in Aufteilung
|
||||
- Ungünstig, aber sehr häufig
|
||||
|
||||
### Viscosity
|
||||
- Es ist schwer das Richtige zu tun. Zwei Formen:
|
||||
1. Viskosität der Software
|
||||
- Devs entscheiden zwischen Designerhaltung und einfacher Lösung
|
||||
- Design sollte design erhaltende Änderungen fördern
|
||||
2. Viskosität der Umgebung
|
||||
- h
|
105
Writerside/topics/OOAD/Praktikum3_Diagramme.md
Normal file
105
Writerside/topics/OOAD/Praktikum3_Diagramme.md
Normal file
@ -0,0 +1,105 @@
|
||||
```mermaid
|
||||
classDiagram
|
||||
class Person
|
||||
<<abstract>> Person
|
||||
Person : - name
|
||||
Person : - adress
|
||||
class Tourguide
|
||||
Tourguide : - certifiedAdventurePackages <AdventurePackage*> vector
|
||||
class Participant
|
||||
class AdventurePackage
|
||||
AdventurePackage : - title
|
||||
AdventurePackage : - description
|
||||
class Accommodation
|
||||
Accommodation : - name
|
||||
Accommodation : - adress
|
||||
class Trip
|
||||
Trip : - startingDate
|
||||
|
||||
class Booking
|
||||
Booking : - payed
|
||||
Booking : - dateOfBooking
|
||||
|
||||
Tourguide --|> Person
|
||||
Participant --|> Person
|
||||
Trip "1..*" *-- "1..*" AdventurePackage
|
||||
Trip "*" *-- "1" Accommodation
|
||||
Participant "1..*" -- Booking
|
||||
Booking "1..*" -- "1..*" Trip
|
||||
Tourguide "1" --* "*" Trip
|
||||
Tourguide "1..*" -- "1..*" AdventurePackage
|
||||
```
|
||||
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
actor Tom as Tom : Human
|
||||
participant LibGui as libGUI
|
||||
participant Lib as Lib
|
||||
participant CTom as Tom : Customer
|
||||
activate LibGui
|
||||
|
||||
Tom -) LibGui: name = "HP1"
|
||||
|
||||
LibGui ->>+ Lib: getEbook("HP1")
|
||||
|
||||
create participant EBook as HP1 : EBook
|
||||
Lib -->>+ EBook: <<create>> EBook("HP1", 3.99)
|
||||
note right of EBook: Im Konstruktor von EBook fehlt<br/>die Zuweisung des Preise.<br/>Hier ergänzt
|
||||
|
||||
EBook --)- Lib: return
|
||||
Lib --)- LibGui: return
|
||||
|
||||
LibGui --)+ Tom: return
|
||||
Tom -)- LibGui: clickBorrowButton
|
||||
|
||||
LibGui ->>+ Lib: getEbook("HP1")
|
||||
Lib ->>+ CTom: borrow("HP1")
|
||||
CTom ->>+ EBook: getPrice()
|
||||
EBook --)- CTom: return 3.99
|
||||
|
||||
CTom ->> CTom: charge(3.99)
|
||||
|
||||
CTom --)- Lib: return
|
||||
|
||||
Lib --)- LibGui: return
|
||||
|
||||
LibGui ->>+ EBook: generateLink()
|
||||
EBook --)- LibGui: return link
|
||||
|
||||
LibGui ->>+ CTom: showLink()
|
||||
CTom --)- LibGui: return
|
||||
|
||||
LibGui --) Tom: return
|
||||
|
||||
destroy EBook
|
||||
LibGui -x EBook: <<destroy>>
|
||||
|
||||
destroy CTom
|
||||
LibGui -x CTom: <<destroy>>
|
||||
|
||||
destroy Lib
|
||||
LibGui -x- Lib: <<destroy>>
|
||||
|
||||
destroy LibGui
|
||||
Tom --x LibGui: <<destroy>>
|
||||
```
|
||||
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class Kreis{
|
||||
<<abstract>>
|
||||
- radius : ft
|
||||
+ setRadius()
|
||||
}
|
||||
class Ellipse{
|
||||
- breite : ft
|
||||
- hoehe : ft
|
||||
+ setBreite()
|
||||
+ setHoehe()
|
||||
}
|
||||
|
||||
Ellipse --|> Kreis
|
||||
```
|
||||
|
Reference in New Issue
Block a user