Einführung Vorgehensmodelle und Agile Software Entwicklung

Preview:

Citation preview

Software Technik

Christian Baranowski

HTWG Konstanz

Vorgehensmodelle und Agile Software Entwicklung

WiederholungOberflächentests mit Selenium

OberflächentestsEinführung in Selenium

Selenium Core

Selenium IDE

Selenium RC

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

Selenium IDECapture & Replay Tests mit Selenium

Action Tabelle

Selenium Remote ControlAnbindung Selenium in Java Code als Test Treiber

JAVA, PHP...

Selenium Server

Selenium Core

HTTP Proxy SUTWebapplikation

BrowserFirefox, IE

Vorgehensmodelle

Prozesse1

Methoden2

Werkzeuge3

Was ist Software Technik ?

• Vorhersehbare, planbare und kontrollierbare Software-Entwicklungsprojekte

• Prozess Optimierungen

• Zertifizierbarkeit

• Prozessqualität

Warum Vorgehensmodelle?

Beherrschung komplexer Prozesse

• 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?

Klassische Modelle

• Wasserfall

• V-Modell

• RUP

• Spiralmodell

• ...

Welche Vorgehensmodell gibt es?

Agile Modelle

• Scrum

• Extreme Programming (XP)

• Crystal

• ...

Softwarelebenszyklus

Problem Analyse

System Spezifikation

Umsetzung

System Testen

Betrieb und Wartung

Analyse und Umsetzung

Projekt Phasen

Test

Systemtest

Integrationstest

Modultest

Implementierung

Architektur Design

Spezifikation

Requirement Analysis

Testing

System Design

Coding

Delivery

Wasserfallmodell

• 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

• 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

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!!!

V-Modell

Anforderungsdefinition

Funktionaler Systementwurf

Technischer Systementwurf

Komponenten-spezifikation

Programmierung

Komponententest

Integrationstest

Systemtest

Abnahmetest

Konstruktionsphasen Te

stph

asen

V-Modell XT

Quelle: V-Modell-XT Releases 1.3 Dokumentation

• Anpassung an projektspezifische Anforderungen

• Integration vieler Aspekte des Entwicklungsprozesses

• Standardisierung der Abwicklung von Systemerstellungsprojekten

Vorteile V-Modell

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

• Sehr bürokratisch

• ...

Nachteile V-Modell

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/

iterative Softwareentwicklung

Quelle: Wikipedia DE

Extreme Programming (XP)

Quelle: Wikipedia

Extreme Programming (XP)

Quelle: Wikipedia

Extreme Programming (XP)

Quelle: Wikipedia

Kommunikation

Team

Planning Poker

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

Domain Driven Design

ENTITIES VALUE OBJECT SERVICES

REPOSITORIES FACTORIES

Pair Programming

Refactoring Grundlagen

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

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)

Refactoring Patterns•Rename Class, Field, Method

•Extrahiere Methode

•Extrahiere lokale Variable

•Extrahiere Konstante

•Extrahiere Interface

•...

Refactoring Patterns in Eclipse

Ü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

Test Driven Development

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.

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

Red Bar to Green Bar Pattern

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

Geld Beispiel

Produkt Anzahl Preis Summe

Füller 10 10 € 100 €

Schokolade 5 25 € 125 €

TODO Liste:• 10 € * 10 = 100 €

Geld Beispiel

TODO Liste:•10 € * 10 = 100 €

•Betrag sollte private sein

• Euro Nebeneffekte

Geld Beispiel

TODO Liste:•10 € * 10 = 100 €

•Betrag sollte private sein

•Euro Nebeneffekte

• equals()•hashCode()

Geld Beispiel

TODO Liste:•10 € * 10 = 100 €

• Betrag sollte private sein•Euro Nebeneffekte

•equals()

•hashCode()

•Equals null und object

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

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

Ü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

Zusammenfassung Vorgehensmodelle

Scrum

Quelle: scrumalliance.org

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

ArchitekturWeb Anwendungen

(Geschäftsanwendungen)

Fassade Geschäfts- klassen

Test- Client

Web- Client

ArchitekturWeb Anwendungen

ArchitekturWeb Anwendungen

Browser/HTML

JSF/JSP

BackingBeans

Fassade

Geschäftsklassen

Datenbank

DTO

Repository

Einführung in Java Server Faces

Übung 3

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

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

Recommended