Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Vorlesung "Software-Engineering" zVoraussetzungen: yDiskrete Mathematik: xMengenlehre, Relationenbegriff, Funktionsbegriff xElementare Logik yProgrammiermethodik.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Vorlesung "Software-Engineering" zVoraussetzungen: yDiskrete Mathematik: xMengenlehre, Relationenbegriff, Funktionsbegriff xElementare Logik yProgrammiermethodik."—  Präsentation transkript:

1 1 Vorlesung "Software-Engineering" zVoraussetzungen: yDiskrete Mathematik: xMengenlehre, Relationenbegriff, Funktionsbegriff xElementare Logik yProgrammiermethodik yInformatik für Ingenieure I+II yDatenbanken und Informationssysteme Prof. Ralf Möller, TUHH, Arbeitsbereich STS Übung: Miguel Garcia

2 2 Organisatorisches zSprechstunde: n.V. zKlausur yWann? Am Ende des Semesters yWie lernt man für dieses Fach? xWiedergeben xAnwenden xÜbertragen zWeb-Seite: yhttp://www.sts.tu-harburg.de/~r.f.moeller/lectures/se-ss- 04.html

3 3 Literatur, Details und Zusatzinformationen

4 4 Literatur (2)

5 5 Vorlesung "Software-Engineering" zLernziele der Vorlesung allgemein: yFundamente: Überblicke, Grundprinzipien über die systematische, ingenieurmäßige Softwareentwicklung yGrundlagen der Informatik: Techniken und Methoden der SW-Entwicklung zLernziele heute: yEinführung in das Gebiet "Software-Engineering" yGrundlagen und Probleme ySoftware-Qualität

6 6 Anfänge der Software-Entwicklung zGeringe Rechnerleistung zÜberschaubare Problemstellungen zBekannte Algorithmen (meist mathematisch/naturwissenschaftlich) zSoftware-Entwicklung = Programmierung zWenige Benutzerinteraktion ("Batch-Verarbeitung") zWenige Programmierfehler zForderung nach Effizienz zProgrammierer = Benutzer = Spezialisten zSeltener, isolierter Einsatz Software-Engineering nicht notwendig

7 7 Veränderung der Software-Entwicklung zStark wachsende Leistungsfähigkeit der Hardware zImmer komplexere Aufgabenstellungen zErarbeitung neuer, nicht-numerischer Algorithmen zDialogbetrieb, Interaktivität der Programme zStatt einzelner Programme große, verflochtene Programmsyst. zVerteilte Anwendungen, Client-Server-Architekturen, zMulti-Tier-Architekturen zZunehmende bewährte Altsysteme zZunehmende Abhängigkeit von DV-Systemen, sicherheitskritische Anwendungen Veränderung der Software-Entwicklung

8 8 Veränderung der Software-Entwicklung zNachträgliche Veränderung der Anforderungen und des Einsatzumfeldes zArbeitsteilige Systementwicklung zEngpass Software-Entwickler zEntwickler und Anwender (evtl. auch Auftraggeber) getrennte Personengruppen z"DV-Laien" als Anwender zSystementwicklung als kommerzielle Auftragsarbeit, Produktentwicklung zZunehmende wirtschaftliche Bedeutung SW-Entwicklung wird zum wichtigen Problem!

9 9 Wirschaftliche Bedeutung IT&T

10 10 Situation der Software-Entwicklung zSeit Mitte der sechziger Jahre: z(Zunehmende) Diskrepanz zwischen Hardware und Software hinsichtlich der Leistungsfähigkeit zIm Gegensatz zum "Hardware-Wunder" seit 1965 ein Begriff: zSoftware-Krise

11 11 Problembereiche der Software-Entwicklung zBeherrschung der Komplexität der Aufgabenstellung zVollständige Erfassung und korrekte Spezifikation der Anforderungen zZerlegung des Systems in Teilsysteme und Spezifikation der Schnittstellen zwischen diesen zKorrektheit und Zuverlässigkeit yFehlerhäufigkeit und Aufwand der Fehlerlokalisation und -beseitigung

12 12 Problembereiche der Software-Entwicklung zEffizienz der Programme zDokumentation und Wartbarkeit der Gesamtlösung zÄnderbarkeit und Erweiterbarkeit zÜbertragbarkeit auf verschiedene HW-Plattformen zPlanung und Durchführung von Projekten zKosten und Zeitbedarf der Software-Entwicklung zKommunikation zwischen den beteiligten Personen(-gruppen)

13 13 Mangelnde Zuverlässigkeit, Fehlerhäufigkeit zEin großes Software-Paket besteht aus mindestens 50.000 Zeilen Programmcode zIn 1000 Zeilen Programmcode werden während der Entwicklung durchschnittlich zwischen 50 und 60 Fehler entdeckt zDie meisten Fehler entstehen bei Problemanalyse und Entwurf der Software zNach Auslieferung werden noch bis zu 4 Fehler pro 1000 Zeilen entdeckt zRelativer Aufwand der Fehlerbeseitigung je nach Phase der Fehlerentdeckung hoch

14 14 Zeitaufwand je nach Entwicklungsphase

15 15 Kosten zDramatisch zunehmender Kostenanteil der Software-Entwicklung an den Gesamtkosten von DV-Projekten zGeringe Produktivität: In großen Projekten pro Person im Durchschnitt weniger als 10 Zeilen ausführbares Programm am Tag zDerzeit hoher Anteil der Wartungskosten an den Gesamtkosten (ca. 2 Drittel) zZiel: Minimale Gesamtkosten

16 16 Zeitbedarf zDeutlich steigende Entwicklungsdauer für Software zNur 5% aller Projekte werden termingerecht fertig zMehr als 60% der Projekte sind >= 20% in Verzug zZykluszeiten für Anwendungssoftware sind wesentlich länger als für Systemsoftware und Hardware

17 17 Entstehung des Fachgebietes "SW-Engineering" zDer Begriff "Software-Engineering" wird Ende der sechziger Jahre geprägt, zunächst als Provokation zÜbertragen des erfolgreichen ingenieurmäßigen Vorgehens auf die Software-Entwicklung zWeg von der "Kunst" des Programmierens hin zur Ingenieurwissenschaft des Programmierens zMittlerweile als Begriff und Fachgebiet etabliert zGehört zu den besonders nachgefragten Kompetenzen von Informatikern zForschung und Entwicklung nicht abgeschlossen, dynamisches und heterogenes Gebiet, keine Standards

18 18 Was ist Software-Engineering? zDefinition nach Pomberger/Blaschek z"Software-Engineering ist die praktische Anwendung wissenschaftlicher Erkenntnisse für die wirtschaftliche Herstellung und den wirtschaftlichen Einsatz qualitativ hochwertiger Software"

19 19 Was ist Software-Engineering? zDefinition nach Balzert z"Software-Technik: Zielorientierte Bereit-stellung und systematische Verwendung von Prinzipien, Methoden, Konzepten, Notationen und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Software- Systemen."

20 20 Was ist Software-Engineering? zDas Fachgebiet Software-Engineering bietet dem Software-Entwickler einen "methodischen Werkzeugkasten" zSoftware-Engineering bietet keine direkt anwendbaren "Kochrezepte" und "Bedienungsanleitungen" zur SW-Entwicklung zDie Auswahl geeigneter Mittel des Software- Engineering muß weitgehend auf Wissen und Erfahrung der Systementwickler beruhen

21 21 Grundbegriffe der Software-Entwicklung: Systeme zAllgemein: Ein System ist ein Ausschnitt aus der realen oder gedanklichen Welt, bestehend aus konkreten oder abstrakten Komponenten und deren Beziehungen untereinander zKonkreter: Ein System ist eine Menge von Elementen, die miteinander in Beziehung stehen: System S = (E, R), yE endliche nicht-leere Menge von Elementen yRelation R ist Teilmenge des Kreuzprodukts E x E, yd.h. potentiell kann jedes Element mit jedem in Beziehung stehen zEin System ist ein gerichteter Graph

22 22 Grundbegriffe der Software-Entwicklung: Systeme zSystemgrenze yFestlegung, was zum System gehört und was nicht, yInteressierender Ausschnitts der (realen) Welt zSystemstruktur yStellung der Systemelemente zueinander, die sich durch die Beziehungen ergibt zSystemhierarchie yElemente des Systems sind entweder atomar oder wiederum Systeme (Subsysteme)

23 23 Grundbegriffe der Software-Entwicklung: Systeme zSysteminteraktion yAustausch des Systems mit der Systemumgebung über die Schnittstelle durch Inputs und Outputs zKomplexität von Systemen yStrukturelles Merkmal, das die Anzahl der Verbindungen zwischen Systemelementen qualitativ beschreibt (teilweise quantitative Kennzahlen) zDynamik von Systemen yVeränderung des Systemzustands durch Einflüsse von außen und interne Reaktionen

24 24 Grundbegriffe der Software-Entwicklung: Systeme

25 25 Modelle... zsind Abbildungen / Beschreibungen von Systemen zkönnen abstrakt oder konkret sein zdienen der Reduzierung von Komplexität ztreten bei der Bearbeitung an die Stelle von Systemen zdienen einem bestimmten Zweck zkönnen Systeme auf unterschiedliche Weise abbilden

26 26 Modelle zModelle sind die Voraussetzung für die Entwicklung von Software zDie Fähigkeit zur Bildung und kompetenten Handhabung von Modellen ist die Anforderung an Informatiker

27 27 Software... zist eine Sammelbezeichnung für Programme, die für den Betrieb von Rechensystemen zur Verfügung stehen (einschließlich der zugehörigen Dokumentation) zist im Zusammenspiel mit bestimmter Hardware ausführbar und ermöglicht deren Nutzung zspezialisiert die zugrundeliegende universell programmierbare Hardware zmacht aus der konkreten Maschine eine neue Maschine (virtuelle Maschine) zwird in Schichten unterteilt (Konzept der abstrakten Maschine)

28 28 Softwareschichten als abstrakte Maschinen

29 29 Ziel der Vorlesung ist... z... Techniken zu erarbeiten, die es erlauben zu spezifizieren, was eine virtuelle Maschine tun soll. z... Schätzmethoden für den Entwicklungsaufwand anwenden zu können z... Qualitätsmerkmale aufzeigen zu können z... Organisationsformen für die Entwicklung von SW zu verstehen

30 30 Besonderheiten von Software zSoftware ist immateriell zSoftware unterliegt keinem Verschleiß zSoftware altert zSoftware ist "weich", daher schnell änderbar zDie Herstellung von Software beruht weniger auf allgemein akzeptierten Prinzipien zSoftware ist (häufig) komplex zSoftware ist schwer zu vermessen

31 31 Abgrenzung: Software - Programm zProgramm yAusführbare Formulierung eines bestimmten Algorithmus (kleine Lösung) zSoftware(-System) yGesamtheit aller Software-Bausteine (Moduln), die in einem Zusammenhang stehen (gemeinsamer Zweck) yWeist eine "Software-Architektur" auf

32 32 SW-Kategorien zWeitere SW-Kategorien: yTheorembeweiser yMathematik- Systeme y...

33 33 Neue Trends zInsbesondere für SW für Betriebswirtschaftliche Anwendunge: zSeit Mitte 1990 neue Sicht: SW-Entwicklung durch Anpassung/Konfigurierung von sog. "Referenzmodellen" (Beispiel SAP/R3)

34 34 Software-Qualität z"Qualität ist die Gesamtheit von Eigenschaften und Merkmalen eines Produkts oder einer Tätigkeit, die sich auf die Eignung zur Erfüllung gegebener Erfordernisse beziehen" (nach DIN 55 350) zSoftware-Qualität... yist mehr als Korrektheit yist kein exakt definierter Begriff yist nicht exakt meßbar ywird anhand von Qualitätsmerkmalen charakterisiert yhängt von der Perspektive ab

35 35 Software-Qualität: Merkmale Bedeutung der Begriffe unklar, nicht eindeutig abgrenzbar Benutzungsfreundlichkeit Effizienz Zuverlässigkeit Korrektheit Robustheit Erlernbarkeit Systemdokumentation Wieder- verwendbarkeit Benutzerdokumentation Wartbarkeit Portabilität Koppelbarkeit Adäquatheit Verfügbarkeit Lesbarkeit

36 36 Software- Betreuer Auftraggeber Anwender Software-Qualität: Perspektiven Benutzungsfreundlichkeit Effizienz Zuverlässigkeit Korrektheit Robustheit Erlernbarkeit Systemdokumentation Wieder- verwendbarkeit Benutzerdokumentation Wartbarkeit Portabilität Koppelbarkeit Adäquatheit Verfügbarkeit Lesbarkeit

37 37 Überblick über die Vorlesung zEinführung yBegriffsbestimmung, Systeme, Modelle, Qualitätskriterien zPhasen und Vorgehensmodelle yProjekttypen, Personen, Prozesse, Produkte und Leistungen zProblemanalyse und Planung: Lastenheft zAufwandsabschätzung zSpezifikation, Definition: Pflichtenheft zEntwurf und Implementierung yStrukturen, Zustände, Prozesse (e.g., ER, UML) yEntwurfsmuster (e.g., Gamma Design Patterns, Model-View-Controller,...) yComponents yModel-driven Architecture zVerifikation, Testen, Validierung zVersionsverwaltung, Konfiguration zProjektmanagement zQualitätssicherung  Installation, Weiterentwicklung


Herunterladen ppt "1 Vorlesung "Software-Engineering" zVoraussetzungen: yDiskrete Mathematik: xMengenlehre, Relationenbegriff, Funktionsbegriff xElementare Logik yProgrammiermethodik."

Ähnliche Präsentationen


Google-Anzeigen