19.07.2013 Aufrufe

01intro

01intro

01intro

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 -

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!