Software Technik
            HTWG Konstanz



    Vorgehensmodelle und Agile
          Software Entwicklung



                            Christian Baranowski
Wiederholung
Oberflächentests mit Selenium
Oberflächentests
Einführung in Selenium
                Selenium Core




     Selenium                   Selenium RC
        IDE
Selenium Core
am Beispiel eines Zinsrechner

                                Action - Tabelle
 Selenium Befehl
 open                /JugsBase/zinsrechner.jsp     Argumente
 type                betrag                            20.0

 type                zinsatz                           22.0

 type                laufzeit                          100.0

 clickAndWait        submit

 assertTextPresent   8649939365.27	
  Euro

                                         Target
Selenium IDE
Capture & Replay Tests mit Selenium




            Action Tabelle
Selenium Remote Control
Anbindung Selenium in Java Code als Test Treiber


                   Selenium Server
                                        Browser
                                       Firefox, IE
                   Selenium Core
        JAVA,
        PHP...
                                         SUT
                     HTTP Proxy
                                     Webapplikation
Vorgehensmodelle
Was ist Software Technik ?

  Prozesse   Methoden    Werkzeuge
     1          2            3
Warum Vorgehensmodelle?
• Vorhersehbare, planbare   und kontrollierbare Software-
 Entwicklungsprojekte

• Prozess   Optimierungen

• Zertifizierbarkeit

• Prozessqualität




                Beherrschung komplexer Prozesse
Was ist ein Vorgehensmodell?
• Reihenfolge   der Arbeitsabläufe (Phasen)

• Rahmenwerk     (Framework)

• Fertigstellungskriterien   (Umfang und Inhalt)

• Verantwortlichkeiten   und Kompetenzen (Rollen)

• notwendige    Mitarbeiterqualifikationen (Zertifikate)

• definierte   Standards, Richtlinien und Werkzeuge
Welche Vorgehensmodell gibt es?
Klassische Modelle   Agile Modelle

• Wasserfall         • Scrum

• V-Modell           • Extreme   Programming (XP)

• RUP                • Crystal

• Spiralmodell       • ...

• ...
Softwarelebenszyklus
         Betrieb und               Problem
          Wartung                  Analyse




     System                              System
     Testen                            Spezifikation




                       Umsetzung
Analyse und Umsetzung
Projekt Phasen

                                                        Test
  Spezifikation

                                                   Systemtest



    Architektur
     Design

                                Integrationstest

  Implementierung

                    Modultest
Requirement Analysis          Wasserfallmodell

              System Design



                          Coding



                                   Testing



                                             Delivery
Vorteile Wasserfall
• 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
Nachteile 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ührungdes Systems sehr spät nach Beginn des
 Entwicklungszyklus
• Fehler   werden unter Umständen spät erkannt (Big Bang)
Nachteile Wasserfall
Aufwand in PT                                      Typischer Projektverlauf
                                                   geplanter Verlauf
      80




      60
                                                             Wir merken erst hier wir
                                                             haben ein Problem!!!

      40




      20




       0
  Requirement Analysis    System Design   Coding        Testing               Delivery
  Wasserfall Phasen
V-Modell
 Anforderungsdefinition                                                    Abnahmetest



               Funktionaler
                                                                       Systemtest
              Systementwurf
Ko




                   Technischer
                                                              Integrationstest
ns




                  Systementwurf




                                                                                           en
 tru




                                                                                       as
     k
     tio




                                                                                     tph
         n




                       Komponenten-
       sp




                                                                                       s
                                                         Komponententest




                                                                                    Te
                        spezifikation
         ha
             se
             n




                                        Programmierung
V-Modell XT




      Quelle: V-Modell-XT Releases 1.3 Dokumentation
Vorteile V-Modell
• Anpassung     an projektspezifische Anforderungen

• Integration   vieler Aspekte des Entwicklungsprozesses

• Standardisierung
                 der Abwicklung von
 Systemerstellungsprojekten
Nachteile V-Modell
• Zu    allgemein für kleine und mittlere Software-Modelle
• Sehr   bürokratisch
• ...
Agile Software Entwicklung
Manifesto for Agile Software Development

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.

                                   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
• ProbierenSie die Refactoring Methoden:
 Extrahiere Methode, Extrahiere lokale Variable,
 Extrahiere Konstante, Extrahiere Interface
 In 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 ...
Architektur
  Web Anwendungen
(Geschäftsanwendungen)
Architektur
         Web Anwendungen

Test-
Client
                     Geschäfts-
           Fassade
                      klassen
Web-
Client
Architektur
Web Anwendungen
    Browser/HTML




       JSF/JSP



    BackingBeans

                        DTO

       Fassade



   Geschäftsklassen

                      Repository

      Datenbank
Einführung in Java Server Faces
Übung 3

• ErstellenSie ein einfaches Formular zum erstellen
 eines Tasks mit JSF.

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

Einführung Vorgehensmodelle und Agile Software Entwicklung

  • 1.
    Software Technik HTWG Konstanz Vorgehensmodelle und Agile Software Entwicklung Christian Baranowski
  • 2.
  • 3.
    Oberflächentests Einführung in Selenium Selenium Core Selenium Selenium RC IDE
  • 4.
    Selenium Core am Beispieleines Zinsrechner Action - Tabelle Selenium Befehl open /JugsBase/zinsrechner.jsp Argumente type betrag 20.0 type zinsatz 22.0 type laufzeit 100.0 clickAndWait submit assertTextPresent 8649939365.27  Euro Target
  • 5.
    Selenium IDE Capture &Replay Tests mit Selenium Action Tabelle
  • 6.
    Selenium Remote Control AnbindungSelenium in Java Code als Test Treiber Selenium Server Browser Firefox, IE Selenium Core JAVA, PHP... SUT HTTP Proxy Webapplikation
  • 7.
  • 8.
    Was ist SoftwareTechnik ? Prozesse Methoden Werkzeuge 1 2 3
  • 9.
    Warum Vorgehensmodelle? • Vorhersehbare,planbare und kontrollierbare Software- Entwicklungsprojekte • Prozess Optimierungen • Zertifizierbarkeit • Prozessqualität Beherrschung komplexer Prozesse
  • 10.
    Was ist einVorgehensmodell? • Reihenfolge der Arbeitsabläufe (Phasen) • Rahmenwerk (Framework) • Fertigstellungskriterien (Umfang und Inhalt) • Verantwortlichkeiten und Kompetenzen (Rollen) • notwendige Mitarbeiterqualifikationen (Zertifikate) • definierte Standards, Richtlinien und Werkzeuge
  • 11.
    Welche Vorgehensmodell gibtes? Klassische Modelle Agile Modelle • Wasserfall • Scrum • V-Modell • Extreme Programming (XP) • RUP • Crystal • Spiralmodell • ... • ...
  • 12.
    Softwarelebenszyklus Betrieb und Problem Wartung Analyse System System Testen Spezifikation Umsetzung
  • 13.
  • 14.
    Projekt Phasen Test Spezifikation Systemtest Architektur Design Integrationstest Implementierung Modultest
  • 15.
    Requirement Analysis Wasserfallmodell System Design Coding Testing Delivery
  • 16.
    Vorteile Wasserfall • klareAbgrenzung der einzelnen Phasen • einfache Möglichkeiten der Planung und Kontrolle • bei stabilen Anforderungen und klarer Abschätzung von Kosten und Umfang sehr effektives Modell
  • 17.
    Nachteile 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ührungdes Systems sehr spät nach Beginn des Entwicklungszyklus • Fehler werden unter Umständen spät erkannt (Big Bang)
  • 18.
    Nachteile Wasserfall Aufwand inPT Typischer Projektverlauf geplanter Verlauf 80 60 Wir merken erst hier wir haben ein Problem!!! 40 20 0 Requirement Analysis System Design Coding Testing Delivery Wasserfall Phasen
  • 19.
    V-Modell Anforderungsdefinition Abnahmetest Funktionaler Systemtest Systementwurf Ko Technischer Integrationstest ns Systementwurf en tru as k tio tph n Komponenten- sp s Komponententest Te spezifikation ha se n Programmierung
  • 20.
    V-Modell XT Quelle: V-Modell-XT Releases 1.3 Dokumentation
  • 21.
    Vorteile V-Modell • Anpassung an projektspezifische Anforderungen • Integration vieler Aspekte des Entwicklungsprozesses • Standardisierung der Abwicklung von Systemerstellungsprojekten
  • 22.
    Nachteile V-Modell • Zu allgemein für kleine und mittlere Software-Modelle • Sehr bürokratisch • ...
  • 23.
  • 24.
    Manifesto for AgileSoftware Development 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. http://agilemanifesto.org/
  • 25.
    iterative Softwareentwicklung Quelle: Wikipedia DE
  • 26.
    Extreme Programming (XP) Quelle: Wikipedia
  • 27.
    Extreme Programming (XP) Quelle: Wikipedia
  • 28.
    Extreme Programming (XP) Quelle: Wikipedia
  • 29.
  • 30.
  • 31.
  • 32.
    Domain Driven Design ENTITIES VALUE OBJECT SERVICES REPOSITORIES FACTORIES
  • 33.
  • 34.
  • 35.
    Refactoring „Refactoring bezeichnet inder 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
  • 36.
    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)
  • 37.
    Refactoring Patterns • RenameClass, Field, Method • Extrahiere Methode • Extrahiere lokale Variable • Extrahiere Konstante • Extrahiere Interface • ...
  • 38.
  • 39.
    Übung 1 • ProbierenSiedie Refactoring Methoden: Extrahiere Methode, Extrahiere lokale Variable, Extrahiere Konstante, Extrahiere Interface In der Quicksort Beispiel Klasse aus • Nutzen Sie Ihren Test um sicherzustellen dass Sie lediglich die Struktur ändern
  • 40.
  • 41.
    Test Driven Development TestgetriebeneEntwicklung bezeichnet man eine Agile Methode zur Entwicklung einer Software, bei der Software-Tests vor den zu testenden Komponenten entwickelt werden.
  • 42.
    Test Driven DevelopmentProzess 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
  • 43.
    Red Bar toGreen Bar Pattern
  • 44.
    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
  • 45.
    Geld Beispiel Produkt Anzahl Preis Summe Füller 10 10 € 100 € Schokolade 5 25 € 125 € TODO Liste: • 10 € * 10 = 100 €
  • 46.
    Geld Beispiel TODO Liste: •10 € * 10 = 100 € • Betrag sollte private sein • Euro Nebeneffekte
  • 47.
    Geld Beispiel TODO Liste: •10 € * 10 = 100 € • Betrag sollte private sein • Euro Nebeneffekte • equals() • hashCode()
  • 48.
    Geld Beispiel TODO Liste: •10 € * 10 = 100 € • Betrag sollte private sein • Euro Nebeneffekte • equals() • hashCode() • Equals null und object
  • 49.
    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
  • 50.
    TDD Nachteile • Entwicklerdie 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
  • 51.
    Ü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
  • 52.
  • 53.
    Scrum Quelle: scrumalliance.org Betrachten wir nächste Woche vor der Klausur Vorbereitung ausführlich ...
  • 54.
    Architektur WebAnwendungen (Geschäftsanwendungen)
  • 55.
    Architektur Web Anwendungen Test- Client Geschäfts- Fassade klassen Web- Client
  • 56.
    Architektur Web Anwendungen Browser/HTML JSF/JSP BackingBeans DTO Fassade Geschäftsklassen Repository Datenbank
  • 57.
    Einführung in JavaServer Faces
  • 58.
    Übung 3 • ErstellenSieein einfaches Formular zum erstellen eines Tasks mit JSF. • Nutzen Sie als Basis den Coderahmen für die Übung.