Methoden des Software Engineering



Ähnliche Dokumente
Einführung und Übersicht. Methoden des Software Engineering. Martin Wirsing. Nora Koch, Martin Wirsing WS 2006/07

Methoden des Software Engineering

Vorlesung: Methoden des Software Engineering

Softwarequalität: Einführung. 15. April 2015

Methoden des Software Engineering

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Qualitätssicherung. Was ist Qualität?

Software Engineering

Softwarequalität: Zusammenfassung und Ausblick. 17. Juli 2013

16 Architekturentwurf Einführung und Überblick

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

Software Systems Engineering

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Software Engineering Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen

6 Management der Informationssysteme (2)

Block R (Rahmen): SE Aktivitäten Vorlesung Methoden des Software Engineering. Block R Rahmen Aktivitäten der Software-Entwicklung

Softwaretechnik. Fomuso Ekellem WS 2011/12

Softwaretechnik WS 2013/14. Fomuso Ekellem

Softwareentwicklungsprozesse. 18. Oktober 2012

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Fragebogen ISONORM 9241/110-S

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Software Engineering. Fakultät Elektrotechnik Bachelor-Studiengänge, 4. Semester Prof. Dr.-Ing. Dagmar Meyer

Prozess-Modelle für die Softwareentwicklung

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Einführung und Motivation

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Grundbegriffe der Wirtschaftsinformatik Informationssystem I

Software Engineering. Dokumentation. Wintersemester 2005/06. Kapitel 21. Universität Zürich Institut für Informatik

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Abschnitt 16: Objektorientiertes Design

32 Bachelorstudiengang Allgemeine Informatik

Agile Software Entwicklung. Agile Software Entwicklung, DHBW Karlsruhe, SS-2009 Collin Rogowski

Functional Safety. Systems Engineering als Schlüsseldisziplin in Projekten mit funktionaler Sicherheit

Testen in KMU Projekten Bern, November 2013

Empirische Softwaretechnik Kosten und Nutzen von UML in der Wartung Dr. Victor Pankratius Andreas Höfer Wintersemester 2009/2010

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

1. Grundbegriffe des Software-Engineering

Einführung in die Informatik

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Some Software Engineering Principles

12 Nicht-funktionale Anforderungen

Microsoft SharePoint 2013 Designer

SWE12 Übungen Software-Engineering

Software Engineering. Dokumentation! Kapitel 21

Liste Programmieren - Java

Seminar Programmierung und Reaktive Systeme

Informationssystemanalyse Grundlagen 1 1

Architektur und Qualität. Tjard Köbberling

Die Zertifizierungsstelle der TÜV Informationstechnik GmbH bescheinigt hiermit dem Unternehmen

IT-Unternehmensarchitektur Übung 01: IT-Strategie

Verteilte Systeme Prof. Dr. Stefan Fischer

Organisatorisches. Informatik II Informationen und Daten. Organisatorisches. Organisatorisches. Rainer Schrader. 13. Oktober 2008

Usability Engineering in agilen Projekten

Softwaretechnik. Einführung. Prof. Dr. Matthias Hölzl Joschka Rinke. 21. Januar 2016

FUTURE NETWORK REQUIREMENTS ENGINEERING

Praktikant / Abschlussarbeit im Bereich Softwareentwicklung / Mechatronik (m/w)

ITIL und Entwicklungsmodelle: Die zwei Kulturen

Fragebogen zur Evaluation der Vorlesung und Übungen Computer Grafik, CS231, SS05

gallestro BPM - weit mehr als malen...

Präsentation Von Laura Baake und Janina Schwemer

Qualitätsmanagement. Andreas Bäuml SWT-Projekt WS 07/08

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Vorlesung Embedded Software-Engineering im Bereich Automotive

Software-Entwicklung

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt

Agile Softwareentwicklung in der Versicherungs-IT Fehlschlag oder Heilsbringer?

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Lizenzierung von System Center 2012

Professionelle Seminare im Bereich MS-Office

Grundlagen der Informatik

Übungsaufgaben zum Software Engineering: Management

Einführung in Eclipse und Java

Requirements Engineering Research Group!

Entwurf. Anwendungsbeginn E DIN EN (VDE ): Anwendungsbeginn dieser Norm ist...

Softwaretechnik. Fomuso Ekellem WS 2011/12

16.4 Wiederverwendung von COTS-Produkten

dspace bildet aus! Ausbildung zum Fachinformatiker Anwendungsentwicklung (w/m)

Individuelles Bachelorstudium. Software Engineering for Physics

Software Engineering

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Content Management System mit INTREXX 2002.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Informationswirtschaft 2: Überblick

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Ein wichtiges Konzept der Software-Architektur

Reporting Services und SharePoint 2010 Teil 1

Zukunft der WfbM Positionspapier des Fachausschusses IV

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Kapitel 2: Der Software-Entwicklungsprozess

5 ECTS. 4 Modulverantwortlicher Prof. Dr. Francesca Saglietti

Validierung und Verifikation

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16


Transkript:

Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. IEEE Std. 610.12 (1990) Methoden des Software Engineering Nora Koch, Harald Störrle, Martin Wirsing in Zusammenarbeit mit Florian Hacklinger WS 2004/05

Informationsveranstaltung Einladung an alle Studierenden (zu Beginn) des Hauptstudiums Informatik am 28. Oktober 2003, 16.15 Uhr, Hörsaal 1.14, Oettingenstraße Themen:! Regelungen zum Hauptstudium! Fachliche Schwerpunkte am Institut! Praxisbericht PST- Informationen: 18. November, 14 Uh c.t., Raum E 03

Vorlesung: Methoden des Software Engineering Block R (Rahmen) Einführung und Übersicht Martin Wirsing Einheit R1, 19.10.2004

4. Juni 1996: Erster Start der "Ariane-5"! Während des Flugs läuft ein unnötiges Kalibrierungsprogramm für die Trägheitssensoren. Die gemessenen Werte der Ariane-5 überschreiten die in der Ariane-4-Software vorgesehenen Bereiche.! Die dadurch ausgelöste (Ada-)Exception wird durch Anhalten des Steuerungscomputers behandelt, um auf ein zweites redundantes System umzuschalten.! Im zweiten System tritt der gleiche Software-Fehler auf und wird identisch behandelt.! Kosten des Ariane-5-Programms bis 1996 ca. 7 Milliarden US-$! Wert des zerstörten Satelliten: ca. 500 Millionen US-$

Software-Katastrophe: Kein Einzelfall! Technik-Katastrophen:! September 1999: Verlust der Sonde "Mars Climate Orbiter" wegen falscher Einheitenumrechnung! 1985-1987 Therac 25 (Strahlengerät zur Krebsbehandlung): Fehlerhafte Programmierung führt zu Verbrennungen und Todesfällen! Finanzielle Katastrophen:! 1990 AT&T Telefonverbindung zwischen Ost- und Westküste der USA wg eines SW- Fehlers für mehr als 24 Std unterbrochen: ca. 1 Mia US-$! 1992: Integration des Reservierungssystems SABRE mit anderen Reservierungssystemen abgebrochen: 165 Mio. US-$! 1996 Dtsche Telecom: 1. Januar 1996 ist kein Feiertag : >50 Mio DM! Terminkatastrophen:! 1994: Eröffnung des Denver International Airport um 9 Monate verzögert wegen Softwareproblemen im Gepäcktransport-System! 2003: Einführung des LKW-Mautsystems in Deutschland verzögert sich um 18 Monate

Permanente Software-Krise?! 1965: Der Begriff der Softwarekrise etabliert sich in Industrie und Wissenschaft.! Fehler in Computersystemen sind fast immer auf Softwarefehler zurückzuführen! Software wird nicht termingerecht und/oder zu höheren Kosten als geschätzt fertiggestellt! Software entspricht oft nicht den Anforderungen ihrer Benutzer! Studie von 1979 zu Softwareprojekten (USA):! 75% der Ergebnisse nie eingesetzt! 19% der Ergebnisse stark überarbeitet! 6% benutzbar.! Studie von 1994 zu Software-Großprojekten (IBM Consulting):! 55% Kostenüberschreitung! 68% Terminüberschreitung! 88% Bedarf für starke Überarbeitung

Was ist Software?! Software ist eine Sammlung von Computerprogrammen, Prozeduren, Regeln, zugehöriger Dokumentation und Daten [IEEE Std. 729-83]! Software ist eine Menge von Programmen oder Daten zusammen mit begleitenden Dokumenten, die für ihre Anwendung notwendig oder hilfreich sind [Hesse et al. 1984]! Verschiedene Sichten auf Software:! Innensicht: Software als System! Außensicht: Software als Produkt

Innensicht der Entwickler: Software als System! System Menge von Elementen, zwischen denen bestimmte Beziehungen bestehen [Duden 1974]! Softwaresystem! Basissoftware: Schnittstelle zur Hardware (insbes. Betriebssysteme wie Unix, Windows, ), Datenbanken, Kommunikationsprotokolle! Middleware: Plattform insbesondere für verteilte Anwendungen (Workflow- Management, CORBA, Grid-Plattform, )! Anwendungssoftware zur Lösung kundenspezifischer Aufgaben! Software-intensives System System, das Softwarekomponenten enthält und in dem Software eine große Rolle spielt (eingebettete Systeme in Zügen, Autos; verteilte Anwendungen wie virtuelle Firmen, Geschäftsnetzwerke; mobile und ortsbezogene Informationsdienste; Webdienste,...)

Außensicht der Anwender: Software als Produkt! Produkt Ein in sich abgeschlossenes, i.a. für einen Auftraggeber bestimmtes Ergebnis eines erfolgreich durchgeführten Projekts oder Herstellungsprozesses [Balzert 2000]! Softwareprodukt! Individualsoftware entwickelt für einen Auftraggeber (z.b. Kundenverwaltung, Hubschraubersteuerung)! Standardsoftware entwickelt für Anwenderklasse, z.b. Büro (MS-Office), Logistik (SAP R/3),! Typische Systemarten! Informationssysteme (Sachbearbeitung)! Eingebettete Systeme (Steuerungen)! Produktionsplanung und -steuerung! Telekommunikation (Vermittlungssysteme)! E-Business (Web-Systeme)

Besonderheiten von Software! Software ist immateriell.! Software unterliegt keinem Verschleiß.! Es gibt keine Software-Ersatzteile: Defekte sind immer Konstruktionsfehler.! Software ist schwer zu vermessen ( Technische Daten von Software?).! Software gilt als relativ leicht änderbar (im Vergleich zu materiellen technischen Produkten).! Software unterliegt einem ständigen Anpassungsdruck.! Software altert. Software is a hybrid, halfway between an abstract idea and a physical, tangible thing. Software is neither land nor sea, but swamp: a hybrid too thin for the army (software engineering) and too thick for the navy (computer science). Brad Cox

Software-Produktqualität (siehe auch ISO 9126/DIN 66272)! Zuverlässigkeit Software darf im Fall des Versagens keine physischen oder ökonomischen Schäden verursachen.! Benutzbarkeit! Software muss sich nach den Bedürfnissen der Benutzer richten.! Die Benutzerschnittstelle muss ergonomisch und selbsterklärend sein.! Dokumentation muss in allen Detaillierungsgraden ausreichend zur Verfügung stehen.! Wartbarkeit! Software muss anpassbar an neue Anforderungen sein.! Software sollte möglichst plattform-unabhängig sein.! Effizienz! Software muss ökonomischen Gebrauch von Ressourcen des unterliegenden Systems machen.

Software-Produktqualität (ISO 9126/DIN 66272)! Funktionalität! Angemessenheit! Sicherheit! Genauigkeit der Berechnung! Interoperabilität! Konformanz zu Standards! Zuverlässigkeit! Reife! Fehlertoleranz! Wiederherstellbarkeit! Benutzbarkeit! Verständlichkeit! Erlernbarkeit! Bedienbarkeit! Effizienz! Zeitverhalten! Verbrauchsverhalten! Änderbarkeit! Analysierbarkeit! Modifizierbarkeit! Stabilität! Prüfbarkeit! Übertragbarkeit! Anpassbarkeit! Installierbarkeit! Konformanz zu Standards! Austauschbarkeit

Was ist Software Engineering?! Eine naive Sicht: Problem Spezifikation Kodierung Programm! Aber...! Wo kommt die Spezifikation her?! Woher weiß man, dass die Spezifikation die Nutzerbedürfnisse erfüllt?! Wie wurde die Struktur des Programms bestimmt?! Woher weiß man, dass das Programm die Spezifikation erfüllt?! Woher weiß man, dass das Programm immer zuverlässig arbeiten wird?! Was macht man, wenn der Anwender Änderungen benötigt?! Wie strukturiert man die Programmentwicklung in Unteraufgaben, wenn ein Team von Entwicklern zur Verfügung steht?

Einige Definitionen und Aspekte Software Engineering (I)! The establishment and use of sound engineering principles in order to obtain economically software that is reliable and runs on real machines. F.L. Bauer, NATO-Konferenz Software-Engineering 1968! The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. IEEE Std. 610.12 (1990) Also:! Bereitstellung und systematische Anwendung von Methoden,Verfahren und Werkzeugen zur Entwicklung, Betrieb und Wartung von Software.

Software Engineering (I) state of the art of developing quality software on time and within budget! Trade-off zwischen Perfektion und physischen Grenzen SE muss sich mit Problemen der realen Welt auseinandersetzen! Stand der Kunst!! Die Gemeinschaft entscheidet über Beste Praxis! Lebenslange Weiterbildung

Software Engineering (III) multi-person construction of multi-version software! Teamarbeit David L.Parnas! Aspekt der Größenordnung ( Gut programmieren ist nicht genug)! Kommunikationsaspekt! Erfolgreiche Softwaresysteme müssen sich weiterentwickeln oder sie werden verschwinden Änderung ist die Norm, nicht die Ausnahme

Software Engineering (IV) software engineering is different from other engineering disciplines Ian Sommerville! Nicht durch physikalische Gesetze eingeschränkt! Die Grenze ist der menschliche Geist! Aber beschränkt durch politische Kräfte! Interessen der Beteiligten abwägen und ausgleichen

Professionelle Software-Entwicklung! Planung & Aufwandsschätzung! Teamarbeit & Verantwortung! Qualität! Benutzerfreundlichkeit! Wartungsfreundlichkeit & Anpaßbarkeit! Wirtschaftlichkeit! Sicherheit!... Ein großes "Software-Gebäude" ist nicht nur ein etwas größeres Programm. Es sind völlig andere Technologien zur Herstellung und Wartung nötig.

Methoden des Software Engineering: WS 2003/04 Dozenten: Dr. Nora Koch, Dr. Harald Störrle, Prof.Dr. Martin Wirsing Übungsleitung: Dipl.Inf. Florian Hacklinger Vorlesung strukturiert in einzelne Moduln Folien möglichst am Vorabend der Vorlesung im Netz http://www.pst.informatik.uni-muenchen.de/lehre/ws0405/mse/ Feedback Stellen Sie viele Fragen während der Vorlesung! Ohne Rückmeldung können wir nichts verändern! Durchführung: Am Besten konstruktiv & offline.

Übungen zur Vorlesung Voraussetzungen: Gute Programmierkentnisse (möglichst Java) Übungsbetrieb: Wöchentliche Übungen, Mi 16-18 Uhr, Oettingenstr. 1.14, Beginn 2. Woche 3 Hausaufgabenblätter Klausur

Literatur! Ian Sommerville: Software Engineering, 6th edition, Addison-Wesley 2000.! Helmut Balzert: Lehrbuch der Software-Technik (2 Bände), Spektrum Akademischer Verlag 2000 und 1998.! Weitere Literatur bei den einzelnen Moduln

Software-Engineering an der LMU Methoden des Software Engineering SW-Engineering-Praktikum Entwurf und Implementierung paralleler Programme WS 04/05 Software-Architektur Projektmanagement und Präsentation Grundlagen der Systementwicklung Temporale Logik und Zustandssysteme Modelchecking-Praktikum Formale Objekt-orientierte Software- Entwicklung Software-Agenten SS05 Objekt-orientierte Software-Entwicklung

Inhalt der Vorlesung Block R: Block A: Block B: Block C: Block D: Block E: Block F: Block R: Einführung und Übersicht (MW) Anforderungsentwicklung (MW) Software-Architektur (MW/HS) Formale Methoden (MW) Validierung & Verifikation (MW) Software-Prozess & Projektmanagement (MW/HS) Web-Engineering (NK) Ausblick (MW)

Anforderungsanalyse! Anforderungserwerb! Konzeptuelle Modellierung! Anforderungsvalidierung

Software-Architektur! Architekturentwurf! Systemarchitektur! Middleware! Entwurfsmuster & Komponenten Beispiel: Architektur einer Java- Entwicklungsplattform (informell)

Formale Methoden! Funktionale Spezifikation! Eigenschaften dynamischer Systeme! Zustandsautomaten! Petrinetze interface Konto balance: Integer update(n: Integer) getbalance(): Integer undo() self.getbalance() = self@pre.getbalance() + n self.undo() = obs self@pre Beweisverpflichtung implements Konto balance: Integer update(n: Integer) getbalance(): Integer undo() history History balance: Integer prev balance = balance@pre + n history.oclisnew

Validierung und Test! Testplanung! Blackbox- und Whiteboxtest! Modultest mit JUnit! Verifikation durch Modelchecking Alle Tests erfolgreich!

Prozess und Projektmanagement! Vorgehensmodelle! Prozessverbesserung! Projektmanagement! Empirisches Software-Engineering Systemanforderungen Softwareanforderungen Beispiel: Wasserfallmodell - vereinfachte Darstellung Analyse Design Codierung Test Betrieb

Web-Engineering! Modellierung von Web Anwendungen! Web-Architektur, -Implementierung und Testen! Web-Prozessmodelle und Projektmanagement Konzeptuelles Modell Implementierung des Präsentationsmodells

Zusammenfassung! Software-Produktqualität umfasst die Aspekte Funktionalität, Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit, Übertragbarkeit! Software Engineering bedeutet die Bereitstellung und systematische Verwendung von Methoden,Verfahren und Werkzeugen zur Entwicklung, Betrieb und Wartung von Software