Software Engineering 1 SE1 VO Einheit 1 WS0506-13. Oktober 2005 MARIO BERNHART se1@inso.tuwien.ac.at se1_lab@inso.tuwien.ac.at www.inso.tuwien.ac.at INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien
Agenda 1 2 3 4 5 6 7 Motivation Geschichte Risikoelemente Definitionen Entwicklung der Disziplin Code of Ethics Herausforderungen in Software Engineering 2
Motivation Software Engineering Geringe Qualität von Software (Ende der 50er) SOFTWARE-KRISE. Keine Methoden, um Projekte wiederholbar erfolgreich durchführen zu können. 2 NATO-Konferenzen 1968 und 1969. 3
Gescheiterte Projekte Software Runaway (Glass 1998): Projekt mit mind. doppelten Kosten oder doppelter Dauer Crunch Mode (Boddi 1987): Projekt unter massivem Termindruck Death March (Yourdon 1997): Projekt mit nahezu unmöglichen Terminvorgaben 4
Top Ten Liste der Risikoelemente im SE Personalmängel Unrealistische Zeit- und Kostenpläne Entwicklung der falschen Funktionalität Unpassende Benutzerschnittstelle Vergolden eines Systems Häufige Änderungen der Anforderungen Qualitätsmängel bei extern vergebenen Komponenten Qualitätsmängel bei extern vergebenen Aufgaben Unzureichende Produktionsleistungen Projektziele an der Grenze des State-of-the-Art 5
Keine Software Krise? Robert Glass: I do not believe in the existence of a software crisis. Falsche Statistiken Berater und Hersteller von Tools erhalten Mythos Keine wirkliche allgemein gültige Definiton von Gescheitertem Projekt vorhanden 6
Was ist Software Engineering NICHT? Programmierkurs, Programmier-Know-How AwenderInnen-Kurs abstrakte Wissenschaft A fool with a tool is still a fool 7
Software Engineering Definition Boehm 1979 The practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them. IEEE Computer Society: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). 8
Entwicklung von SE als Ingenieurdisziplin (1) 9
Entwicklung von SE als Ingenieurdisziplin (2) 10
Die Profession Software Engineering Software Engineering Curriculum Code of Ethics SWEBOK 11
Software Engineering Curriculum (1) Grundlagen der Computertechnologie: Grundlagen der Informatik, Konstruktionstechnologien, Konstruktionswerkzeuge, Formale Konstruktionsmethoden. Mathematische & Ingenieurwesen Grundlagen: Mathematische Grundlagen, Ingenieurwesen Grundlagen, Wirtschaftliche Grundlagen des Ingenieurwesens. Professionelle Praktiken: Gruppendynamik und psychology, Kommunikationstechniken, Grundlagen einer Profession. Software Modellierung & Analyse: Grundlagen der Modellierung, Modeltypen, Grundlagen der Analyse, Grundlagen der Anforderungsanalyse, Anforderungsfindung, Spezifikation und Dokumentation von Anforderungen, Validierung von Anforderungen. Software Entwurf: Entwurfskonzepte, Entwurfsstrategien, Architekturentwurf, Entwurf von Anwenderschnittstellen, Detailentwurf, Entwurfswerkzeuge und Evaluierung des Entwurfs. 12
Software Engineering Curriculum II Software Verifikation & Validierung: V&V Terminologie und Grundlagen, Reviews, Testen, Anwenderschnittstellen testen und evaluieren, Problemanalyse und bericht. Software Evolution: Evolutionsprozess, Evolutionsaktivitäten. Software Prozess: Prozesskonzepte, Prozessimplementierung. Software Qualität: Software Qualität Konzepte und Kultur, Software Qualität Standards, Software Qualität Prozesse, Prozesssicherung, Produktsicherung. Software Management: Management Konzepte, Projektplanung, Projekt Personal und Organisation, Projektkontrolle, Software Konfigurationsmanagement. 13
Code of Ethics (1) Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: 14
Code of Ethics (2) 1 PUBLIC - Software engineers shall act consistently with the public interest. 2 CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interest. 3 PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4 JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment. 15
Code of Ethics (3) 5 MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6 PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7 COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues. 8 SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. 16
Teilaspekte in Software Engineering Formale Aspekte in Software Engineering Technische Aspekte in Software Engineering Ingenieursaspekte in Software Engineering Gestalterische Aspekte in Software Engineering Ökonomische Aspekte in Software Engineering 17
Zentrale Fragen Was ist ein Software-Entwicklungsprojekt? Was geschieht in einem Projekt? Wozu brauche ich einen dokumentierten Software- Entwicklungsprozeß? Was ist wenigstens erforderlich, um ein vernünftiges Produkt zu erstellen? Was ist der Unterschied zwischen strukturierten und objektorientierten Ansätzen? Wie können neue Technologien und Methoden in einen existierenden Software-Entwicklungsprozeß eingebracht werden? 18
Ein grundlegendes Modell Qualitätssicherung QS Problem A Analyse E Entwurf I Implem. Projektmanagement T Test PM Arbeitsorganisation AO QS Produkt A E I T PM AO Betrieb und Wartung 19
Software Engineering Projektstart Zeit Projektende Projektverlauf Ideal 20
Software Engineering Projektstart Zeit Projektende Projektverlauf Normal 21
Software Engineering Projektstart Zeit Projektende Projektverlauf mit SE Prozessmodellen 22
SE1 Phase B Prozessmodell 23
Einordnung Praktisch Zuser Orientierung auf Programierung Bruegge Sommerville Gesamtsicht Ghezzi Theoretisch 24
Key Challenges in Software Engineering Heterogeneity Challange Delivery Challange Trust Challange (aus Sommerville 7) 25
Heterogeneity Challenge Distributed Systems Other Applications / EAI Software / Hardware heterogeneity Agile System Architechtures 26
Delivery Challenge Less time and money for more output More direct requirement implementation Business responsive and change quickly No compromise on quality 27
Trust Challenge Software in all aspects of life Software is responsible for providing a trusting view Internet and distributed architectures have a imminent trust defecit Software gets more fine grained and covers more aspects Humans depend on software 28