58
Software Technik Christian Baranowski HTWG Konstanz Vorgehensmodelle und Agile Software Entwicklung

Einführung Vorgehensmodelle und Agile Software Entwicklung

Embed Size (px)

Citation preview

Page 1: Einführung Vorgehensmodelle und Agile Software Entwicklung

Software Technik

Christian Baranowski

HTWG Konstanz

Vorgehensmodelle und Agile Software Entwicklung

Page 2: Einführung Vorgehensmodelle und Agile Software Entwicklung

WiederholungOberflächentests mit Selenium

Page 3: Einführung Vorgehensmodelle und Agile Software Entwicklung

OberflächentestsEinführung in Selenium

Selenium Core

Selenium IDE

Selenium RC

Page 4: Einführung Vorgehensmodelle und Agile Software Entwicklung

Selenium Core

open /JugsBase/zinsrechner.jsp

type betrag 20.0

type zinsatz 22.0

type laufzeit 100.0

clickAndWait submit

assertTextPresent 8649939365.27  Euro

Action - TabelleSelenium Befehl

Target

Argumente

am Beispiel eines Zinsrechner

Page 5: Einführung Vorgehensmodelle und Agile Software Entwicklung

Selenium IDECapture & Replay Tests mit Selenium

Action Tabelle

Page 6: Einführung Vorgehensmodelle und Agile Software Entwicklung

Selenium Remote ControlAnbindung Selenium in Java Code als Test Treiber

JAVA, PHP...

Selenium Server

Selenium Core

HTTP Proxy SUTWebapplikation

BrowserFirefox, IE

Page 7: Einführung Vorgehensmodelle und Agile Software Entwicklung

Vorgehensmodelle

Page 8: Einführung Vorgehensmodelle und Agile Software Entwicklung

Prozesse1

Methoden2

Werkzeuge3

Was ist Software Technik ?

Page 9: Einführung Vorgehensmodelle und Agile Software Entwicklung

• Vorhersehbare, planbare und kontrollierbare Software-Entwicklungsprojekte

• Prozess Optimierungen

• Zertifizierbarkeit

• Prozessqualität

Warum Vorgehensmodelle?

Beherrschung komplexer Prozesse

Page 10: Einführung Vorgehensmodelle und Agile Software Entwicklung

• Reihenfolge der Arbeitsabläufe (Phasen)

• Rahmenwerk (Framework)

• Fertigstellungskriterien (Umfang und Inhalt)

• Verantwortlichkeiten und Kompetenzen (Rollen)

• notwendige Mitarbeiterqualifikationen (Zertifikate)

• definierte Standards, Richtlinien und Werkzeuge

Was ist ein Vorgehensmodell?

Page 11: Einführung Vorgehensmodelle und Agile Software Entwicklung

Klassische Modelle

• Wasserfall

• V-Modell

• RUP

• Spiralmodell

• ...

Welche Vorgehensmodell gibt es?

Agile Modelle

• Scrum

• Extreme Programming (XP)

• Crystal

• ...

Page 12: Einführung Vorgehensmodelle und Agile Software Entwicklung

Softwarelebenszyklus

Problem Analyse

System Spezifikation

Umsetzung

System Testen

Betrieb und Wartung

Page 13: Einführung Vorgehensmodelle und Agile Software Entwicklung

Analyse und Umsetzung

Page 14: Einführung Vorgehensmodelle und Agile Software Entwicklung

Projekt Phasen

Test

Systemtest

Integrationstest

Modultest

Implementierung

Architektur Design

Spezifikation

Page 15: Einführung Vorgehensmodelle und Agile Software Entwicklung

Requirement Analysis

Testing

System Design

Coding

Delivery

Wasserfallmodell

Page 16: Einführung Vorgehensmodelle und Agile Software Entwicklung

• klare Abgrenzung der einzelnen Phasen

• einfache Möglichkeiten der Planung und Kontrolle

• bei stabilen Anforderungen und klarer Abschätzung von Kosten und Umfang sehr effektives Modell

Vorteile Wasserfall

Page 17: Einführung Vorgehensmodelle und Agile Software Entwicklung

• Abgrenzungsproblem

• Abfolgeproblem

• Das Modell ist nur auf einfache Projekte anwendbar

• Unflexibel gegenüber Änderungen und im Vorgehen

• Frühes Festschreiben der Anforderungen ist sehr problematisch

• Einführung des Systems sehr spät nach Beginn des Entwicklungszyklus

• Fehler werden unter Umständen spät erkannt (Big Bang)

Nachteile Wasserfall

Page 18: Einführung Vorgehensmodelle und Agile Software Entwicklung

Nachteile Wasserfall

0

20

40

60

80

Requirement Analysis System Design Coding Testing Delivery

Typischer Projektverlaufgeplanter Verlauf

Aufwand in PT

Wasserfall Phasen

Wir merken erst hier wir haben ein Problem!!!

Page 19: Einführung Vorgehensmodelle und Agile Software Entwicklung

V-Modell

Anforderungsdefinition

Funktionaler Systementwurf

Technischer Systementwurf

Komponenten-spezifikation

Programmierung

Komponententest

Integrationstest

Systemtest

Abnahmetest

Konstruktionsphasen Te

stph

asen

Page 20: Einführung Vorgehensmodelle und Agile Software Entwicklung

V-Modell XT

Quelle: V-Modell-XT Releases 1.3 Dokumentation

Page 21: Einführung Vorgehensmodelle und Agile Software Entwicklung

• Anpassung an projektspezifische Anforderungen

• Integration vieler Aspekte des Entwicklungsprozesses

• Standardisierung der Abwicklung von Systemerstellungsprojekten

Vorteile V-Modell

Page 22: Einführung Vorgehensmodelle und Agile Software Entwicklung

• Zu allgemein für kleine und mittlere Software-Modelle

• Sehr bürokratisch

• ...

Nachteile V-Modell

Page 23: Einführung Vorgehensmodelle und Agile Software Entwicklung

Agile Software Entwicklung

Page 24: Einführung Vorgehensmodelle und Agile Software Entwicklung

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

• Individuals and interactions over processes and tools

• Working software over comprehensive documentation

• Customer collaboration over contract negotiation

• Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Manifesto for Agile Software Development

http://agilemanifesto.org/

Page 25: Einführung Vorgehensmodelle und Agile Software Entwicklung

iterative Softwareentwicklung

Quelle: Wikipedia DE

Page 26: Einführung Vorgehensmodelle und Agile Software Entwicklung

Extreme Programming (XP)

Quelle: Wikipedia

Page 27: Einführung Vorgehensmodelle und Agile Software Entwicklung

Extreme Programming (XP)

Quelle: Wikipedia

Page 28: Einführung Vorgehensmodelle und Agile Software Entwicklung

Extreme Programming (XP)

Quelle: Wikipedia

Page 29: Einführung Vorgehensmodelle und Agile Software Entwicklung

Kommunikation

Page 30: Einführung Vorgehensmodelle und Agile Software Entwicklung

Team

Page 31: Einführung Vorgehensmodelle und Agile Software Entwicklung

Planning Poker

Quelle: http://www.agile42.com/cms/pages/poker/

Page 32: Einführung Vorgehensmodelle und Agile Software Entwicklung

Domain Driven Design

ENTITIES VALUE OBJECT SERVICES

REPOSITORIES FACTORIES

Page 33: Einführung Vorgehensmodelle und Agile Software Entwicklung

Pair Programming

Page 34: Einführung Vorgehensmodelle und Agile Software Entwicklung

Refactoring Grundlagen

Page 35: Einführung Vorgehensmodelle und Agile Software Entwicklung

Refactoring

„Refactoring bezeichnet in der Software-Entwicklung die manuelle oder automatisierte Strukturverbesserung von Quelltexten unter Beibehaltung des beobachtbaren Verhaltens. Dabei sollen die Lesbarkeit, Verständlichkeit, Wartbarkeitund Erweiterbarkeit verbessert werden, mit dem Ziel, den jeweiligen Aufwand für Fehleranalyse und funktionale Erweiterungen deutlich zu senken.“ - Wikipedia

Page 36: Einführung Vorgehensmodelle und Agile Software Entwicklung

Fundamentaler Refactoring Prozess

1.) Erstelle einen Test (Unit-Test) mit möglich 100% Abdeckung

2.) Führe den Test aus (Green bar)

3.) Refactoring

4.) Führe den Test aus (Green bar)

Page 37: Einführung Vorgehensmodelle und Agile Software Entwicklung

Refactoring Patterns•Rename Class, Field, Method

•Extrahiere Methode

•Extrahiere lokale Variable

•Extrahiere Konstante

•Extrahiere Interface

•...

Page 38: Einführung Vorgehensmodelle und Agile Software Entwicklung

Refactoring Patterns in Eclipse

Page 39: Einführung Vorgehensmodelle und Agile Software Entwicklung

Übung 1

•Probieren Sie die Refactoring Methoden: Extrahiere Methode, Extrahiere lokale Variable, Extrahiere Konstante, Extrahiere InterfaceIn der Quicksort Beispiel Klasse aus

•Nutzen Sie Ihren Test um sicherzustellen dass Sie lediglich die Struktur ändern

Page 40: Einführung Vorgehensmodelle und Agile Software Entwicklung

Test Driven Development

Page 41: Einführung Vorgehensmodelle und Agile Software Entwicklung

Test Driven Development

Testgetriebene Entwicklung bezeichnet man eine Agile Methode zur Entwicklung einer Software, bei der Software-Tests vor den zu testenden Komponenten entwickelt werden.

Page 42: Einführung Vorgehensmodelle und Agile Software Entwicklung

Test Driven Development Prozess

1.) Erstelle einen kleinen Test

2.) Führe alle Tests aus wobei der neue nicht funktioniert (Red bar)

3.) Erfülle den Test mit möglichst wenig Code

4.) Führe alle Tests aus, wobei alle Grün (Green-Bar)

5.) Refactoring - z.B. Entferne duplizierten Code

Page 43: Einführung Vorgehensmodelle und Agile Software Entwicklung

Red Bar to Green Bar Pattern

Page 44: Einführung Vorgehensmodelle und Agile Software Entwicklung

Test List Pattern

•Es empfiehlt sich beim TDD eine TODO Liste zu führen mit den Funktionen die noch umgesetzt werden soll

•Man spricht im TDD hier vom Test List Pattern - Test Driven Development by Example Kent Beck

Page 45: Einführung Vorgehensmodelle und Agile Software Entwicklung

Geld Beispiel

Produkt Anzahl Preis Summe

Füller 10 10 € 100 €

Schokolade 5 25 € 125 €

TODO Liste:• 10 € * 10 = 100 €

Page 46: Einführung Vorgehensmodelle und Agile Software Entwicklung

Geld Beispiel

TODO Liste:•10 € * 10 = 100 €

•Betrag sollte private sein

• Euro Nebeneffekte

Page 47: Einführung Vorgehensmodelle und Agile Software Entwicklung

Geld Beispiel

TODO Liste:•10 € * 10 = 100 €

•Betrag sollte private sein

•Euro Nebeneffekte

• equals()•hashCode()

Page 48: Einführung Vorgehensmodelle und Agile Software Entwicklung

Geld Beispiel

TODO Liste:•10 € * 10 = 100 €

• Betrag sollte private sein•Euro Nebeneffekte

•equals()

•hashCode()

•Equals null und object

Page 49: Einführung Vorgehensmodelle und Agile Software Entwicklung

TDD Vorteile

•Tests

•Hohe Code Abdeckung

•Gray-Box Testing statt White-Box

•Erfüllung der Anforderungen ist messbar

•Durchführung eines Refactoring ist mit wenig Fehlern behaftet

•Die Unit-Testsuite stellt eine „ausführbare Spezifikation“ dar

Page 50: Einführung Vorgehensmodelle und Agile Software Entwicklung

TDD Nachteile

•Entwickler die keine Erfahrung in der testgetriebenen Entwicklung besitzen ist die Umsetzung schwierig

•Hohes Test KnowHow bei den Entwickler nötig (kann man auch als Vorteil sehen)

•Hohe Anforderungen an Werkzeuge z.B. IDE

Page 51: Einführung Vorgehensmodelle und Agile Software Entwicklung

Übung 2

•Erstellen Sie Testgetrieben eine Software Komponente die die Anzahl der Wörter in einem Text zählt

•Beispiel: „Hallo hallo Beispiel TEXT für Text.“Ergebnis:

Hallo Beispiel Text für

2 1 2 1

Page 52: Einführung Vorgehensmodelle und Agile Software Entwicklung

Zusammenfassung Vorgehensmodelle

Page 53: Einführung Vorgehensmodelle und Agile Software Entwicklung

Scrum

Quelle: scrumalliance.org

Betrachten wir nächste Woche vor der Klausur Vorbereitung ausführlich ...

Page 54: Einführung Vorgehensmodelle und Agile Software Entwicklung

ArchitekturWeb Anwendungen

(Geschäftsanwendungen)

Page 55: Einführung Vorgehensmodelle und Agile Software Entwicklung

Fassade Geschäfts- klassen

Test- Client

Web- Client

ArchitekturWeb Anwendungen

Page 56: Einführung Vorgehensmodelle und Agile Software Entwicklung

ArchitekturWeb Anwendungen

Browser/HTML

JSF/JSP

BackingBeans

Fassade

Geschäftsklassen

Datenbank

DTO

Repository

Page 57: Einführung Vorgehensmodelle und Agile Software Entwicklung

Einführung in Java Server Faces

Page 58: Einführung Vorgehensmodelle und Agile Software Entwicklung

Übung 3

•Erstellen Sie ein einfaches Formular zum erstellen eines Tasks mit JSF.

•Nutzen Sie als Basis den Coderahmen für die Übung.