Effiziente Softwareentwicklung - TU Dresden

Communardo Software GmbH Lsungen aus Leidenschaft fr Netzwerke Communardo Software GmbH Leistungsportfolio - Kompetenzen Themen Produkte Knowledge Management Microsoft Office SharePoint Server Intranet 2.0

Microsoft Office Project Server Project & Team Collaboration Atlassian Confluence Enterprise Wiki Communardo ProductivityNet Publisher SurveyFramework Technologien

Individuelle SoftwareEntwicklung auf Basis Java/JEE, .NET und PHP Technische Anforderungsanalyse und Softwarekonzeption Communardo Themen Moderne IT Lsungen im Enterprise 2.0 Knowledge Management Wissensportale Enterprise Wikis Community Portale Corporate Search

Corporate Tagging Intranet 2.0 Weblogs fr Firma, Bereich und Mitarbeiter Wissenswiki RSS-Feeds Social Bookmarks Personalisiertes Tagging Project & Team Collaboration Team Workspace Corporate Blogging Collaboration Workflow

Security Workspace Virtuelle Projektrume Communardo Software GmbH Referenten Dipl.-Inf. Torsten Lunze Software Architekt www.communardo.de www.xing.com/profile/torsten_lunze Dipl.-Inf. Tino Schmidt Teamleiter CMT www.communardo.de www.xing.com/profile/Tino_Schmidt5 Effiziente Softwareentwicklung 1. Motivation

2. Build Management 3. MDA 4. Software Factories 5. Test & Reports Effiziente Softwareentwicklung Was ist Effizienz? DIN EN ISO 9000:2000 Effizienz ist das Verhltnis zwischen dem erzielten Ergebnis und den eingesetzten Mitteln. > Ma der Wirtschaftlichkeit Quelle: http://www.spmconsult.de/Effizienz.jpg

Effiziente Softwareentwicklung Warum beschftigt uns dieses Thema? Standish Group fhrt seit 1994 Umfragen zum Erfolg von Softwareentwicklungsprojekten durch -> CHAOS Report 1994 1996 erfolgreich 1998 behindert 2000 gescheitert

2002 2004 0% 20% 40% 60% 80% 100% Effiziente Softwareentwicklung Kriterien fr den Erfolg von Projekten.

Termin eingehalten Kosten eingehalten Anforderungen erfllt Effiziente Softwareentwicklung fhrt zu: - ertragreichen Projekten - zufriedenen Kunden - zufriedenen Mitarbeitern - Wachstum und Arbeitspltzen - Freiraum fr Innovationen Die Summe zeigt: ein wichtiges Thema. Effiziente Softwareentwicklung

Schwerpunkt dieser Vorlesung: - Betrachtung technischer Einflsse - Vorstellung MDA, Produktlinien Was ist nicht Inhalt dieser Vorlesung: - Projektmanagementthemen - Teamstrukturen, Zusammenarbeit - Kunden Auftragnehmerbeziehungen Probleme in der Softwareentwicklung Zu schneller Start in die Implementierung Copy&Paste - Code Standards/Richtlinien

werden nicht eingehalten unklare Anforderungen Analyse Kommunikation Systematische Tests fehlen Entwurf Implementierung lange Implementierungszeiten

Integration & Test nicht ausreichende Dokumentation instabiles System Vorgehensmodell fehlt Installation wiederkehrende Implementierungsaufgaben durch fehlende Modularitt

hohe Fehlerraten Qualittsmerkmale werden nicht festgelegt. Kundenzufriedenheit sieht anders aus. Effiziente Softwareentwicklung Implementierung Frameworks und Bibliotheken nutzen - generische Lsung fr verwandte Probleme - aktive Wiederverwendung - z. B. Jakarta Commons Bibliotheken Generierung nutzen - in der integrierten Entwicklungsumgebung

- bei der Erstellung von WebServices - fr ganze Projekte und Module Effiziente Softwareentwicklung Infrastruktur Einheitliche Entwicklungsumgebung - Pakete mit Voreinstellungen bereitstellen - Eclipse Distribution: Yoxos Wikis & FAQs - Links der Umgebungen (Dev, TuA, Live) - Entwicklungshandbuch - technische Beschreibungen, Zugangsdaten Effiziente Softwareentwicklung

1. Motivation 2. Build Management 3. MDA 4. Software Factories 5. Test & Reports Buildmanagement Teil des Konfigurationsmanagements Erstellung eines Softwarepaketes (Buildskripte)

Verteilen der Softwarepakete (Deployment) Berechnung von Softwaremetriken Automatisierung dieser Punkte Tools: Ant Maven Continous Integration (Continuum, Cruise Control) Shell Skripte Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 15 Entwickeln im Team SVN Repository Commit

Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 16 Entwickeln im Team SVN Repository Update Commit Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 17 Entwickeln im Team SVN Repository

Update Commit Compiler Error! Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 18 Ursachen fr Fehler Fehlerhafter Stand wurde eingecheckt Bearbeitung gleicher Module Fehler im lokalen Code

Falsche Konfiguration Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 19 Continous Integration SVN Repository Build Update Test Commit Report Compiler Error!

Fehler im Build aufgetreten? Communardo Software GmbH Fon +49 (0) 351 833820 in[email protected] www.communardo.de Folie 20 Continous Integration SVN Repository Update Commit Build Compiler Error! Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 21

Continous Integration Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. Definition Martin Fowler: [http://martinfowler.com/articles/continuousIntegration.html]

Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 22 Vorteile Continous Integration Schnelles Auffinden von Fehler Automatisierung von Tests Automatisierung der berprfung von Metriken Bereitstellung einer aktuellen Version zum Testen Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 23

Deployement Applikation Code DB Lokal n Applikation Code Applikation Code

DB Applikation Applikation DB DB DB Continous Integration Testsystem

Lokal 1 Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 24 Wirksystem Vorteile Build Management Standard Build Umgebung Frher: eigenes ANT Build Framework Heute: Maven (1 und 2), Nutzung der Standardfunktion soweit es geht

Nutzung von Funktionen wie Continous Integration Bndelung und Bereitstellung von Software Kontinuierliche Generierung von Reports hnliche Struktur der Projekte Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 25 Effiziente Softwareentwicklung 1. Motivation 2. Build Management 3. MDA 4. Software Factories

5. Test & Reports Motivation fr MDA Welchen Vorteil bringt uns eine MDA Lsung? Anforderungen Return of Investment Erlernbarkeit Stabilitt Geringe Kosten fr Tools Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 27

AndroMDA Java Sourceforge Projekt Version 3.2 im weiteren verwendet Modellierung erfolgt ber UML Anpassungen durch UML Profile (Stereotypen und Tagged Values)

Generierung anhand von Velocity Templates Bndelung von Templates und Konfigurationen in Cartridges Anpassung an generierten Code durch Vererbung Mergemappings Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 28 Andromda Generierungsprozess Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 29 Cartridges

Vorgefertige Cartridges: (N)Hibernate EJB3 Spring Webservices (AXIS, Xfire) Struts AndroMDA und Cartridges knnen direkt verwendet werden ohne Generator oder Templates anzupassen oder zu erstellen. Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 30 Andromda Standardarchitektur

Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 31 Modelliert RentalService +getAllCars() : List +getCustomersByName( name : String ) => CarDao +load( id : Long ) : Car +loadAll() : Car +create( car : Car ) : Car +update( car : Car ) : void

+remove( car : Car, id : Long ) : void +allCarsRented() : boolean -serial : String -name : String -type : String -id : Long -cars 0..* +isRented() : boolean +getOwner() : Person RentalServiceBase +getAllCars() : List

+getCustomersByName( name : String ) #handleGetAllCars() #handleGetCustomersByName( name : String ) #getCarDao() : CarDao #getPersonDao() CarDaoBase +allCarsRented() : boolean +create( car : Car ) : Car +load( id : Long ) : Car +remove( car : Car, id : Long ) : void +loadAll() : Car +update( car : Car ) : void #handleAllCarsRented() : boolean #handleGetAllCars()

#handleGetCustomersByName( name : String ) CarImpl +isRented() : boolean Einmalig generiert RentalServiceImpl CarDaoImpl #handleAllCarsRented() : boolean Person Generiert ServiceLocator

RentalService Communardo Software GmbH Fon +49 (0) 351 833820 +getRentalService() [email protected] : www.communardo.de Folie 32 Car Car.hbm.xml -name : String -birthday : Date -owner 1 +getCars() : Collection

Person.hbm.xml PersonDao MDA - Buildmanagement Integration der Generierung in Maven 2 Kleine nderung im Modell Ziel: Nur die Dateien neu generieren, die davon betroffen sind Lsung: Generierung nur eines bestimmten Packages Generierung nur durch ausgewhlte Cartridges Die Festlegung was neu generiert werden soll, wird nicht

automatisch sondern muss vom Entwickler getroffen werden. Versionierung von Modellen Problem: XML Format eines Modells komplex Mergen nahezu unmglich Lsung: Aufsplitten der Modelle in Schichten (FE/Service/Backend) und Komponenten (User/Evaluation/Security) Mehrere Modelldateien Nutzen von Locks in Versionskontrollen

Alternativ: Teamworkserver (Checkin/Checkout ber MagicDraw) Generierte Dateien nicht in Versionskontrolle MDA - Releasemanagement

Neues Release 2 wird entwickelt. Automatismus? Das Modell fr Release 2 wird umfangreich angepasst. Es tritt ein Bug im Release 1 auf. Der Bugfix bentigt eine nderung des Modells fr Release 1. Die nderung muss auch in Release 2 nachgezogen werden MDA - Probleme Konfliktlsung in Modellierung falls Entwickler gleichzeitig ein Modell

bearbeitet haben BPM4Struts Cartridge zu unbersichtlich verwendbar Modellierung zu umstndlich mit MagicDraw Zustzlich hoher Lernaufwand um Cartridge zu verstehen Bugs die durch Cartridge / Generator erzeugt werden sind schwieriger zu beheben Lsungen die an Standardarchitektur vorbeigehen:

Erstellung von nichtgenerierten Klassen Keine Modellierung im Modell Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 36 Einfluss auf den Softwareprozess Learning Curve: Lernen statt Arbeiten Lernaufwand hher: Zu verstehen was wird wie wo generiert Dafr Einsparung von Arbeit: Kleine Anpassung im Modell Groe nderung im Code (anstatt per Hand)

Bei der Konfiguration des Projektes: Auswahl der zu nutzenden Cartridges Anpassung, Erweiterung an Architekturforderungen Whrend des Projektes: Fehlerbehebung und Anpassung der Cartridges Zu entscheiden: Passe ich die Implementierung an oder suche ich eine generische Lsung durch Vernderung der Cartridges? Nachdem Projekt: Einfluss der Erfahrungen Wiederverwendung in neuen Projekten Andromda - Vorteile

Vorgefertige Cartridges (Hibernate, Spring) sind Out Of The Box verwendbar Mssen in anderen System i. d. R. erst von Hand geschrieben werden Anpassbarkeit gegeben Schnelles Entwickeln: Modell in Code Gerine Fehleranflligkeit durch generierten Code Sicherstellung von Architekturrichtlinien Konsistenz zwischen Code und Modellen Erhhung der Entwicklungsgeschwindigkeit Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 38

Andromda - Nachteile Muss mit den vorgefertigten generierten Konzept der 3-Schichten-Architektur leben Trennung des Plattformspezifisches Modell nicht gegeben (fr Andromda 4 geplant) Verknpfung von mehreren AndroMDA Projekten nur durch Anpassung von Cartridges

Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 39 Open issues Stabilitt des Datenmodells Auswirkungen auf Datenbank Entfremdung des Entwicklers vom Code

Herstellerabhngigkeit durch Verwendung der Tools Modellierung im Team Releasemanagement Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 40 Effiziente Softwareentwicklung 1. Motivation 2. Build Management 3. MDA 4. Software Factories 5. Test & Reports Software Factories - aktuell: Begriff stark von Microsoft geprgt

- Paradigma der industriellen Softwareentwicklung - Aufsetzen von Produktlinien Ziele: Risiko, Kosten, Fehlerraten minimieren Produkt-/ Projekteinfhrungszeiten verringern hohe Qualitt beibehalten / erreichen Software Factories Prinzipien: - Geschftsorientierung - Domnenentwicklung und Applikationsentwicklung - Trennung von Produkt bergreifenden und Produkt spezifischen Funktionen - Architektur zentrierte Entwicklung - Varianten Management

Software Factories Vorgehen: Quelle: iX 5/2008. Softwarewiederverwendun. Produktlinien die Zukunft der industriellen Softwareentwicklung Software Factories Erstellung konkreter Produkte - Bindungszeitpunkte Funktionsplattform Konkrete Variante Software Factories Erstellung konkreter Produkte - Bindungszeitpunkte

Funktionsplattform Konkrete Variante Software Factories Herausforderungen: - Trennung in Domn- und Applikationscode - nderung und Weiterentwicklung - Dokumentation u. Information bei nderungen - Build Management Teamorganisation: - Abstimmung ber nderung am Domncode - Durchfhrung von nderungen Effiziente Softwareentwicklung

1. Motivation 2. Build Management 3. MDA 4. Software Factories 5. Test & Reports Test & Quality Automatisierte Test - Junit, Mock-up Test - Frontend Tests: Selenium Quality Reports (Force Feedback fr Entwickler) - in der integrierten Entwicklungsumgebung (Metriken, CheckStyle) - im Build Prozess verankert Maven Reports - Nutzung technischen Know Hows

Test & Quality Maven Reports Syntaktische Tests - CheckStyle, Java Doc Abdeckung - JDepend Semantische Tests - PMD Report - FindBugs Report manuelle und automatische Auswertung mglich >> Beispiel Frontendtests

Testen der Funktionalitt so nah am Anwendungsfall wie mglich Vorteile Selenium: Testen direkt im Browser Testen von verschiedenen Browserderivaten mit einer Codebasis mglich Testen der Frontendkomponenten (insb. Javascript, Formulare) Verschiedene Frameworks: HttpUnit, HtmlUnit, Selenium Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de

Folie 51 Selenium Communardo Software GmbH Fon +49 (0) 351 833820 [email protected] www.communardo.de Folie 52 Praktikanten. Diplomarbeiten. Aktuelle Arbeiten: - Tagging Server - Tag Cloud Navigationen - Performance Optimierung von Webapplikationen Aktuelle Themen: - Produktentwicklung, - Enterprise 2.0, - Visualisierung von Informationen,

- Projekt Twitter Effiziente Softwareentwicklung Vielen Dank.

Recently Viewed Presentations

  • www.rcboe.org

    www.rcboe.org

    reading too much Radioactive Man). He. decides to perform this experiment by placing. 10 mice in a microwave for 10 seconds. He. compared these 10 mice to another 10 mice. that had not been exposed. His test consisted. of a...
  • Our Divided Patent System John R. Allison University

    Our Divided Patent System John R. Allison University

    Our study. All patent cases filed in 2008-2009 in which there was a decision on the merits, whether SJ, trial, or appeal and whether grant or deny
  • The Demand for Disability Insurance By Janine K.

    The Demand for Disability Insurance By Janine K.

    By Janine K. Scott Hedges against the loss of human capital include disability and life insurance. However, prior research shows that many households are deficient in ownership.
  • Midterm 1 Name: Student ID: University of Waterloo

    Midterm 1 Name: Student ID: University of Waterloo

    An onomasiological process behind the term mouse potato, in the sense of a person who spends vast amounts of unproductive time in front of a computer, is metonymy. T F 10. Lexicalization is the process by which languages encode concepts....
  • Workplace Technology 1 Objectives  To outline the role

    Workplace Technology 1 Objectives To outline the role

    Web Browser. Is a program used to view websites. Examples include: Mozilla® Firefox® Microsoft® Internet Explorer. Google ChromeTM. Apple Safari® Fun Fact: MosaicTM, the world's first freely available web browser, allowed for graphics and text and was developed in 1993...
  • Lorem Ipsum - unice.fr

    Lorem Ipsum - unice.fr

    Panne matériel Hydrocution La noyade: Prévention Savoir nager Condition physique Hygiène de vie Entrainement technique Contrôle et entretien de l'équipement Attention aux Conditions Météo, courant, visi, froid Plongées spéciales: épaves, grottes, etc Pas de plongée solo Surveillance des autres Assistance...
  • Presentation Title Goes Here and Can Take Two or More Lines

    Presentation Title Goes Here and Can Take Two or More Lines

    Litho-etch-Litho-Etch. Litho-freeze-Litho-Etch. Chris Mack Lecture 59 (CHE 323) Lithography Double Manufacturing. Two Lithography Double Patterning. ... Nakatama, K; et al. SPIE 2012. Self Aligned Quadruple Patterning. Nakatama, K; et al. SPIE 2012. SADP Problems.
  • Essentials of Distance Education - Uni Oldenburg

    Essentials of Distance Education - Uni Oldenburg

    Foundations of Distance Education, Routledge) "Distance Education is the most industrialized mode of Teaching and Learning" (Peters, 1967) Distance education as a system Economies of scale: total costs Economies of scale: Average costs Perraton's Cost-Effectiveness Cube Daniel's Triangles Ideally, Distance...