Communardo Software GmbH Lösungen aus Leidenschaft für Netzwerke
1. Communardo Software GmbH Lösungen aus Leidenschaft für Netzwerke
2. Communardo Software GmbH Leistungsportfolio - Kompetenzen
ThemenProdukte
Technologien
Integrierte Enterprise 2.0 Lösungen
• Knowledge
Management
• Microsoft Office
SharePoint Server
• Intranet 2.0
• Microsoft Office
Project Server
• Project & Team
Collaboration
• Atlassian Confluence
Enterprise Wiki
• Communardo
ProductivityNet
Publisher
SurveyFramework
• Individuelle SoftwareEntwicklung
• auf Basis Java/JEE,
.NET und PHP
• Technische Anforderungsanalyse
und Softwarekonzeption
3. Folie 3
Communardo ThemenModerne IT Lösungen im Enterprise 2.0
Knowledge
Management
• Wissensportale
• Enterprise Wikis
• Community Portale
• Corporate Search
• Corporate Tagging
Intranet 2.0
• Weblogs für Firma,
Bereich und Mitarbeiter
• Wissenswiki
• RSS-Feeds
• Social Bookmarks
• Personalisiertes Tagging
Project & Team
Collaboration
• Team Workspace
• Corporate Blogging
• Collaboration Workflow
• Security Workspace
• Virtuelle Projekträume
4. Communardo Software GmbH Referenten
Dipl.-Inf. Torsten LunzeSoftware 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
5. Effiziente Softwareentwicklung
1. Motivation2. Build Management
3. MDA
4. Software Factories
5. Test & Reports
6. Effiziente Softwareentwicklung Was ist Effizienz?
DIN EN ISO 9000:2000„Effizienz ist das Verhältnis
zwischen dem erzielten
Ergebnis und den
eingesetzten Mitteln.“
> Maß der Wirtschaftlichkeit
Quelle: http://www.spmconsult.de/Effizienz.jpg
7. Effiziente Softwareentwicklung Warum beschäftigt uns dieses Thema?
Standish Group führt seit 1994 Umfragen zum Erfolg vonSoftwareentwicklungsprojekten durch -> CHAOS Report
1994
1996
erfolgreich
1998
behindert
2000
gescheitert
2002
2004
0%
20%
40%
60%
80%
100%
8. Effiziente Softwareentwicklung Kriterien für den Erfolg von Projekten.
Termin eingehaltenKosten eingehalten
Anforderungen erfüllt
9. Effiziente Softwareentwicklung
… führt zu:- ertragreichen Projekten
- zufriedenen Kunden
- zufriedenen Mitarbeitern
- Wachstum und Arbeitsplätzen
- Freiraum für Innovationen
Die Summe zeigt: ein wichtiges Thema.
10. Effiziente Softwareentwicklung
Schwerpunkt dieser Vorlesung:- Betrachtung technischer Einflüsse
- Vorstellung MDA, Produktlinien
Was ist nicht Inhalt dieser Vorlesung:
- Projektmanagementthemen
- Teamstrukturen, Zusammenarbeit
- Kunden – Auftragnehmerbeziehungen
11. Probleme in der Softwareentwicklung
Zu schneller Start indie Implementierung
Systematische Tests fehlen
Copy&Paste - Code
Standards/Richtlinien
werden nicht eingehalten
unklare
Anforderungen
Analyse
Kommunikation
Entwurf
Implementierung
lange Implementierungszeiten
Integration
& Test
nicht ausreichende
Dokumentation
instabiles System
Vorgehensmodell fehlt
Installation
wiederkehrende
Implementierungsaufgaben durch
fehlende
Modularität
hohe Fehlerraten
Qualitätsmerkmale
werden nicht festgelegt.
Kundenzufriedenheit sieht anders aus.
12. Effiziente Softwareentwicklung
ImplementierungFrameworks und Bibliotheken nutzen
- generische Lösung für verwandte Probleme
- aktive Wiederverwendung
- z. B. Jakarta Commons Bibliotheken
Generierung nutzen
- in der integrierten Entwicklungsumgebung
- bei der Erstellung von WebServices
- für ganze Projekte und Module
13. Effiziente Softwareentwicklung
InfrastrukturEinheitliche Entwicklungsumgebung
- Pakete mit Voreinstellungen bereitstellen
- Eclipse Distribution: Yoxos
Wikis & FAQs
- Links der Umgebungen (Dev, TuA, Live)
- Entwicklungshandbuch
- technische Beschreibungen, Zugangsdaten
14. Effiziente Softwareentwicklung
1. Motivation2. Build Management
3. MDA
4. Software Factories
5. Test & Reports
15. 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
16. Entwickeln im Team
SVN RepositoryCommit
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 16
17. Folie 17
Entwickeln im TeamSVN Repository
Update
Commit
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 17
18. Entwickeln im Team
SVN RepositoryUpdate
Commit
Compiler Error!
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 18
19. Ursachen für 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
20. Continous Integration
SVN RepositoryBuild
Update
Test
Commit
Report
Compiler Error!
Fehler im Build
aufgetreten?
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 20
21. Continous Integration
SVN RepositoryUpdate
Commit
Build
Compiler Error!
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 21
22. Continous Integration
Definition Martin Fowler: „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.”
[http://martinfowler.com/articles/continuousIntegration.html]
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 22
23. Vorteile Continous Integration
Schnelles Auffinden von Fehler
Automatisierung von Tests
Automatisierung der Überprüfung von Metriken
Bereitstellung einer aktuellen Version zum Testen
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 23
24. Deployement
ApplikationCode
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
25. Vorteile Build Management
Standard Build Umgebung
• Früher: eigenes ANT Build Framework
• Heute: Maven (1 und 2), Nutzung der Standardfunktion soweit es
geht
Nutzung von Funktionen wie Continous Integration
Bündelung 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
26. Effiziente Softwareentwicklung
1. Motivation2. Build Management
3. MDA
4. Software Factories
5. Test & Reports
27. Motivation für MDA
Welchen Vorteil bringt uns eine MDA Lösung?
Anforderungen
• Return of Investment
• Erlernbarkeit
• Stabilität
• Geringe Kosten für Tools
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 27
28. 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
Bündelung 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
29. Andromda Generierungsprozess
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.deFolie 29
30. Cartridges
Vorgefertige Cartridges:
• (N)Hibernate
• EJB3
• Spring
• Webservices (AXIS, Xfire)
• Struts
AndroMDA und Cartridges können 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
31. Andromda Standardarchitektur
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.deFolie 31
32. Folie 32
ModelliertRentalService
+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
Car
-serial : String
-name : String
-type : String
-id : Long
-cars
0..*
+isRented() : b oolean
+getOwner() : Person
RentalServiceBase
=>
CarDaoBase
+getAllCars() : List
+getCustomersByName( name : String )
#handleGetAllCars()
#handleGetCustomersByName( name : String )
#getCarDao() : CarDao
#getPersonDao()
CarImpl
+allCarsRented() : boolean
+create( car : Car ) : Car
+load( id : Long ) : Car
+remove( car : Car, id : Long ) : void
+loadAll() : Car
+update( car : Car ) : void
#handleAllCarsRented() : b oolean
Einmalig
generiert
RentalServiceImpl
#handleGetAllCars()
#handleGetCustomersByName( name : String )
+isRented() : boolean
CarDaoImpl
#handleAllCarsRented() : boolean
Person
Generiert
ServiceLocator
: RentalService
© Communardo Software GmbH · Fon +49 (0) 351 833820 ·+getRentalService()
[email protected]
· www.communardo.de
Car.hbm.xml
-name : String
-birthday : Date
+getCars() : Collection
Person.hbm.xml
PersonDao
Folie 32
-owner
1
33. MDA - Buildmanagement
Integration der Generierung in Maven 2
Kleine Änderung im Modell
• Ziel: Nur die Dateien neu generieren, die davon betroffen
sind
• Lösung:
• Generierung nur eines bestimmten Packages
• Generierung nur durch ausgewählte Cartridges
• Die Festlegung was neu generiert werden soll, wird nicht
automatisch sondern muss vom Entwickler getroffen
werden.
34. Versionierung von Modellen
Problem: XML Format eines Modells komplex
• Mergen nahezu unmöglich
Lösung:
• 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
35. MDA - Releasemanagement
Neues Release 2 wird entwickelt.
Das Modell für Release 2 wird umfangreich angepasst.
Es tritt ein Bug im Release 1 auf.
Der Bugfix benötigt eine Änderung des Modells für Release 1.
Die Änderung muss auch in Release 2 nachgezogen werden…
Automatismus?
36. MDA - Probleme
Konfliktlösung in Modellierung falls Entwickler gleichzeitig ein Modell
bearbeitet haben
BPM4Struts Cartridge zu unübersichtlich verwendbar
• Modellierung zu umständlich mit MagicDraw
• Zusätzlich hoher Lernaufwand um Cartridge zu verstehen
Bugs die durch Cartridge / Generator erzeugt werden sind
schwieriger zu beheben
Lösungen 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
37. Einfluss auf den Softwareprozess
Learning Curve: „Lernen statt Arbeiten“
• Lernaufwand höher: Zu verstehen was wird wie wo generiert
• Dafür Einsparung von Arbeit: Kleine Anpassung im Modell
Große Änderung im Code (anstatt per Hand)
Bei der Konfiguration des Projektes:
• Auswahl der zu nutzenden Cartridges
• Anpassung, Erweiterung an Architekturforderungen
Während des Projektes:
• Fehlerbehebung und Anpassung der Cartridges
• Zu entscheiden: Passe ich die Implementierung an oder suche
ich eine generische Lösung durch Veränderung der Cartridges?
Nachdem Projekt:
• Einfluss der Erfahrungen
• Wiederverwendung in neuen Projekten
38. Andromda - Vorteile
Vorgefertige Cartridges (Hibernate, Spring) sind Out Of The Box verwendbar
Müssen in anderen System i. d. R. erst von Hand geschrieben werden
Anpassbarkeit gegeben
Schnelles Entwickeln: Modell in Code
Gerine Fehleranfälligkeit durch generierten Code
Sicherstellung von Architekturrichtlinien
Konsistenz zwischen Code und Modellen
Erhöhung der Entwicklungsgeschwindigkeit
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 38
39. Andromda - Nachteile
Muss mit den vorgefertigten generierten Konzept der 3-Schichten-Architektur
leben
Trennung des Plattformspezifisches Modell nicht gegeben (für Andromda 4
geplant)
Verknüpfung von mehreren AndroMDA Projekten nur durch Anpassung von
Cartridges
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 39
40. Open issues
Stabilität des Datenmodells
• Auswirkungen auf Datenbank
Entfremdung des Entwicklers vom Code
Herstellerabhängigkeit durch Verwendung der Tools
Modellierung im Team
Releasemanagement
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 40
41. Effiziente Softwareentwicklung
1. Motivation2. Build Management
3. MDA
4. Software Factories
5. Test & Reports
42. Software Factories
- aktuell: Begriff stark von Microsoft geprägt- Paradigma der industriellen Softwareentwicklung
- Aufsetzen von Produktlinien
Ziele: Risiko, Kosten, Fehlerraten minimieren
Produkt-/ Projekteinführungszeiten verringern
hohe Qualität beibehalten / erreichen
43. Software Factories
Prinzipien:- Geschäftsorientierung
- Domänenentwicklung und Applikationsentwicklung
- Trennung von Produkt übergreifenden
und Produkt spezifischen Funktionen
- Architektur zentrierte Entwicklung
- Varianten Management
44. Software Factories
Vorgehen:Quelle: iX 5/2008. „Softwarewiederverwendun. Produktlinien – die Zukunft der industriellen Softwareentwicklung“
45. Software Factories
Erstellung konkreter Produkte - BindungszeitpunkteFunktionsplattform
Konkrete Variante
46. Software Factories
Erstellung konkreter Produkte - BindungszeitpunkteFunktionsplattform
Konkrete Variante
47. Software Factories
Herausforderungen:- Trennung in Domän- und Applikationscode
- Änderung und Weiterentwicklung
- Dokumentation u. Information bei Änderungen
- Build Management
Teamorganisation:
- Abstimmung über Änderung am Domäncode
- Durchführung von Änderungen
48. Effiziente Softwareentwicklung
1. Motivation2. Build Management
3. MDA
4. Software Factories
5. Test & Reports
49. Test & Quality
Test & QualityAutomatisierte Test
- Junit, Mock-up Test
- Frontend Tests: Selenium
Quality Reports (Force Feedback für Entwickler)
- in der integrierten Entwicklungsumgebung (Metriken,
CheckStyle)
- im Build Prozess verankert – Maven Reports
- Nutzung technischen Know Hows
50. Folie 50
Test & QualityMaven Reports
Syntaktische Tests
- CheckStyle, Java Doc Abdeckung
- JDepend
Semantische Tests
- PMD Report
- FindBugs Report
manuelle und automatische Auswertung möglich
>> Beispiel
51. Frontendtests
Testen der Funktionalität so nah am Anwendungsfall wie möglich
Verschiedene Frameworks:
• HttpUnit, HtmlUnit, Selenium
Vorteile Selenium:
• Testen direkt im Browser
• Testen von verschiedenen Browserderivaten mit einer Codebasis
möglich
• Testen der Frontendkomponenten (insb. Javascript, Formulare)
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.de
Folie 51
52. Selenium
© Communardo Software GmbH · Fon +49 (0) 351 833820 · [email protected] · www.communardo.deFolie 52
53. Praktikanten. Diplomarbeiten.
Aktuelle Arbeiten:- Tagging Server
- Tag Cloud Navigationen
- Performance Optimierung von Webapplikationen
Aktuelle Themen:
- Produktentwicklung,
- Enterprise 2.0,
- Visualisierung von Informationen,
- Projekt Twitter