Einführung in Software Engineering

Ähnliche Dokumente
Grundlagen der Programmierung

Software Engineering 1. Einführung und Begriffe

Einführung in die Softwaretechnik 1. Einführung und Begriffe

So#ware Engineering 1. Einführung und Begriffe

Software Engineering. 5. Architektur

Quantifizierung nicht-funktionaler Anforderungen JURISTISCHES IT-PROJEKTMANAGEMENT WS1617 DOZENT: DR. FRANK SARRE LMU MÜ NCHEN ZHENHAO LI

Softwareentwicklung und Projektmanagement

Software Engineering

Software Engineering (1)

Kompetenzfeld Software- und Automatisierungstechnik

GPS Fleet Software (

Praktikumsvorbesprechung: Software Engineering WS 07/08

1. Grundbegriffe der Softwaretechnik. 1.1 Herausforderungen

Mit Prozessmanagement zu konsistenten Software- Anforderungen

Scrum in Theorie und Praxis.

Feature Driven Development

Die andere agile Methode

Jochen Ludewig Horst Lichter. Software Engineering. Grundlagen, Menschen, Prozesse, Techniken. dpunkt.verlag

Der Business Analyst in der Rolle des agilen Product Owners

1. Grundbegriffe des Software-Engineering

Projektmanagement. Dokument V 1.1. Oliver Lietz - Projektmanagement. Wie kommt es zu einem Projektauftrag? Ausführung

Feature Driven Development

Das Halteproblem. Ein unlösbares Problem der Informatik - 1 -

Comparing Software Factories and Software Product Lines

IT-Projekt-Management

Benutzerorientierte Entwicklung mobiler Anwendungen

Softwaretechnik. Fomuso Ekellem WS 2011/12

Wiederholung. Testen. Tests nach Methode zum Ableiten der Testfälle White Box Test Black Box Test

Agile Softwareentwicklung

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert Vgl. Kapitel 4/5 aus Basiswissen Requirements Engineering, Klaus Pohl,

DOORS Schema IBM Rational DOORS Start-Up Training - Teil 3

Projektgruppe. FG Engels. Enthält eine zusätzliche Folie. Fabian Christ, Benjamin Nagel, Henning Wachsmuth. Anmeldung bis 28.

Abenteuer Softwarequalität: Grundlagen und Verfahren für Qualitätssicherung und Qualitätsmanagement

Inhaltsverzeichnis. Teil I Grundlagen 1

Seminar Software Engineering

PLM/ALM-Integration: Anforderungen an eine ergonomische Datenverknüpfung. Fachdialog ProErgo Lemgo, Prof. Dipl.-Ing.

Softwareprozessmodelle

Programmierung eines Computers (Funktionsweise)

ORGANISATORISCHES. So#ware Technik Prof. Dr. Wolfgang Schramm

Software Engineering mit Übungen. Franz-Josef Elmer, Universität Basel, HS 2015

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Schulinternes Curriculum Sek I, CSG Bonn. Seite 1 von 7 Stand: Sekundarstufe I. Informatik. (Stand: )

Software Engineering

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Softwaretechnik II. Sommersemester 2015

Marc Monecke Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D Siegen

Objektorientierte Programmierung (OOP)

Kompetenzfeld Software- und Automatisierungstechnik

Vorlesung Software Engineering

Projektpraktikum "Bildgenerierung von kinematischen Modellen und Manövern"

Die exemplarische Analyse von thematisch vernetzten Softwarekomponenten im Kontext von Synergieprozessen. Seminarvortrag Yvonne Breuer

Abnahme leicht gemacht

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Abschnitt 16: Objektorientiertes Design

Erfolg mit Oracle BI?

IT-Basics 2. DI Gerhard Fließ. Vorgehensmodelle

2 Softwarearchitektur in der Organisationsstruktur 25

Softwaretechnik 2015/2016

Vorgehensmodelle im Software Engineering

Grundlagen des Software Engineering

Grundlagen Software Engineering

Extreme Programming: Überblick

Software- und Systementwicklung

GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT

Klausur. Softwareentwurf. 22. März 2011 Bearbeitungszeit: 120 Minuten

Glücksspiel Softwareentwicklung. Christian Wende - DevBoost GmbH JUG Saxony Day 2016

Das Modellieren von 2D- und 3D-Objekten

Nicht-funktionale Anforderungen

Grundlagen der Technischen Informatik. 13. Übung

Übungen Softwaretechnik I

Grundlagen der Informatik I Einführung

Dokumentation. Projekt: Innovation Management Plattform To Activate Creative Thoughts

Angewandte Mathematik am Rechner 1

Teil VI. Objektorientierte Programmierung. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2016/

Software Technik 3 Zusammenfassung

Transkript:

Einführung in Software Engineering

Die Katze auf der Terrasse Mit Python-Objekten ist es wie mir der Katze, die du irgendwann schlafend auf deiner Terrasse vorfindest. Ganz wie ein Python-Objekten kann dir die Katze nicht sagen, wie sie heißt es ist ihr auch ganz egal. Um ihren Namen herauszufinden, wirst du wohl deine Nachbarn fragen müssen, und du solltest nicht überrascht sein, wenn du herausbekommst, dass die Katze viele Namen hat.

...es kann nützlich sein Labor 3+

SE!= Engineering Engineering Software Produkt ist ein physikalisches Objekt Produkt ist ein laufendes Programm Gebaut durch Menschen und Gebaut durch Menschen und Werkzeuge Werkzeuge Konstruktion Konstruktion ist teuer ist billig erfordert Arbeit und Material automatisch ist langsam ist schnell teuer zu wiederholen leicht zu wiederholen

Wie stellt man einen Elefant in einen Kühlschrank?

Wie stellt man einen Elefant in einen Kühlschrank? 1. Man öffnet den Kühlschrank

Wie stellt man einen Elefant in einen Kühlschrank? 1. Man öffnet den Kühlschrank 2. stellt den Elefanten hinein

Wie stellt man einen Elefant in einen Kühlschrank? 1. Man öffnet den Kühlschrank 2. stellt den Elefanten hinein 3. schließt die Tür...aber

wie denkt ein Entwickler?

wie denkt ein Entwickler? 1. teile das Problem in mehrere Probleme auf

wie denkt ein Entwickler? 1. teile das Problem in mehrere Probleme auf 2. finde Lösungen für die kleine Probleme

wie denkt ein Entwickler? 1. teile das Problem in mehrere Probleme auf 2. finde Lösungen für die kleine Probleme 3. stelle die Lösungen zusammen

wie denkt ein Entwickler? 1. teile das Problem in mehrere Probleme auf 2. finde Lösungen für die kleine Probleme 3. stelle die Lösungen zusammen 4. Aufräumen (refactor)

teile das Problem auf 1. Was für einen Kühlschrank habe ich? 2. Aber der Elefant? 3. Wo finde ich den Elefant? 4. Transport 5. Was könnte ich machen, falls der Elefant zu groß ist?

finde Lösungen

finde Lösungen 1. Was für einen Kühlschrank nutze ich?

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein 2. Aber der Elefant?

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein 2. Aber der Elefant? - Afrikanischer

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein 2. Aber der Elefant? - Afrikanischer 3. Wo finde ich den Elefant?

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein 2. Aber der Elefant? - Afrikanischer 3. Wo finde ich den Elefant? - Afrika

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein 2. Aber der Elefant? - Afrikanischer 3. Wo finde ich den Elefant? - Afrika 4. Transport

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein 2. Aber der Elefant? - Afrikanischer 3. Wo finde ich den Elefant? - Afrika 4. Transport - mit dem Flugzeug, im Gepäck

finde Lösungen 1. Was für einen Kühlschrank nutze ich? - Mein 2. Aber der Elefant? - Afrikanischer 3. Wo finde ich den Elefant? - Afrika 4. Transport - mit dem Flugzeug, im Gepäck 5. Was könnte ich machen, wenn der Elefant zu groß ist?

stelle die Lösungen zusammen 1. ich leihe ein shrinkgun von Gru aus 2. fliege nach Südafrika 3. besichtige einen Elephant-Park 4. finde einen Elefant im Park 5. schieße den Elefant mit dem shrinkgun 6. lege den Elefant ins Gepäck 7. fahre zum Flughafen 8. fliege zurück 9. fahre nach Hause 10. stelle den Elefant in den Kühlschrank

vorgehen Woher kommt die Problembeschreibung? Beschreibt sie wirklich das Problem des Nutzers? Welche Struktur soll das fertige Programm haben? Löst das Programm wirklich das Problem? Problembeschreibung Programm Entwickler

Software-Krise Mitte 1960er Jahre Mit schnellerer Hardware wurde Software wichtiger Steigende Anforderungen

Extreme Komplexität US DDX Submarine Viele eingebettete Systeme Zusammen 30 Milliarde Zeilen Code In 100+ Programmiersprachen Kosten: $15-30/Codezeile

Woran liegt es? unzureichend spezifizierte Anforderungen häufiges Ändern der Anforderungen während des Projekts inkompetente Mitarbeiter fehlende Unterstützung durch das Management zu große Erwartungen falsche Schätzung der Zeit/Kosten Managemenfehler

Rollen Der Entwickler/Tester/Architekt Der Stakeholder Der Nutzer

Stakeholder Einzelpersonen und Organisationen die aktiv an einem Projekt beteiligt sind deren Interessen als Folge der Projektdurchführung oder des Projektabschlusses positiv oder negativ beeinflusst werden können die das Projekt und seine Ergebnisse beeinflussen

Softwaretechnik Teilgebiet der Informatik Anforderungsanalyse Entwurf und Entwicklung von Software Organisation und Strukturierung der Entwicklung Projektmanagement Qualitätssicherung Betrieb und Wartung von Systemen

Phasen eines Softwareprojekts Softwaretechnik systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen Feature-driven development

Phasen eines Softwareprojekts Problemstellung (Idee) Ein Lehrer braucht ein programm für Studenten, die Rationale Zahlen lernen möchten. Anforderungs (was?) Genaue Festlegung des Leistungsumfanges des geplanten Systems Umsetzung der Anforderungen in ein Modell, welches die Funktionalität des Produktes vollständig beschreibt

Probleme Kunden wissen nicht was sie wirklich wollen Kunden benutzen ihre eigene Fachsprache Verschiedene Stakeholder können widersprüchliche Anforderungen haben Politische und organisatorische Faktoren können Anforderungen beeinflussen Anforderungen ändern sich während der Entwicklung Neue Stakeholder mischen sich ein

Anforderungs Vollständig Alle Anforderungen des Kunden müssen explizit beschrieben sein, es darf keine impliziten Annahmen des Kunden über das zu entwickelnde System geben. Atomar Es darf nur eine Anforderung pro Abschnitt oder Satz beschrieben sein.

Anforderungs Identifizierbar Jede Anforderung muss eindeutig identifizierbar sein Nachprüfbar Die Anforderungen sollten mit Abnahmekriterien verknüpft werden, damit bei der Abnahme geprüft werden kann, ob die Anforderungen erfüllt wurden Konsistent Die definierten Anforderungen sind untereinander widerspruchsfrei.

Features Features werden nach dem einfachen Schema <Aktion> <Ergebnis> <Objekt> aufgeschrieben z.b. Berechne die Gesamtsumme der Verkäufe Eine Feature -> wenige Stunden zu umsetzen.

Features Problemstellung (Idee) Ein Lehrer braucht ein programm für Studenten, die Rationale Zahlen lernen möchten. Rechner (Feature-Liste) F1. Eine Zahl einfügen F2. Rechner löschen F3. Die letzte Änderung rückgängig machen

Feature Driven Development Erstelle eine Feature-Liste Plane jede Iteration Für jeden Iteration: Entwurf je Feature Konstruiere je Feature

Tasks Eine Aufgabe für jede Operation (T1,T2) Eine Aufgabe für die Benutzerinteraktion (T4) Eine Aufgabe für jede Schnittstellenfunktion (T3) Aufgabenabhängigkeit : T4->T3->T2->T1 T1. Berechne den Größten gemeinsamen Teiler T2. Addition zweier rationaler Zahlen T3. Implementiere den Rechner: init, add, total T4. Implementiere eine Benutzerschnittstelle

T1 - ggt berechnen Testfall gegeben durch eine Folge von Eingabewerten, die für ein bestimmtes Testobjekt unter definierten Randbedingungen eine zugehörige Folge von Soll-Reaktionen erzeugt. Input: a, b c=ggt(a,b) 23 1 24 2 64 2 02 2 20 2 24 9 3-2 0 Fehler 0-2 Fehler

die erste Iteration Interaktionsszenario (running scenario) Nutzer a b 0 1/2 c d 2/3 h i Total Total Zahl einfügen 5/6 1/6 g Erklärung Zahl einfügen 1/2 e f Programm Total Zahl einfügen 1-6/6 Total Zahl einfügen 0 Total