Einführung und Vorgehensmodelle

Transcrição

Einführung und Vorgehensmodelle
Einleitung - Begriffe und Vorgehensmodelle
Software Engineering 1 - WS 2010/2011
Dr.-Ing. Ina Schaefer1
Software Systems Engineering
TU Braunschweig
1
Mit Folien von Prof. Dr. B. Rumpe und Dr. A. Herrmann
Ina Schaefer
SE 1 - WS 2011/2011
1
Inhalt der Vorlesung
1. Motivation
2. Was ist Software?
3. Was ist Softwaretechnik?
4. Vorgehensmodelle
Ina Schaefer
SE 1 - WS 2011/2011
2
Motivation
4. Juni 1996: Erster Start der Ariane-5
• Während des Fluges läuft ein unnötiges Kalibrierungsprogramm
für die Trägheitssensoren.
• Die gemessenen Werte der Ariane-5 überschreiten die in der
Ariane-4-Software vorgesehehen Bereiche.
• Die (Ada-)Exception wird durch Anhalten des Steuerungs-
computers behandelt, um auf ein zweites redundantes System
umzuschalten.
• Im zweiten System tritt der gleiche Software-Fehler auf und wird
identisch behandelt.
• Kosten des Ariane-5-Programms bis 1996: ca. 8 Milliarden US-$
• Wert des zerstörten Satelliten: ca. 500 Millionen US-$
Ina Schaefer
SE 1 - WS 2011/2011
3
Motivation
Fehlgeschlagene Softwareprojekte (Beispiele)
• 1994: Eröffnung des Denver International Airport um 9 Monate
verzögert wegen Softwareproblemen im Gepäcktransport-System
• 1999: Fehlstart einer Titan/Centaur-Rakete wegen falscher
Software-Version
• 1999: Verlust der Sonde "Mars Climate Orbiter" wegen falscher
Einheitenumrechnung
• Toll Collect: Geplanter Start 31. Aug 2003,
tatsächlicher Start 1. Jan 2006; 3.5 Milliarden e Einnahmeausfälle
• Londoner Börse beendet Taurus Projekt 1993 nach 11 Jahren und
Budgetüberschreitung um 13200 %
Ina Schaefer
SE 1 - WS 2011/2011
4
Motivation
Softwarekrise
• Mitte 1960er Jahre
• Mit schnellerer Hardware wurde Software wichtiger
• Steigende Anforderungen, aber qualifiziertes Personal fehlte
• Softwareentwicklung durch “Bastelei”
• Bestehende Systeme intransparent und unübersichtlich, kaum
änderbar
• Kosten und Dauer überstiegen Erwartungen
• Anforderungen oft nicht erfüllt
• Große Softwareprojekte scheiterten
Ina Schaefer
SE 1 - WS 2011/2011
5
Motivation
Permanente Softwarekrise?
• Studie von 1979 zu Softwareprojekten (USA):
I 75% der Ergebnisse nie eingesetzt
I 19% der Ergebnisse stark überarbeitet
I 6% benutzbar.
• Studie von 1994 zu Software-Großprojekten (IBM Consulting):
I 55% Kostenüberschreitung
I 68% Terminüberschreitung
I 88% Bedarf für starke Überarbeitung
Ina Schaefer
SE 1 - WS 2011/2011
6
Motivation
Wirtschaftliche Bedeutung
Wirtschaftliche Bedeutung von Software in Deutschland [BMBF- Studie 2000]
• 10.550 Unternehmen mit 300.000 MA in Primärbranche
(DV- Hersteller und –Dienstleister mit SWE)
• 8.650 Unternehmen mit 2.5 Millionen MA in Sekundärbranche
(Maschinenbau, Elektrotechnik, Fahrzeugbau,
Telekommunikation, Finanzdienstleister)
• Anteil der Informations- und Kommunikationstechnologien am
Bruttoinlandsprodukt 6.8 % (2004), 4.7 % (1995)
• Wertschöpfung durch Software 25 Mrd. e; ITK: 87 Mrd. e
(vgl. Landwirtschaft 20 Mrd. e, Produktion 440 Mrd. e)
Ina Schaefer
SE 1 - WS 2011/2011
7
Motivation
Umfang von Software
• Enterprise-Resource-Planning Software R/3 von SAP:
Jahr
1994
1997 (Rel. 3.1)
1999 (Rel. 4.5)
Lines of Code
7 Mio.
30 Mio.
50 Mio.
# Funktionsbausteine
14.000
200.000
400.000
• Weitere Zahlen zu R/3 Release 4:
I 11 000 externe Tabellen (Datenbank)
I 500 000 Tabellenfelder (extern und intern)
Ina Schaefer
SE 1 - WS 2011/2011
8
Motivation
Umfang von Software (2)
Gesamtumfang der verwendeten Software (Anfang 2000):
• Chase Manhattan Bank: 200 Mio. Code-Zeilen
• Citicorp Bank: 400 Mio. Code-Zeilen
• AT&T: 500 Mio. Code-Zeilen
• General Motors: 2 Mrd. Code-Zeilen
Ina Schaefer
SE 1 - WS 2011/2011
9
Motivation
Steigende Qualitätsanforderungen
Softwarefehler:
• Handy bis zu 600 Fehler (dh. 3 Fehler pro 1000 loc)
• Windows95 bis zu 200.000 Fehler (dh. 20 Fehler pro 1000 loc)
• Space Shuttle weniger als 1 Fehler pro 10.000 loc
Gefundene Defekte in 1000 Zeilen Quellcode: (M. Cusumano, MIT 1990)
• 1977: 7 - 20 Defekte
• 1994: 0,05 - 0,2 Defekte
Ina Schaefer
SE 1 - WS 2011/2011
10
Motivation
Steigende Qualitätsanforderungen (2)
Steigerung des Qualitätsniveaus um den Faktor 100 in 13 Jahren.
Aber: Komplexitätssteigerung muss kompensiert werden
(Faktor 10 in 5 Jahren).
Zunehmende „Altlasten“: Anwendungssoftware wird oft 20 Jahre und
länger eingesetzt.
In manchen Betrieben sind 60-70% der Softwarekosten für Anpassung
von Altsoftware!
Ina Schaefer
SE 1 - WS 2011/2011
11
Motivation
Steigende Qualitätsanforderungen (3)
0,1%-Defektniveau bedeutet:
• pro Jahr:
20.000 fehlerhafte Medikamente
300 versagende Herzschrittmacher
• pro Woche:
500 Fehler bei medizinischen Operationen
• pro Tag:
16.000 verlorene Briefe in der Post
18 Flugzeugabstürze
• pro Stunde:
22.000 Schecks nicht korrekt gebucht
−→ Auch in Zukunft: Massive QM-Anstrengungen notwendig.
Ina Schaefer
SE 1 - WS 2011/2011
12
Was ist Software?
Softwaresysteme
Software
computer programs, procedures, rules, and possibly associated
documentation and data pertaining to the operation of a computer
system.
(IEEE Standard Glossary of Software Engineering)
Softwaresystem
Ein System (oder Teilsystem), dessen Komponenten aus Software
bestehen.
Ina Schaefer
SE 1 - WS 2011/2011
13
Was ist Software?
Softwaresysteme (2)
Produkt
Ein Produkt ist ein in sich abgeschlossenes, i.a. für einen Auftraggeber
bestimmtes, Ergebnis eines erfolgreich durchgeführten Projekts oder
Herstellungsprozesses. Als Teilprodukt bezeichnen wir einen
abgeschlossenen Teil eines Produkts
Software-Produkt
Produkt, das aus Software besteht.
Ina Schaefer
SE 1 - WS 2011/2011
14
Was ist Software?
Klassifikation von Software
• Generisches Produkt oder Einzelanfertigung?
• Systemsoftware (Betriebssystem, Compiler, Editor, ...) oder
Anwendungssoftware (application software)?
• Produktintegriert (embedded) oder für reine Computersysteme?
• Echtzeitanforderungen oder flexiblere Zeitanforderungen?
• Datenintensiv oder berechnungsintensiv?
• Monolithisch oder verteilt?
• Standalone oder mit anderen Anwendungen integriert?
Ina Schaefer
SE 1 - WS 2011/2011
15
Was ist Software?
Besonderheiten von Software
• Software ist immateriell.
• Software wird nicht durch physikalische Gesetze begrenzt.
• Software unterliegt keinem Verschleiß.
• Es gibt keine Software-Ersatzteile: Defekte sind immer
Konstruktionsfehler.
• Software ist schwer zu vermessen („Technische Daten“ von
Software?).
• Software gilt als relativ leicht änderbar (im Vergleich zu
materiellen technischen Produkten).
• Software unterliegt einem ständigen Anpassungsdruck.
• Software veraltet.
Ina Schaefer
SE 1 - WS 2011/2011
16
Was ist Software?
Eigenschaften von Software
• Zuverlässigkeit:
I Software darf im Fall des Versagens keine physischen oder
ökonomischen Schäden verursachen.
• Benutzbarkeit:
I Software muss sich nach den Bedürfnissen der Benutzer richten.
I Die Benutzerschnittstelle muss ergonomisch und selbsterklärend
sein.
I Dokumentation muss in allen Detaillierungsgraden ausreichend zur
Verfügung stehen.
• Wartbarkeit:
I Software muss an neue Anforderungen anpassbar sein.
I Software sollte möglichst plattformunabhängig sein.
• Effizienz:
I Software muss ökonomischen Gebrauch von Ressourcen des
unterliegenden Systems machen.
Ina Schaefer
SE 1 - WS 2011/2011
17
Was ist Softwaretechnik?
Software Engineering
Begriff: Software Engineering
The establishment and use of sound engineering principles in order to
obtain economically software that is reliable and runs on real
machines.
(F.L. Bauer, NATO-Konferenz Software-Engineering 1968)
Manifest der Softwaretechnik (2006)
Software Engineering zielt auf die ingenieurmäßige Entwicklung,
Wartung, Anpassung und Weiterentwicklung großer Softwaresysteme
unter Verwendung bewährter systematischer Vorgehensweisen,
Prinzipien, Methoden und Werkzeuge.
Ina Schaefer
SE 1 - WS 2011/2011
18
Was ist Softwaretechnik?
Software Engineering
Berücksichtigung der folgenden Aspekte:
• Kosten
• Termine
• Qualität: Korrektheit, Zuverlässigkeit, Performanz,
Sicherheit, Nutzbarkeit, Verständlichkeit,
Weiterentwickelbarkeit, Anpassbarkeit,
Wartbarkeit
Ina Schaefer
SE 1 - WS 2011/2011
19
Was ist Softwaretechnik?
Aufgabenstellungen im SE
• Management großer und komplexer Projekte
• Schätzung von Terminen und Kosten
• Erfassung von Kunden- und Marktanforderungen
• Änderungsmanagement
• Sicherstellung eines hohen Qualitätsniveaus
• Wartung und Weiterentwicklung von Altsystemen
• Guter Programmierstil und Entwicklungswerkzeuge
• Prinzipien wie Abstraktion, Strukturierung, Hierarchisierung und
Modularisierung
Softwareentwicklung ist viel mehr als nur Programmieren!
Ina Schaefer
SE 1 - WS 2011/2011
20
Was ist Softwaretechnik?
Software Engineering vs. Informatik
Prof. Dr. B. Rumpe
Software Systems
Engineering
TU Braunschweig
Seite
Software Engineering vs. Informatik
26
vl07.se1/02/01
Elektrotechnik
Physik
Ingenieurwissenschaften
Software Engineering
Maschinenbau
Informatik
Betriebswirtschaft
Psychologie
Grundlagenwissenschaften
BasisWissenschaften
Mathematik
!  Software Engineering ist der
Software
Engineering ist der ingenieurwissenschaftliche
Teil der
ingenieurwissenschaftliche
Teil der Informatik
(analog
zur Beziehung
Maschinenbau
und Physik) und Physik).
Informatik
(analog
zur Beziehung
Maschinenbau
Ina Schaefer
SE 1 - WS 2011/2011
21
Prof. Dr. B. Rumpe
Software Systems
Engineering
TU Braunschweig
Was ist Softwaretechnik?
Gliederung
des Software
Engineering
Teilbereiche
des Software
Engineerings
Seite
25
vl07.se1/02/01
Architektur
Muster
Modularisierung
Produktlinien
OO
Modellierungstechniken
Statecharts,
Petri-Netze,
UML
Formale
Methoden
Systemtechnik
Empirie
Vorgehensmodelle
Prozesse
Management
Organisation, Planung
Qualitätssicherung
Softwareökonomie
Prozesstechnik
Grundlagen:
Informatik / Mathematik
Ina Schaefer
SE 1 - WS 2011/2011
22
Was ist Softwaretechnik?
Prof. Dr. B. Rumpe
Software Systems
Engineering
TU Braunschweig
Themen des
Software“Softwaretechnik”
Engineerings
Themengebiet
Seite
28
vl07.se1/02/01
Projektmanagement!
Vorgehensmodellierung!
Software-Entwicklungsmethoden!
Requirements!
Engineering!
Software-!
Architektur!
und -Entwurf!
Software-!
Wartung!
Re-!
Engineering!
(Sanierung)!
Qualitätsmanagement (incl. Testverfahren)!
Notationen und Sprachen (UML, Java, ...)!
Werkzeugunterstützung (incl. CASE, CVS, make)!
Ina Schaefer
SE 1 - WS 2011/2011
23
Was ist Softwaretechnik?
Portfolio der SE-Techniken
• SE-Techniken sind vergleichbar mit einem Werkzeugkasten.
• Für jedes Problem das richtige Werkzeug in der Hand eines
Experten, der damit umgehen kann.
• Nicht jeder muss alle Werkzeuge beherrschen,
aber: je mehr, um so besser.
Ina Schaefer
SE 1 - WS 2011/2011
24
Was ist Softwaretechnik?
Zusammenfassung: Softwaresysteme und SE
• Softwaretechnik ist die Lehre von der ingenieurmäßigen
Entwicklung von Software und softwarebasierten Systemen.
• Diversifikation der Anwendungsbereiche, Größe, etc. erfordert ein
Portfolio anzuwendender Techniken.
• Kritischer Faktor ist die Qualität der erstellten Software.
• Softwaretechnik ist anwendungsnah und erfordert, dass ihre
Methoden und Techniken geübt werden.
Ina Schaefer
SE 1 - WS 2011/2011
25
Vorgehensmodelle
Vorgehensmodelle
Phasenmodell
• Einteilung des Herstellungsprozesses für ein (Software-) Produkt
in definierte und abgegrenzte Abschnitte
• Vorgabe einer Reihenfolge in der Bearbeitung der Phasen
• Richtlinie für die Definition von Zwischenergebnissen
Vorgehensmodell
Detailliertes Phasenmodell + Festlegung der Zwischenergebnisse
Ina Schaefer
SE 1 - WS 2011/2011
26
Vorgehensmodelle
Nutzen von Vorgehensmodellen
• Strukturierung des Projektes: Trennung der zeitlich abgegrenzten
Phasen und der darin stattfindenden inhaltlich bestimmten
Aktivitäten.
• Kommunikation: gemeinsames Verständnis der Aufgaben und
Verantwortlichkeiten
• Vollständigkeit: um nichts Wesentliches zu übersehen
• Vorhersage (Planung) über das Projektergebnis
• Basis für Projektkontrolle und Analyse, Harmonisierung der
Erwartungen
• Erfahrungssammlung (organisationelles Lernen)
Ina Schaefer
SE 1 - WS 2011/2011
27
Vorgehensmodelle
Aktivitäten in der Softwareentwicklung
• Analyse
• Entwurf
• Implementierung
• Test (einschließlich Integration, synonym: Validierung)
• Deployment (Installation, Schulung)
• Evolution (vor allem Wartung)
• und viele weitere (Versionsmanagement, Reviews, ...)
Ina Schaefer
SE 1 - WS 2011/2011
28
Vorgehensmodelle
Bekannte Vorgehensmodelle
• Wasserfall (mit Rückkopplung)
• V-Modell
• Iterative Modelle: Spiralmodell, RUP
• Prototypen
• Agile Methoden
Ina Schaefer
SE 1 - WS 2011/2011
29
Vorgehensmodelle
Prof. Dr. B. Rumpe
Software Systems
Engineering
TU Braunschweig
Wasserfall-Modell
Seite
Das klassische Wasserfall-Modell
34
vl07.se1/02/01
Analyse
Produktdefinition
Entwurf
EntwurfsSpezifikation
Implementierung
Code
Test,
Integration
Änderungswünsche
geprüfter
Code
Wartung
nach W. Royce (1970), mit Rückkopplung B. Boehm (1981)
Ina Schaefer
SE 1 - WS 2011/2011
30
Vorgehensmodelle
Wasserfall-Modell (2)
• Alle Schritte werden sequentiell durchgeführt
• Mit einem Schritt wird erst dann begonnen, wenn der vorige
Schritt fertig ist, d. h. das Ergebnis der vorigen Phase vorliegt.
• Bewertung:
I
I
I
I
Ina Schaefer
Einfach zu verstehen
Einfach zu managen
Einfach zu überwachen (definierte Phasenübergänge)
Probleme bei Änderungen und Verzögerungen in einzelnen Phasen
SE 1 - WS 2011/2011
31
Vorgehensmodelle
Verteilung der Aufwände im Wasserfall-Modell
Prof. Dr. B. Rumpe
Software Systems
Engineering
TU Braunschweig
Seite
Ungefähre Verteilung des Arbeitsaufwands
35
vl07.se1/02/01
Analyse
Produktdefinition
Entwurf
10 %!
20 %!
EntwurfsSpezifikation
Implementierung
20 %!
Code
Test,
Integration
Änderungswünsche
50 %!
geprüfter
Code
Wartung
W. Royce (1970)
Ina Schaefer
SE 1 - WS 2011/2011
32
Vorgehensmodelle
V-Modell
• Erweiterung des Wasserfall-Modells
• Integriert die Qualitätssicherung (Verifikation und Validation)
I Verifikation: Übereinstimmung zwischen einem Software-Produkt
und seiner Spezifikation (Wird ein korrektes Produkt entwickelt?)
I Validation: Eignung bzw. Wert eines Produktes bezogen auf seinen
Einsatzzweck (Wird das richtige Produkt entwickelt?)
• Verbindlich für Bundeswehr und Behörden (V-Modell XT)
• Sehr umfangreiches Modell, das für eine konkrete Entwicklung
angepaßt werden muss (Tailoring)
Ina Schaefer
SE 1 - WS 2011/2011
33
Vorgehensmodelle
Prof. Dr. B. Rumpe
Software Systems
Engineering
TU Braunschweig
V-Modell (2)
Qualitätssicherung im V-Modell
Seite
36
vl07.se1/02/01
Testfälle
Analyse
Abnahmetest
Testfälle
Grobentwurf
Feinentwurf
Testfälle
Implementierung
Systemtest
Integrationstest
Modultest
Boehm 1979 (altes „V-Modell“)
Ina Schaefer
SE 1 - WS 2011/2011
34
Vorgehensmodelle
Iterative Verfahren
• Der Entwicklungsprozess besteht aus einer Folge von Zyklen
(Iterationen).
• Am Ende jedes Zyklus steht eine neue (ausführbare) Version
des SW-Produktes, welche die vorherige Version verbessert
und erweitert.
Ina Schaefer
SE 1 - WS 2011/2011
35
Vorgehensmodelle
Iterative Verfahren (2)
Prof. Dr. B. Rumpe
Software Systems
Engineering
TU Braunschweig
Seite
Evolutionäre Entwicklung
37
vl07.se1/02/01
Aufgabe"
Analyse"
Prototypen,"
Vorversionen"
Entwurf"
Validierung"
Implementierung"
!  Typisch für kleinere Projekte oder experimentelle Systeme
!  Zunehmend auch für größere Projekte angewendet
Ina Schaefer
SE 1 - WS 2011/2011
36
Vorgehensmodelle
Iterative Verfahren: Inkrementell vs. Evolutionär
• Inkrementell:
I Anforderungsanalyse und Konzeption nur zu Beginn der
Entwicklung
I Jede Iteration erzeugt ein weiteres Stück der Lösung.
I Schneller zu ersten Ergebnissen, aber anfällig bei
Anforderungsänderungen
• Evolutionär: Anforderungsanalyse und Konzeption in jeder
Iteration
• Grundlegender Konflikt: Flexibilität gegen garantierte
Zielerreichung.
Ina Schaefer
SE 1 - WS 2011/2011
37
Vorgehensmodelle
Prototypbasierte Entwicklung
Prototyp
XE?7&).U:-I),H?@$-,+:+)3D$;+00+
*+,-&..+
#$%&'(%&$)
/&+0+
5678*+-+&9:+
5678<:(3+)
#$;+00+
Vorabversion (von Teilen) des intendierten Systems.
<-$%$%=4&),
1(002+&34&+0
¾ F:(-(G%+-&3%&G(H
¾ <-$%$%=4 >?@$-(2'+-3&$)?A'$)?B+&0+)C?
;+3?&)%+);&+-%+)?5=3%+D3E
‡ 59:)+00+?I);?2&00&,+?J+-3%+00I),
‡ :KI.&,?LI-?M+D$)3%-(%&$)?'$)?*+)I%L+-$2+-.0K9:+)
Entwicklungsprozess:
‡ +&),+39:-K)G%+?1I)G%&$)(0&%K%N?)&9:%?-$2I3%N?39:0+9:%+?<+-.$-D()L
O).$-;+-I),38
()(0=3+
<-$%$%=4
+-3%+00+)
<-$%$%=4?P?54+L&.&G(%&$)
D$;&.&L&+-+)
#&%?<-$%$%=4
+R4+-&D+)%&+-+)
S(GL+4%&+-%T
S)&9:%?(GL+4%&+-%T
¾ @$-%+&0H 1-U:L+&%&,+?@(0&;&+-I),?;I-9:?;+)?VI);+)W
Ina Schaefer
QK9:3%+?<:(3+
SE 1 - WS 2011/2011
!"
38
Vorgehensmodelle
Prototypbasierte Entwicklung (2)
Arten von Prototypen:
• Wegwerf-Prototyp zu Demonstrationszwecken, in dem zuerst die
am wenigsten verstandenen Teile realisiert werden
• Evolutionärer Prototyp, d.h. Entwicklung der Version 0.1 als Basis
für das spätere System; zuerst die am besten verstandenen Teile
• Papier-Prototyping (z.B. für GUI-Entwicklung)
Ina Schaefer
SE 1 - WS 2011/2011
39
Vorgehensmodelle
Spiralmodell (B. Boehm, 1988)
Iteratives
Durchlaufen der Phasen in einer Spirale
Spiralmodell
07.11.2008
CEA v6.4
Ina Schaefer
SE 1 - WS 2011/2011
40
Vorgehensmodelle
Rational Unified Process (IBM)
UP Inkrementelles
– Rational UnifiedVerfahren
Process mit zweidimensionaler Anordnung von
Phasen und Aktivitäten
Aufsetzen
Ausarbeiten
Bauen
Einführen
07.11.2008
4
Ina Schaefer
SE 1 - WS 2011/2011
29
41
Vorgehensmodelle
Agile Entwicklungsmethoden
Agile Manifesto (K. Beck et al., 2001)
• Individuen und Interaktionen sind wichtiger als Prozesse und
Werkzeuge.
• Funktionierende Programme sind wichtiger als ausführliche
Dokumentation.
• Die stetige Abstimmung mit dem Kunden ist wichtiger als die
ursprüngliche Leistungsbeschreibung in Verträgen.
• Der Mut und die Offenheit für Änderungen stehen über dem
Befolgen eines festgelegten Plans.
Ina Schaefer
SE 1 - WS 2011/2011
42
Vorgehensmodelle
Extreme Programing XP (K. Beck)
• Konsequente evolutionäre Entwicklung in sehr kleinen Inkrements.
• Tests und Programmcode sind Analyseergebnis,
Entwurfsdokument und Dokumentation.
• Code wird permanent lauffähig gehalten.
• Diszipliniertes und automatisiertes Testen als Qualitätssicherung.
• Pair-Programming als QS-Maßnahme.
• Refactoring zur evolutionären Weiterentwicklung .
• Codierungsstandards.
• kein explizites Design, keine ausführliche Dokumentation,
keine Reviews.
Ina Schaefer
SE 1 - WS 2011/2011
43
Vorgehensmodelle
Zusammenfassung
• Begriffe Softwaresystem und Softwareengineering
• Motivation und Ziele des Softwareengineerings
• Vorgehensmodelle
Ina Schaefer
SE 1 - WS 2011/2011
44
Vorgehensmodelle
Literatur
• Ian Sommerville: Software Engineering. 9. Aufl.,
Addison-Wesley, 2010.
• Helmut Balzert: Lehrbuch der Software-Technik, 2. Aufl.,
Spektrum Akademischer Verlag, 2000.
• Philippe Kruchten: Rational Unified Process.
Addison-Wesley, 2000.
• Kent Beck: Extreme Programming Explained.
Addison-Wesley, 1999.
Ina Schaefer
SE 1 - WS 2011/2011
45

Documentos relacionados