Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Engineering © Ludewig, J., H. Lichter: Software Engineering – Grundlagen, Menschen, Prozesse, Techniken. 2. Aufl., dpunkt.verlag, 2010. 2Grundbegriffe.

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering © Ludewig, J., H. Lichter: Software Engineering – Grundlagen, Menschen, Prozesse, Techniken. 2. Aufl., dpunkt.verlag, 2010. 2Grundbegriffe."—  Präsentation transkript:

1 Software Engineering © Ludewig, J., H. Lichter: Software Engineering – Grundlagen, Menschen, Prozesse, Techniken. 2. Aufl., dpunkt.verlag, Grundbegriffe 2.1Kosten 2.1Engineering und Ingenieur 2.3Software 2.4Arbeiten, die an Software ausgeführt werden 2.5Weitere Grundbegriffe

2 Begriffe im Software Engineering Im privaten Leben sind die meisten Aussagen vage, mehrdeutig, nicht völlig verständlich und ganz unvollständig, weil sie einen bestimmten Kontext voraussetzen. Das hat Nachteile, aber auch viele Vorteile. In Technik und Wissenschaft versuchen wir, möglichst präzise, eindeutige, verständliche und vollständige Aussagen zu machen. (Natürlich ist das ein Ideal, das wir niemals erreichen.) Wir beginnen darum mit einigen für das Thema wichtigen Begriffen. Die meisten dieser Begriffe sind aus dem Alltag übernommen; sie haben dann meist im Software Engineering nicht die genau gleiche Bedeutung wie im Alltag. (Sonst wären sie ja wieder vage usw.) 2

3 2.1Kosten

4 Kosten - 1 Wenn wir ein Problem lösen wollen, haben wir meist mehrere Möglichkeiten (einschließlich der Möglichkeit, das Problem nicht zu lösen). Wir suchen dann die unter den konkreten Bedingungen beste Lösung. Da sich die Lösungen in der Regel auf viele Weisen unterscheiden, ist es nur selten möglich zu sagen, welche Lösung am besten ist. 4

5 Kosten - 2 Um einen rationalen Vergleich durchzuführen, brauchen wir einen einheitlichen Maßstab. In der Technik sind das meist die Kosten. Kosten sind nicht nur Zahlungen, die zu leisten sind. Dazu zählen auch alle anderen Nachteile, die eine Lösung hat. Hat eine Lösung einen speziellen Vorteil, dann können wir diesen in Form von negativen Kosten in die Betrachtung einbeziehen. 5

6 Beispiel Sie wollen eine bestimmte Vorlesung besuchen. Sie haben verschiedene Möglichkeiten, zur Vorlesung zu kommen (zu Fuß, per Rad, mit dem Auto, mit der S-Bahn). Die Fahrt mit der S-Bahn erzeugt Kosten durch den Fahrschein. Weitere Kosten entstehen durch Risiken und Unbequemlichkeiten. Bei der Fahrt mit dem Auto entstehen Kosten durch den Spritverbrauch, die Abnutzung und ebenso durch Risiken und andere Nachteile. Sie können auch beschließen, im Bett zu bleiben und auf die Vorlesung zu verzichten. In diesem Falle sind die Kosten durch den entgangenen Wissensgewinn entstanden, vielleicht auch durch entgangene soziale Kontakte. 6

7 Quantifizierung und Abgrenzung - 1 Die genannten Kosten sind überwiegend nicht quantifiziert. Wir könnten sie aber prinzipiell quantifizieren und dann vergleichen. Ein (grundsätzlich nicht lösbares) Problem ist die Abgrenzung: Welche Kosten beziehen wir ein? Eine Fahrt mit dem Auto erzeugt auch Kosten für andere Menschen, durch den Verbrauch fossiler Brennstoffe auch für Menschen, die wir nicht kennen, die sogar weit weg sein können oder erst später geboren werden. Sind das Kosten im Sinne unserer Optimierung, also Kosten, die wir zu vermeiden suchen? Einige dieser Kosten sind durch Vorschriften und Gesetze erfasst; im Übrigen ist das eine ethische Frage, die jeder Mensch selbst erwägen und beantworten muss. 7

8 Quantifizierung und Abgrenzung - 2 Und haben Kosten, die später anfallen, das gleiche Gewicht wie Kosten, die wir sofort spüren? Hier entscheidet der Bauch oft anders, als es der Verstand täte. In jedem Fall gilt (für uns wie für alle Ingenieure): Wir suchen Lösungen, die die Kosten minimieren. Solche Lösungen erzeugen oft zunächst scheinbar höhere Kosten; ihre Vorteile werden erst mittel- und langfristig sichtbar. 8

9 2.2 Engineering und Ingenieur

10 Engineering und Ingenieur Etymologie: Ingenieur = Baufachmann für Festungen (d.h. Bauingenieur mit dem Spezialgebiet Festungen), dann allgemein für militärische Einrichtungen und Maschinen. 18. – 19. Jh.: Wandlung in die heute übliche Bedeutung: Bild des Ingenieurs, der alle Probleme löst und kraft seines Verstandes Dinge vollbringt, die wie Zauberei erscheinen. Max Eyth (1836–1906) (Hinter Pflug und Schraubstock) hat das Bild des Ingenieurs in Deutschland wesentlich geprägt. (Tipp: Buch in einer Bibliothek suchen und reinlesen!) 10

11 Merkmale, Prinzipien - 1 Rationalität, Anwendung der Wissenschaft als Grundprinzip Der Ingenieur ist ein Feind des Aberglaubens, ein Verehrer der Zahlen und Formeln, also ein Kind der Aufklärung, das alles mechanistisch zu erklären sucht und ablehnt, was (ihm) nicht erklärbar ist. 11

12 Merkmale, Prinzipien - 2 Problemlösen als eigentliche Aufgabe Die Rationalität verbindet den Ingenieur mit jedem Naturwissenschaftler, aber dieses Merkmal unterscheidet die beiden Gruppen deutlich. Der Naturwissenschaftler will Probleme formulieren, vermeiden, ihre Ursachen erkennen und bekämpfen, kurz: die Welt verstehen und erklären. Der Ingenieur will Probleme lösen, indem er die Welt technisch verändert, also baut, Distanzen überbrückt, Energie verfügbar macht, oder die größtmögliche Zerstörung anrichtet. 12 Scientists build to learn, engineers learn to build Fred Brooks (1977)

13 Merkmale, Prinzipien - 3 Das folgende Gedicht verherrlicht den Ingenieur: Welchen tieferen Sinn haben diese Handlungen? Anscheinend keinen! Die Sinnfrage wird nicht gestellt, Problemlösen ist Selbstzweck! 13 Dem Ingenieur ist nichts zu schwere – Er lacht und spricht: Wenn dieses nicht, so geht doch das! Er überbrückt die Flüsse und die Meere, Die Berge unverfroren zu durchbohren ist ihm Spaß. Er türmt die Bogen in die Luft, Er wühlt als Maulwurf in der Gruft, Kein Hindernis ist ihm zu groß – Er geht drauf los! Heinrich Seidel (1842–1906)

14 Merkmale, Prinzipien - 4 Kostenbewusstsein statt Perfektionismus Eine Lösung ist gut, wenn ihr Nutzen hoch ist, ihre Kosten gering sind. Daher ist ein guter Ingenieur kein Perfektionist: Eine perfekte Lösung hat nur selten ein günstiges Preis/Leistungsverhältnis. Universeller Anspruch, der nicht vor Fachgrenzen Halt macht Ein Ingenieur kapituliert nicht, wenn das Problem die Grenzen seines Fachs überschreitet. Er ist in diesem Sinne Generalist. 14

15 Was können wir lernen? - 1 Ingenieure entwickeln Methoden und wenden sie an, realisieren und gebrauchen Werkzeuge. Aber das tun andere auch. Dagegen sind die folgenden Punkte für Ingenieure charakteristisch: Kosten als Grundlage von Bewertungen (siehe oben) Ich finde, dass... ist lächerlich, objektive Kriterien sind relevant, insbesondere Kosten. Praktischer Erfolg als einziger zulässiger Beweis Plausible Argumente haben nur vorläufigen Nutzen, Erfolg zählt, erfordert Messungen. Nur was gezählt oder gemessen wurde, ist ein akzeptables Argument. 15

16 Was können wir lernen? - 2 Qualitätsbewusstsein als Denkprinzip Hohe Qualität ist ein Prinzip der unspezifischen Kostensenkung. Dieser Ansatz kommt aus der handwerklichen Tradition, die die Ingenieure übernommen haben. Die Einführung und Beachtung von Normen Normen schaffen passende Schnittstellen (vgl. Norm für Passstifte). Normen gibt es auch für Verfahren und Begriffe. Merke: Eine Norm wird immer beachtet! Denken in Baugruppen Durch Normen entsteht die Möglichkeit, Baugruppen zu verwenden, also die Lösung der Teilprobleme auszuklammern. 16

17 2.3Software

18 Software Tipp: Schauen Sie mal in die IEEE Software Engineering Standards! Software umfasst also nach IEEE Std Programme, Abläufe, Regeln, auch Dokumentation und Daten, die mit dem Betrieb eines Rechnersystems zu tun haben. 18 software - Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system. See also: application software; support software; system software. Contrast with: hardware. IEEE Std

19 Ein Produkt wie jedes andere? Generell kann und sollte Software als technisches Produkt betrachtet werden, das wie jedes andere Produkt von Ingenieuren systematisch entwickelt werden kann und durch feststellbare Eigenschaften (Funktionalität, Qualität) gekennzeichnet ist. Software ist sogar frei von allen Unwägbarkeiten, die anderen technischen Produkten anhaften. Sie ist in diesem Sinne das ideale technische Produkt. Als Software-Leute sollten wir darum keine spezielle Nachsicht erwarten. Software weist aber (wie viele andere Produkttypen) einige besondere und - wenigstens in dieser Kombination - einmalige Merkmale auf: Sie sollten beim Umgang mit Software beachtet werden. 19

20 Eigenschaften der Software - 1 Software ist immateriell. Was wir als natürlich empfinden, ist an materielle Eigenschaften geknüpft. An Software ist nichts natürlich. Erfahrungen aus der natürlichen Welt sind nicht auf die Software übertragbar (werden dennoch ständig übertragen) Analogie: Röntgenstrahlen Software wird nicht gefertigt, sondern nur entwickelt. Kopie und Original sind völlig gleich, nicht unterscheidbar. Software verschleißt nicht; die Wartung stellt nicht den alten Zustand wieder her, sondern einen neuen. Fehler entstehen nicht durch Abnutzung, sondern sind eingebaut. Wiederverwendung ist bei Software extrem lukrativ, wenn der Aufwand für Anpassungen relativ gering ist. Programmierer unterschätzen meist das Problem (... oder überschätzen sich selbst!) 20

21 Eigenschaften der Software - 2 Natürliche Lokalität gibt es bei Software nicht. Im Speicher des Rechners gibt es keine schützende Distanz, und alle Rechner der Welt stehen nebenan. Die Softwaretechnik muss Distanz herstellen. Software-Systeme sind sehr komplex. Nach der Zahl der darin enthaltenen (relevanten) Elementarentscheidungen sind sie komplexer als alle anderen Artefakte. Die Entwicklungskosten sind unvermeidlich hoch. 21

22 Eigenschaften der Software - 3 Ein Programm realisiert keine stetige Funktion. Der Zusammenhang zwischen Eingabe und Ausgabe lässt sich nicht durch eine kontinuierliche Funktion beschreiben. Die Funktionalität ist nicht durch Test validierbar. 22

23 Fehler in einem mechanischen System Eine Stahlfeder, ideal und mit kleinem Fehler 23

24 Fehler in einem digitalen System Eine virtuelle (digitale) Stahlfeder, mit kleinem Fehler 24

25 Excel-Fehler

26 Eigenschaften der Software - 4 Software-Systeme müssen autonom funktionieren. Die meisten komplexen Artefakte funktionieren nur, wenn und solange Menschen immer wieder eingreifen und Mängel, Defekte und Widersprüche beseitigen oder kompensieren. Software benötigt dagegen nur sehr selten Wartungseingriffe. Zwischen Systemabstürzen liegen typisch Milliarden korrekt ausgeführter Operationen. Die Software funktioniert also über weite Strecken autonom. Auch außergewöhnliche Situationen, die nur im Abstand von Milliarden Operationen auftreten, müssen als Normalfälle behandelt werden. 26

27 Eigenschaften der Software - 5 Die Werkstoffe der Software sind amorph und universell. Werkstoffe sind die eingesetzten Sprachen, meist nur die natürliche Sprache und die Programmiersprache, evtl. noch andere, z. B. graphische Notationen. Strukturen entstehen nicht, sie müssen geschaffen werden. Software spiegelt – in vielen (in allen?) Fällen – die Realität. Sie verbindet Hardware und Umgebung. Die Details der Aufgabenstellung werden in aller Regel durch Software realisiert; Änderungen schlagen sich primär in der Software nieder This complexity is compounded by the necessity to conform to an external environment that is arbitrary, unadaptable, and ever-changing. F.P. Brooks Jr., 1987

28 2.4Arbeiten, die an Software ausgeführt werden

29 Übersicht der Arbeiten - 1 Analyse Ziel der Analyse ist, das bestehende Problem zu durchdringen und zu verstehen. Dabei wird auch geklärt, inwieweit Software eingesetzt werden kann, um das Problem zu lösen, und welche Aufgaben von der zu entwickelnden Software übernommen werden sollen. Spezifikation der Anforderungen Die in der Analyse festgestellten Anforderungen müssen geordnet, dokumentiert, geprüft, ergänzt und korrigiert werden. Die meisten folgenden Arbeiten stützen sich auf die Spezifikation! 29

30 Übersicht der Arbeiten - 2 Architekturentwurf, Spezifikation der Module Software-Systeme bestehen aus Modulen oder Komponenten, die miteinander die Gesamtfunktionalität des Systems bieten. Gesamtstruktur = Software-Architektur. Die Schnittstellen der Komponenten werden so präzise wie möglich festgelegt, damit die Komponenten parallel entwickelt und am Ende problemlos integriert werden können. Codierung und Modultest Die Module werden in der gewählten Programmiersprache codiert und auf der Basis ihrer Spezifikation getestet und korrigiert. 30

31 Übersicht der Arbeiten - 3 Integration, Test, Abnahme Das System wird aus den fertig gestellten Modulen zusammengebaut (integriert) und getestet. Schließlich Abnahme durch den Kunden. Betrieb und Wartung Das Software-System wird beim Auftraggeber installiert und in Betrieb genommen. Während der Nutzung des Systems fallen Fehler auf und werden behoben, und fast immer werden auch neue Anforderungen an das System gestellt und umgesetzt. 31

32 Übersicht der Arbeiten - 4 Auslauf und Ersetzung Jedes Software-System erreicht irgendwann einen Zustand, in dem die weitere Wartung unvertretbar aufwändig und schwierig ist. Dann wird es aus dem Betrieb genommen und in der Regel durch ein Nachfolgesystem ersetzt. 32

33 Tätigkeiten während der Entwicklungszeit Dazu gehören die Leitungsfunktionen, also Planung und Management, ebenso die Qualitätssicherung, die dafür sorgt, dass die Qualität geprüft und durch verschiedene Maßnahmen verbessert wird. Die Dokumentation erscheint hier nicht, weil sie Bestandteil aller Tätigkeiten ist. 33

34 2.5Weitere Grundbegriffe

35 Taxonomie Dieser Begriff kommt aus der Biologie. Beispiele: Lehrveranstaltungen klassifiziert als Vorlesungen, Übungen, Praktika usw.; Vorlesungen sind weiter klassifiziert in Grund- und Spezialvorlesungen usw. Software-Projekte klassifiziert als Kundenprojekte, Systemprojekte, Entwicklungsprojekte. Achtung: Jede Klassifikation ist willkürlich, also nicht objektiv richtig! 35 taxonomy A scheme that partitions a body of knowledge and defines the relationships among the pieces. It is used for classifying and understanding the body of knowledge. IEEE Std

36 Begriffe im Software Engineering Im Software Engineering gibt es viele unklare Begriffe! Darum: Ordnung in die Wörter bringen und ihre Beziehungen klären. Wenn möglich, wird hier der Begriffsstandard des IEEE zu Grunde gelegt. Oft ist es aber notwendig, neue Definitionen vorzuschlagen. Vorteilhaft: baumartige Begriffszerlegung, d. h. rekursive Zerlegung der durch einen Begriff bezeichneten Menge in disjunkte Klassen (Unterbegriffe). 36

37 Methoden, Sprachen, Werkzeuge - 1 Diese drei Wörter werden im Software Engineering oft verwendet – leider oft ohne klare Definitionen. Werkzeuge dienen zur Ausführung einer Arbeit, die – wenigstens prinzipiell – auch ohne das Werkzeug geleistet werden könnte. Im Produkt ist das Werkzeug nicht mehr enthalten, es sei denn als Ausrüstung für die Wartung. Im Software Engineering dienen Werkzeuge zur automatischen oder vom Benutzer gesteuerten Transformation, evtl. auch Speicherung, von Information. 37

38 Methoden, Sprachen, Werkzeuge - 2 Werkstoffe sind von den Werkzeugen deutlich unterschieden weil aus ihnen das Produkt geformt wird; Werkstoffe bleiben im Produkt. Wir benutzen als Werkstoffe unserer Produkte Sprachen, sowohl natürliche als auch formale. Eine Sprache (eine Notation) legt die möglichen Aussagen fest (Syntax) und deren Bedeutungen (Semantik). Methoden sind Handlungsanweisungen, also Regeln, die den Menschen bei der Wahl seiner Aktionen führen. Für einen bestimmten Werkstoff (Holz) gibt es bestimmte Werkzeuge (Hobel, Säge, Raspel), die mit bestimmten Methoden (Hobeln, Sägen, Raspeln) eingesetzt werden. Alle drei sind durch ein gemeinsames Konzept (spanabnehmende Bearbeitung) verbunden. So ist es auch in der Informatik. (Beispiel: Iteration) 38

39 Methoden, Sprachen, Werkzeuge - 3 Das Systemdreieck: Methoden, Sprachen und Werkzeuge sind im Idealfall durch gemeinsame Konzepte verbunden. 39

40 Effektiv und effizient Eine Lösung, die die geforderte Funktionalität aufweist, also im üblichen Sinne korrekt ist, ist effektiv. Wir verwenden das Wort allgemeiner auch bei Werkzeugen und Verfahren; ein effektives Werkzeug erfüllt seinen Zweck, ein effektives Verfahren führt zum Ziel. Eine Lösung, die von den Betriebsmitteln sparsamen Gebrauch macht, also mit wenig Rechenzeit und wenig Speicher auskommt, ist effizient. Das bedeutet: Effektivität ist eine Eigenschaft, die gegeben ist oder nicht, man kann sie nicht steigern. Effizienz ist dagegen in unterschiedlichem Maße vorhanden: Ein Programm kann effizienter sein als ein anderes. Es ist aber nur bei effektiven Programmen sinnvoll, über Effizienz zu reden. 40


Herunterladen ppt "Software Engineering © Ludewig, J., H. Lichter: Software Engineering – Grundlagen, Menschen, Prozesse, Techniken. 2. Aufl., dpunkt.verlag, 2010. 2Grundbegriffe."

Ähnliche Präsentationen


Google-Anzeigen