01intro
01intro
01intro
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1.1 Motivation<br />
1.2 Grundbegriffe<br />
1.3 Modellierung<br />
1.4 Vorgehensmodelle<br />
1.5 Der Unified Process<br />
1.6 Das V-Modell der SW-Entwicklung<br />
1.7 Zusammenfassung<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Mit Kommentaren (Interaktion)<br />
- 1 -
1.1 Motivation<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
1.1 Motivation<br />
Software als Industriefaktor<br />
Qualitätsmerkmale<br />
Softwarekonstruktion als Ingenieursdisziplin<br />
Erfolgsfaktoren bei der SW-Entwicklung<br />
1.2 Grundbegriffe<br />
1.3 Modellierung<br />
1.4 Vorgehensmodelle<br />
1.5 Der Unified Process<br />
1.6 Das V-Modell der SW-Entwicklung<br />
1.7 Zusammenfassung<br />
- 2 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Wirtschaftliche Bedeutung<br />
2001: weltweiter Elektronikumsatz von 1,2 Billionen US-$<br />
Industrielle Produkte (HighTech):<br />
mindestens 30 % Softwarekosten (KfZ, ...)<br />
Umweltgesetze, ...<br />
Funktionalität<br />
?<br />
- 3 -
employed in professional areas<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Information/Knowledge Society<br />
Information<br />
80's: more people employed in the information industry than in any other<br />
2000's: more than half of the working population<br />
- 4 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software als Industriefaktor<br />
Einfluss der Software auf unsere Produkte<br />
Immer mehr Produkte „enthalten“ Software<br />
Immer mehr Produkte unterscheiden sich von Konkurrenzprodukten nur<br />
durch Software Alleinstellungsmerkmale<br />
Software ist zu einem entscheidenden Wettbewerbsfaktor geworden<br />
Einfluss auf die Gesellschaft<br />
Software-Entwicklung ist ein wichtiger Wirtschaftsfaktor<br />
Unsere Gesellschaft vertraut Software und baut auf Software<br />
Es wird immer mehr Software benötigt,<br />
die immer schneller verfügbar sein soll<br />
die immer günstiger sein soll<br />
die immer besser sein soll<br />
funktional umfangreicher, komfortabler, sicherer, schneller, …<br />
1.1 Motivation<br />
- 5 -
Funktionalität<br />
Korrektheit<br />
interoperabel<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Sicherheit<br />
angemessen<br />
Zeit<br />
Verbrauch<br />
Systemqualität (ISO9126)<br />
ordnungsmäßig<br />
Zuverlässigkeit Benutzbarkeit<br />
Reife<br />
Fehlertoleranz<br />
Analysierbarkeit<br />
Modifzierbarkeit<br />
Wiederherstellbarkeit<br />
Stabilität<br />
Prüfbarkeit<br />
Bedienbarkeit<br />
Erlernbarkeit<br />
Anpassbarkeit<br />
Installierbarkeit<br />
Effizienz Änderbarkeit Übertragbarkeit<br />
Verständlichkeit<br />
Konformität<br />
Austauschbarkeit<br />
Q<br />
u<br />
a<br />
li<br />
t<br />
ä<br />
t<br />
s<br />
s<br />
y<br />
s<br />
t<br />
e<br />
m<br />
- 6 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Systematische Softwareentwicklung<br />
Wer hat schon ein Programm geschrieben?<br />
yalleine?<br />
ydirekt am Rechner entwickelt?<br />
yohne vorherige Planung, Skizze, ...?<br />
yHat es funktioniert ?<br />
Gratuliere!<br />
Programmieren im Kleinen lässt sich leider nicht<br />
direkt auf große Probleme anwenden<br />
- 7 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Building a dog house<br />
Booch, Software Architecture<br />
Can be built by one person<br />
requires<br />
Minimal modeling<br />
Simple process<br />
Simple tools<br />
- 8 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Building a house<br />
Built most efficiently and timely by a team<br />
requires<br />
Modeling<br />
Well-defined process<br />
Power tools<br />
Booch, Software Architecture<br />
- 9 -
Die Software-Technik stellt<br />
auch hierfür Methoden<br />
bereit, die z.T. noch reifen<br />
müssen …<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Architecting a high rise<br />
Booch, Software Architecture<br />
- 10 -
Models<br />
abstraction<br />
views<br />
purpose<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Modeling a house<br />
Booch, Software Architecture<br />
• representations of the system to-be-built<br />
• vehicle for communications with various<br />
stakeholders<br />
• Visual models, blueprints, Scale<br />
• reasoning about some characteristic<br />
- 11 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Systematische Produktentwicklung<br />
Bauingenieur: z.B. Hochhaus, Brücke, ...<br />
Strukturierung des Entwicklungsprozesses<br />
Planung<br />
Berechnung<br />
Ausführung (in mehreren Phasen)<br />
verschiedene Spezialistenteams<br />
Engineering seeks quality<br />
Prüfung des Ergebnisses<br />
Strukturierung des Produktes<br />
Fundament<br />
Außen- und Innenwände<br />
Geschoßdecken<br />
Dach<br />
Innenausbau<br />
- 12 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software Development Process<br />
... defines who is doing what when and how<br />
dependent on<br />
Technology<br />
modeling & programming languages, computer systems<br />
Tools<br />
programming environments, computer systems<br />
People<br />
skills and learning<br />
Organizational Pattern<br />
process adaption to globality<br />
- 13 -
Erfolgsfaktoren bei der SW-Entwicklung<br />
Gut ausgebildete Mitarbeiter<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Sie sind der Schlüssel zum Erfolg!<br />
Besseres Engineering<br />
Gute Prozesse<br />
stetige Prozessverbesserung<br />
Einsatz geeigneter Werkzeuge<br />
Einsatz vielversprechender Technologien<br />
Objekttechnologie<br />
Komponententechnik<br />
Nicht immer alles von Neuem erfinden<br />
Wiederverwendung gezielt anstreben<br />
Produktentwicklung auf der Basis von Wiederverwendung<br />
organisieren<br />
1.1 Motivation<br />
- 14 -
1.1 Motivation<br />
1.2 Grundbegriffe<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software und Programm<br />
Programmentwicklung<br />
Eigenschaften von Software<br />
Systemdreieck<br />
Werkzeug, Werkstoff, Methode<br />
Software-Engineering<br />
1.3 Modellierung<br />
1.4 Vorgehensmodelle<br />
1.5 Unified Process<br />
1.2 Grundbegriffe<br />
1.6 Das V-Modell der SW-Entwicklung<br />
1.7 Zusammenfassung<br />
- 15 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software und Programm<br />
Software<br />
IEEE Standard Glossary of Software Engineering Terminology<br />
"Computer programs, procedures, and possibly associated<br />
documentation and data pertaining to the operation of a computer<br />
system.„<br />
Software umfasst danach also<br />
Programme, Abläufe, Regeln, auch Dokumentation und Daten, die mit<br />
dem Betrieb eines Rechnersystems zu tun haben.<br />
Software ist ein technisches Produkt<br />
Es wird von Ingenieuren systematisch entwickelt.<br />
Es ist durch feststellbare Eigenschaften (Funktionalität, Qualität)<br />
gekennzeichnet.<br />
Programm<br />
IEEE Standard Glossary of Software Engineering Terminology<br />
"A combination of computer instructions and data definitions that<br />
enable computer hardware to perform computational or control<br />
functions".<br />
1.2 Grundbegriffe<br />
- 16 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Programmentwicklung<br />
Unter dem Begriff Programmieren versteht man<br />
das Lösen von Problemen unter Zuhilfenahme eines Rechners<br />
Problem<br />
Komplexer Prozess<br />
viele Rückgriffe<br />
Algorithmus Programm<br />
Programmiersprache<br />
1.2 Grundbegriffe<br />
Daten<br />
Rechner<br />
Programmieren (im Kleinen) ≠ Software-Entwicklung<br />
Programmieren ist ein Teil der Software-Entwicklung<br />
⊂<br />
Lösung<br />
- 17 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Systemdreieck<br />
Methode, Sprache und Werkzeug bilden ein System, wenn<br />
sie durch gemeinsame Konzepte verbunden sind.<br />
Sprache<br />
Konzepte<br />
Methode<br />
Werkzeug<br />
1.2 Grundbegriffe<br />
- 18 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Werkzeug, Werkstoff, Methode<br />
Werkzeuge<br />
dienen zur Ausführung einer Arbeit<br />
Im Produkt ist das Werkzeug nicht mehr enthalten (es sei denn als<br />
Ausrüstung für die Wartung).<br />
Typische (Software-)Werkzeuge sind Editoren, Übersetzer, Integrierte<br />
Programmierumgebungen, CASE-Tools, Datenbank-Systeme.<br />
Werkstoffe<br />
sind von den Werkzeugen deutlich unterschieden, weil aus ihnen das<br />
Produkt geformt wird; die Werkstoffe bleiben im Produkt.<br />
Wir benutzen als Werkstoffe unserer Produkte Sprachen, sowohl<br />
„natürliche“ als auch formale.<br />
innerhalb von Sprachen lassen sich Bausteine (Bibliothekselemente)<br />
konstruieren.<br />
Methoden<br />
sind Handlungsanweisungen, also Regeln, die den Menschen bei der<br />
Wahl seiner Aktionen führen.<br />
1.2 Grundbegriffe<br />
- 19 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Eigenschaften von Software<br />
Software ist immateriell.<br />
Kopie und Original sind völlig gleich.<br />
Software wird nicht gefertigt, sondern nur entwickelt.<br />
Software verschleißt nicht; die „Wartung“ stellt nicht den alten Zustand wieder<br />
her, sondern einen neuen.<br />
Software Fehler entstehen nicht durch die Benutzung, darum kündigen sie sich<br />
nicht an.<br />
Die Software-Leute unterschätzen meist das Problem ... oder überschätzen<br />
sich selbst!<br />
Ein Programm realisiert keine stetige Funktion.<br />
Die Korrektheit der Funktionalität ist durch Test nicht zeigbar.<br />
Software-Systeme sind sehr komplex.<br />
Die Entwicklung guter Software ist darum unvermeidlich aufwendig (teuer).<br />
Die wenigen „Werkstoffe“ der Software - die Sprachen - sind amorph<br />
und universell.<br />
Die Werkstoffe induzieren keine sinnvollen (Grob-) Strukturen. Diese müssen<br />
darum aktiv geschaffen werden.<br />
Software spiegelt (in vielen Fällen) die Realität.<br />
1.2 Grundbegriffe<br />
- 20 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software-Engineering<br />
Software-Krise<br />
Ende der 60er Jahre wurden Softwareentwicklungen nicht mehr mit den<br />
bekannten Mitteln beherrschbar.<br />
Konsequenz:<br />
Etablierung eines Fachs, das die ingenieurmäßige Entwicklung von Software<br />
zum Inhalt hat.<br />
Definitionen<br />
Software Engineering ist die Entdeckung und Anwendung solider Ingenieur-<br />
Prinzipien mit dem Ziel, auf wirtschaftliche Art Software zu bekommen, die<br />
zuverlässig ist und auf realen Rechnern läuft.<br />
F.L. Bauer<br />
Software Engineering ist die Herstellung und Anwendung einer Software, wobei<br />
mehrere Personen beteiligt sind oder mehrere Versionen entstehen.<br />
D. L. Parnas<br />
The application of a systematic, disciplined, quantifiable approach to the<br />
development, operation, and maintenance of software; that is, the application of<br />
engineering to software.<br />
IEEE Standard Glossary of SE Terminology<br />
1.2 Grundbegriffe<br />
- 21 -
Scheitern von SW Projekten<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software Krise<br />
immer noch aktuell Mautsystem, …<br />
SW zu spät ausgeliefert, Kosten ein Vielfaches, schlechte Performance,<br />
…<br />
Gründe vielfältig<br />
nicht die Inkompetenz der Manager und SW Entwickler<br />
im Gegenteil, in vielen großen (gescheiterten) Projekten waren Personen<br />
mit überdurchschnittlichen Fähigkeiten beteiligt (Brooks 75)<br />
SW Komplexität und Unterschätzen<br />
Ingenieursmethoden nicht direkt übertragbar auf SW<br />
- 22 -
1.1 Motivation<br />
1.2 Grundbegriffe<br />
1.3 Modellierung<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Modelltheorie<br />
Modellierung<br />
Einsatz von Modellen<br />
Vorgehen bei der Modellierung<br />
1.4 Vorgehensmodelle<br />
1.5 Unified Process<br />
1.3 Modellierung<br />
1.6 Das V-Modell der SW-Entwicklung<br />
1.7 Zusammenfassung<br />
- 23 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Modelltheorie<br />
Modell und Original<br />
Ein Modell ist ein Abbild, ein Vorbild oder eine<br />
Repräsentation von etwas.<br />
Das abgebildete Etwas ist das Original; es kann real oder<br />
virtuell sein.<br />
Merkmale der Modellbildung<br />
Abbildungsmerkmal: Ein Modell ist eine Abbildung<br />
eines realen oder virtuellen Originals.<br />
Verkürzungsmerkmal: Modelle besitzen nicht alle<br />
Attribute des Originals, sondern beschränken sich auf<br />
relevante Attribute.<br />
Pragmatisches Merkmal: Welche Attribute ein Modell<br />
zeigt, hängt immer vom Einsatzzweck des Modells ab.<br />
1.3 Modellierung<br />
- 24 -
Modellierung als Abbildung<br />
Beispiel<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Original<br />
Modellierung<br />
1.3 Modellierung<br />
kontrastierte<br />
Attribute<br />
(Hervorhebung)<br />
Abbildung<br />
Modell<br />
präterierte<br />
Abbildungsvorbereich Attribute<br />
Abbildungsnachbereich<br />
(Abstraktion)<br />
transkodierte<br />
Attribute<br />
(neu belegte)<br />
Original: VW Mondo (virtuell) Modell: Karosserie-Modell<br />
präterierte Attribute abundante Attribute<br />
Motorleistung - Stoßfestigkeit<br />
Bremsweg - Entflammbarkeit<br />
abundante<br />
Attribute<br />
- 25 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Pragmatisches Merkmal<br />
nicht alternative Darstellung<br />
z.B. Übersetzung eines Textes (englischDeutsch) versucht alle<br />
Informationen zu erhalten (Inhalt, Stil, …)<br />
gezielte Abstraktion<br />
Auswahl relevanter und für den Zweck irrelevanter Information<br />
Datenflussmodell beschreibt funktionale Transformation von Daten (aber<br />
nicht deren Struktur)<br />
ERM-Modell beschreibt Datenstrukturen, aber nicht die Funktionen eines<br />
Systems<br />
Zustandsmodell beschreibt Zustände mit Bedingungen für<br />
Zustandsübergänge, aber abstrahiert von Datenstrukturen<br />
- 26 -
Umgang mit Komplexität<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Einsatz von Modellen<br />
Wenn die Realität zu komplex ist, um sie mit vertretbarem Aufwand bei<br />
Bedarf zu überblicken und die Schlüsse daraus zu ziehen.<br />
Beispiel: Bewertung der Industrie durch Kennzahlen.<br />
Umgang mit Risiken<br />
Wenn eine anscheinend sinnvolle Änderung in der Realität zu riskant<br />
oder zu schwierig ist, um sie direkt herbeizuführen.<br />
Beispiel: Erstellung eines Gebäudes<br />
Risiko: dem Kunden gefällt das Gebäude nicht oder die Landschaft wird<br />
verschandelt.<br />
Es wird ein Modell angefertigt, das es gestattet, diese Risiken zu<br />
vermindern.<br />
Wir gehen also nicht direkt vom Ist-Zustand in den geplanten Zustand<br />
über, sondern zunächst in das deskriptive Modell (Vorbild).<br />
1.3 Modellierung<br />
- 27 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Vorgehen bei der Modellierung<br />
Original<br />
modifiziertes<br />
Original<br />
Originaloperation<br />
(riskant)<br />
Abbildung<br />
(Modellierung)<br />
Abbildung<br />
(Realisierung)<br />
1.3 Modellierung<br />
Modelloperation<br />
Modell<br />
(Abbild)<br />
Modell<br />
(Vorbild)<br />
- 28 -
1.1 Motivation<br />
1.2 Grundbegriffe<br />
1.3 Modellierung<br />
1.4 Vorgehensmodelle<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
1.4 Vorgehensmodelle<br />
SW-Entwicklung als Prozess<br />
Software-Prozessmodelle<br />
Software Life Cycle<br />
Aktivitäten-orientierte Prozessmodelle<br />
Phasenmodelle<br />
Standard-Phasenmodell<br />
Inkrementelle Entwicklung<br />
Iterative Entwicklung<br />
1.5 Unified Process<br />
1.6 V-Modell der SW-Entwicklung<br />
1.7 Zusammenfassung<br />
- 29 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
SW-Entwicklung als Prozess<br />
Software-Entwicklung ist ein Prozess<br />
Dieser ist arbeitsteilig (d.h. viele verschiedene Personen sind daran<br />
beteiligt).<br />
Am Ende des Prozesses steht das zu entwickelnde Produkt – das<br />
Software-System – zur Verfügung.<br />
SW-Entwicklungsprozess<br />
Definiert den Ablauf und die Organisationsstrukturen, in denen die<br />
Software erstellt und bearbeitet wird.<br />
Zentrale Bestandteile<br />
Aufgaben (Tätigkeiten)<br />
Was muss getan werden?<br />
Ergebnisse (Dokumente)<br />
Welche Zwischen- oder Endergebnisse sind zu entwickeln?<br />
Verantwortlichkeiten (Rollen)<br />
Wer erledigt die anfallenden Arbeiten?<br />
1.4 Vorgehensmodelle<br />
- 30 -
process<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software-Prozessmodelle<br />
A sequence of steps performed for a given purpose; for example, the<br />
software development process.<br />
software development process<br />
The process by which user needs are translated into a software<br />
product. The process involves translating user needs into software<br />
requirements, transforming the software requirements into design,<br />
implementing the design in code, testing the code, and sometimes,<br />
installing and checking out the software for operational use.<br />
Note: These activities may overlap or be performed iteratively.<br />
Ein (Software-)Prozessmodell ist<br />
eine abstrakte Beschreibung ähnlicher Software-Prozesse,<br />
also eine Muster-Struktur für Organisation und Durchführung eines<br />
Software-Prozesses<br />
1.4 Vorgehensmodelle<br />
IEEE<br />
- 31 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software Life Cycle<br />
Produkt Lebenszyklus<br />
Jeder Gegenstand wird in einer Reihe von Schritten hergestellt.<br />
Am Anfang steht ein Wunsch, der konkretisiert wird.<br />
Dann wird die Struktur festgelegt und schließlich das Produkt angefertigt.<br />
Besteht es aus mehreren Teilen, so werden diese einzeln geprüft, montiert<br />
und als ganzes erneut geprüft.<br />
Schließlich wird das Produkt an den Kunden übergeben und in Betrieb<br />
genommen. Dabei kommt es öfter zu Modifikationen und Reparaturen.<br />
software life cycle<br />
The period of time that begins when a software product is conceived and ends<br />
when the software is no longer available for use. The software life cycle<br />
typically includes a concept phase, requirements phase, design phase,<br />
implementation phase, test phase, installation and checkout phase, operation<br />
and maintenance phase, and, sometimes, retirement phase.<br />
Note: These phases may overlap or be performed iteratively.<br />
software development cycle<br />
The period of time that begins with the decision to develop a software product<br />
and ends when the software is delivered. This cycle typically includes a<br />
requirements phase, design phase, implementation phase, test phase, and<br />
sometimes, installation and checkout phase.<br />
1.4 Vorgehensmodelle<br />
IEEE<br />
- 32 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software Life Cycle – Überblick - 1<br />
Analyse<br />
Spezifikation der Anforderungen<br />
Grobentwurf, Spezifikation der Module<br />
Feinentwurf<br />
Codierung und Modultest<br />
Integration, Test, Abnahme<br />
1.4 Vorgehensmodelle<br />
Betrieb, Wartung<br />
Auslauf, Ersetzung<br />
- 33 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software Life Cycle – Überblick - 2<br />
Analyse<br />
Durchdringen und Verstehen des Problems<br />
Wo kann Software bei der Problemlösung eingesetzt werden.<br />
Welche Aufgaben soll diese übernehmen<br />
Spezifikation der Anforderungen<br />
Welche Anforderungen muss die Software erfüllen.<br />
Abstimmen der Anforderungen zwischen Auftragnehmer und<br />
Auftraggeber.<br />
Anforderungen bilden Arbeitsgrundlage.<br />
Grobentwurf, Spezifikation der Module<br />
Aufteilen des Systems in Module (Komponenten, Bausteine)<br />
Entwickeln der Software-Architektur<br />
Festlegen der Schnittstellen zwischen den Modulen<br />
Definition der Funktionalität der einzelnen Module<br />
1.4 Vorgehensmodelle<br />
- 34 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Software Life Cycle – Überblick - 3<br />
Codierung und Modultest<br />
Die einzelnen Module werden in der gewählten Programmiersprache codiert.<br />
Test auf Basis der Spezifiktion der Module.<br />
Korrigieren der entdeckten Fehler<br />
Integration, Test, Abnahme<br />
Zusammenbau des Systems auf Basis der Software-Architektur<br />
Test der festgelegten Schnittstellen<br />
Abnahme des Systems nach durchgeführtem Abnahmetest<br />
Betrieb und Wartung bzw. Weiterentwicklung<br />
Installation des Systems beim Auftraggeber<br />
Inbetriebnahme<br />
Korrektur der im Betrieb festgestellten Mängel<br />
Weiterentwicklung neuer Versionen<br />
Auslauf und Ersetzung<br />
Jedes Software-System wird irgendwann aus dem Betrieb genommen<br />
Rechtzeitige Planung eines Nachfolgesystems.<br />
1.4 Vorgehensmodelle<br />
- 35 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Anforderungsspezifikation<br />
Systemanforderungen als Ganzes dokumentieren<br />
als Vertragsgrundlage, möglichst präzise, messbar<br />
Beteiligte<br />
Auftraggeber, Benutzer, Fachexperten, Software-Ingenieure,<br />
Betriebswirtschaftler (Manager), Betroffene (Umweltverbände…), …<br />
Anforderungsarten<br />
(abstrakte) funktionale Anforderungen<br />
Systemeigenschaften<br />
nicht-funktionale, sichtbare Eigenschaften des Systems<br />
Eigenschaften, die das System nicht haben darf<br />
1.4 Vorgehensmodelle<br />
- 36 -
Software-Entwurf und -implementierung<br />
Überführung der Spezifikation in ein ausführbares System<br />
Verzahnung<br />
Arhitekturentwurf<br />
System-<br />
Architektur<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Entwurfs- und Implementierungsaktivitäten<br />
Anforderungs_<br />
spezifikation<br />
Abstrakte<br />
Spezifikation<br />
SW-<br />
Spezifikation<br />
Entwurfsaktivitäten<br />
Schnittstellenentwurf<br />
Schnittstellenspezifik.<br />
Komponentenentwurf<br />
Komponentenspezif.<br />
Entwurfsergebnisse<br />
1.4 Vorgehensmodelle<br />
Entwurf<br />
Datenstruktutren<br />
Datenstrukturen<br />
Entwurf<br />
Algorithmen<br />
Algorithmen<br />
- 37 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Softwarevalidierung<br />
Verifikation<br />
(formale) Überprüfung, ob das System die Spezifikation erfüllt<br />
konstruieren wir das System richtig?<br />
Validation<br />
erfüllt das System die Anforderungen des Benutzers<br />
konstruieren wir das richtige System?<br />
mehrphasiges Testen<br />
Einzeltests<br />
Modultests<br />
Komponententest<br />
durch Programmierer<br />
Integrationstest<br />
durch Tester<br />
Subsystemtests<br />
1.4 Vorgehensmodelle<br />
Systemtest<br />
α -Test β -Test<br />
Benutzertest<br />
Abnahmetest<br />
- 38 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Strukturierte Entwurfsmodelle<br />
es gibt verschiedene strukturierte Modelle<br />
Notationen für Zwischenergebnisse<br />
Erfahrungen im Umgang mit den Dokumenten (Versionen, Techn.<br />
Plattform, z.B. BSCW)<br />
Regeln zur systematischen Vorgehensweise<br />
z.T. werden diese Methoden durch Werkzeuge unterstützt<br />
Werkzeuge / Werkzeugsammlungen<br />
Integrierte Entwicklungsumgebungen<br />
CASE, insbesondere grafische Systemmodelle, Data Dictionaries,<br />
Debugging und Testen, automatische Transformationen<br />
Software Engineering bleibt kreative Tätigkeit<br />
nicht vollständig automatisierbar<br />
große Bedeutung der Kommunikation<br />
1.4 Vorgehensmodelle<br />
- 39 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
SW Prozessmodelle<br />
abstrakte Beschreibung des systematischen Vorgehens bei<br />
der SW Entwicklung<br />
ordnet die Aktivitäten<br />
nach logischen Kriterien<br />
nach Phasen<br />
nach zeitlicher Reihenfolge<br />
Regeln für die Aktivitäten<br />
Rollen und Zuständigkeiten<br />
Voraussetzungen und Ergebnisse von Aktivitäten<br />
in allen Modellen zumindest<br />
Anforderungsspezifikation (Requirements Engineering)<br />
Entwurf<br />
Implementierung<br />
Software-Validierung<br />
1.4 Vorgehensmodelle<br />
- 40 -
Aktivitäten-orientierte Prozessmodelle<br />
Wasserfall-Modell<br />
System-<br />
Analyse<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
System-<br />
Spezifikation<br />
Werden Fehler Fehler davor davor<br />
liegender Tätigkeiten<br />
entdeckt, dann dann wird wird diese diese<br />
Tätigkeit erneut erneut<br />
aufgenommen.<br />
Ansatz erstes formalisiertes Modell (Royce 70)<br />
System-<br />
Entwurf<br />
Softwareentwicklung wird durch die Aktivitäten beschrieben<br />
Jede Aktivität produziert ein Ergebnis (oft ein Dokument)<br />
Aktivitäten werden zeitlich und inhaltlich geordnet<br />
In der Praxis gibt es mehrere Phasen<br />
übergreifende Iterationen!<br />
Modul-Spez.<br />
Entwurf<br />
Codierung<br />
Modultest<br />
1.4 Vorgehensmodelle<br />
Man Man beginnt beginnt oben oben links links<br />
und und arbeitet arbeitet sich sich nach nach<br />
rechts rechts unten unten vor.<br />
vor.<br />
Integration<br />
Systemtest<br />
Einsatz<br />
Wartung<br />
- 41 -
Grundlage<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Phasenmodelle<br />
Ordnet man die Aktivitäten eines Prozessmodells an der Zeitachse, so<br />
müssen Iterationen ausgeschlossen werden.<br />
Damit entsteht ein Phasenmodell.<br />
Vorteile<br />
Wird die Entwicklung und der Betrieb in Phasen eingeteilt, dann kann<br />
dadurch der Projektfortschritt besser bewertet und überprüft werden.<br />
Es erleichtert die organisatorische Durchführung eines Projektes.<br />
Phasen- oder Kostenmodell<br />
Die Software-Entwicklung wird vor Beginn in Phasen gegliedert, die<br />
zyklenfrei gekoppelt sind.<br />
Für jede Phase gibt es ein eigenes Budget.<br />
Beachte: Damit ist die spezielle Wahl und Reihenfolge der Phasen<br />
noch nicht festgelegt.<br />
1.4 Vorgehensmodelle<br />
- 42 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Standard-Phasenmodell<br />
Standard-Phasenmodell<br />
Zuordnung der Tätigkeiten<br />
des Wasserfallmodells zu<br />
einzelnen Phasen<br />
"Einbahnstraßen"-Modell<br />
Jede Phase bezeichnet die<br />
wesentliche Tätigkeit<br />
Phasen enthalten<br />
unvermeidlich mehrere<br />
Tätigkeiten<br />
Meilenstein bezeichnet<br />
Übergabezeitpunkt und<br />
Form eines Dokuments<br />
sowie die Verantwortlichkeit<br />
1.4 Vorgehensmodelle<br />
Produktkonzeption<br />
Systemanalyse<br />
Spezifikation der Anforderungen<br />
Systementwurf und Modulspezifikation<br />
Modulentwurf<br />
Codierung und Modultest<br />
Integration und Systemtest<br />
Installation und Abnahmetest<br />
Betrieb und "Wartung"<br />
Außerbetriebnahme<br />
Entwicklungsprojekt<br />
Meilenstein<br />
- 43 -
Vor- und Nachteile von Phasenmodellen<br />
Management (Vorteile)<br />
leicht verständlich, intuitiv<br />
leicht kontrollierbar, wenig Managementaufwand<br />
Benutzerbeteiligung nur am Anfang (geringer Kommunikationsaufwand)<br />
einfache Verteilung auf jeweilige Expertengruppen<br />
Entwicklung (Nachteile)<br />
entspricht nicht dem natürlichen Problemlösen<br />
für größere Systeme unmöglich, das Ganze vollständig zu überblicken<br />
schriftliche Schnittstellen erzeugen hohen Aufwand<br />
Bedeutung der Dokumente zu hoher Stellenwert<br />
Anwendbarkeit<br />
in reiner Form kaum noch, allerdings immer noch die Grobstruktur für<br />
die meisten industriellen Projekte<br />
Wunsch des Managements, die Kontrolle zu haben, Instrumente, den<br />
Fortschritt zu bewerten, Budgetplanung durchzuführen, …<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
- 44 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Formalisierte Entwicklung<br />
sicherheitskritische Anwendungen<br />
Bsp. Cleanroom-Prozess<br />
Spezifikation erfolgt vollständig, detailliert und formal<br />
(mathematisches Modell)<br />
Entwicklung durch verifizierbare Transformationen bis zum<br />
ausführbaren Modell (z.T. automatisierbar)<br />
Formal transformations<br />
T1 T2 T3 T4<br />
Formal<br />
specification<br />
P1<br />
R1<br />
R2<br />
R3<br />
P2 P3 P4<br />
Proofs of transformation correctness<br />
Executable<br />
program<br />
Ian Sommerville: Software Engineering, 2000<br />
- 45 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Wiederverwendungsmodelle<br />
zielen auf systematische Wiederverwendung<br />
Wiederverwendung ist üblich, aber ad-hoc<br />
WV-Modelle basieren auf der Verfügbarkeit wiederverwendbarer<br />
Komponenten CBD (komponentenbasierte Entwicklung)<br />
erfordern Kompromisse bei der Funktionserfüllung<br />
Schwerpunkt ist Auswahl geeigneter Komponenten und ihre Integration<br />
Nachteil<br />
Verlust der (vollständigen) Kontrolle<br />
Requirements<br />
specification<br />
Component<br />
analysis<br />
beinhaltet häufig den Erwerb kommerzieller<br />
Komponenten (off-shelf components)<br />
Requirements<br />
modification<br />
Development<br />
and integration<br />
System design<br />
with reuse<br />
System<br />
validation<br />
Ian Sommerville: Software Engineering, 2000<br />
- 46 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Prozesswiederholungen<br />
wiederholte Anwendung von Prozessschritten<br />
aufgrund von Fehlerbehebung oder<br />
evolutionärer, explorativer Ansätze<br />
generische Modelle<br />
Spiralmodell<br />
von einer groben Idee zum eingesetzten, validierten System<br />
inkrementelle / iterative Entwicklung<br />
in jeder Phase erfolgt eine schrittweise Erweiterung des (Zwischen-)<br />
Produkts<br />
in jedem Segment eine Tätigkeit, die zeitlich zu weiteren<br />
Konkretisierungen führt (gleiche Aktivität auf unterschiedlichen<br />
Abstraktionsebenen)<br />
- 47 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Spiralmodell<br />
Boehm (IEEE 1988):<br />
betrachtet Risiken explizit<br />
umfasst andere Prozessmodelle<br />
Ziele<br />
Planung<br />
Determine objectives<br />
alternatives and<br />
constraints<br />
Plan next phase<br />
REVIEW<br />
Requirements plan<br />
Life-cycle plan<br />
Development<br />
plan<br />
Integration<br />
and test plan<br />
Risk<br />
analysis<br />
Risk<br />
analysis<br />
Risk<br />
analysis<br />
Risk<br />
analysis Proto-<br />
Prototype 2<br />
type 1<br />
Concept of<br />
Operation S/W<br />
requirements<br />
Requirement<br />
validation<br />
Design<br />
V&V<br />
Service<br />
Acceptance<br />
test<br />
Risikoanalyse<br />
Evaluate alternatives<br />
identify, resolve risks<br />
Prototype 3<br />
Operational<br />
protoype<br />
Simulations, models, benchmarks<br />
Product<br />
design<br />
Code<br />
Unit test<br />
Integration<br />
test<br />
Detailed<br />
design<br />
Develop, verify<br />
next-level product<br />
- 48 -
Evolutionäre Entwicklung (Prototyping)<br />
Wegwerfprototypen<br />
(revolutionär) vs.<br />
explorative<br />
Entwicklung<br />
(evolutionär)<br />
Outline<br />
description<br />
lediglich grobe Vorgaben<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Concurrent<br />
activities<br />
Specification<br />
Development<br />
Validation<br />
Ian Sommerville: Software Engineering, 2000<br />
Initial<br />
version<br />
Intermediate<br />
versions<br />
Final<br />
version<br />
Schrittweise Verfeinerung der Spezifikation<br />
und der eingesetzten Systeme<br />
bindet Anwender ein!<br />
- 49 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Inkrementelle Entwicklung<br />
Vorteile der Phasen- und der evolutionären Modelle<br />
vereinigen<br />
einerseits strukturierter, verwaltbarer Prozess<br />
dennoch Verschieben der detaillierten Spezifikation weniger wichtiger<br />
Komponenten (näher am evolutionären Ansatz)<br />
"Produkt-Sicht" der Wiederholung<br />
grobe<br />
Anforderungsdef.<br />
Entwicklung einer<br />
Systemversion<br />
Anforderungen -><br />
Subsysteme<br />
Validierung der<br />
Systemversion<br />
Validierung des<br />
Systems<br />
Entwurf<br />
Systemarchitektur<br />
Integration der<br />
Systemversion<br />
fertiges System<br />
- 50 -
Definition<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Inkrementelle Entwicklung<br />
Die gesamte Funktionalität eines Systems wird in handhabbare Teile<br />
eingeteilt, die nacheinander – in Stufen - entwickelt werden.<br />
Feedback<br />
zielt ab auf Wiederholung von Prozessschritten<br />
Entwickeln<br />
Ausliefern<br />
Integrieren<br />
Antwort auf Probleme des “Wasserfall-Modells”<br />
kurze Entwicklungszeiten<br />
Feedback vom Anwender so früh wie möglich<br />
Vorteile<br />
Projektfortschritt wird durch ausführbare Systeme gezeigt.<br />
Jedes Inkrement implementiert eine Menge neuer Anforderungen.<br />
1.4 Vorgehensmodelle<br />
Ausbaustufe<br />
4<br />
Ausbaustufe<br />
3<br />
Kernsystem<br />
XP als<br />
Extermbeispiel<br />
- 51 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Iterative Entwicklung<br />
Definition<br />
Kontrolliertes, stetiges Überarbeiten einer Software mit dem Ziel,<br />
Fehler zu beheben und Verbesserungen einzuarbeiten.<br />
Prozess-Sicht der Wiederholung<br />
“We get things wrong before we get them right”<br />
Antwort auf Probleme des “Wasserfall-Modells”<br />
Anforderungen lassen sich nicht vollständig und konsistent<br />
beschreiben.<br />
Der Einsatz eines Systems verändert die daran gestellten<br />
Anforderungen.<br />
Sog. Wartungsaktivitäten liegen nicht außerhalb der Entwicklung,<br />
sondern sind in die Entwicklung integriert.<br />
1.4 Vorgehensmodelle<br />
- 52 -
Diskussion iterativer, inkrementeller Modelle<br />
Vorteile<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
wichtigste Teilfunktionalität schnell verfügbar<br />
Systemfunktionalität mit höchster Priorität zuerst verfügbar<br />
Ausbaustufen können variabel, je nach Bedarf hinzugenommen werden<br />
Nutzer eingebunden (partizipativ)<br />
Erfahrungen mit Einsatz im Betrieb, sich entwickelnde Anforderungen<br />
Nachteile / Probleme<br />
schwierig, Anforderungen auf geeignete Teilsysteme abzubilden<br />
gemeinsame Basisfunktionalität wird erst nach und nach erkennbar<br />
es entsteht ein "unstrukturiertes", barockes System<br />
Prozess nicht sichtbar und kaum plan- und verwaltbar, hoher Kommunik.-aufw.<br />
Anwendbarkeit<br />
Teilsysteme sollten klein genug sein<br />
bei größeren Systemen, gemischter Ansatz (Phasenmodelle mit evolutionären<br />
Anteilen für Teilsysteme und Wegwerf-Prototypen)<br />
gelegentliches Re-engineering notwendig<br />
- 53 -
1.1 Motivation<br />
1.2 Grundbegriffe<br />
1.3 Modellierung<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
1.5 Beispiel: Unified Process<br />
1.4 Vorgehensmodelle<br />
1.5 Der Unified Process<br />
Beispiel eines iterativen und inkrementellen Prozesses<br />
Phasen und Iterationen<br />
UML Modelle im Unified Process<br />
1.6 Das V-Modell<br />
1.7 Zusammenfassung<br />
- 54 -
Inception Elaboration Construction Transition<br />
time<br />
Inception Define the scope of the project and<br />
develop business case<br />
Elaboration Plan project, specify features, and<br />
baseline the architecture<br />
Construction Build the product (series of releases)<br />
Transition Transition the product to its users<br />
(correcting defects, modifying ...)<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Unified Process: Lifecycle Phases<br />
Jacobsen, Applying UML<br />
- 55 -
Core Workflows<br />
Requirements<br />
Analysis<br />
Design<br />
Implementation<br />
Test<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
UP: Phases, Workflow, Iterations<br />
Phases<br />
Inception Elaboration Construction Transition<br />
Preliminary<br />
Iteration(s)<br />
iter.<br />
#1<br />
iter.<br />
#2<br />
iter.<br />
...<br />
An iteration in the<br />
elaboration phase<br />
iter.<br />
...<br />
Iteration<br />
iter.<br />
#n-1<br />
Focus, emphasis<br />
iter.<br />
#n<br />
iter.<br />
...<br />
RUP 5.1<br />
- 56 -
Use case<br />
Model<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
UP: Architecture and Iterations<br />
Design<br />
Model<br />
Implementation<br />
Model<br />
Content<br />
Deployment<br />
Model<br />
Inception Elaboration Construction Transition<br />
time<br />
Test<br />
Model<br />
- 57 -
1.6 Das V-Modell der SW-Entwicklung<br />
1.1 Motivation<br />
1.2 Grundbegriffe<br />
1.3 Modellierung<br />
1.4 Vorgehensmodelle<br />
1.5 Unified Process<br />
1.6 Das V-Modell der SW-Entwicklung<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Eigenschaften des V-Modells<br />
Struktur des V-Modells<br />
Die Submodelle des V-Modells<br />
Struktur des Submodells SE<br />
1.7 Zusammenfassung<br />
- 58 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Eigenschaften des V-Modells<br />
Das V-Modell (Vorgehensmodell) ist Teil des<br />
Entwicklungsstandards für IT-Systeme des Bundes.<br />
Eigenschaften<br />
Das V-Modell ist als eine Weiterentwicklung des Standard-<br />
Phasenmodells ein aktivitätsorientiertes Modell.<br />
Das V-Modell ist ein Prozessmodell für Systementwicklungen (Hardund<br />
Software).<br />
Das V-Modell deckt nicht nur die technische Systementwicklung ab.<br />
Qualitätssicherung<br />
Konfigurationsmanagement<br />
Projektmanagement<br />
Das V-Modell unterstützt die inkrementelle Entwicklung.<br />
Das V-Modell ist als generisches Modell anpassbar<br />
1.6 Das V-Modell der SW-Entwicklung<br />
- 59 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Qualitätssicherung<br />
(QS planen,<br />
Produkte<br />
prüfen)<br />
Struktur des V-Modells<br />
Projektmanagement<br />
(Projekt initiieren, planen, kontrollieren, abschließen)<br />
Plan-/Istdaten<br />
Vorgaben<br />
Systemerstellung<br />
(Produkt<br />
entwickeln)<br />
Produkte<br />
Plan-/Istdaten<br />
Produkte<br />
1.6 Das V-Modell der SW-Entwicklung<br />
Konfigurationsmanagement<br />
(Produkte und<br />
Änderungen<br />
verwalten)<br />
Plan-/Istdaten<br />
- 60 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Die Submodelle des V-Modells<br />
Systemerstellung (SE)<br />
Beschreibt Entwicklung und Konstruktion eines Systems (Hard- und Software)<br />
Die Haupttätigkeiten dieses Submodells werden immer V-förmig dargestellt .<br />
Qualitätssicherung (QS)<br />
Fasst alle Aktivitäten zusammen, die durchgeführt werden müssen, damit die<br />
geforderte Qualität auch tatsächlich hergestellt wird.<br />
Konfigurationsmanagement (KM)<br />
In diesem Submodell werden die Aktivitäten aufgeführt, die notwendig sind,<br />
damit die Software-Einheiten des entstehenden Systems jederzeit eindeutig<br />
identifizierbar sind.<br />
Ebenfalls werden die Aktivitäten des Änderungsmanagements beschrieben.<br />
Projektmanagement (PM)<br />
Dieses Submodell definiert die Aktivitäten, die notwendig sind, um ein Projekt<br />
zu initiieren, es zu planen, den Projektfortschritt zu bewerten, zu steuern und zu<br />
dokumentieren, Unteraufträge zu vergeben und das Projekt abzuschließen.<br />
1.6 Das V-Modell der SW-Entwicklung<br />
- 61 -
konstruierende<br />
Tätigkeiten<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Struktur des Submodells SE<br />
System-<br />
Anforderungsanalyse<br />
System-<br />
Entwurf<br />
SW/HW-<br />
Anforderungsanalyse<br />
SW-Grob-<br />
Entwurf<br />
SW-Fein-<br />
Entwurf<br />
SW-Implementierung<br />
System-<br />
Integration<br />
SW-<br />
Integration<br />
Überleitung<br />
in die<br />
Nutzung<br />
1.6 Das V-Modell der SW-Entwicklung<br />
integrierende,<br />
prüfende<br />
Tätigkeiten<br />
- 62 -
Anforderungsspezifikation<br />
System-<br />
Entwurf<br />
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
Struktur des Submodells QS<br />
SW/HW-<br />
Anforderungsanalyse<br />
konstruierende<br />
Tätigkeiten<br />
SW-Grob-<br />
Entwurf<br />
Abnahmetestplan<br />
Integrationstestplan<br />
SW-Fein-<br />
Entwurf<br />
Subsystemtestplan<br />
SW-Implementierung<br />
System-<br />
Integration<br />
SW-<br />
Integration<br />
Überleitung<br />
in die<br />
Nutzung<br />
1.6 Das V-Modell der SW-Entwicklung<br />
Abnahmetest<br />
Integrationstest<br />
integrierende,<br />
prüfende<br />
Tätigkeiten<br />
Komponententests<br />
- 63 -
© H. Lichter, U. Schroeder -- RWTH Aachen<br />
1.7 Zusammenfassung<br />
Software ist ein technisches Produkt, das ingenieurmäßig<br />
entwickelt wird (werden sollte).<br />
Software Engineering<br />
Bei der SW-Entwicklung werden vielfältige Modelle<br />
eingesetzt.<br />
Modelle abstrahieren von Original und sind für einen Zweck gedacht.<br />
Vorgehensmodelle beschreiben, wie Software entwickelt<br />
werden kann<br />
Tätigkeiten und Phasen werden vorgegeben<br />
sequentiell, iterativ, inkrementell<br />
Das V-Modell definiert Submodelle, die nicht nur die<br />
konstruktiven Tätigkeiten beschreiben<br />
Qualitätssicherung, Konfigurationsverwaltung, Projektmanagement<br />
- 64 -