Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Folien zum Software Engineering Aus urheberrechtlichen Gründen (Verletzung von Rechten Dritter) dürfen Sie diese Foliensammlung nicht öffentlich zur Verfügung.

Ähnliche Präsentationen


Präsentation zum Thema: "Folien zum Software Engineering Aus urheberrechtlichen Gründen (Verletzung von Rechten Dritter) dürfen Sie diese Foliensammlung nicht öffentlich zur Verfügung."—  Präsentation transkript:

1 Folien zum Software Engineering Aus urheberrechtlichen Gründen (Verletzung von Rechten Dritter) dürfen Sie diese Foliensammlung nicht öffentlich zur Verfügung stellen (www oder ftp)! Mein Dank gilt allen Studierenden, die insbesondere durch aufwendige grafische Darstellungen und Diagrammbeispiele zu dieser Foliensammlung beigetragen haben. 1

2 Hinweis zum Ausdrucken Falls Sie diese Folien ausdrucken möchten, wird dringend empfohlen, Handzettel mit 9 Folien je Druckseite anstatt für jede Folie eine eigene DIN-A4-Seite auszudrucken. Dies erreichen Sie, indem Sie im Menü Datei/Drucken... in das untere Listenfeld "Drucken:", wo steht "Folien" die Zeile "Handzettel (9 Folien je Seite)" auswählen. 2

3 Struktur der Vorlesung Grundlagen Warum SE?, Grundprinzipien, Qualitätsmerkmale von Software, Quantitative Trends Methode (oder Vorgehensmodell, Prozessmodell) als allumfassender Ansatz zur Bewältigung großer Entwicklungsprojekte Betrachtung einzelner Phasen sowie ausgewählter Ergebnisse und Techniken (Lastenheft, Funktionspunkte, UML) 3

4 Vorlesung und Ü bungen 4

5 Literatur zum Thema Software- Engineering (Kahlbrandt)B. Kahlbrandt: Software-Engineering: Objektorientierte Software-Entwicklung mit der Unified Modeling Language, Springer Verlag, 2. Aufl. 2001, ISBN: (Balzert1)H. Balzert: Lehrbuch der Softwaretechnik (Band 1): Software-Entwicklung, Spektrum Akademischer Verlag, (2001) (Balzert2) H. Balzert: Lehrbuch der Softwaretechnik (Band 2): Software-Management, Softwarequalitätssicherung, Unternehmensmodellierung, Spektrum Akademischer Verlag (1998), 769 Seiten 5

6 Literatur zum Thema Software- Engineering (im WWW) (Schürr1)http://www.es.tu- darmstadt.de/lehre/ss08/se_i/download/skript/SE1.pd f (Schürr2)http://www2.informatik.unibw- muenchen.de/Lectures/HT99/SEU/ (Gruhn)http://ls10-www.informatik.uni- dortmund.de/LS10/Pages/Lehre- WS9899.shtml#SoftTech (Prechelt)http://wwwipd.ira.uka.de/~prechelt/swt2/ (SE-VV) deggendorf.de/doku/fh/meile/bachelor/lehre/st/index. html 6

7 Inhalt (1) Einführung Motivation Grundprinzipien des SE Qualitätsmerkmale von Software Quantitative Trends Was bietet die Informatik? Vorgehensmodelle Übergang zum Projektmanagement Werkzeuge: CASE Beschreibung und Schätzung der Projektaufgaben Das Lastenheft Aufwandsschätzung mit dem Funktionspunkteverfahren Modellierungstechniken Klassische Techniken Entity Relationship Diagramm Datenflussdiagramm 7

8 Inhalt (2) –UML (objektorientiert) Grundlagen der Objektorientierung Use-Case-Diagramm Aktivitätsdiagramm Klassendiagramm Sequenzdiagramm Kommunikations-/Kollaborationsdiagramm Zustandsdiagramm –Systembeschreibende Diagramme: Paketdiagramm Komponentendiagramm Verteilungsdiagramm Übergang zur Programmierung / Codegenerierung Möglichkeiten der Codegenerierung aus Diagrammen 8

9 Inhalt (3) Testen –Überblick –Fehler –Statische Verfahren –Dynamische Verfahren Qualitätssicherung –ISO 9000 –TQM –CMM Weitere Vorgehensmodelle –XP (Extreme Programming) 9

10 Motivation Gründe für SE (Auswahl) Umfang der Entwicklungsprojekte Arbeitsteilung in der Softwareentwicklung Komplexität der Anwendung Hohe Anforderungen an Qualität Zuverlässigkeit Sicherheit (z. B. Wehrtechnik, Luft- und Raumfahrt) eingebettete Software 10

11 Motivation Zahlreich sind die Berichte über erhebliche Kosten- und Terminüberschreitungen Softwareprojekte, die nach Jahren der Anstrengung und erheblichem Aufwand erfolglos aufgegeben wurden winzige Versäumnisse im Entwicklungsprozess mit zum Teil katastrophalen Folgen Auslieferung unreifer, fehlerhafter Software 11

12 Wegen Punkt statt Komma abgest ü rzt: Das Mariner-Ungl ü ck Mariner 1 (Venus Sonde) mußte 4 Min. nach dem Start wegen unberechenbarem Flugverhalten zerstört werden. Gerüchten zufolge war aber ein Software-Fehler schuld: während des Starts sollte eine bestimmte Anweisung 3 x ausgeführt werden DO 3 i= 1, 3 Tippfehler DO 3 i= (Aktion)... 3 CONTINUE Dazu muß man über FORTRAN wissen: Spaces spielen keine Rolle; dadurch wird der Ausdruck DO3i= 1.3 zu einer Wertzuweisung Variablen brauchen nicht deklariert zu werden 12

13 Was ist SE Ingenieurmäßiges Vorgehen Der Begriff Software Engineering wurde im Jahre 1968 auf einer Konferenz der NATO in Garmisch/Partenkirchen geprägt. Zur Zeit der damals aufkommenden und noch immer nicht bewältigten Softwarekrise 13

14 Exkurs: SE und Wissenschaft (Prechelt 1999) Die Softwaretechnik als praktische technische Disziplin hat heute wenig wissenschaftlichen Charakter. Das vorhandene Wissen stammt überwiegend aus einer Mischung von Intuition und Empirizismus und ist nur in wenigen Fällen wissenschaftlich abgesichert, denn die meisten Beiträge sind Entwürfe (von Modellen, Methoden oder Werkzeugen) und stellen insofern nur Hypothesen dar -- und selbst diese werden meist nicht klar ausgesprochen. Geprüft werden diese Hypothesen bislang nur selten; nicht zuletzt deshalb, weil eine solche Prüfung in der Softwaretechnik meist enorm aufwendig ist. So wissen wir beispielsweise herzlich wenig darüber, welche Eigenschaften von z.B. Entwurfsmethoden, Programmiersprachen oder Entwicklungswerkzeugen welche Qualitätsattribute der Produkte in welcher Weise beeinflussen, obwohl diese Fragen den Kern unseres Faches betreffen. Wir wissen auch fast nichts darüber, welche Fehler in welchen Situationen gemacht werden und welche Maßnahmen das verhindern könnten, oder wie man die Fehler zumindest schnell wieder findet und behebt. 14

15 Exkurs: SE und Wissenschaft (Prechelt 1999) Als Folge dieses Zustands arbeiten vermutlich die allermeisten softwareerzeugenden Organisationen weit unterhalb ihrer Möglichkeiten, was ihre Produktivität und die Qualität ihrer Produkte angeht. Eine entscheidende Beobachtung in diesem Zusammenhang lautet, dass die grundsätzliche Arbeitsweise der wissenschaftlichen Methode in abgeschwächter Form auch für sehr praktische Problemstellungen in der Anwendung der Softwaretechnik verwendet werden könnte und sollte. Zum Beispiel kann die Auswahl des besseren von zwei Werkzeugen in der Regel durch ein entsprechend gestaltetes Experiment erledigt werden, wenn zuvor eine klare Fragestellung vorliegt (Was heißt,,besser``? In welchem Zusammenhang?) und etwas Aufwand investiert wird. Dieser Aufwand könnte sich in vielen Fällen leicht amortisieren, und dennoch werden solche Untersuchungen bisher selten gemacht. 15

16 Prinzipien des SE Abstraktion / Modellierung Schrittweise Verfeinerung / Hierarchisierung Modularisierung Vgl. Gruhn, F. 46 ff. 16

17 Qualit ä tsmerkmale von Software korrekt robust zuverlässig effizient es gibt noch viele offene Wünsche: wartbar, wiederverwendbar, portierbar, kompatibel, benutzerfreundlich, interoperabel 17

18 Quantitative Trends Steigender Anteil von Software am Bruttosozialprodukt Mehr als die Hälfte der Wertschöpfung von Siemens (von Pierer nach Balzert 1989) Steigender Softwareanteil an technischen Produkten (z. B. bei Anlagen der digitalen Vermittlungstechnik bis zu 80%: Quelle BMFT 1995, S. 3 ) Für 50 % der Ausfälle im industriellen Sektor sind Software-Fehler verantwortlich. (Balzert 1998) 18

19 Softwarekrise Kosten Zeit Quelle: Herde vhb 19

20 Aus: Schürr1 20

21 Aus: Schürr1 21

22 Abbruchrate Aus: Gruhn, F

23 Kostenstruktur eines Software-Projekts (in der Software-Branche anerkannte Daumenwerte aus Pieper): Entwicklungskosten 33% Analyse und Entwurf 40% Codierung 20% Test 40% Wartungskosten 66% Fehlerkorrektur 20% Verbesserungen 55% Portierung 25% Oft wird auch ein 80:20 Verhältnis zwischen Wartungs- und Entwicklungs- kosten genannt 23

24 Kostenfaktoren (aus Pieper) Änderungen in den Benutzeranforderungen Änderungen in Datenformaten Notfallrettungsaktionen Routinefehlerbehebung Hardware-Änderungen Dokumentation Verbesserungen Sonstiges 24

25 Wie gro ß sind bekannte Programme? SAP R/3 (1994): Zeilen Sourcecode Funktionsaufrufe Funktionen Menüleisten Reports · Space Shuttle Instruktionen · EWSD (elektronisches Wählsystem ISDN) ? Instruktionen 25

26 Was wei ß der Softwareingenieur? Dass er zuerst ein Modell erstellen muss (Grundprinzip) Wie er ein Projekt mit mehreren Personen plant und organisiert (Vorgehensmodell) Wie er das zu erstellende Programm formal beschreiben kann (Modellierungstechniken) Wie er Werkzeuge zur Unterstützung der Softwareentwicklung benutzen kann (z.B. CASE) 26

27 Was bietet die Informatik? Prinzipien des SE Prozessmodelle / Vorgehensmodelle Modellierungstechniken Werkzeuge (Programme zur Unterstützung der Softwareentwicklung) 27

28 Was beinhalten Prozessmodelle? Vorgehensmodell Ergebnisse Techniken Tool Rollen Wann Was Wie Womit Wer 28

29 Verbindung zwischen den Begriffen Ein Prozessmodell ist eine Vorschrift, wann welche Ergebnisse mit Hilfe welcher Techniken zu erstellen sind. Zusätzlich kann festgelegt sein, von wem (Rolle) und womit (CASE-Tool) die Ergebnisse zu erstellen sind. Beispiel: In der Phase Analyse ist mit der Technik "Entity-Relationship-Diagramme" das Ergebnis "Datenmodell" zu erstellen. Ergebnisse können Diagramme, Listen, unstrukturierte Texte, Quellcode etc. sein 29

30 Typisches Vorgehensmodell Vorstudie / Planung Analyse Design Konstruktion Test Einführung 30

31 Vorgehensmodellvarianten Wasserfallmodell jede Phase wird einmal durchlaufen Problem nachträglicher Änderungen Iteratives Modell / Spiralmodell die mittleren Phasen werden wiederholt durchlaufen bis Zufriedenheit mit dem erreichten Ergebnis besteht 31

32 Vorgehensmodelle: Empirie Derzeit folgt ungefähr die Hälfte aller [deutschen] Unternehmen einem definierten Vorgehensmodell... Überwiegend handelt es sich dabei um unternehmenseigene Vorgehensmodelle (Quelle: asoft_abschlussbericht.pdf) 32

33 Vorgehensmodelle: Empirie Es ist ein deutlicher Trend hin zu iterativen Vorgehensmodellen zu erkennen. Dies reflektiert die Erkenntnis, dass Kosten- und Liefertreue nur durch inkrementelle (sequentielle oder parallele) Entwicklung der Software garantiert werden kann. (Quelle: asoft_abschlussbericht.pdf) 33

34 Vorgehensmodelle: Empirie Allerdings ist zu beobachten, dass die Einhaltung von Vorgehensmodellen überwiegend in das Ermessen einzelner Entwicklungsabteilungen gestellt wird; es gibt hier noch wenig Verbindlichkeit. (Quelle: asoft_abschlussbericht.pdf) 34

35 Vorgehensmodelle: Empirie Es muss hier noch darauf hingewiesen werden, dass bei fast allen befragten Unternehmen keine Unterscheidung zwischen Vorgehensmodellen zur Projektdurchführung (mit Definitionen von Projektmeilensteinen) und Prozessmodellen (mit Definitionen zur Durchführung technischer Entwicklungsschritte wie Entwerfen) gemacht wurde. Letztere existieren i.A. überhaupt nicht. [Also das, was wir hier in den Übungen durchexerzieren!!] Die technische Softwareentwicklung wird der Kreativität der Entwickler überlassen. Dies deutet daraufhin, dass bei einigen Unternehmen Kosten- und Zeittreue Vorrang haben vor Qualitätstreue. Dies stellt einen gewissen Widerspruch zu den von den meisten Unternehmen als wichtig erkannten Qualitätseigenschaften dar. (Quelle: ) 35

36 Weitere Trends Zunehmende Bereitschaft, frühzeitig Reviews durchzuführen Gezielte Risikominimierung durch inkrementelle Prozesse bzw. kleine Schritte Nutzung der Komponententechnologie (Quelle: p. 10) 36

37 SE-Management in Organisationen In einem Unternehmen gibt es Leute, die die Software möchten und dafür zahlen. Sie möchten aber vorher wissen, wie lange es dauern wird und was es kosten wird. Ein Projekt muss geplant und gemanagt werden! Es muss klar sein, wer wofür, wann gebraucht wird und wer - auch nach Einführung der Software - für was verantwortlich ist! 37

38 Projekte Ergebnis / Projektziel einmalig und in überschaubarem Zeitraum erreichbar temporäre, arbeitsteilige Organisation neben der bestehenden Aufbauorganisation / Projektgruppe Betrachtung aus wirtschaftlicher Sicht / Projektcontrolling 38

39 Projektmanagement / Planung Aktivitäten Ressourcen (Kapazitäten und Mitarbeiter) Termine Kosten 39

40 40

41 Projektmanagement / Steuerung Kontrolle von Leistungen, Kosten und Terminen Koordination Information der Projektmitglieder und Berichterstattung an den Lenkungsausschuss 41

42 Projektmanagement / Kontrolle Einhaltung des Projektplans Abweichungsanalyse Projektreviews (eventuell durch externe, unabhängige Spezialistenteams) 42

43 Der Projektmanager Gutes Projektklima sichern Kontakt zu sonstigen vom Projekt berührten Stellen pflegen Ressourcen beschaffen Vertretung von Teammitgliedern 43

44 Das Projektteam IT-Spezialisten Vertreter aus dem Anwendungsbereich mit genügend Zeit und Lernbereitschaft Kommunikative Fähigkeiten sind gefragt 5-7 Personen 44

45 Die Projektphasen Ziele, Aktivitäten und Ergebnisse pro Phase Entscheidungszeitpunkte (Phasenenden) Projektleiter berichtet an Kontrollgremium (Steuerungsausschuss) Planung und Einteilung der Phasen gemäß innerbetrieblicher Vorgaben (selbstgestrickte oder eingekaufte Methoden / Vorgehensmodelle) 45

46 Entscheidung nach Phasenende The result of the Lifecycle Milestone Review Meeting can be one of the following: Phase Accepted: The customer representative agrees that the project has met expectations for the phase, and can proceed to the next phase. Conditional Acceptance: The customer representative agrees that the project may proceed to the next phase, subject to the completion of specified corrective actions. Phase Not Accepted: The project has failed to achieve the expectations for the phase: either a further iteration is scheduled, or the various stakeholders have recourse to the contract, to re-scope or terminate the project. 46

47 Phasen von Rational Unified Process 47

48 Rollenverteilung TesterQualitäts-Manager Projektleiter DesignerMarketierVors. GFKunde Programmierer Budget-Controller Fordert Nachbesserung Versendet Werbematerial Vertriebler Kündigt Produkt an Überprüft Kostenberichte Berichtet an Macht Vorgaben Liefert Spez. Liefert Programm Überprüft Arbeitsergebnisse A B C A steht zu B in der Beziehung C Gruhn, F.26 48

49 CASE CASE Einführung Rational Rose Andere Tools 49

50 CASE Computer Aided Software Engineering Editoren zur Erstellung von Diagrammen Gemeinsames Repository / Enzyklopädie Automatische Generierung von Programmcode und Datenbankspezifikation 50

51 Die wichtigsten Vorteile von CASE Integration bzw. Konsistenzerhaltung zwischen den Phasenergebnissen (vertikal) Daten und Funktionen (horizontal) Automatische Dokumentation Spätere Änderungen leichter bei Vorhandensein eines Modells (Wartungsproblem) 51

52 CASE-Tool: Beispiele 52

53 CASE-Tool: Beispiele 53

54 Funktionsstruktur 54

55 55

56 56

57 57

58 Datenstruktur 58

59 59

60 60

61 Relationenmodell 61

62 CASE-Tool Links dresden.de/~rm1/bookmark.html dresden.de/~rm1/bookmark.html Engineering/ Engineering/ (freies UML-Tool Argo) (freies UML- Tool Poseidon) 62

63 Struktur eines Lastenhefts 1. Zielbestimmung Die Kinoangestellte soll in der Lage sein, Eintrittskarten für einen bestimmten Film (in einem bestimmten Kinosaal) und einen bestimmten Platz zu verkaufen. 2. Produkteinsatz: Das Produkt dient zur Platzverwaltung bei Filmvorstellungen in Kinos. Zielgruppe ist der/die Verkäufer(in) der Eintrittskarten. 3. Produktfunktionen: /LF10/ Erfassung, Änderung und Löschen von Filmdaten /LF20/Erfassung, Änderung und Löschen von Platzreservierungen 63

64 Struktur eines Lastenhefts (2) 4. Produktdaten /LD10/Filmdaten /LD20/Kundendaten 5. Produktleistungen /LL10/ Eine Platzreservierung ist bei Nichtabholung der Karte 30 Minuten vor Beginn der Vorstellung automatisch zu löschen Gewünschte Qualität Funktionalität:gut Zuverlässigkeit:sehr gut Benutzbarkeit:einfach Effizienz:normal Änderbarkeit:gut Portierbarkeit:irrelevant 64

65 Beispiel (2) Lastenheft Bestellsystem für Pizzaservice Version 1.0 Datum: Zielbestimmung Der Pizzaservice Rapido soll in die Lage versetzt werden, Kundendaten und telefonische Bestellungen mit einem EDV System zu verarbeiten. 65

66 Beispiel (3) 2. Produkteinsatz Das Produkt dient zur Verwaltung von Kunden und Bestellungen. Zielgruppe sind die Mitarbeiter des Pizzaservice. 66

67 Beispiel (4) 3. Produktfunktionen (LF = Lastenheftfunktionen) /LF10/ Erfassung, Änderung und Löschen von Kundendaten /LF20/ Erfassung, Änderung und Löschen von Produktdaten /LF30/ Abfrage der relevanten Kundendaten /LF40/ Erfassung eines Bestellvorgangs /LF50/ Ausgabe von Backauftrag, Lieferauftrag und Rechnung 67

68 Beispiel (5) 4. Produktdaten (LD = Lastenheftdaten) /LD10/ Relevante Kundendaten sind zu speichern /LD20/ Relevante Produktdaten sind zu speichern /LD30/ Relevante Bestelldaten sind zu speichern 68

69 Beispiel (6) 5. Produktleistungen (LL = Lastenheftleistungen) /LL10/Die Funktionen /LF30/ und /LF50/ sollen jeweils maximal 5 Sekunden in Anspruch nehmen. /LL20/ Es sollen maximal 1000 Kunden und 200 Produkte verwaltet werden. 69

70 Beispiel (7) 6. Gewünschte Qualität Funktionalität: gut Zuverlässigkeit: sehr gut Benutzbarkeit: gut Effizienz: normal Änderbarkeit: normal Portierbarkeit: irrelevant 70

71 Aufwandssch ä tzung Das wichtigste Verfahren ist das Function- Point-Verfahren in der Industrie weit verbreitet dadurch sehr gut fundierte Vergleichsbasis ein empirischer Vergleich mehrerer Methoden ergab Genauigkeit der Schätzung im Bereich von +- 11% (Balzert 1996; 77) 71

72 Vorteile der Function-Points (nach: Jenny) frühzeitig anwendbar (Basis ist die Anforderungsanalyse, das Lastenheft) genauer später iterativ anwendbar Ergebnis ist erklärbar und nachvollziehbar für die Bewertung wird die Gesamtheit der Anforderungen herangezogen, eine Gliederung ist nicht erforderlich 72

73 Function-Points: Vorgehen 1. Quantifizierung des Projektumfangs nach Komponenten/Functions 2. Bewertung des Schwierigkeitsgrades je Function durch Points 3. Analyse der 7 Einflußfaktoren 4. Berechnung der bewerteten Function Points 5. Ermittlung des Aufwands mittels historischer Daten 73

74 Function-Points Bewertung des Schwierigkeitsgrades Einteilung jeder Komponente in die Komplexitätsstufen einfach, mittel oder komplex Zuordnung von Funktionspunkten zwischen 3 und 15 je nach Komponente und Komplexitätsstufe verschiedene Bewertungsvarianten in der Literatur 74

75 Function-Points: Komponenten Eingabedaten zählen (mit unterschiedl. Format oder Verarbeitungslogik), z. B.: Bildschirmeingaben, Eingaben über Diskette, Interfacedaten anderer Anwendungen,... Ausgabedaten, z. B.: Bildschirmausgaben, Listen, Formulare, Interfacedaten für andere Anwendungen 75

76 Function-Points : Komponenten Abfragen gezählt wird jeweils eine Einheit von unterschiedlich formatierten Online-Eingaben zur Suche von Information Anwenderdateien gezählt wird jede logische Datei, die im Rahmen des Anwendungssystems gepflegt wird Referenzdateien alle Dateien und Tabellen, die von der Anwendung nur gelesen werden 76

77 Funktion Points EingabedatenAbfragenAusgabedatenDatenbeständeReferenzdaten Produktanforderungen einfach mittel komplex Einflussfaktoren Eingabedaten3mittelx 412 Abfragen1einfachx 3 Ausgabedaten Datenbestände Referenzdaten AnzahlGewichtung vgl. H. Balzert: Lehrbuch der Software-Technik, x 0,955 77

78 Eingabedaten 78

79 Ausgabedaten 79

80 Alternative Bewertung für die Komponente Ausgabedaten: 80

81 Datenbest ä nde 81

82 Abfragen 82

83 Referenzdaten 83

84 Festlegen der Einflussfaktoren der gesamten Anwendung Bewertung der Faktoren mit 0 bis 5 Punkten (je Faktor) (0.. kein Einfluss, 5.. starker Einfluss) Einflussfaktoren: EF1: Verflechtung mit anderen Systemen EF2: Dezentrale Verarbeitung und Datenhaltung EF3: Transaktionsrate und Antwortzeitverhalten 84

85 Festlegen der Einflussfaktoren der gesamten Anwendung EF4: Verarbeitungskomplexität; Bewertungsspanne hier 0-30 ergibt sich aus der Summe der Einzelbewertungen (angepasst durch IBM-Deutschland, 1985) für: + Schwierigkeit und Komplexität der Rechenoperationen (0-10) + Umfang der Kontrollverfahren für die Datensicherstellung (0-5) + Anzahl der Ausnahmeregelungen (0-10) + Schwierigkeit und Komplexität der Logik (0-5) 85

86 Festlegen der Einflussfaktoren der gesamten Anwendung EF5: Wiederverwendbarkeit in anderen Anwendungen:z.B.: prozentualer Anteil der Wiederverwendung: bis 10%.. 0 FP, über 50%.. 5 FP EF6: Datenbestand-Konvertierungen EF7: Benutzer- und Änderungsfreundlichkeit Addition der Einflussfaktor- Bewertungspunkte: =EF max(EF) = 60 86

87 Berechnung der bewerteten Total Function Points TFP TFP = FP * (0,7 + (0,01 * EF)) Wertebereich der Modifikation der Function Points durch die Einflussfaktoren: 0,7 - 1,3, d.h. der Einfluss der Faktoren kann (bei Kommerz. Anwendungen) maximal ±30% des errechneten Wertes betragen; 87

88 Ableitung nach Erfahrungstabelle bzw. -kurve 88

89 Aufwand 5 Aktualisierung 6 7 Funktion Points vgl. H. Balzert: Lehrbuch der Software-Technik, x 0,955 = 276,95 89

90 LOC pro Point C128 C++51 HTML Java29 Pascal91 SQL13 Visual Basic

91 Vorschlag Balzert, 2001, S88f. Einflussfaktoren (jeweils 0-6 Punkte) Produktleistungen Qualitätsanforderungen GUI-Anforderungen Nichtfunktionale Anforderungen Anzahl und Komplexität der Schnittstellen Algorithmische Komplexität Architektur Werkzeugeinsatz (umgekehrt proportional) Erfahrung der Mitarbeiter (umgekehrt proportional) Reife des Entwicklungsprozesses (umgekehrt proportional) 91

92 2.2 Anwendung im Detail und am Beispiel Das Beispiel: Ein Pizzaservice möchte seine Bestellungen mit einem EDV-System verarbeiten. Es liegt ein Lastenheft vor. (siehe oben) Entwicklungsaufwand des geforderten Software-Systems soll vorab geschätzt werden. 92

93 Anwenden der Function Point Methode (1) 1. Schritt Einordnung der Produktanforderungen in Kategorien 93

94 Anwenden der Function Point Methode (2) Einordnung der Produktanforderungen am Beispiel Datenbestände: vom System verwaltet im System verwendet hier: /LD10/: Kundendaten /LD20/: Produktdaten /LD30/: Bestelldaten 94

95 Anwenden der Function Point Methode (3) Referenzdaten: in externem System vorgehalten von externem System verwaltet im System verwendet hier: nicht vorhanden Beispiel: Bestellung beim Zulieferer Zugriff auf Bestände und Preise des Lieferanten 95

96 Anwenden der Function Point Methode (4) Eingabedaten: elementarer Prozess Daten oder Kontrolldaten Pflege der Datenbestände hier: /LF10/: Pflege der Kundendaten /LF20/: Pflege der Produktdaten /LF40/: Eingabe der Bestelldaten 96

97 Anwenden der Function Point Methode (5) Abfragen: einfacher, elementarer Prozess einfache Ausgabe von Daten keine weitere Verarbeitung hier: /LF30/: Anzeige der Kundendaten 97

98 Anwenden der Function Point Methode (6) Ausgabedaten: elementarer Prozess Ausgabe von Daten durch mathematische Funktion errechnet durch Prozesslogik abgeleitet hier: /LF50/: Ausgabe von Backauftrag, Lieferauftrag und Rechnung 98

99 Anwenden der Function Point Methode (7) 2. Schritt: Klassifizierung der Funktionen und Daten Eingabedaten: 99

100 Anwenden der Function Point Methode (8) Ausgabedaten und Abfragen 100

101 Anwenden der Function Point Methode (9) Datenbestände und Referenzdaten 101

102 Anwenden der Function Point Methode (10) Klassifizierung im Beispiel: Zusatzannahmen notwendig z.B. Rücksprache mit Auftraggeber Eingabedaten: /LF10/: Kundendaten ein Datentyp sechs Datenfelder einfach 102

103 Anwenden der Function Point Methode (11) /LF20/: Produktdaten ein Datentyp vier Datenfelder einfach /LF40/: Bestelldaten drei Datentypen zehn Datenfelder komplex 103

104 Anwenden der Function Point Methode (12) Abfragen: /LF30/: Abfrage der Kundendaten ein Datentyp sechs Datenfelder einfach 104

105 Anwenden der Function Point Methode (13) Ausgabedaten: /LF50/: Ausgabe von Backauftrag, Lieferauftrag und Rechnung drei Datentypen 20 Datenfelder komplex 105

106 Anwenden der Function Point Methode (14) Datenbestände: /LD10/, /LD20/, /LD30/ jeweils ein Datentyp weniger als je 20 Datenfelder alle einfach 106

107 Anwenden der Function Point Methode (14) 3. Schritt Berechnung der unbewerteten Function Points 107

108 Anwenden der Function Point Methode (15) 4. Schritt: Bestimmung von Einflussfaktoren Auf- oder Abwertung der unbewerteten Function Points um 30 Prozent 108

109 Anwenden der Function Point Methode (16) Einflussfaktoren im einzelnen: Verflechtung mit anderen Anwendungssystemen dezentrale Daten, dezentrale Verarbeitung Transaktionsrate Verarbeitungslogik Wiederverwendbarkeit Datenbestandskonvertierungen Anpassbarkeit 109

110 Anwenden der Function Point Methode (17) Die Einflussfaktoren im Beispiel: Verflechtung mit anderen Anwendungssystemen (0-5) hier nicht gegeben: 0 dezentrale Daten, dezentrale Verarbeitung (0-5) hier nicht gegeben: 0 110

111 Anwenden der Function Point Methode (18) Transaktionsrate (0-5) Zusatzannahme: Einzelplatzsystem häufige Bestellannahme hier mittlere Transaktionsrate: 3 111

112 Anwenden der Function Point Methode (19) Verarbeitungslogik (0-30) Aufteilung in vier Bereiche A) Rechenoperationen - wenige, einfache Rechenop.: 1 B) Kontrollverfahren - hier keine: 0 - denkbar: Warenbestandsprüfung 112

113 Anwenden der Function Point Methode (20) C) Ausnahmeregelungen - hier keine:0 - denkbar: unzuverlässige Kunden D) Logik - nur sehr einfache Datenzusammenstellung - daher hier: 0 - denkbar: Routenplanung 113

114 Anwenden der Function Point Methode (20) Wiederverwendbarkeit (0-5) - nicht gefordert / keine Angaben: 0 Datenbestandskonvertierungen (0-5) - nicht erforderlich - Neuentwicklung - zuvor keine Daten erhoben - Bewertung: 0 Anpassbarkeit (0-5) - Lastenheft: Qualität normal: 2 114

115 Anwenden der Function Point Methode (20) C) Ausnahmeregelungen - hier keine:0 - denkbar: unzuverlässige Kunden D) Logik - nur sehr einfache Datenzusammenstellung - daher hier: 0 - denkbar: Routenplanung 115

116 Anwenden der Function Point Methode (20) Wiederverwendbarkeit (0-5) - nicht gefordert / keine Angaben: 0 Datenbestandskonvertierungen (0-5) - nicht erforderlich - Neuentwicklung - zuvor keine Daten erhoben - Bewertung: 0 Anpassbarkeit (0-5) - Lastenheft: Qualität normal: 2 116

117 Anwenden der Function Point Methode (21) Die bewerteten Funktion Points siehe Blatt Einflussbewertung E3 ermitteln Berechnung der bewerteten Function Points 117

118 Anwenden der Function Point Methode (22) 6. Schritt Umrechnung in Mitarbeitermonate (MM) firmenspezifische Tabelle oder Graph Function Points vs. MM empirische Daten notwendig ggf. Tabelle / Graph aus ähnlichem Umfeld 118

119 IBM - Tabelle 119

120 Anwenden der Function Point Methode (23) 7. Schritt Aktualisierung der Tabelle FP vs. MM nach Abschluss des Projektes tatsächlich benötigter Aufwand vs. berechnete, bewertete Function Points Hinzufügen des Wertepaares Verbreiterung der Datenbasis ggf. gleichzeitiges Löschen des ältesten Wertepaares 120

121 Modellierungstechniken Klassische Techniken ER-Diagramme Strukturierte Analyse (SA)/ Datenflußdiagramme (DFD) Nassi Shneidermann Struktogramme Pseudocode /Aktionsdiagramme Objektorientierte Techniken UML (Beispiele) 121

122 Einordnung diverser Techniken 122

123 Entity-Relationship-Diagramme Entität und Entitätstyp (auch Objekt und Objekttyp) Attribut / Attributwerte Beziehung (Relationship) Kardinalität einer Beziehung weitere Informationen und Beispiele in der Präsentation ER-Datenmodell und Abfragen in SQL.ppt im Ordner Datenbanken 123

124 Kardinalit ä t der Beziehungen 1:1 1:N M:N 124

125 Kr ä henfu ß notation 1 ist senkrechter Strich N ist Krähenfuß 125

126 Aufl ö sung einer M:N-Beziehung in zwei 1:N-Beziehungen Eine M:N-Beziehung kann in einer relationalen Datenbank nicht direkt realisiert werden. Durch die Zwischenschaltung einer zusätzlichen Tabelle wird sie aufgelöst in zwei 1:N-Beziehungen. (Tabelle) Studentin besucht (Tabelle) Vorlesung wird ergänzt durch (Tabelle) Vorlesungsbesuch 126

127 Beziehungen Optional oder obligatorisch Parallele Beziehungen (z. B. Person – Versicherungspolice) Reflexive Beziehungen (z. B. zur Darstellung der Mitarbeiterhierarchie) 127

128 Optionale Beziehungen KundeBestellung Kunden ohne Bestellung sind möglich. Beziehung ist optional. Beziehungen ohne Null gelten dann als obligatorisch! 128

129 Obligatorische Beziehungen RechnungRechnungsposition Eine Rechnung ohne Rechnungsposition soll nicht vorkommen dürfen. 129

130 Reflexive Beziehungen Mitarbeiter Ist verheiratet mit Ist Vorgesetzter von 130

131 Parallele Beziehungen PersonVersicherungspolice Ist Versicherungsnehmer Ist Versicherte Person 131

132 Strukturierte Analyse Meistbenutzte Technik in der Praxis Einfach zu erlernen 132

133 Strukturierte Analyse : Komponenten Hierachie von Datenflussdiagrammen Oberste Ebene heißt Kontextdiagramm Beschreibung der Prozesse durch Mini- Spezifikationen (z. B. Pseudocode) Beschreibung der Struktur der Daten im Datenverzeichnis (Data Dictionary) 133

134 Elemente eines Datenflu ß diagramms Prozesse Datenspeicher Datenflüsse Endknoten (Terminatoren) 134

135 Prozesse Prozesse verarbeiten Daten Buch vormerken

136 Datenspeicher Vormerkungen 136

137 Endknoten (Terminatoren) Endknoten sind Akteure oder Datenspeicher außerhalb des betrachteten Systems, die Daten senden oder empfangen. Kunde 137

138 Datenfl ü sse Datenflüsse transportieren Daten Sie können beschriftet werden Vormerkungen Buch vormerken 1.2 Akzeptierte Vormerkung 138

139 Datenspeicher Direkte Verbindungen zwischen Datenspeichern sind verboten Vormerkungen Ausleihen 139

140 Hierarchiekonzept der Strukturierten Analyse Kontext-Diagramm Ebene 0: Datenfluß- Diagramm Prozeßspezifikation______________________ 140

141 Struktogramm (Auswahl) Ausdruck wahr falsch Ja-Anweisung Nein-Anweisung (bei einseitiger Auswahl leer) Anweisung(en) Quelle: Herde vhb 141

142 Pseudocode while while (Ausdruck) { Wiederholungsanweisung(en); } Anweisung(en); do { Wiederholungsanweisung(en); } while while (Ausdruck); Anweisung(en); Quelle: Herde vhb 142

143 Objektorientierung Klassen und Instanzen (Instanz = Objekt) Attribute und Methoden Requests / Messages Vererbung und Klassenhierarchien Vorherrschendes Prinzip moderner Programmiersprachen (Java,.Net) In der Datenbankpraxis jedoch bisher unbedeutend 143

144 Diagramme der UML Strukturdiagramme Klassen- diagramm Komponenten- diagramm Kompositions- Strukturd. Objekt- diagramm Verteilungs- diagramm Paket- Diagramm Verhaltensdiagramme Use-Case diagramm Zustands- diagramm Aktivitätsdiagramm Interaktionsdiagramme Sequenz- diagramm Kommunikations- diagramm Interaktions- übersichtsd. Timing- diagramm 144

145 Quelle: Casetool MID Innovator 145

146 Use-Case Diagramm 146

147 Sequenzdiagramm 147

148 Klassendiagramm 148

149 149

150 Zustand ü bergangsdiagramm 150

151 Stereotypen von Klassen (Rose- Tutorial) 151

152 Zustand ü bergangsdiagramm © H. Balzert

153 UML-Klassendiagramm In einer Schule soll der Lehrbetrieb folgendermaßen rechnergestützt verwaltet werden: Jeder Lehrer kann bis zu vier Fächer unterrichten. Eine Klasse wird von verschiedenen Lehrern in unterschiedlichen Fächern unterrichtet. Jeder Klasse ist ein bestimmter Lehrer als Klassenlehrer zugeordnet. Der Klassenlehrer soll die Schüler seiner Klasse bei Problemen unterstützen. Deshalb darf jeder Lehrer nur für eine Klasse Klassenlehrer sein. Jede Unterrichtsstunde findet in einem bestimmten Raum zu einer bestimmten Zeit statt und wird von einem Lehrer in einem bestimmten Fach vor einer Klasse abgehalten. Jede Klasse hat zwischen 30 und 35 Unterrichtsstunden. 153

154 Eigenschaften von Aktivitätsdiagrammen Aktivitätsdiagramme = Kontrollflussdiagramme + Zustandsdiagramme Kontrollflussdiagramm: Zustandsdiagramm: Aktivitätsdiagramm 154

155 Eigenschaften von Aktivitätsdiagrammen Aktivitätsdiagramme = Kontrollflussdiagramme + Datenflussdiagramme Beschreibung von Datenfluss durch Parameter (wie bei Kontrollfluss, x = Objekt): Beschreibung von Datenfluss durch Objektangabe (wie bei Datenfluss): 155

156 Eigenschaften von Aktivitätsdiagrammen Stärken –Darstellung von nebenläufigen Prozessen Technisch: Threads Analytisch: Geschäftsprozesse Schwächen –Beziehung der Aktivitäten zu Objekten schlecht sichtbar (Ausweg: Swimlanes oder Objektnamen in Aktivitäten aufnehmen) 156

157 Elemente Es gibt drei Kategorien von Nodes: –Action Node: –Object Node: –Control Nodes: Ablaufendknoten Endknoten Splitting/Synchronisation Startknoten bedingte Verzweigung oder Zusammenführung von Aktionssträngen 157

158 Elemente - Fallunterscheidungen Eine Verzweigung ist ein Schritt im Ablauf, an dem aufgrund von Kriterien entschieden wird, mit welcher von mehreren Aktivitätskanten der Kontrollfluss fortgesetzt werden soll. Eine Zusammenführung ist ein Schritt im Ablauf, an dem jede von mehreren eingehenden Aktivitätskanten sofort zu einer gemeinsamen ausgehenden Aktivitätskante führt. 158

159 Elemente Fallunterscheidungen: Es darf keine Schnittmengen zwischen den Bedingungen geben (eine muss erfüllt sein): 159

160 Elemente – Parallele Abl ä ufe Eine Synchronisation (AND-Verknüpfung) ist ein Schritt im Ablauf, an dem auf alle eingehenden Aktivitätskanten gewartet wird, bevor der Kontrollfluss fortgesetzt wird. Eine Teilung (Splitting) ist ein Schritt im Ablauf, an dem eine eingehende Aktivitätskante sich ohne Bedingungen sofort in mehrere ausgehende nebenläufige Aktivitätskanten teilt, die damit alle aktiviert werden. 160

161 Einfaches Beispiel Auftrag erhalten Auftrag fertig stellen Über Nacht Auslieferung Normale Auslieferung Rechnung senden Zahlung erhalten Auftrag abschließen Anfangszustand Aufspaltung Aktivität Entscheidung Zusammen- führung Synchronisation Endzustand [else][Eilauftrag] Bedingung 161

162 Elemente Schwimmbahnen (swimlanes) verdeutlichen die Verantwortlichkeiten: Organisationseinheiten (konzeptionell) Klassen (spezifizierendes, konzeptionelles Modell) Abteilung 1 Abteilung 2 Abteilung 3 162

163 UML - Aktivitätsdiagramm (Notation) Aktivität Aktivität1Aktivität2 [Bedingung] Aktivität Kontrollfluß Aktivität2 wird nach Abschluß von Aktivität1 gestartet. Verzweigung(-saktivität) (kann auch durch normale Aktivität dargestellt werden) Kontrollfluß, der unter der angegebenen Bedingung gewählt wird. Synchronisation der Kontrolle (AND) mit Synchronisationsbedingung (Join) Aufsplitten der Kontrolle (Zulassen von Parallelität, Fork) [Bedingung] 163

164 Aktivität Aktivität wird durchgeführt, wenn über einen der eingehenden Kontrollflüsse die Kontrolle ankommt (OR) Start des Ablaufs (mit Aktivität) Ende des Ablaufs (optional) UML - Aktivitätsdiagramm (Notation) 164

165 Beispielaufgabe (Adresskartei) Das Ziel ist die Erstellung eines Softwareprodukts, mit dem eine Adresskartei verwaltet werden kann. Aus der Namensliste wird ein Name ausgewählt, zu dem die vollständige Adresse gesucht wird. Eine vollständige Adresse besteht aus Name, Vorname, Straße mit Hausnummer, Ort mit Postleitzahl und Telefonnummer. Zusätzlich kann ein Kommentar vermerkt werden. Es soll möglich sein, eine Adresse neu aufzunehmen, zu löschen oder zu verändern. 165

166 Anwendungsfall: Adresse suchen - Es soll anhand des Namen gesucht werden - Wenn die Suche erfolgreich war, sollen die Adressdaten ausgegeben werden - War die Suche nicht erfolgreich soll eine Fehlermeldung ausgegeben werden 166

167 L ö sung (Adresse suchen) 167

168 Anwendungsfall: neue Adresse aufnehmen - Es sollen folgende Daten aufgenommen werden: * Name (Nachname, Vorname) * Adresse (Straße, Hausnummer) * Ort (Ort, PLZ) * Telefonnummer * Kommentare - Diese Daten sollen dann gespeichert werden 168

169 L ö sung (neue Adresse aufnehmen) 169

170 Axel ist gerade aufgestanden und will etwas kreislaufsteigerndes trinken. Er möchte am liebsten einen Kaffee. Sollte kein Kaffee zur Verfügung stehen, dann nimmt er auch mit einer Dose Cola vorlieb. Ist weder Kaffee noch Cola im Haus, legt er sich wieder hin. Wenn er eine Dose Cola findet, dann nimmt er sie und trinkt sie. (anschließend geht er trotzdem wieder ins Bett!) Hat er aber seinen heißgeliebten Kaffee gefunden, macht er sich auch gleich an die Zubereitung des Heißgetränks. In Windeseile (fast gleichzeitig) füllt er den Automaten mit Wasser und das Pulver in den Filter. Nebenbei nimmt er sich noch seine rosa Henkeltasse und steckt den Filter in die Maschine. Hat er dies alles erledigt, dann schaltet er die Kaffeemaschine ein und harrt der Dinge. Der Kaffee kocht. Wenn der Kaffee fertig gebrüht ist, schenkt er sich eine Tasse ein. Jetzt kann er trinken (und erholt sich von der Anstrengung im Bett). (nach OMG Spec. 1.4) 170

171 L ö sung der Ü bungsaufgabe 171

172 © H. Balzert 2001 Aktivit ä tsdiagramm 172

173 Quelle: letzte Seite 173

174 OMG Spec

175 OMG Spec

176 Checkliste f ü r Zustandsfindung Identifikation relevanter Ereignisse Zeitlich gruppieren 176

177 Interaktionsdiagramme Objektorientierte Darstellung eines Prozesses Objekte aus dem Klassendiagramm erledigen zusammen eine Aufgabe (Kollaboration) Dabei tauschen sie Nachrichten aus (Requests, Methodenaufrufe) (Kommunikation) Die Interaktionsdiagramme stellen die zeitlichen Abfolge dieser Kommunikation dar Sequenzdiagramm: Nachrichten auf der Zeitachse Kommunikations-/Kollaborationsdiagramm: Nummerierung der Nachrichten nach ihrer zeitlichen Abfolge 177

178 Kommunikations- /Kollaborationsdiagramm Statische Sicht auf die beteiligten Objekte wie im Klassendiagramm Verschiedene Notationselemente zur Charakterisierung der Nachrichten 178

179 Aus: 179

180 180

181 181

182 Arten von Nachrichten Aufruf: Die Nachricht besteht im synchronen Aufruf einer Operation ähnlich dem Aufruf eines Unterprogramms. Flacher Kontrollfluss (flat flowof control): Diese Nachrichten sind meist asynchron. Wenn ausschließlich diese Pfeile verwendet werden, können sie sowohl synchrone als auch asynchrone Nachrichten bedeuten. Asynchron: Der Sender schickt eine Nachricht an den Empfänger, kümmert sich aber nicht weiter darum. Z.B. Sie senden ein an einen Freund und arbeiten danach weiter. 182

183 Arten von Nachrichten Iteration: Wiederholung der Nachricht wir notiert durch einen Stern * ggf. ergänzt durch eine Abbruchbedingung in eckigen Klammern [ ]. Z.B. das Eintippen einer PIN oder einer Telefonnummer. Möglich ist auch ein einer for- Anweisung ähnelnde Schreibweise wie [i=1..n]; Rückgabenachricht bzw. - wert: wird oft in Kombination mit synchronen Aufrufen verwendet. 183

184 Arten von Nachrichten Geschachtelte Nachrichten können durch Dezimalziffern dargestellt werden. Z.B. wird 2.1 innerhalb der von 2 ausgelösten Prozedur versendet. Parallele Nachrichten können durch gleiche Zahlen oder angehängte Buchstaben beschreiben werden. Z.B. 2 Nachrichten mit Nummerierung 4 oder 4a und 4b. 184

185 Objektbezeichnungen CAnonymes Objekt der Klasse C /RAnonymes Objekt in der Rolle R O/REin Objekt O in der Rolle R O:CEin Objekt O der Klasse C O/R:CEin Objekt O der Klasse C in der Rolle R OEin Objekt O Aus: Kahlbrandt, Software Engineering 185

186 Ein Kollaborationsdiagramm kann sowohl permanente Objekte als auch temporäre Objekte beinhalten. Erstere sind Objekte, welche bestimmten Beziehungen entsprechen. Letztere sind Objekte, welche lokalen Variablen entsprechen. 186

187 Schlüsselwörter in dieser Diagrammart sind weiterhin: new, destroy und transistent. Diese werden innerhalb des Diagramms in { } notiert. Das new bedeutet die Erstellung einer Instanz, Das Schlüsselwort destroy die Löschung einer Instanz. transistent deutet an, dass ein Objekt innerhalb einer Interaktion erzeugt, jedoch auch wieder zerstört wird. 187

188 Für den Fall, dass eine Nachricht ein Objekt aus einer Menge auswählt oder eine Menge von Objekten nach einem geeigneten Empfänger durchsucht, kann ein Multiobjektsymbol verwendet werden. Das verwendete Objekt wird wie folgt dargestellt: 188

189 Ein Beispiel für die Anwendung eines solchen Multiobjektsymbols ist z.B. das Beenden einer Anwendung in Windows. Das Hauptfenster schickt hierbei typischer Weise eine Nachricht (CanClose()) an alle Child-Fenster. 189

190 Elemente eines Kollaborationsdiagramms Objekte: Sie werden durch ein Rechteck dargestellt, in welchen der Objektname eingetragen ist. 190

191 Elemente eines Kollaborationsdiagramms Verbindungen zwischen Objekten 191

192 Elemente eines Kollaborationsdiagramms Nachrichten: Diese werden auf den kleinen Pfeilen über oder unter den Verbindungen notiert. Allgemeiner Nachrichtenaufbau: [Vorgängerbedingung]Nummerierung:[Antwort:= ]Nachrichtenname(Argumentenliste) 192

193 Beispiel: Ablauf eines allgemeinen Gesch ä ftsauftrages Im Folgenden soll der Ablauf eines allgemeinen Geschäftsauftrages als Beispiel für ein Kollaborationsdiagramm dienen. Die Spezifikation des Auftrages schaut wie folgt aus: Der Kunde erteilt den Auftrag dem Verkäufer. Der Verkäufer stellt daraufhin eine Bonitätsanfrage an das Controlling Das Controlling checkt nun die Bonität und sendet das Ergebnis zurück an den Verkäufer. Nun kann der Verkäufer dem Kunden die Auftragsbestätigung zubringen. Gleichzeitig erzeugt der Verkäufer im System einen neuen Auftrag. Der Auftrag wir ausgeführt und an den Kunden geliefert Im weiteren Verlauf erhält der Kunde die Rechnung. Daraufhin überweist der Kunde den Rechnungsbetrag an das Controlling des Unternehmens. Mit dem Zahlungseingang des Kunden wird der Auftrag vom Controlling wieder im System gelöscht. (Beispiel Aus: Kahlbrandt, Software Engineering) 193

194 Beispiel Aus: Kahlbrandt, Software Engineering 194

195 Beispiel. Handytelefonat Use Case: Tätige Anruf Der Benutzer drückt auf die Handytasten um die Telefonnummer einzugeben. Zu jeder eingegebenen Ziffer wird ein entsprechender Ton durch den Dialer erzeugt und über den Lautsprecher ausgegeben. Jede eingegebene Ziffer wird an die bisher gewählten Ziffern im Display angehängt. Der Benutzer drückt auf die Waehlen-Taste. Der Verbindungschip baut eine Verbindung zum Gesprächspartner auf. Auf dem Display wird angezeigt, wie lange das Gespräch dauert. Nach: rams.pdf rams.pdf 195

196 Nach:http://www.objectmentor.com/resources/articles /umlCollaborationDiagrams.pdfhttp://www.objectmentor.com/resources/articles /umlCollaborationDiagrams.pdf 196

197 197

198 198

199 Sequenzdiagramm 199

200 200

201 201

202 Use-Case Beschreibung Anwendungsfall: Buchungsaufträge erstellen Beschreibung Kurzbeschreibung: Die Informationen erlauben es dem Use Case Buchungsaufträge ausführen, die buchhalterischen Schritte durchzuführen. Dabei werden nicht nur primäre Buchungssätze erzeugt, sondern auch aus Fachlichkeit der Finanzbuchhaltung weitere Buchungen generiert (z.B. Buchungen auf Kapitalumsatzkonten bei gesellschaftsübergreifenden Geschäftsvorfällen). Jede Buchung wird im Journal als Vollbuchung hinterlegt (Soll- und Habenkonto). Nach jeder Buchung wird (automatisch) eine Buchungskontrolle durchgeführt. Auslöser: Aus dem Anwendungs Use Case (z.B. ZKK-Aufträge bearbeiten) wird jeder einzelne Buchungsauftrag erzeugt. Vorbedingung: Der Buchungsauftraggeber und der -auftrag sind korrekt. Ergebnis: - Auftrag ist gebucht - Journal ist fortgeschrieben Szenarienbeschreibung: 1. Kontierungen feststellen 2. Buchungsperiode bestimmen 3. Buchungen erzeugen (1-n) 4. Journal bedienen 5. Buchungskontrolle Aktor: System Variantenbeschreibung: - keine - 202

203 203

204 Zustandsdiagramme 204

205 Systembeschreibende Diagramme –Paketdiagramm –Komponentendiagramm –Verteilungsdiagramm 205

206 Paketdiagramm Das Paketdiagramm wird zur Strukturierung des Systems in überschaubare Einheiten verwendet. 206

207 Notationselemente eines Paketdiagramms Paket –Ein Paket fasst Modellelemente sinnvoll zusammen und definiert einen Namensraum für die enthaltenen Elemente. {import Packet B :: Element A} > Paket-Import Importiertes PaketImportierendes Paket Paket APaket B + Element A Paket A Alternative Darstellung des Paket-Imports: 207

208 Paket-Import Der Paket-Import wird verwendet, wenn ein Paket (importierendes Paket) alle Namen öffentlicher Elemente eines anderen Paketes (importiertes Paket) als öffentlich erhalten soll. {import Packet B :: Element A} > Paket-Import Importiertes PaketImportierendes Paket Paket APaket B + Element A Paket A Alternative Darstellung des Paket-Imports: 208

209 Beispiel für einen Paket-Import Im Paket Mathematik erweitert – kann durch den Paket-Import - die Klasse Real direkt über den unqualifizierten Namen angesprochen werden. Real - genauigkeit + quadratwurzelziehen() > MathematikMathematik erweitert 209

210 Paket-Access : Paket-Import ohne Weitergabemöglichkeit Der Paket-Access kennzeichnet einen privaten Import von öffentlichen Elementen; d.h. sie werden im importierenden Paket als privat hinzugefügt. Mit > importierte Elemente können nicht an dritte Pakete weitergegeben werden. > Paket-Acces Paket APaket B + Element A {access Packet B :: Element A} Paket A Alternative Darstellung des Paket-Acceses: 210

211 Administrator - name: String - geburtsdatum: Date > Geldautomatensystem Geldautomat - automatennummer: int - umsatz: float + karte einziehen() + eingabGeheimzahl(int pin) + transaktionstarten() + seriennummereinlesen() + karteausgeben() + geldausgeben() Bankkundenverwaltung Privatkunde - vorname: String - nachname: String - geburtsdatum: Date Geschäftskunde - firmenname: String Kontoverwaltung Umsatz - datum: Date - nummer: int - betrag: float - umsatzweck: String Datenverwaltung Datenbank Datenpflege Bank - bankleitzahl: int - name: String - ort: String Girokonto - sollzins: float - dispokredit: float + auszahlen (betrag: float) + zinsgutschreiben() + sollzinsabbuchen() Sparkonto - höchstbetrag: float + auszahlen (betrag: float) + zinsgutschreiben() 211

212 Komponentendiagramm Sie geben Auskunft darüber welche Teile eines Systems zusammenarbeiten. Mit Hilfe von Komponentendiagrammen werden Komponenten und deren Schnittstellen oder aber Ports dargestellt. Des Weiteren zeigen sie auf, wie die einzelnen Komponenten über Abhängigkeits- beziehungen sowie Konnektoren miteinander verbunden sind. 212

213 Stereotyp der Komponente Komponentensymbol Komponente > Komponente 213

214 Beispiel 214

215 Black-Box-Sicht Die Black-Box-Sicht zeigt den Rand und die Schnittstellen, die die Komponente von außen anbietet bzw. von anderen Komponenten bezogen werden müssen. Für die Notation von Schnittstellen, können graphisch alle Möglichkeiten genutzt werden. > SortierterZugriff WahlfreierZugriff > Speichermedium > Teilnehmerverwaltung 215

216 White-Box-Sicht Die White-Box-Sicht zeigt die innere Struktur einer Komponente. Diese Struktur kann aus Teilkomponenten bestehen. > SortierterZugriff WahlfreierZugriff > Speichermedium > Teilnehmer Verwaltungsmetadaten > teilnehmer.jar > Teilnehmerverwaltung 216

217 Komponentensymbole in Rational Rose Ausführbare: Library: Table: File: Dokument: 217

218 –Executable (ausführbar) Komponente, die auf einem Knoten ausgeführt werden kann –Library (Bibliothek) statische oder dynamische Objektbibliothek –Table (Tabelle) Komponente, die eine Datenbanktabelle repräsentiert –File (Datei) Komponente, die ein Dokument mit Sourcecode oder Daten repräsentiert –Document (Dokument) Komponente, die ein Dokument repräsentiert 218

219 Beispiele für Komponenten Exe-Dateien Dll Programmbibliotheken Java-Dateien Datenbanktabellen

220 Weitere Stereotypen > (Script-Datei) > (Dokument) > (ausführbare Datei) > (nicht näher spezifizierte Datei) > (Bibliotheksdatei) > (Quelltext) 220

221 Weitere Stereotypen >: Eine Komponente, die mit > gekennzeichnet ist, realisiert eine Komponente, die mit dem Stereotypen > versehen ist. >: Bei einer mit dem Stereotyp > gekennzeichneten Komponente handelt es sich um eine zustandslose funktionale Komponente, welche beispielsweise einen Wert berechnet. Sie stellt somit anderen Komponenten Dienste zur Verfügung. >: Kennzeichnet eine Komponente, welche bereitgestellte und benötigte Schnittstellen definiert, aber keine physikalische Implementierung für diese Schnittstellen spezifiziert. Die Realisierung erfolgt durch eine >-Komponente >: Einheiten großer Systeme werden alternativ zu > mit dem Stereotypen > gekennzeichnet) 221

222 benötige Schnittstelle realisierte Schnittstelle Klasse BKlasse A Schnittstellen und Ports 222

223 Delegationskonnektor Wird für die Verbindung einer externen Schnittstelle oder eines Ports und den inneren Bestandteilen einer Komponente verwendet. Er wird mit dem Stereotypen > gekennzeichnet. Bauteil- Konnektor Delegationskonnektor > Komponente A > Subsystem > Komponente B 223

224 Kompositionskonnektor Ein Kompositonskonnektor zeigt die Verbindung zwischen angebotenen und benutzten Schnittstellen bzw. Ports. Der Port der einen Komponente muss eine Schnittstelle anbieten, die der Port der anderen Komponente benötigt. 224

225 Manifest-Beziehung Mittels einer Manifest-Beziehung - die durch den Stereotypen > gekennzeichnet ist - wird es möglich, Artefakte den Komponenten - die sie physisch realisieren - zuzuordnen Manifest-Beziehung > WahlfreierZugriff Speichermedium SortierterZugriff > Teilnehmerverwaltung > teilnehmer.jar 225

226 > Konto-DBMS Einzahlung Auszahlung Speichermedium > Kontoverwaltung > Geldautomaten-GUI > Oracle 10g 226

227 komplexer Port ExternesDisplay zeigt Zeit Display Wecker Uhrzeit StandardFunksignal 227

228 Substituierende Komponenten Wenn Schnittstellen von zwei Komponenten übereinstimmen, dann ist es möglich, die Komponenten untereinander zu tauschen. Die substituierende Komponente kann ihrerseits zusätzliche Schnittstellen anbieten, die die ersetzte Komponente nicht hatte Zusätzliche Schnittstelle Schnittstelle B Schnittstelle A Ersetzte Komponente Substituierende Komponente > Komponente A > Komponente B 228

229 Kombination Schnittstellen können mit Hilfe von Ports organisiert werden WahlfreierZugriff Speichermedium SortierterZugriff > Teilnehmerverwaltung 229

230 Verteilungsdiagramm Spezifizieren der physischen Hard- und SoftwareumgebungSpezifizieren der physischen Hard- und Softwareumgebung Wird in der Entwurf/Design-Phase erstelltWird in der Entwurf/Design-Phase erstellt Auf seiner Basis Entscheidung über:Auf seiner Basis Entscheidung über: –Hardware- und Softwarekomponenten –Komponentenverteilung (Software) –Kommunikationsbeziehungen zwischen Knoten 230

231 231

232 Knoten Stereotyp des Knoten Name des Knotens Knoten > Server 232

233 Attribute Attributname AttributtypVorgabewert > Applikationsserver + prozessor: GHz = RAM GByte = 16 + Festplatte: GByte =

234 Operationen SichtbarkeitOperation Attribute Operationen > Linux + distribution = SuSE 10 + boot() + shutdown() 234

235 Hierarchie von Knoten > Applikationsserver > Tomcat > PdfErzeuger.class 235

236 Deploy-Abhängigkeit > PdfErzeuger.class Ausführungsumgebung Artefact Deploy-Abhängigkeit > Applikationsserver > Tomcat 236

237 Einsatzspezifikation > erzeugePdf.jar > Web.xml + servlet-name: = erzeugePdf + servlet-class: = Hauptklasse > Tomcat 237

238 Deployment-Specs - Einsatz- bzw. Verteilungsspezifikationen 238

239 Einsatzspezifikation innerhalb eines Knotens > Tomcat > web.xml + servlet-name: = erzeugePdf + servlet-class: = Hauptklasse > erzeugePdf.jar Einsatzspezifikation 239

240 Einsatzspezifikation innerhalb eines Artefakts > Tomcat > erzeugePdf.jar {servlet-name: = erzeugePdf Servlet-class: = Hauptklasse} 240

241 Kommunikationspfad +Server 1 1..* +Client > Kommunikationspfad Multiplizität KommunikationskanalRolle > PC > Applikationsserver 241

242 Stereotypen Mit Hilfe von Stereotypen können auch Knoten als sog spezielle Knoten definiert werden. Die beiden wichtigsten Stereotype sind > und >. 242

243 > Mit > gekennzeichnete Knoten repräsentieren im Verteilungsdiagramm die Hardware des Systems, z.B. einen Rechner. 243

244 > Mit > wird dagegen eine Ausführungsumgebung bezeichnet. Sie wird von bestimmten Softwarekomponenten zur Ausführung benötigt. Meist ist die Ausführungsumgebung Teil eines Hardware-Knotens. Diese Elemente werden dann als verschachtelte Knoten bezeichnet. Die rechte Abbildung zeigt z.B. einen Rechner auf dem unter anderem eine Ausführungsumgebung für Java-Anwendungen installiert ist. 244

245 Stereotypen StereotypenStereotypen – > – Definition weiterer Stereotypen möglich! 245

246 Quelle: 246

247 Quelle: 247

248 Verteilungsdiagramme als Erweiterung anderer UML- Diagrammtypen Quelle: 248

249 Quelle: 249

250 Verteilungsbeziehung 250

251 251

252 252

253 Häufig gemachte Fehler 253

254 Häufig gemachte Fehler (A): Richtung der > Abhängigkeit ist falsch B: (B): Abhängigkeit fehlt (C): Mehrfachknoten (D): Stereotyp fehlt (E): Kommunikationskanal fehlt 254

255 Übungsaufgaben zu Komponenten- und Einsatzdiagrammen In den zwei nachfolgenden Aufgaben soll eine Softwareinstallation für die Firma Autos & Co erstellt werden. Sie liefern die Verkaufssoftware AutoKauf aus. Diese besteht aus einer zentralen Programmdatei, einer Hilfedatei, einer Schnittstelle zu S & AP und zu der Oracle-Datenbank. Da sie in Visual C erstellt wurde wird sie mit der Programmbibliothek MFC40.DLL ausgeliefert und einer readme.txt installiert. Identifizieren Sie die einzelnen Komponenten und Schnittstellen der Software AutoKauf. Erstellen Sie ein Komponentendiagramm für die Verkaufssoftware! 255

256 Aufgabe 1 Es soll auf zwei Servern getrennt, die Finanzbuchhaltungssoftware "Schrecken, Angst & Panik" (S & AP) und eine Oracle-Datenbank laufen. Für die Verkäufer und den Chef sind drei Client-Rechner vorhanden, mit denen sie Modelle, Zubehör usw. abfragen können. Diese Rechner und die Kasse greifen auf den S & AP-Server zu. Die bei Server sind untereinander über ein LAN verbunden. Die Clients sind untereinander über ein WLAN (Access-Point) mit den S & AP- Server verbunden. Die beiden Server sind untereinander über einen LAN-Router verbunden, der PC des Administrators (Chef) hat als einziger Client ebenfalls Zugriff zu diesen Netz. Identifizieren Sie die einzelnen Knoten des Einsatzdiagramms. Erstellen Sie ein Verteilungsdiagramm für die Rechnerstruktur in der Autofirma! 256

257 Aufgabe 2 Sie liefern die Verkaufssoftware AutoKauf aus. Diese besteht aus einer zentralen Programmdatei, einer Hilfedatei, einer Schnittstelle zu S & AP und zu der Oracle-Datenbank. Da sie in Visual C erstellt wurde wird sie mit der Programmbibliothek MFC40.DLL ausgeliefert und einer readme.txt installiert. Identifizieren Sie die einzelnen Komponenten und Schnittstellen der Software AutoKauf. Erstellen Sie ein Komponentendiagramm für die Verkaufssoftware! 257

258 258

259 259

260 Ein realistisches Beispiel 260

261 261

262 262

263 263

264 264

265 265

266 266

267 Die Object Constraint Language 267

268 Rational Rose Übungsanleitung Use Case Diagramm aufrufen Anmerkung: falsche Diagrammteile mit Edit – Delete from Model (CTRL+D) löschen Rechter Klick, um den Use Case (Use Case View) im Browser auszuwählen und das Shortcutmenü sichtbar zu machen. Auswahl von New: Sequence Diagram. Ein unbenanntes Sequenzdiagramm wird dem Browser hinzugefügt. Während das Sequenzdiagramm ausgewählt ist, Eingabe eines Namens für das Sequenzdiagramm: Mitarbeiter hinzufügen. Doppelklick auf das Sequenzdiagramm im Browser, um das Diagramm zu öffnen. Klick, um den Akteur Planer'' im Browser auszuwählen. Ziehen des Akteurs Planer'' in das Sequenzdiagramm. Klick, um das Objekticon in der Werkzeugleiste auszuwählen. Klick auf das Sequenzdiagrammfenster, um das Objekt zu platzieren. Während das Objekt ausgewählt ist, Eingabe des Objektnamens. Wiederholen der vorangegangenen Schritte für jedes Objekt im Szenario. Klick, um das Objektbotschaftsicon (message icon) in der Werkzeugleiste auszuwählen. 268

269 Klick auf den botschaftssendenden Akteur Planer'' oder das botschaftssendende Objekt und ziehen der Botschaftslinie zu dem empfangenden Akteur oder dem empfangenden Objekt. Während die Botschaftslinie ausgewählt ist, Eingabe des Botschaftsnamens. Falls nötig weitere Informationen zu der Botschaftslinie im Dialogfenster kommentieren. Wiederholen der Schritte14 bis 17 für jede Botschaft im Szenario. Gehen Sie mit der Maus auf das Sequenzdiagramm Mitarbeiter hinzufügen und aktivieren Sie es. Betätigen Sie die Funktionstaste F5. Es wird automatisch ein Zusammenspieldiagramm Mitarbeiter hinzufügen generiert. Wenn die Elemente übereinander erzeugt wurden (was i.A. der Fall sein wird), ziehen Sie sie auseinander. Tipp: Für den Fall, dass Sie es bei Ihrer Arbeit angenehmer finden, zuerst das Zusammenspieldiagramm zu erstellen, können Sie daraus ebenfalls mittels der Taste F5 ein Sequenzdiagramm automatisch erzeugen 269

270 Der Begriff OCL Entwicklung Begriffsabgrenzung Constraints Definition Constrainttypen Beispiel an einem Klassendiagramm 270

271 Object Constraint Language Konstrukte der OCL Das Konstrukt Self Konstrukttypen und -operationen Boolean Type Integer Type Real Type String Type Kollektion Type Typen: Set, Bag, Sequence Operationen zu den Typen Beispiele 271

272 Nutzerdefinierte Typen Typkonformit ä t Ü bung 272

273 urspr ü nglich entwickelt von IBM (1995) zur Verwendung als Business Engineering Language entworfen sp ä ter als formale Spezifikationssprache in die UML ü bernommen (1997 UML 1.1) OCL dient zur Spezifikation von WFRs (Wellformedness Rules) von UML-Modellen (auf Metamodellebene) Auch in UML 2.0 Standard 273

274 Object steht f ü r eine Komponente eines beliebigen Systems, das genauer spezifiziert, definiert oder beschrieben wird. Constraint steht f ü r eine Begrenzung oder Einschr ä nkung, die maximale oder minimale Werte annehmen kann. Language steht f ü r eine auf jede Implementierung anwendbare wenig-formale Sprache. 274

275 Object Constraint Language (OCL) ist Teil der Unified Modeling Language (UML) – Standardisierte, deklarative, seiteneffektfreie und formale Sprache f ü r die Definition von Constraints auf UML- Modellen, – F ü gt graphischen (UML-) Modellen pr ä zisierte Semantik hinzu, 275

276 Beispiel - Klassendiagramm 276

277 277

278 Constraints sind immer mit einem objektorientier-ten Modell verbunden (meist UML), k ö nnen in diesen an verschiedensten Stellen eingesetzt werden, schr ä nken den Wertebereich einer Variablen ein, helfen, Programmierfehler leichter zu erkennen. 278

279 Definition: Ein Constraint (Eine Einschr ä nkung) ist ein Pr ä dikat, dessen Wert wahr oder falsch ist. Boolesche Ausdr ü cke sind … Einschr ä nk- ungen. … OCL erlaubt die formale Spezifikation von Einschr ä nkungen f ü r einzelne Modellelemente (z.B. Attribute, Operationen, Klassen) sowie f ü r Gruppen von Modellelementen (z.B. Assoziationen) Brügge, B., Dutoit, A.H.: Objektorientierte Softwaretechnik mit UML, Entwurfsmustern und Java. PEARSON Studium,

280 Erl ä uterte Constrainttypen Invarianten Pre- & Postconditions Initial & Derived Value Package Context Operation Body Expression 280

281 Invarianten Definition: Eine Invariante ist ein Constraint, das f ü r ein Objekt w ä hrend seiner ganzen Lebenszeit wahr sein sollte. Syntax: context Typename inv: Ausdruck 281

282 Invarianten Beispiel: Die Kunden m ü ssen ü ber 18 Jahre alt sein. self.age >= 18 context: Client inv: self.age >= 18 context c: Client inv: c.age >= 18 context c: Client inv overAge: c.age >=

283 Preconditions Definition: Eine Precondition ist ein Boolescher Ausdruck, der zum Zeitpunkt des Beginns der Ausf ü hrung der zugeh ö rigen Operation wahr sein muss. Syntax: context Typename :: operationName (param1: Type1, … ) : ReturnType pre: param1 > … 283

284 Preconditions Beispiel: Das Einkommen eines Kunden muss vor einem Leihauftrag mehr als 1500 sein (als Sicherheit). context Client :: income (d: Date) : Integer pre: income >

285 Postconditions Definition: Eine Postcondition ist ein Boolescher Ausdruck, der unmittelbar nach der Ausf ü hrung der zugeh ö rigen Operation wahr sein muss. Syntax: context Typename :: operationName (param1: Type1, … ) : ReturnType post: result = … 285

286 Postconditions Beispiel: Das Einkommen eines Kunden darf nach der Operation nicht weniger als 1000 betragen (bei Ratenzahlung eine m ö gliche Postcondition). context Client :: income (d: Date) : Integer post: result >=

287 Initial & Derived Values mit derive kann man den Wert eines abgeleiteten Attributes durch eine Formelfestlegen; bei jedem lesenden Zugriff auf das Attribut wird die Formel berechnet mit init kann man einen initialen Wert f ü r ein Attribut festlegen, der sp ä terdurch Zuweisungen ü berschrieben werden kann Syntax context Typename :: attributeName: Type init: --Ausdruck context Typename :: assocRoleName: Type derive: --Ausdruck 287

288 Initial & Derived Values Beispiel: F ü r ein neues Auto wird ein Zehntel des Neupreises als Kaution verlangt, f ü r ein 10 Jahre altes Auto nichts. context RentalContract :: deposit() : Integer init: motorVehicle.price * (10 - motorVehicle.age) / 100 derive: if motorVehicle.age < 10 then motorVehicle.price * (10 - motorVehicle.age) / 100 else 0 endif 288

289 Package Context wird benutzt, wenn Kontext- deklaration nicht pr ä zise genug ist, kann in gesonderte Datei gespeichert werden. Syntax: package Package::SubPackage context X inv: … Invariante … context X ::operationName( … ) pre: … Precondition … endpackage 289

290 Operation Body Expression Wird benutzt, um das Ergebnis einer Abfrageoperation anzuzeigen, Der Ausdruck muss dem Ergebnistyp (result) einer Operation entsprechen, Kann mit Pre- und Postconditions gemischt werden. Syntax: context Typename::operationName(param1: Type1, … ): ReturnType body: --Ausdruck 290

291 self bezieht sich explizit auf das betrachtete Objekt der ausgew ä hlten Klasse, wird benutzt, wenn der Kontext nicht eindeutig ist. Beispiel: context Client Inv: self.age >=

292 Konstrukte der OCL Jedes Objekt hat einen Typ, der die auf das Objekt anwendbaren Operationen definiert. Es gibt zwei verschiedene Typenarten: –Vordefinierte Typen Boolean Integer Real String Collection –Set –Bag –Sequence –Collection –Benutzerdefinierte Typen 292

293 Konstrukte der OCL Boolean Type Werte: true, false Operationen: 293

294 Konstrukte der OCL Boolean Type – implies besteht aus zwei boolschen Operationen Gesamter Ausdruck ergibt true, wenn Ergebnis des ersten sowie des zweiten boolschen Ausdrucks true ist Ergebnis des ersten Ausdrucks false ist Beispiel für implies: context Client isMale implies title = Mr. 294

295 Konstrukte der OCL Integer Type Wertebereich: Menge der ganzen Zahlen ohne Obergrenze Operationen: –Addition, Subtraktion, Multiplikation, Division –Modulus, Integer Division, Absolutwert, Minimum. 295

296 Konstrukte der OCL Real Type Wertebereich: Gleitkommazahlen ohne Obergrenze Operationen: –Addition, Subtraktion, Multiplikation, Division Rundungsoperationen für Real: –Abrunden auf den nächstgelegenen Integer-Wert Bsp.: (3.6).floor ergibt 3 –Runden auf die nächste Integer-Zahl Bsp.: (3.6).round ergibt 4 296

297 Operationen f ü r integer und real 297

298 String Type Notation: Strings in halben Anführungszeichen Operationen für Strings: Verbindung: string.concat(string)Willy.concat(und Harry) = Willy und Harry Länge: string.size Willy.size = 5 Substring: string.substring(int,int) Willy und Harry.substring(11,15) = Harry 298

299 Konstrukte der OCL Operationen für Strings: Kleinbuchstaben: string.toLower Willy.toLower = willy Großbuchstaben: string.toUpper Willy.toUpper = WILLY Gleichheit: string1 = string2 (Willy=Harry) = false Ungleichheit: string1 <> string2 (Willy<>Harry) = true 299

300 Konstrukte der OCL Collection Type vier vordefinierte Kollektionstypen –konkrete Typen: Set, Bag, Sequence –abstrakter Typ: Collection Notation: –Elemente in geschwungenen Klammern –konkreter Typ vor der Klammer 300

301 Konstrukte der OCL Collection Type Set: keine doppelten Elemente z.B.: Set{1,3,5,7} oder Set{Apfel,Birne} Bag: Mehrfachelemente möglich; übliches Ergebnis bei der Kombination von Navigationen z.B.: Bag{1,3,5,7,1,5} Sequence: wie Bag; Elemente sind nach Sequenznummer geordnet z.B.: Sequence{1,3,5,7,1} und Sequence{3,1,5,7,1} entsprechen sich nicht 301

302 Konstrukte der OCL Collection Type alle Operationen für Kollektionen werden in Pfeil-Notation geschrieben Sequence{derive: motorVehicle -> size()} Kollektionen werden automatisch zusammengefaßt Set{Set{1,2},Set{3,4},Set{5,6}} = Set{1,2,3,4,5,6} 302

303 Konstrukte der OCL Collection Type Collection Type - Operationen 303

304 304

305 Konstrukte der OCL Operation equals equals ergibt true, wenn –zwei Sets dieselben Elemente enthalten Set {1,2,5,88} = Set {2,88,1,5} –bei zwei Bags auch die Anzahl des jeweiligen Elements gleich ist Bag {Willi,Erna,Horst,Willi} = Bag {Erna,Willi,Horst,Willi} –bei Sequenzen zudem die Reihenfolge gleich ist –Sequence {1..(6+4)} = Sequence {1,2,3,4,5,6,7,8,9,10} 305

306 Konstrukte der OCL Operation union Kombination von zwei Kollektionen –Set mit Bag Set {1,2,5,88}-> union( Bag {3,7,27} ) = Bag {1,2,5,88,3,7,27} –eine Sequence kann nur mit einer anderen Sequence kombiniert werden 306

307 Konstrukte der OCL Operation including hinzufügen von Elementen –bei Sets nur, wenn das Element noch nicht vorhanden ist Set{1,2,5,88}-> including({27,5}) = Set{1,2,5,88,27} –bei einer Sequence wird am Ende eingefügt Sequence{1,2,5,88}-> including({27}) = Sequence{1,2,5,88,27} 307

308 Konstrukte der OCL Operation excluding entfernt ein Element –bei einem Set wird nur ein Element entfernt Set{1,2,5,88}-> excluding({5}) = Set{1,2,88} –bei Bag und Sequence bei jedem Auftreten entfernen Sequence{1,2,5,2,88}-> excluding({2}) = Sequence{1,5,88} 308

309 Konstrukte der OCL Operation intersection erzeugt neue Kollektion mit allen Elementen, die in zwei Kollektionen enthalten sind alle Kombinationen möglich, außer in Verbindung mit einer Sequence Set {1,2,5,88} -> intersection( Bag {5,5,1} ) = Set {1,5} Bag {1,2,5,1,88} -> intersection( Bag {1,27,5,1} ) = Bag {1,5,1} 309

310 Konstrukte der OCL Spezielle Operationen für Set minus –Set{1,4,7,10} – Set{4,7} = Set{1,10} symmetricDifference –neues Set mit Elemente, die nicht in beiden Sets enthalten sind Set{1,4,7,10}.symmetricDifference(Set{4,5,7}) –= Set{1,5,10} 310

311 Konstrukte der OCL Spezielle Operationen für Sequence first bzw. last –Ausgabe des ersten bzw. letzten Elements Sequence{1,4,7,10} -> last = 10 Sequence{1,4,7,10} -> first = 1 at() –Element an der angegebenen Position Sequence{1,4,7,10} -> at(3) = 7 –append() bzw. prepend() –Einfügen an letzter bzw. erster Position Sequence{1,4,7,10} -> prepend(15) = Sequence{15,1,4,7,10} 311

312 Konstrukte der OCL Operationen für Elemente einer Collection Select Parameter ist ein boolscher Ausdruck Ergebnis ist eine neue Kollektion –Unterstruktur der Ausgangskollektion Syntax: collection->select( element : Type | ) collection->select( element | ) collection->select( ) 312

313 Konstrukte der OCL Operationen für Elemente einer Collection reject ergibt neue Kollektion mit Elementen, für die der boolsche Ausdruck false ergibt collect Ergebniskollektion muss nicht eine Unterstruktur der Ausgangskollektion sein durch Anwendung auf ein Set kann ein Bag entstehen 313

314 Konstrukte der OCL Operationen für Elemente einer Collection exists prüft die Elemente auf Existenz des Parameters Ergebnis ist vom Typ Boolean forAll spezifiziert eine Bedingung, die für alle Elemente zutreffen muß Ergebnis ist vom Typ Boolean 314

315 Konstrukte der OCL Operationen für Elemente einer Collection iterate vorherige Operationen sind Spezialfälle von iterate Syntax: collection-> iterate(element : Type1;result : Type2 = | ) 315

316 Quelle: Schürr

317 Nutzerdefinierte Typen Durch den Benutzer definierte OCL-Typen neue Typen haben die gleiche Gültigkeit wie vordefinierte Typen Klassentypen Aufzählungstypen 317

318 Nutzerdefinierte Typen jede Klasse im Klassendiagramm ist ein Klassentyp (Modelltyp) im OCL-Ausdruck Name aus dem UML-Modell wird übernommen Generalisierung zwischen den Klassen führt zu Supertypen 318

319 Nutzerdefinierte Typen Attribute Operationen und Methoden Klassenattribute Klassenoperationen Assoziationsenden (Navigationsausdrücke) 319

320 Nutzerdefinierte Typen Gültige Arten für Nutzerdefinition sind: Typen Klassen Interfaces Assoziationen Akteure Use Cases Datentypen 320

321 Nutzerdefinierte Typen Klassenattribute im UML-Modell sind gültige Attribute im OCL. Beispiel: Customer self.name 321

322 Nutzerdefinierte Typen Seiteneffektfrei Nur Operationen, die den Zustand aller anderen Objekte nicht verändern. Query Operations Operationen, die nur einen Rückgabewert liefern, aber keine Veränderungen vornehmen. Beispiel: Customer self.age() >= 0 322

323 Nutzerdefinierte Typen abgeleitet aus den Assoziationen Name der Navigationen: –Rollenname am anderen Ende einer Assoziation oder –Name des Typen am Ende der Assoziation in Kleinbuchstaben Ergebnis: –Modelltyp bei einem Wert oder –Kollektion von Modelltypen bei mehreren Werten 323

324 Nutzerdefinierte Typen im UML ist Mehrfachvererbung möglich Problem: CassetteBook self.volume < 10 nicht eindeutig, ob volume von Book oder Cassette gemeint ist 324

325 Nutzerdefinierte Typen Lösung: Das im OCL vorhandene pathname Konstrukt. Beispiel: CassetteBook self.Cassette::volume <

326 Nutzerdefinierte Typen Aufzählungen häufiger Attributtyp in der UML Darstellung im UML-Modell: enum{wert1, wert2, wert3} wird ein Wert in einem OCL-Ausdruck benutzt, muss das `#`-Symbol vorangestellt werden Customer gender = #male implies title = ´Mr.´ 326

327 Typkonformit ä t OCL ist eine getypte Sprache Basistypen sind in einer Typenhierarchie organisiert innerhalb eines OCL-Ausdrucks müssen alle Typen konform sein Regeln zur Gewährleistung der Konformität: –jeder Typ ist zu sich selbst konform –jeder Typ ist konform zu seinem Supertyp –Typenkonformität ist transitiv 327

328 Typkonformit ä t TypeKonform zu/ Supertyp Set Sequence Bag Integer Collection Real 328

329 Ü bung Ein Objekt der Klasse Teilnahme muss immer gültige Verweise auf die assoziierten Objekte Spiel und Spieler besitzen. context Teilnahme t inv: (t.Spieler != null) && (t.Spiel != null) 329

330 Ü bung Nimmt ein Spieler an einem Spiel teil, so kann er während der nächsten 105 Minuten nicht an einem anderen Spiel teilnehmen. context Spieler spieler inv: forall Spiel s1,s2 in spieler.teilnahme.spiel: (s1 != s2) implies ((s1.getDatum() > s2.getDatum() * 60) || (s2.getDatum() > s1.getDatum() * 60)) 330

331 Ü bung Sobald 11 Spieler für ein Spiel nominiert wurden ist die Mannschaft komplett. context Spiel::mannschaftKomplett():boolean pre: true post: result == (teilnehmer.size() >= 11) 331

332 Links zur UML magdeburg.de/~dumke/UML/inhalt.htm magdeburg.de/~dumke/UML/inhalt.htm heidelberg.de/groups/comopt/lehre/uml/ heidelberg.de/groups/comopt/lehre/uml/ datacom.de/sd/publications//os/1998/02/OB JEKTspektrum_UM_kompakt.htm 332

333 Qualitätssicherung Unter den Sammelbegriff Qualitätssicherung im SE fallen diverse Verfahren, die parallel zu den Vorgehensmodellen für eine ständige Überprüfung und Messung (mit quantitativen Methoden) der Prozesse und Ergebnisse sorgen. Diese Verfahren wurden zum Teil aus dem Bereich der Fertigung übertragen (ISO9000, TQM). 333

334 Qualitätssicherung Ein wesentlicher Aspekt dieser QS- Verfahren ist die dem Kunden eröffnete Kontrollmöglichkeit und die Einbeziehung externer Organisationen (z.B. zur Zertifizierung). 334

335 Verfahren der Qualitätssicherung ISO 9000 TQM CMM / CMMI Bootstrap Spice 335

336 Exkurs: XP als Antithese zum SE 336

337 Einleitung Angeklagt: Agile Prozesse Angeklagt sind die agilen Prozesse, vertreten durch die Verteidiger von Extreme Programming (XP), Crystal Methodenfamilie, Adaptive Software Development, Scrum und die Agile Alliance. Die Anklage lautet auf - Verrat am Software Engineering, - Versuch des Umsturzes durch Wiedereinführung wilden Hackens - sowie auf Totschlag tausender Arbeitsplätze - und Milliarden Umsätzen in der Software-Industrie. Als Schöffen entscheidet das Auditorium über das Urteil. Für sachdienliche Hinweise... Quelle: Delegate Information zur OOP

338 Ansätze Das Revolutionäre an XP Extreme Programming stellt bisherige Paradigmen des Software Engineering auf den Kopf: - Entwickler spezialisieren sich nicht zu Analysten, Programmierern, Testern oder Integratoren - jeder ist für alles zuständig. Deshalb wurden Programmierrichtlinien an XP angepasst. - Das Projekt wird nicht durchgeplant. Eine schnelle Analyse wird im Laufe des Projekts weiter verfeinert und verändert. - Die Projektphasen bisheriger SE-Modelle werden parallelisiert: Es wird laufend das Design angepasst, getestet, integriert... - Es gibt keine Dokumentation im herkömmlichen Sinn. Dokumentiert wird durch Tests und programmierten Code. - XP versucht, den Problemem und Risiken des herkömmlichen Software Engineering aktiv entgegenzuwirken. 338

339 Planung Projektablauf im Vergleich Design Implementierung Test Integration Planning Game Release Story Task Zeit Vorstudie Analyse Design Konstruktion Test Einführung Extreme Programming Wasserfall- modell 339

340 Planung Planning Game Im Planning Game stecken Kunde und Entwickler die Eckpunkte des Projekts ab. KundeStory Cards Gliederung der Funktionalität Priorisierung nach Wert, Risiko, Aufwand, Umfang der Releases EntwicklerArchitektur Abschätzung der Möglichkeiten für Architektur Releaseplanung Zeitplanung für 1. Release Aufteilung in Iterationen 340

341 Planung Iterationsplanung In der Iterationsplanung verteilt werden Stories an die Entwickler verteilt und geplant. EntwicklerTask CardsFeinplanung der Stories Taskverteilung Aufwandsschätzung evtl. Taskumverteilung Kundebekommt Feedback von Entwicklern. 341

342 Projektumfeld Arbeitsplätze Für die Umsetzung von Extreme Programming sind speziell angepasste Arbeitspläte nötig. Zentrale Forderung: Kommunikation soll gefördert werden, ohne die Privatsphäre zu verletzen. Großraumbüro mit private cubbies. Entwicklungsrechner im Zentrum des Raums. Communal Corner mit Kaffeemaschine, Couch, Snacks. leise Telefone, gedämpftes Licht. Team soll von anderen Teams getrennt sein. 342

343 Projektumfeld 40-Stundenwoche Extreme Programming lebt von der Kreativität und Motivation des Teams. Um Kreativität und Motivation langfristig zu erhalten - sollte die Wochenarbeitszeit um 40 Stunden liegen, - die 40-Stundenwoche nicht an zwei aufeinanderfolgenden Wochen signifikant überschritten werden. Wird mehr gearbeitet als 40 Stunden pro Woche, - lassen Kreativität, Motivation, Konzentration und Leistungsfähigkeit nach. - gibt es größere Probleme im Projekt, die sich durch Überstunden nicht lösen lassen. 343

344 Projektumfeld On-Site Customer Um ein Projekt im Sinne des Kunden zu erarbeiten, - muss ein Mitarbeiter des Kunden ständig vor Ort sein, - muss der abgestellte Mitarbeiter die nötigten Kenntnisse haben, um auf fachspezifische Fragen der Programmierer einzugehen. Ein Mitarbeiter des Kunden vor Ort - verkürzt die Dauer des Projekts, - verhindert, dass am Kunden vorbei entwickelt wird, - kann Functional Tests schreiben (lassen). 344

345 Umsetzung Simple Design Das Design sollte so gehalten werden, dass - es minimal bleibt: so wenige Klassen und Methoden wie möglich und so viele wie nötig. Doppelte Logik ist unerwünscht. - es an veränderte Bedürfnisse angepasst werden kann, - jeder Gedanke des Programmiers deutlich wird, - alle Tests durchlaufen. Die Software wird nur bei Bedarf erweitert. Es wird nicht vorsorglich Funkionalität eingebaut. exponentielles Ansteigen der Cost-Of-Change-Kurve wird vermieden. 345

346 Umsetzung Testing I Design-, Architektur- und Codeänderungen führen nur dann zum Erfolg, wenn sie durch Tests abgesichert sind. Deshalb stehen Tests im Mittelpunkt von Extreme Programming. Zunächst gibt es 2 grundlegende Testtypen: - functional tests des Kunden - story-by-story - Erfüllungsgrad erst zu Ende 100% - operational tests der Entwickler - method-by-method - Erfüllungsgrad von Anfang an 100% Weitere Testtypen: Vergleichstest mit altem Programm, Lasttests 346

347 Umsetzung Testing II Die Entwicklung eines Tests - Der Test muß vor dem eigentlichen Coden programmiert werden. - Ein Test darf einen anderen Tests nicht beeinflussen. Der Ablauf von Tests - Die Tests müssen automatisiert werden können. - Alle Tests laufen zusammen ab. - Tests werden nach jeder Codeänderung gestartet. Durch Tests - werden Funktionalität und Qualität sichergestellt. - wird das Selbstbewusstsein bei Entwicklern und Kunden gesteigert. 347

348 Umsetzung Pair Programming An der Programmierung von Code sind 2 Programmierer beteiligt: - Ein Programmierer tippt den Code ein. - Der Partner denkt strategisch: - Führt die Implementierung zum Ziel? - Gibt es noch Testfälle, die abzuprüfen sind? - Kann das Problem vereinfacht werden? Pair Programming ist - dynamisch: die Paare wechseln ständig, - nicht für jeden Typ Programmierer geeignet. Wissen wird gestreut und macht Team leistungsfähiger. Die Wahrscheinlichkeit, sich festzufahren, fällt. 348

349 Dem Problem vom unwartbaren Code eines Programmiergurus tritt Extreme Programming mit 3 Prinzipien entgegen: Coding StandardsEs gibt für alle Programmierer einheitliche Programmierrichtlinien, Collective OwnershipJeder Programmierer jeden Teil des Codes ändern, RefactoringDer Code wird vereinfacht, wenn er vereinfacht werden kann. Einfacher, verständlicher, stabiler und wartbarer Code. Umsetzung 349

350 Umsetzung Continous Integration Um kurze Releasezyklen zu ermöglichen, - sollte mindestens einmal täglich integriert werden, - fließen Änderungen zentral an einem Rechner zusammen Integration inkompatiblen Codes wird vermieden. Continous Integration erfordert - kleine Objekte und Methoden, - Refactoring und Simple Design, - das erfolgreiche Durchlaufen aller Tests. Minimales Risiko, da Bug in letzten Stunden entstand. Kein Verrennen in Probleme. 350

351 Bewertung Wann ist XP nicht sinnvoll? Für XP gibt es K.O.-Kriterien, die einen Einsatz ausschließen. Extreme Programming wird zur Farce, wenn der Kunde- nicht bereit ist, XP-Prinzipien anzuwenden und zuzulassen.... das Team- dauerhaft unter Druck steht und Überstunden machen muß, - XP-untaugliche Arbeitsplätze hat, - ein Mitglied hat, das sich gegen XP-Richtlinien sträubt.... das Projekt- so überschaubar ist,daß kein Vorgehensmodell benötigt wird. - so groß ist, daß - mehr als 10 Entwickler benötigt werden, - mehr als ein Integrationsrechner benötigt wird, - der Test- oder Integrationszyklus Stunden benötigt. 351

352 Bewertung Wann ist XP sinnvoll? Extreme Programming ist eine Überlegung wert, wenn keiner der Punkte auf der vorherigen Folie zutrifft. 352

353 Quellen zu XP Beck, Kent: extreme Programming explained: embrace change Upper Saddle River, NJ, Addison-Wesley, Grundlagen, Prinzipien und Funktionsweise von XP - keine theoretischen Fallstudien und tiefgehende Details, aber Beispiele aus der Praxis und umfassender Überblick - auch in deutsch erhältlich unter dem Titel Extreme Programming - Das Manifest (Addison-Wesley) - weitergehende Informationen - Anwendungsbeispiele aus der Praxis 353


Herunterladen ppt "Folien zum Software Engineering Aus urheberrechtlichen Gründen (Verletzung von Rechten Dritter) dürfen Sie diese Foliensammlung nicht öffentlich zur Verfügung."

Ähnliche Präsentationen


Google-Anzeigen