Eine Einführung - Universität Bonn

Transcription

Eine Einführung - Universität Bonn
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2008
008
ROOTS
Kapitel 1
Software Engineering – Eine
Einführung
Ziele
Erklärung der Bedeutung von Software Engineering
Erläuterung der Hauptprobleme von SE
Motivation der Verwendung objektorientierter Techniken
Definition der grundlegenden Konzepte von SE
Einführung von Software-Qualitäten
Ei füh
Einführung
von SE
SE-Prinzipien
Pi i i
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-2
ROOTS
Einführung in SE: Themenübersicht
Überblick
Bedeutung
B
d t
Herausforderungen
g
mit andern
Vergleich
Ingenieurswissenschaften
Software Engineering –
Konzepte
Definition der Grundbegriffe
Software-Qualitäten
Qualitäten
V
Verschiedene
hi d
Si
Sichten
ht
W ist
Was
i t Software
S ft
Engineering?
E i
i ?
Modellierung
g
Problemlösung
Wissensakquisition
Rationale Management
Software Engineering
g
g Prinzipien
p
7 Prinzipien
Brügge & Dutoit, 2000:
„Object-Oriented Software
Engineering“, Kapitel 1
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Ghezzi, 1996: „Software
Engineering“ Kapitel 1
Engineering“,
1-3
ROOTS
Bedeutung von Software Engineering
Software ist allgegenwärtig
I
Immer
mehr
h S
Systeme
t
werden
d durch
d hS
Software
ft
kontrolliert
k t lli t
Software ist ein wirtschaftlicher Schlüsselfaktor
Die Volkswirtschaft aller Industrieländer ist von Software abhängig
Die Ausgaben für Software haben einen beträchtlichen Anteil am
B tt
Bruttosozialprodukt
i l d kt aller
ll Industrieländer
I d t i lä d
Software Engineering befasst sich mit
Theorien
Prozessen
Methoden
Werkzeugen
zur professionellen Softwareentwicklung
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-4
ROOTS
Ziele: Software-Kosten und
Softwarequalität
Softwarekosten übersteigen oft Systemkosten
B i i l PC
Beispiel:
Der Softwarewartung kostet mehr als die Entwicklung
Bis zu 80% der Gesamtkosten
Schlechte Software schadet mehr als sie nutzt
Unzufriedene Benutzer
Direkte Schäden
Software Engineering
g
g befasst sich mit
kosteneffektiver Software-Entwicklung
qualitativ hochwertiger Software
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-5
ROOTS
Einige Beispiele: Qualität und Kosten
Jahr 1900 - Bug
Im Jahre 1992 erhielt Mary eine Einladung einen Kindergarten zu besuchen –
im Alter von 104 Jahren!
Fehlverhalten
Automatisiertes Gepäcksystem am Flughafen von Denver beschädigte Koffer
3,2 Mio. $ über dem Budget, 16 Monate verspäteter Start mit zum größten Teil
manuellem System
Unnötig komplexe Lösung
Das C-17 Transportflugzeug nutzt 19 Onboard-Computer, 80
Mikroprozessoren und 6 Programmiersprachen
Es war 500 Mio $ über dem Budget
Interface-Missbrauch
Wissend, dass es ein System gab, das die Abfahrt des Zuges mit offenen
Türen verhinderte,
verhinderte fixierte ein Zugführer den Startknopf mit Klebeband in
Er fand dies eine
Startstellung.
besonders clevere Art
Als er den Zug verließ um eine klemmende Tür zu schließen, ...
sicherzustellen, dass
der Zug sofort losfuhr
... fuhr der Zug ohne ihn los als die Tür nicht mehr klemmte
klemmte.
sobald
b ld di
die lletzte
t t Tü
Tür
geschlossen war.
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-6
ROOTS
Hauptherausforderungen von SE:
Komplexität und Änderung
Komplexität von Softwaresystemen
Viele Funktionen
Viele, möglicherweise kollidierende Ziele
Viele Komponenten
Komplexität der Zusammenstellung
Viele Teilnehmer
Komplexität der Kommunikation
Keine Einzelperson kann ein ganzes System verstehen
Dauernde Änderung von Softwaresystemen
Software modelliert einen Ausschnitt der „realen Welt“
Die reale Welt ändert sich ((Gesetzgebung,
g
g, Geschäftsabläufe,, ...))
Der Ausschnitt ändert sich (mehr Funktionalität hinzufügen, Systeme
integrieren, ...)
Die Implementierungstechnologie
g
g ändert sich ((neue Sprachen, Komponenten,
...)
Das Team ändert sich (Personen gehen, neue kommen hinzu, ...)
Das Management wechselt (neue Geschäftsausrichtung, ...)
Alles kann sich jederzeit ändern!
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-7
ROOTS
Charakteristiken von anderen
Ingenieurswissenschaften
Domäne
Klar definierte
Kl
d fi i t Probleme
P bl
Ein Produkt muss gebaut werden
Hohe Qualitätsanforderungen
g
Methoden
Systematische Verfahren und ihre
disziplinierte Anwendung
Standardschnittstellen, komponenten und -prozesse
Wissen um bereits verfügbare
Teilkomponenten
p
und g
gezielter
Einsatz fertiger (Teil-) Lösungen
Empirische Methoden zur
Bewertung von Lösungen
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-8
ROOTS
Software Engineering ist anders
Andere Ingenieursbereiche
Software Engineering
Herstellung bestimmt die
Endkosten
Änderungen sind weniger
häufig
Herstellung ist eine einfache
Duplizierung
Änderungen geschehen
dauernd
2000 Jahre von der
Euklidischen zur nichtEuklidischen Geometrie
Änderungen sind möglich, aber
sehr teuer
Manchmal innerhalb von
Stunden (Kunde hat seine
Meinung geändert)
Änderungen sind einfach
Redesign wird gründlich
d hd ht
durchdacht
Auswirkungen werden genau
analysiert
Kein durchdachtes Redesign
Auswirkungen werden nicht
ausreichend bedacht
Andauernde Änderungswünsche
zusammen mit der Leichtigkeit,
Änderungen durchzuführen, führen
zu ungenügend überdachten, adhoc „Lösungen“.
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-9
ROOTS
Kreatives Chaos versus diszipliniertes
Engineering
Programmieren ist ein kreativer Akt.
Ich kann meine Kreativität nicht von
Regeln begrenzen lassen.
Ich bin ein Künstler.
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Wenn weniger Programmierer
Kreativität mit chaotischer
Vorgehensweise verwechseln
würden, gäbe es mehr
brauchbare Software!
1-10
ROOTS
Einführung in SE: Themenübersicht
Überblick
Bedeutung
B
d t
Herausforderungen
g
mit anderen
Vergleich
Ingenieurswissenschaften
Software Engineering Konzepte
Definition der Grundbegriffe
Software Qualitäten
Qualitäten
V
Verschiedene
hi d
Si
Sichten
ht
W ist
Was
i t Software
S ft
Engineering?
E i
i ?
Modellierung
g
Problemlösung
Wissensakquisition
Rationale Management
Software Engineering
g
g Prinzipien
p
7 Prinzipien
Brügge & Dutoit, 2000:
„Object-Oriented Software
Engineering“, Kapitel 1
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Ghezzi, 1996: „Software
Engineering“ Kapitel 1
Engineering“,
1-11
ROOTS
Was ist Software Engineering
Modellierung
M d lli
Modellierung
iistt d
das wichtigste
i hti t Mitt
Mittell um mit
it K
Komplexität
l ität umzugehen
h
Problemlösung
g
Suche nach akzeptablen Lösungen erfordert experimentellen Vergleich
von Modellen
Wissensakquisition
Modellierung
g erfordert das Sammeln von Daten, deren Organisation
g
und
Formalisierung
Rationale Management
Dokumentation der Überlegungen / Gründe für Entscheidungen erleichtert
Verständnis der Auswirkungen von späteren Änderungen
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-12
ROOTS
Modellierung (1)
Software Engineering
... hilft die Welt zu verstehen
Modelle nicht mehr existenter Systeme:
Modell der Dinosaurier, basierend auf Knochen, Zähnen und den Regeln der
Anatomie
Modelle von Systemen
y
die angeblich
g
existieren:
Modell von Materie und Energie basierend auf Experimenten mit
Teilchenbeschleunigern
Modelle realer Systeme:
Software basierend auf Betrachtung der Anwendungsdomäne und Benutzer
“Participatory design” (Beteiligungsorientiertes Design) als Weg, die relevanten
Aspekte der Anwendungsdomäne zu verstehen
... möglichst einfache aber ausreichend genaue Darstellung des Systems
wichtigstes Mittel mit Komplexität umzugehen ☺
Abstraktion hilft den Blick auf die relevanten Aspekte zu richten
... ist
i ein
i H
Hauptgrund
d fü
für Ä
Änderungen
d
Je abstrakter desto mehr implizite Annahmen liegen dem System zugrunde.
Je mehr Annahmen desto mehr Potential für Änderungen
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-13
ROOTS
Was wir modellieren Objektorientierte
Modellierung
g
„Problem domain object model“
Modellierung der
Anwendungsdomäne
Objekte
Beziehungen
Problemorientierte Sicht
„Solution domain object model“
Objekte
Beziehungen
Interaktionen
Modellierung des Systems
Lösungsorientierte
Lö
i ti t Si
Sicht
ht
Vergleich verschiedener
Lösungen verlangt die
Modellierung verschiedener
alternativer Systeme
© 2000-2008 Dr. G. Kniesel
Vorteile der OO Modellierung
Vorlesung „Softwaretechnologie“
Erstellung der beiden Modelle
mit gleichen Mitteln möglich
M d ll d
Modell
der Lö
Lösung iistt eine
i
Erweiterung des ProblemModells
Nachvollziehbarkeit
(‚Traceability‘)
1-14
ROOTS
„Modellierung“ in dieser Vorlesung
Objektorientierte Konzepte
Technische Grundlagen
Die Unified Modelling Language (UML)
Standardisierte graphische Notation für OO Modelle
Objektorientierte
j
Modellierung
g
Anwendungs-Prinzipien
Entwurfsmuster (Design Patterns)
Typische „gute Entwurfs-Lösungen“
Refactoring
Verletzung von Designprinzipien erkennen („Bad smells“)
Entsprechende
tsp ec e de verhaltenserhaltende
e a te se a te de Restrukturierung
est u tu e u g („
(„Refactoring“)
e acto g )
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-15
ROOTS
Problemlösung
Software Engineering
Begrenzte Ressourcen und unvollständiges Wissen erfordern
... den Vergleich verschiedener Lösungen/Modelle
... empirische Bestimmung von Alternativen
Techniken um Angemessenheit von Modellen zu bewerten
Benutzerzentrierter Entwurf (Participatory Design)
Den Benutzer permanent in das Projekt einbinden und die Entwicklung leiten
lassen
Analyse-Überprüfung (Analysis Review)
Vergleiche Modell des Anwendungsbereichs mit Realität aus Sicht des
B
Benutzers
t
Entwurfs-Überprüfung (Design Review)
Vergleich des Lösungsmodells (solution domain model) mit Projektzielen
I l
Implementierungs-Überprüfung
i
Üb
üf
(C
(Code
d R
Review)
i ) und
dT
Testen
System wird auf Basis des Lösungsmodells (solution domain model) validiert
Projektmanagement
Vergleiche Prozessmodell (Zeitplan, Budget, ...) mit der Realität des Projektes
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-16
ROOTS
„Problemlösung“ in dieser Vorlesung
Participatory design
Den B
D
Benutzer
t
permanentt in
i das
d P
Projekt
j kt einbinden
i bi d und
d di
die E
Entwicklung
t i kl
leiten lassen
Extreme Programming: Benutzer / Kunde als Teil des Teams
Analysis-, Design-, Code-Review
Extreme Programming: permanenter Review
Review-Prozess
Prozess durch „Pair
Pair
Programming“
Projektmanagement
Vergleiche Prozessmodell (Zeitplan, Budget, ...) mit der Realität des
Projektes
j
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-17
ROOTS
Wissensakquisition
Software Engineering
Wissensakquisition ist nicht linear
Das Hi
D
Hinzukommen
k
einer
i
neuen IInformation
f
ti kkann alles
ll vorher
h
erworbene Wissen unbrauchbar machen
Hohes Fehlerrisiko
Risk-based development (Risikoorientierte Softwareentwicklung)
... zielt darauf ab, mit hohem Risiko behaftete Komponenten und
Aktivitäten zu erkennen.
... plant sie frühzeitig im Projekt ein
Issue-based development (Problemorientierte Softwareentwicklung)
... erkennt an, dass jede Aktivität jede andere beeinflusst
Analyse
Systemdesign, Objektdesign
p
g Testen
Implementierung,
Auslieferung
... ersetzt lineare durch parallele Ausführung von Aktivitäten
... erleichtert es
es, auf Änderungen zu reagieren
... ist leider schwieriger zu koordinieren
„Wissensaquisition“ in dieser Vorlesung
Prozessmodelle
Risk-based
Ri
kb
d development
d
l
t
Issue-based development
Extreme Programming und „Agile Prozesse“
Verbindung beider Ansätze
Es geht um den Umgang mit Änderungen!
Das neue Wissen von heute kann
die g
gute Entscheidung
g von g
gestern hinfällig
g werden lassen.
die gestern verworfene Alternative neu ins Spiel bringen.
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-19
ROOTS
‚Rationale Management‘
Rationale (engl.) = Begründung, Erklärung, Motivation
Rationale Management = Erfassung von
Problemen
Lösungsalternativen
Argumenten für und Wider der Alternativen
getroffene Entscheidung
Begründung für die Entscheidung
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-20
ROOTS
‚Rationale Management‘:
Sinn und Zweck
Software Engineering
Statische Problem- und Lösungs-Domänen
Mathematikbücher
M
th
tikbü h sind
i d voller
ll B
Beweise.
i
Ni
Nie aber
b iistt ffestgehalten,
t h lt
warum ein Beweis gerade so und nicht anders geführt wurde.
Das ist nicht weiter schlimm, da sich die zugrundeliegenden Modelle
sehr selten ändern
2000 Jahre von euklidischer zu nicht-euklidischer Geometrie
1500 Jahre
J h von geozentrischem
ti h
zu heliozentrischem
h li
ti h
W
Weltmodell
lt d ll
Dynamische
y
Problem- und Lösungs-Domänen
g
Rationale Management
g
Dokumentation der Gründe für Architektur und
Entwurfsentscheidungen wichtig
Sie ermöglicht die Auswirkung späterer Änderungen
Ä
dieser
Entscheidungen nachzuvollziehen
Sie reduziert den Änderungsaufwand und die Gefahr von
Fehlentscheidungen
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-21
ROOTS
Rationale Management: Problem
Software Engineering
Dokumentation von Alternativen
Aktuelles Lösungsmodell beinhaltet nur die gewählte Alternative
Betrachtet wurden aber evtl. N andere Möglichkeiten
Rationale Management muss also N andere Alternativen mit erfassen
Dokumentation der Gründe gegen jede verworfene Alternative
Wichtigste Entscheidungshilfe bei Änderung: Ist etwa eine der vorherigen
Annahmen ungültig geworden und somit auch die Schlussfolgerung die
d
damals
l gezogen wurde?
d ?
Dokumentation der getroffenen Entscheidung
Zusammen mit benutzten Bewertungskriterien
g
Dokumentation impliziter Entscheidungen
Entscheidung aus Erfahrung oder Intuition, ohne explizit Alternativen zu
betrachten
Nachträgliches Explizitmachen sehr aufwendig
Rationale Management erfordert enormen Zusatzaufwand
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-22
ROOTS
Einführung in SE: Themenübersicht
Überblick
Bedeutung
B
d t
Herausforderungen
g
mit andern
Vergleich
Ingenieurswissenschaften
Software Engineering –
Konzepte
Definition der Grundbegriffe
Software-Qualitäten
Qualitäten
V
Verschiedene
hi d
Si
Sichten
ht
W ist
Was
i t Software
S ft
Engineering?
E i
i ?
Modellierung
g
Problemlösung
Wissensakquisition
Rationale Management
Software Engineering
g
g Prinzipien
p
7 Prinzipien
Brügge & Dutoit, 2000:
„Object-Oriented Software
Engineering“, Kapitel 1
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Ghezzi, 1996: „Software
Engineering“ Kapitel 1
Engineering“,
1-23
ROOTS
Software Engineering Konzepte
Teilnehmer und Rollen
S t
Systeme
und
d Modelle
M d ll
Arbeitsprodukte
Aktivitäten Ressourcen
Aktivitäten,
Ziele, Anforderungen, Randbedingungen
In Anlehnung an IEEE
St d d zu S
Standards
Software
ft
Engineering
(s. [IEEE 1997] in
Brügge/Dutoit)
Notationen,, Methoden,, Methodologien
g
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-24
ROOTS
Teilnehmer und Rollen
Teilnehmer (Participant)
JJede
d natürliche
tü li h oder
d jjuristische
i ti h P
Person di
die am P
Projekt
j kt tteilnimmt
il i
t
Beispiel: Alice, John, Marc, Theo, Lara, die Deutsche Bahn AG
Interessensvertreter (Stakeholder)
(
)
Repräsentant einer Personengruppe, die ein eigenes Interesse an dem
Projekt oder Produkt hat
Beispiel: Projektmanager
Projektmanager, Entwickler
Entwickler, zukünftige Nutzer
Nutzer, durch das System
zukünftig arbeitslos werdende Angestellte, ...
Rolle (Role)
Die Rolle die ein Teilnehmer im Projekt spielt
Beispiel: Kunde, Endbenutzer, Entwickler, Projektmanager, Analyst, ...
Oft abstrahieren wir Teilnehmer durch die
Rollen die sie im Projekt oder beim
U
Umgang
mit
it d
dem S
System
t
einnehmen
i
h
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Kunde
Berater
1-25
Entwickler
ROOTS
System und Modelle
System
„reale
l W
Welt“
lt“
Beispiel 1: Fahrkartenautomat
Beispiel
p 2: Projekt
j
Modell
Abstraktion des Systems
Beispiele zu 1: Blaupausen, Schaltpläne, Programme, UML-Diagramme, ...
Beispiele zu 2: Zeitpläne
Zeitpläne, Kostenplan
Kostenplan, ...
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-26
ROOTS
Produkte (Products)
Produkt
Während
Wäh
d eines
i
P
Projekts
j kt entwickelte
t i k lt A
Artefakte
t f kt
Beispiele: Anforderungsdokumente, Programme, Testauswertungen, ...
Interne Produkte
Nur für das Projektteam bestimmt
Beispiele: Demo-Prototypen, Testfälle,
f
Testergebnisse, ...
Auszuliefernde Produkte (Deliverables)
Für den Kunden bestimmt
Üblicherweise vertraglich festgelegt, zusammen mit Zeitplan für Abgabe
Beispiele: Fahrkartenautomat, seine Software, Handbücher
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-27
ROOTS
Aktivitäten, Aufgaben und Ressourcen
Aktivität (Activity)
umfasst Menge von Aufgaben,
Aufgaben die auf das gleiche Ziel gerichtet sind
Beispiel: Anforderungs-Erhebung, Auslieferung, Management
kann aus Teilaktivitäten bestehen
Beispiel: Auslieferung
f
umfasst
f
Softwareinstallation
S f
und Benutzerschulung
Aufgabe (Task)
Atomare Aufgabe,
g
die zugeteilt
g
und erledigt
g wird
verwendet Ressourcen (Resources)
erzeugt Produkte
Ressourcen (Resources)
Alles was zur Durchführung von Aufgaben benötigt wird
Beispiele: Teilnehmer, Zeit, Material, ...
P j kt l
Projektplanung
Planung von Aktivitäten und Aufgaben
Zuordnung
g von Ressourcen für Aufgaben
g
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-29
ROOTS
Ziele, Anforderungen, Randbedingungen
Ziele (Goals)
Leitprinzipien
L
it i i i b
bzw. H
Hauptziele
t i l d
des P
Projektes
j kt
Definieren die wichtigen Attribute des Systems
Beispiel
p 1: Leitziel der Space-Shuttle
p
Entwicklung
g ist hohe Sicherheit
Beispiel 2: Leitziel der Entwicklung eines Fahrkartenautomaten ist hohe
Verfügbarkeit
Unklar definierte Ziele und Zielkonflikte machen einen großen Teil der
Komplexität mancher Systeme aus
Anforderungen (Requirements)
Eigenschaften, die das System besitzen muss
Funktionale Anforderungen (z.B. Ticket ausgeben)
Nicht-Funktionale
Nicht
Funktionale Anforderungen (schnelle Reaktionszeit, Touchscreen)
Randbedingungen (Constraints)
Weitere Bedingungen, die für den Benutzer nicht sichtbar sind
Z.B. Einbindung von Altsystemen
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-30
ROOTS
Notation, Methode, Methodologie
Notation
Sprache
S
h zur graphischen
hi h oder
d ttextuellen
t ll D
Darstellung
t ll
eines
i
M
Modells
d ll
Beispiel: UML
Methode
Reproduzierbares Verfahren zur Problemlösung
Beispiel: Kochrezept, Sortieralgorithmus,
S
Rationale Management,
Konfigurationsmanagement
Methodologie
Menge von sich ergänzenden Methoden zur Lösung einer bestimmten
Problemklasse
Beispiele: Unified Process, OMT, ...
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-31
ROOTS
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2008
008
Software-Qualitäten & EngineeringPrinzipien
ROOTS
Überblick
Das Ziel: “qualitätsorientiertes Software Engineering"
Softwarequalität und Prozessqualität
Verschiedene Qualitätssichten durch verschiedene Interessensvertreter
Verschiedene Qualitäten in verschiedenen Anwendungsbereichen wichtig
Wie man “qualitätsorientiertes Software Engineering“ erreicht
Engineering-Prinzipien
„Rigor and formality“
T
Trennung
der
d B
Belange
l
Modularität
Abstraktion
E
Erwartung
t
von Änderungen
Ä d
Allgemeingültigkeit
Inkrementelle Vorgehensweise
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-33
ROOTS
„Rigor and Formality“
Formality = engl. Förmlichkeit, Formalismus
Formalisierung
F
li i
hilft Di
Dinge präzise
ä i ausszudrücken
dü k
... dadurch Widersprüche und Inkonsistenzen zu entdecken
... und g
gegebenenfalls
g
sogar
g beweisen zu können.
Beispiele
Typsysteme von Programmiersprachen
Sicherheitskritisches Verhalten
S
Nebenläufigkeit / Parallelität
Rigor = engl. Härte, Starre, Strenge
gemeint ist konsequentes / diszipliniertes, systematisches Vorgehen
Besonders wichtig für Formalisierungen aber nicht nur.
Konsequentes, diszipliniertes Vorgehen im Laufe des Softwareentwicklung
genauso wichtig.
g
Extreme Programming
g
g
ist g
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-34
ROOTS
Produktqualitäten
Zuverlässigkeit
Effizienz
BenutzerBenutzerIn
Externe S
Sicht
Software-Qualitäten: Verschiedene
Sichten
freundlichkeit
Prozessqualitäten
Wartbarkeit
Portabilität
EntwicklerIn
© 2000-2008 Dr. G. Kniesel
Erweiterbarkeit
Interne Sicht
V ifi i b k it
Verifizierbarkeit
Vorlesung „Softwaretechnologie“
Produktivität
Pünktlichkeit
Kontrollierbarkeit
ManagerIn
1-35
ROOTS
Qualitätsorientiertes Software
Engineering
Die gewünschten Qualitäten des
Softwareproduktes
S
ft
d kt
Softwareprozesses
... müssen
von Anfang an klar sein
die treibende Kraft
f für
f den gesamten Prozess sein
Das Erreichen der Qualitäten
hängt ab vom Grad der Einhaltung
guter Ingenieurs-Prinzipien
nächster Abschnitt
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-36
ROOTS
Ingenieurs-Prinzipien: “Separation of
Concerns” (Trennung der Belange)
Concerns
Möglichkeiten der Trennung
T
Trennung
nach
hZ
Zeit
it
z.B. Zeitplanung des täglichen Lebens
Trennung nach Qualitäten
z.B. anfängliche Konzentration auf bestimmte Qualitäten, später dann auf
andere
Trennung
g nach Größe
Entwicklung von Teilen des Systems geschieht getrennt
Trennung ermöglicht ...
... die Kooperation verschiedenster Leute im selben Projekt
... die Bewältigung
g g der Komplexität eines Projektes
j
Der einzige Weg Komplexität zu bewältigen ist
die Trennung in verschiedene Belange.
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-37
ROOTS
Ingenieurs-Prinzipien: “Separation of
Concerns
Concerns”
Vergangenheit
Prozedurale Dekomposition
Funktionale Dekomposition
Gegenwart
objekt-orientierte Dekomposition
Problem
"tyrany
tyrany of predominant decomposition
decomposition"
unabhängig von Dekompositionsart gibt es immer „überschneidende
Belange" („crosscutting concerns“)
Sicherheit,, Persistenz,, ...
Aktuelle Weiterentwicklung / Zukunft (?)
mehrdimensionale Trennung der Belange
"aspekt
aspekt-orientierte
orientierte Softwareentwicklung"
Softwareentwicklung
http://aosd.net
http://aosd.net/conference: AOSD.06, Universität Bonn, März 2006
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-38
ROOTS
Ingenieurs-Prinzipien: Modularität (2)
Dekomposition
Top-down
T
d
M
Methode
th d
Aufteilen des Ursprungsproblems
Rekursive Dekomposition
p
von Unterproblemen
p
Divide-And-Conquer
K
Komposition
iti
Bottom-up Methode
Elementare Komponenten
p
werden zuerst entworfen
Projekt wird aus einzelnen Modulen zusammengesetzt
Mö li hk it d
Möglichkeit
des V
Verstehens
t h
Hilft beim modifizieren eines Systems
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-39
ROOTS
Ingenieurs-Prinzipien: Modularität (3)
Kohäsion (engl. „Cohesion“)
Zusammenhalt
Elemente
El
t eines
i
M
Moduls
d l werden
d gruppiert
i t
Gruppen werden aus logischen Gründen gebildet
Elemente kooperieren zum Erreichen eines Ziels
Kohäsion ist ein Maß für die gegenseitigen Abhängigkeiten von Elementen
einer Gruppe
Hohe Kohäsion
hoher Zusammenhalt der Gruppe
Kopplung (engl. „Coupling“)
Abhängigkeiten
Kopplung ist ein Maß für die Abhängigkeiten zwischen den Modulen
Starke Kopplung
Viele unerwünschte Abhängigkeiten
Modularität kann nur erreicht werden, wenn
die Module einen hohen Zusammenhalt
und
d geringe
i
Abhä
Abhängigkeiten
i k it besitzen.
b it
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-40
ROOTS
Ingenieurs-Prinzipien: Abstraktion
Definition
Die wichtigen Aspekte herausfinden unter Vernachlässigung der Details
Details.
Generelle Idee
Entwurf von Modellen als Abstraktion der Realität
Gut für…
… den erfolgreichen Umgang mit der Komplexität im Allgemeinen.
… das Sichtbarmachen wesentlicher Aspekte einer Aufgabe.
Gilt für…
… Softwareprozesse
z.B. Kostenabschätzung (nur über Schlüsselfaktoren)
… Softwareprodukte
z.B. Klassen sind Abstraktionen “realer” Objekte
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-41
ROOTS
Ingenieurs-Prinzipien: Voraussehen von
Änderungen
Generelle Idee
S ft
Software
muss einfach
i f h erweiterbar
it b und
d änderbar
ä d b sein
i
Änderungen
g in den Softwareprodukten
p
Benutzerfeedback kann zu neuen Anforderungen führen
Nicht alle Anforderungen waren im ersten Release erfüllt
Änderungen im Softwareprozess
Personalwechsel kann zu unvollständigem Wissen führen
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-42
ROOTS
Ingenieurs-Prinzipien: Allgemeinheit
Prinzip
Probleme wenn möglich verallgemeinern
Pro
Mehr Wiederverwendungspotential
Möglicherweise weniger komplexe Lösung
Lösung
g ist möglicherweise
g
durch bereits fertige
g Komponenten
p
möglich
g
Kontra
Könnte mehr Kosten verursachen
er rsachen in Be
Bezug
ga
auff Geschwindigkeit,
Gesch indigkeit
Speicherbedarf, Entwicklungszeit, Einarbeitungsaufwand,
Wartungsaufwand, ...
Übermäßige Allgemeinheit ist eher schädlich
schädlich...
Allgemeinheit ist ein fundamentales Prinzip in
d E
der
Entwicklung
t i kl
von W
Werkzeugen
k
und
dP
Paketen.
k t
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-43
ROOTS
Ingenieurs-Prinzipien: Inkrementelle
Vorgehensweise
Definition
Ei Ziel
Ein
Zi l wird
i d durch
d h iimmer b
bessere sukzessive
k
i Näh
Näherungen erreicht.
i ht
Vorversionen der Software werden früh veröffentlicht
Frühes Feedback der Kunden
Vorher unbekannte Anforderungen stellen sich heraus
Inkrementelle Vorgehensweise ist eine
Grundvoraussetzung von Erweiterbarkeit
© 2000-2008 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
1-44
ROOTS