Legacy Code meistern in x einfachen Schritten
|
|
- Carsten Thomas
- vor 6 Jahren
- Abrufe
Transkript
1 Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str Mannheim info@oio.de Über mich Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator Schwerpunkte Architektur Agile Softwareentwicklung Codequalität 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 2 1
2 Java, XML und Open Source seit 1998 ) Software Factory ) Schlüsselfertige Realisierung von Java Software Individualsoftware Pilot- und Migrationsprojekte Sanierung von Software Software Wartung ) Object Rangers ) Unterstützung laufender Java Projekte Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing ) Competence Center) Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme Methoden, Standards und Tools für die Entwicklung von offenen, unternehmensweiten Systemen 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 3 Legacy Code meistern in x einfachen Schritten Nur heute, nicht 1, nicht 2, 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 4 2
3 Legacy Code meistern in x einfachen Schritten In einer idealen Welt würden wir nur "neuen" Code schreiben, der natürlich perfekt und wunderschön ist. Wir müssten nie wieder unseren Code anschauen, geschweige denn 10 Jahre alte Projekte warten. Ende des Tagtraums... Leider ist unsere Welt nicht so ideal, unser Code von gestern ist heute schon Legacy. Diesen im Nachhinein zu verstehen, zu erweitern oder darin Fehler zu beheben, ist immer eine Herausforderung, insbesondere wenn Tests fehlen. Trotzdem gibt es einfache Möglichkeiten, wie man die Qualität von Legacy-Code verbessern kann. Das Wichtigste ist das Einziehen von Fangnetzen, sodass man trotz fehlender Tests guten Gewissens Änderungen durchführen kann. Wer Golden Master, Subclass to Test und Extract Pure Functions an konkreten Beispielen kennenlernen möchte, ist in dieser Session genau richtig Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 5 Unser Thema heute: Refactoring Legacy Code Disclaimer: KEIN Projekterfahrungsbericht 6 3
4 Legacy Code Somebody else's code Jeder kennt ihn Keiner mag ihn Was ist mit unserem eigenen Code? 7 Refactoring Legacy Code Warum? Verstehen Erweitern Bugfixing Optimierung Grafik von ClkerFreeVectorImages: (CC0 Public Domain Lizenz) 8 4
5 Refactoring Legacy Code Annahmen Es gibt automatisierte Tests Quellcode ist schon testbar 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 9 Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy Code Comments
6 "Gimme Google, Stack Overflow, and this keyboard, and I'll program you anything. " Duplicated Code 11 Refactoring Legacy Code Code without tests 12 6
7 LEGACY Vermächtnis Erbe Altlast Hinterlassenschaft Foto von smpcas, CC0 Public Domain Lizenz, 13 Legacy code is valuable code that we feel afraid to change. J. B. Rainsberger Foto von PublicDomainPictures, CC0 Public Domain Lizenz,
8 Code without tests is bad code. Michael Feathers 15 Es ist egal, wie gut geschrieben der Code ist schön der Code ist objektorientiert der Code ist entkoppelt der Code ist Tests lassen unser Verhalten schnell und verifizierbar ändern Ohne Tests wissen wir nicht, ob der Code besser oder schlechter wird 16 8
9 Die gute Nachricht Keine Wissenschaft Gesunder Menschenverstand Foto von Engel62: (CC0 Public Domain Lizenz) 17 Was macht es dann schwierig? Hello World vs LOC Disziplin (kleine Schritte, ) Aussagekräftige Testabdeckung 18 9
10 Legacy zu Clean Code? Clean Code ist NICHT das Ziel Hauptfokus: testbarer Code 19 Dann schreiben wir halt Tests viel zu teuer Code meist kaum/nicht testbar starke Kopplung, geringe Kohäsion 20 10
11 refactoren bräuchte man Tests, Tests würden helfen, Code zu verstehen, um Code zu verstehen könnte man Code refactoren, um Code zu refactoren bräuchte man Tests, Tests würden helfen, Code zu verstehen, um Code zu verstehen könnte man Code refactoren, um Code zu refactoren bräuchte man Tests, Tests würden helfen, Code zu verstehen, um Code zu verstehen könnte man Code refactoren, um Code zu refactoren bräuchte man Tests, Tests würden helfen, Code zu verstehen, um Code zu Henne-Eiverstehen könnte man Code refactoren, um Code zu refactoren bräuchte Problem man Tests, Tests würden helfen, Code zu verstehen, um Code zu verstehen könnte man Code refactoren, um Code zu refactoren bräuchte man Tests, Tests würden helfen, Code zu verstehen, um Code zu verstehen könnte man Code refactoren, um Code zu refactoren bräuchte man Tests, Tests würden helfen, Code zu verstehen, um Code zu verstehen könnte man Code refactoren, um Code zu refactoren bräuchte man Tests, Tests würden helfen, Code zu verstehen, um Code zu verstehen könnte man Code refactoren, um Code zu refactoren bräuchte man Tests, Tests würden helfen, Code zu 21 um Tests zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten müßte man refactoren, um zu refactoren könnte man Tests schreiben, um Tests zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten müßte man refactoren, um zu refactoren könnte man Tests schreiben, um Tests zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten müßte man refactoren, um zu refactoren könnte man Tests schreiben, um Tests zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten müßte man refactoren, um zu refactoren könnte man Tests schreiben, um Tests zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten Die Katze müßte beißt man refactoren, sich um zu refactoren könnte man Tests schreiben, in um den Tests Schwanz! zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten müßte man refactoren, um zu refactoren könnte man Tests schreiben, um Tests zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten müßte man refactoren, um zu refactoren könnte man Tests schreiben, um Tests zu schreiben muß der Code testbar sein, um testbaren Code zu erhalten müßte man refact 22 11
12 Vorgehen 1. Identify what to change 2. Identify what to test 3. Break dependencies 4. Write the tests 5. Modify and refactoring 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 23 No Silver Bullet Jedes Projekt individuell Vorsicht beim Beheben von offensichtlichen Fehlern Foto von stevepb: (CC0 Public Domain Lizenz) 24 12
13 Dann mal her mit den x einfachen Schritten! 25 A Sicherheitsnetz + Tests Foto von bella67: (CC0 Public Domain Lizenz) 26 13
14 B Sanierung Foto von KlausHausmann: (CC0 Public Domain Lizenz) 27 1 Golden Master Foto von istara: (CC0 Public Domain Lizenz) 28 14
15 29 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 30 15
16 1 Golden Master Vorsicht bei Zufallsgeneratoren Festlegen von Seeds (Pseudo-Random) 31 2 Subclass To Test Foto von chrisli8020: (CC0 Public Domain Lizenz) 32 16
17 2 Subclass To Test Seam (Nahtstelle) Ein Seam ist eine Stelle, an der man das Verhalten editieren kann, ohne direkt an dieser Stelle zu ändern. Aufbrechen stark gekoppelter Abhängigkeiten aka Extract and Override 33 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 34 17
18 3 Extract Pure Functions Foto von PublicDomainPictures: (CC0 Public Domain Lizenz) 35 3 Extract Pure Functions seiteneffektfrei keine Statusänderung "It's a classic, we call it a Klassiker" 36 18
19 3 Extract Pure Functions "pure function".substring(5); UrlEncoder.encode("pure function"); Math.max(x, y); System.out.println("unpure"); list.add(3); Collections.sort(list); 37 3 Extract Pure Functions Codestellen isolieren Ziele Separat testbar Duplikation reduzieren 38 19
20 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 39 4 Remove Duplication Don't Repeat Yourself Beachte: Rule of Three Foto von AdinaVoicu: (CC0 Public Domain Lizenz) 40 20
21 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 41 5 Extract Class Large class SRP verletzt Ziele Unabhängiges Testen einzelner Teile Sauberes OO-Design Foto von blickpixel: (CC0 Public Domain Lizenz) 42 21
22 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 43 6 Dependency Inversion 7 Test Dependency non-public Inversion member 8 Dependency Mocking Framework Inversion 44 22
23 Zusammenfassung Golden Master Subclass To Test Extract Pure Functions Remove Duplication Extract Class Dependency Inversion Test non-public member Mocking Framework 46 23
24 1 Golden Master Subclass To Test Extract Pure Functions Extract Class Dependency Inversion Test non-public member Mocking Framework 48 24
25 3 4 5 Extract Pure Functions Remove Duplication Extract Class 49 Tools Code Coverage Approval Tests Infinitest Eclipse Metrics 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 50 25
26 Legacy Code Retreat Foto von Jmabel: (CC BY-SA 3.0 Lizenz) 51 Links Code-Beispiel der Live-Demo anderes Code-Beispiel für Legacy Code Blog: Techniken zu Legacy Code-Retreat Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 52 26
27 Literaturhinweise Refactoring Sprache: Englisch Gebunden Seiten - Addison Wesely Erscheinungsdatum: 1. Juni 1999 ISBN: Working Effectively with Legacy Code Sprache: Englisch Gebunden 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 53?? Fragen??? Orientation Objects GmbH Weinheimer Str Mannheim info@oio.de?? 27
28 Vielen Dank für ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str Mannheim Zusatzmaterial 6 Dependency Inversion 7 Test Dependency non-public Inversion member 8 Dependency Mocking Framework Inversion 2016 Orientation in Objects GmbH Legacy Code meistern in x einfachen Schritten 56 28
29 6 Dependency Inversion Entkoppeln durch explizites Setzen der Abhängigkeiten Foto von tatlin: (CC0 Public Domain Lizenz) 57 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 58 29
30 7 Test non-public member Wirklich? Gute Alternative bei Legacy Code! Foto von Guian Bolisay: (CC BY-SA 2.0) 59 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 60 30
31 8 Mocking Subclass To Test on Steorids! Interaktion mit Umgebung testen Erwartete Parameter und Aufrufreihenfolge Foto von tatlin: (CC0 Public Domain Lizenz) 61 Live-Coding Foto von StockSnap: (CC0 Public Domain Lizenz) 62 31
Legacy Code meistern in x einfachen Schritten
Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Über mich Falk Sippach (@sippsack) Trainer, Berater, Entwickler
MehrLegacy Code meistern in x einfachen Schritten
Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Abstract In einer idealen Welt würden wir nur "neuen" Code
MehrAnt + Ivy Building with dependencies
Ant + Ivy Building with dependencies Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Björn Feustel Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory
MehrStruts 2 Das Imperium schlägt zurück?
Struts 2 Das Imperium schlägt zurück? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Tobias Kieninger www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software
MehrLast- und Stresstest mit the Grinder 3
Last- und Stresstest mit the Grinder 3 Orientation in Objects GmbH oder auch mein Leben mit the Grinder 3 Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source
MehrAtlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand
Nahtlose Entwicklungsworkflows aus einer Hand Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory )
MehrMichael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software
Michael C. Feathers Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software Vorwort................................................... 13 Geleitwort.................................................
MehrEffektiver Einsatz von Code-Reviews
Effektiver Einsatz von Code-Reviews Version: 1.4 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de 18. Java Forum Stuttgart 2015 Ihr Sprecher Thorsten Maier Trainer,
MehrEffektives Arbeiten mit Legacy Code
Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software von Michael C. Feathers 1. Auflage Effektives Arbeiten mit Legacy Code Feathers schnell und portofrei erhältlich bei beck-shop.de
MehrHibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige
MehrKontinuierliche Architekturdokumentation im agilen Umfeld
Kontinuierliche Architekturdokumentation im agilen Umfeld Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer,
MehrDie S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius
Die S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius Huber @ThomasClaudiusH BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH
MehrRefactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag
Refactoring von Legacy Systemen Jochen Winzen jochen.winzen@andrena.de andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität
MehrAgile Ressourcenplanung
Agile Ressourcenplanung Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence
MehrIssue Tracker & Wiki
Kur für den Projektalltag Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Projekte ) ) Beratung ) ) Akademie ) Schlüsselfertige
MehrJVM Functional Language Battle
JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator
MehrKontinuierliche Architekturdokumentation im agilen Umfeld
Kontinuierliche Architekturdokumentation im agilen Umfeld Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer,
MehrRefactoring. Vortrag im Rahmen des Softwareprojekts: Übersetzerbau. Referenten: Vivienne Severa Alpin Mete Sahin Florian Mercks. Datum:
Refactoring Vortrag im Rahmen des Softwareprojekts: Übersetzerbau Referenten: Vivienne Severa Alpin Mete Sahin Florian Mercks Datum: 20.06.2013 Überblick Einführung Refactoring im Einsatz Werkzeugunterstützung
MehrKapitel 3 Software Quality III
Kapitel 3 Software Quality III Software Architecture, Quality, and Testing FS 2015 Prof. Dr. Jana Köhler jana.koehler@hslu.ch Agenda Heute Von Bad Smells zu Refactorings Wie wird Refactoring durchgeführt?
MehrDesign for Testability in der Praxis David Völkel, codecentric AG
Design for Testability in der Praxis David Völkel, codecentric AG http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg David Völkel *
MehrTDD. mit JUnit & Mockito. Tobias Trelle, codecentric
TDD mit JUnit & Mockito Tobias Trelle, codecentric AG @tobiastrelle 1 Tobias Trelle Software Architekt @ codecentric AG Twitter: @tobiastrelle Slideshare: http://de.slideshare.net/tobiastrelle/ GitHub:
MehrJVM Functional Language Battle
JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator
MehrAgile Ressourcenplanung
Agile Ressourcenplanung Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Evolution Ressourcenplanung - Ansatz 1: Papiergestütztes Planning Board je Team
MehrLive Hacking. Durch Refactoring zu sauberem Code
Live Hacking Durch Refactoring zu sauberem Code Roland Mast Sybit GmbH Software-Entwickler roland.mast@sybit.de Roland Mast Sybit GmbH Software-Entwickler roland.mast@sybit.de 40 35 30 25 20 15 10 5 0
MehrAgile Ressourcenplanung
Agile Ressourcenplanung Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) Schlüsselfertige Realisierung
MehrAgile Architektur. Abstract. Version: 1.0. Orientation in Objects GmbH. Weinheimer Str Mannheim.
Agile Architektur Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Abstract Eine gut geplante Softwarearchitektur stellt das Grundgerüst jeder wartbaren
MehrBrauche ich ein DVCS?
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Kristian Köhler Steffen Schluff Version:.0 www.oio.de info@oio.de Gliederung Einleitung Grundbegriffe Workflows Demo Fazit 2 Gliederung Einleitung
MehrStruts 2 Das Imperium schlägt zurück?
Struts 2 Das Imperium schlägt zurück? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Tobias Kieninger www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Projekte
MehrJava Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation
Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/
MehrEinbindung dynamischer Sprachen in Java
Einbindung dynamischer Sprachen in Java Orientation in Objects GmbH Steffen Schluff Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Gliederung Einleitung Einsatzszenarien Java Scripting
MehrThomas Schissler MVP Visual Studio ALM, artiso AG
Thomas Schissler MVP Visual Studio ALM, artiso AG Kurs-Übersicht Moderne Softwareentwicklung 01 Überblick Was macht moderne Software-Entwicklung aus? 02 Projektmanagement Wie funktioniert modernes Projektmanagement
MehrJan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen
Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo Statische Codeanalyse wirklich effektiv nutzen Über uns Jan Schumann Jahrgang 1976 System- / Softwarearchitekt Entwickler von: PHP_Depend,
MehrSoftwaremetriken verstehen und nutzen
Softwaremetriken verstehen und nutzen Kore Nordmann , Manuel Pichler 17. November 2009 Über uns Kore Nordmann Langzeit PHP Entwickler Speaker auf diversen
MehrIterativ. Inkrementell
Iterativ Inkrementell Build Release Test Qualität Architektur & Documentation Distributed Version Control Continuous Integration TDD Design Agile Architektur Dependency Feature Branches Mocks
MehrSoftware-Refactoring. 29. Mai 2013
Software-Refactoring 29. Mai 2013 Überblick Was ist Refactoring und wozu dient es? Welche Refactorings gibt es? Refactoring-Katalog: www.refactoring.com Wann, wo und wie führt man Refactorings durch? Wie
MehrGroße Versuchung, von Listenplanung abzuweichen
Agile Ressourcenplanung Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Evolution Ressourcenplanung - Ansatz 1: Papiergestütztes Planning Board je Team
MehrSAP Software Engineering live Agile! Agiles Projektmanagement und Clean Code im SAP-Umfeld
SAP Software Engineering live Agile! Agiles Projektmanagement und Clean Code im SAP-Umfeld SAP Software Engineering live Agile! SAP Ali Kaveh Software Engineering live Agile! Certified Scrum Master Solution
MehrIntelliJ IDEA. Gliederung. Was ist IntelliJ IDEA? Lizenzmodell Warum IntelliJ einsetzen? IntelliJ und Eclipse Demo. Blick über den Eclipse-Tellerrand
IntelliJ IDEA Blick über den Eclipse-Tellerrand Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Gliederung 2007 Orientation in Objects GmbH IntelliJ IDEA:
MehrModel-Driven Development in der Praxis. mit objectif. Herzlich willkommen
Model-Driven Development in der Praxis mit objectif Herzlich willkommen Die Themen: microtool stellt sich vor live Model-Driven Development die Grundlagen Model-Driven Development von Web-Anwendungen in
MehrGerrit und Jenkins ein Traumpaar für Pre-Tested Commit
und ein Traumpaar für Pre-Tested Commit Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Steffen Schäfer Steffen Schluff Version:.0 www.oio.de info@oio.de Gliederung Pre-tested commit und
MehrGerrit und Jenkins ein Traumpaar für Pre-Tested Commit
und ein Traumpaar für Pre-Tested Commit Orientation in Objects GmbH Weinheimer Str. 68 6809 Mannheim Steffen Schäfer Steffen Schluff Version:.0 www.oio.de info@oio.de Gliederung Pre-tested commit und Pre-tested
MehrCODE REVIEWS DONE RIGHT. Heiko Gramlich
CODE REVIEWS DONE RIGHT Heiko Gramlich Agenda Über mich Code Review Code Review bei De-Mail Development Tooling Demo Erfahrungen im Team 2 Über mich Software Entwickler Werdegang: Dipl. Informatiker der
MehrVorlesung Software-Reengineering
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2007/08 Überblick I 1 Refactoring Refactorings
MehrResilient Software Design Patterns
Resilient Software Design Patterns Version: 17.1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Ihr Sprecher Thorsten Maier Trainer, Berater, Entwickler Orientation
MehrSonargraph in 15 Minuten. Andreas Hoyer blog.hello2morrow.com
Sonargraph in 15 Minuten Andreas Hoyer a.hoyer@hello2morrow.com blog.hello2morrow.com hello2morrow GmbH Gegründet 2005 Angesiedelt in Deutschland, USA und Kolumbien > 95% des Umsatzes Software Lizenzen,
MehrKeynote Der offene Ansatz: Open Source basiertes ALM ganz praktisch
Keynote ALMconf 2010 in Stuttgart 26. bis 28. Oktober 2010 Thomas Obermüller elego Software Solutions GmbH - 2010 1 Welcome & Outline Open Source basiertes ALM ganz praktisch Agenda Application Lifecycle
MehrEin Design Tool für objektorientierte portable Programmierschnittstellen
Diplomarbeit Ein Design Tool für objektorientierte portable Programmierschnittstellen Vortragender: Elias Volanakis Inhalt 1. Entwurfsmuster 2. Wrapper Facade (WF) Aufgaben & Struktur Implementierung Nutzen
MehrSoftwarequalität sicherstellen mit Sonar
Softwarequalität sicherstellen mit Sonar Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Hochschule München Michaela Lutz München, den 07. Juni 2013 1 Gliederung Was ist Sonar? Komponenten
MehrBIRT in Enterprise Architekturen
BIRT in Enterprise Architekturen Orientation in Objects GmbH Tobias Kieninger Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object
MehrMit Legacy-Systemen in die Zukunft. adviion. in die Zukunft. Dr. Roland Schätzle
Mit Legacy-Systemen in die Zukunft Dr. Roland Schätzle Der Weg zur Entscheidung 2 Situation Geschäftliche und softwaretechnische Qualität der aktuellen Lösung? Lohnen sich weitere Investitionen? Migration??
MehrOO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle
OO Programmiersprache vs relationales Model Vorgehen bisher Erstellen eines ER-Diagramms Übersetzen in das relationale Datenmodell Zugriff auf das relationale Datenmodell aus z.b. Java ER rel. Modell OO
MehrResilientSoftware Design Patterns
Resilient Software Design Patterns Version: 17.1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Ihr Sprecher Thorsten Maier Trainer, Berater, Entwickler Orientation
MehrVorlesung Software-Reengineering
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke 1 1 Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2005/06 Überblick I 1 Refactoring 1 Refactoring
MehrRuby on Rails. Thomas Baustert Ralf Wirdemann www.b-simple.de. Alternative zur Web-Entwicklung mit Java? 27.06.2005 www.b-simple.
Ruby on Rails Alternative zur Web-Entwicklung mit Java? Thomas Baustert Ralf Wirdemann www.b-simple.de 27.06.2005 www.b-simple.de 1 Überblick Was ist Ruby on Rails? Weblog Demo Rails Komponenten Controller,
MehrBIRT Best Practices. Java, XML und Open Source seit 1998. ) Software Factory ) Christian Brell. Schlüsselfertige Realisierung von Java Software
Christian Brell Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige
MehrTest Driven Development
Test Driven Development Definition & Motivation [~15min] Demo [~10min] Stubs & Mocks [~15min] Übliche Fehler [~5min] Folie 1 TDD [Kent Beck] Schreibe keine Zeile Code ohne einen fehlschlagenden (roten)
MehrJava-Einführungskurs Informatik II (D-ITET) Vincent Becker,
Java-Einführungskurs Informatik II (D-ITET) Vincent Becker, vincent.becker@inf.ethz.ch Was haben wir heute vor? Vorbereitung auf die Übungen zu Informatik II Vorstellung des Teams Organisatorisches Theorie
MehrAxis2, CXF und JAX-WS RI im Vergleich
Axis2, CXF und JAX-WS RI im Vergleich Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Gliederung Die Standards: JWS, JAXB und JAX-WS Axis2 Apache CXF JAX-WS RI und
MehrCONTINUOUS DELIVERY. Entmystifiziert. codecentric AG
CONTINUOUS DELIVERY Entmystifiziert WIE SOFTWARE LIEFERN? 01.07.2014 2 WAS IST CONTINUOUS DELIVERY? Robust Wiederholbar Effektiv 01.07.2014 3 LANDSCHAFTEN Continuous Integration Public / Private Hybrid
MehrJVM Functional Language Battle
JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator
MehrSoftware-Refactoring. 27. Mai 2015
Software-Refactoring 27. Mai 2015 Überblick Was ist Refactoring und wozu dient es? Welche Refactorings gibt es? Refactoring-Katalog: www.refactoring.com Wann, wo und wie führt man Refactorings durch? Wie
MehrUnterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Vertretungsstunde Englisch 5. Klasse: Grammatik
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Vertretungsstunde Englisch 5. Klasse: Grammatik Das komplette Material finden Sie hier: School-Scout.de Pronouns I Let s talk about
MehrLanglebige Softwarearchitekturen
Langlebige Softwarearchitekturen Dr. Carola Lilienthal Carola.Lilienthal@wps.de www.wps.de //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG Die zwei Architekturziele für diesen Vortrag Architekturziel 1:
MehrPutting TDD to the Test. Edwin Günthner, IBM Germany Development Lab
Putting TDD to the Test Edwin Günthner, IBM Germany Development Lab Zum Titel www.dict.cc: to put sb./sth. to the test jdn./etw. auf den Prüfstand stellen Java Forum Stuttgart 2017 2 Agenda Teil 1: Grundsätzliches,
MehrTesten von grafischen Benutzeroberflächen
Seminarvortrag 10: Testen von grafischen Benutzeroberflächen 2004 / 06 / 28 Clemens Sommer, Gerald Peter Übersicht Motivation GUI Allgemein Fehlerquellen und deren Auswirkungen GUI Testwerkzeuge JUnit
MehrGlücksspiel Softwareentwicklung. Christian Wende - DevBoost GmbH JUG Saxony Day 2016
Glücksspiel Softwareentwicklung Christian Wende - DevBoost GmbH JUG Saxony Day 2016 Eine einfache Aufgabe Implementiere einen Algorithmus, der eine gesuchte Zahl zwischen 1 und 1000 in maximal 10 Versuchen
MehrScriptbasierte Testautomatisierung. für Web-Anwendungen
Scriptbasierte Testautomatisierung für Web-Anwendungen Scriptbasierte Testautomatisierung + Web-Anwendung: Erstes Einsatzgebiet, Ergebnisse aber allgemein übertragbar + Test aus Benutzersicht - Nicht Unit-Test,
MehrHow To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform
How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform 0. Benötigt werden folgende Softwarepakete:.NET Framework Software Development Kit (http://www.microsoft.com/downloads/details.aspx?familyid=4fe5bdb5-c7a7-4505-9927-2213868a325b&displaylang=en)
MehrSource Code Konverter... 2. Online: (VB.net <-> C#)... 3. Kommerzielle Produkte (VB, C#, C++, Java)... 3. Code Nachbearbeitung in der Praxis...
Autor: Thomas Reinwart 2008-05-05 office@reinwart.com Inhalt Source Code Konverter... 2 Online: (VB.net C#)... 3 Kommerzielle Produkte (VB, C#, C++, Java)... 3 Code Nachbearbeitung in der Praxis...
MehrContinuous Database Design
Continuous Database Design Entwicklertag Karlsruhe Mai 2017 Version: 2.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Ihr Sprecher Thorsten Maier Trainer, Berater,
MehrFunktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES
Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Motivation Überblick Was macht Funktionale Programmierung aus? Sind Funktionale Programmierung und Objektorientierte Programmierung
MehrRegelbasierte Systeme mit JBoss Drools. Paul Weinhold JUG Görlitz, 29.07.2015
Regelbasierte Systeme mit JBoss Drools Paul Weinhold JUG Görlitz, 29.07.2015 Warum regelbasierte Systeme? Regeln gibt es überall Regeln sind ein Bestandteil der Fachlichkeit Menschen denken in Regeln
MehrKlassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
MehrLIVE/11 - WEBSPECIAL. Andreas Förthner - Clemens Kalb
LIVE/11 - WEBSPECIAL Andreas Förthner - Clemens Kalb 1 IHRE REFERENTEN! Clemens Kalb! Leiter netlogix Media! Spezialist für Online-Marketing und ecommerce! Google AdWords Certified Professional @cjckalb
MehrFrontend Migration from JSP to Eclipse Scout
Frontend Migration from JSP to Eclipse Scout Peter Nüdling Raiffeisen Schweiz Jérémie Bresson, Peter Barthazy BSI Business Systems Integration AG Eclipse Finance Day, Zürich, 31. Oktober 2014 Seite 1 WebKat:
MehrTool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel
Tool-Chain Übung Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" 2009 Sebastian Meyer und Kai Stapel 05.05.2009 Überblick SVN Grundlagen SVN in Eclipse Ant in Eclipse Cobertura
MehrPHP 6 Beliebte Webskriptsprache wird erwachsen. Linux User Group Bern 14.05.2009 René Moser <mail@renemoser.net>
PHP 6 Beliebte Webskriptsprache wird erwachsen Linux User Group Bern 14.05.2009 René Moser Inhalt 1.Wie entstand PHP? 2.Was PHP? 3.Warum PHP? 4.Wie installiere ich PHP? 5.Wie programmiere
MehrRefactoring. Programmiermethodik. Eva Zangerle Universität Innsbruck
Refactoring Programmiermethodik Eva Zangerle Universität Innsbruck Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle Themen
MehrBuildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012
Buildsystem Maven & Scons Controls Entwicklungsforum Januar 2012 1 2 a call from the past Binary Repository Speichern von Artefakten (z.b. Shared Library und zugehörige Header) Versionierung von Artefakten
MehrINTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?
INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? David Völkel XPDays Germany 14.11.2013 ÜBER MICH David Völkel IT-Consultant für codecentric Twitter: @davidvoelkel Schwerpunkte: Test-Driven Development
MehrProgrammierstil in Java Coding-Standards und Dokumentation
Coding-Standards und Dokumentation SEP Felix Zenz 23.10.2017 Wissenschaftliche Betreuer: Prof. Dr. Peer Kröger, Janina Sontheim, Daniel Kaltenthaler, Johannes Lohrer Verantwortlicher Professor: Prof. Dr.
MehrTDD with Contracts. XP Days Germany 2013 Dr. Lars Alvincz, Hagen Buchwald. c4j.vksi.de
TDD with Contracts XP Days Germany 2013 Dr. Lars Alvincz, Hagen Buchwald VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins Karlsruher Software Ingenieure VKSI Verein Karlsruher Software
MehrCONTINUOUS DELIVERY. codecentric AG
CONTINUOUS DELIVERY AGENDA Einstieg Was ist Continuous Delivery Welche Ziele werden verfolgt? Voraussetzungen Technisch Organisatorisch Kulturell Umsetzung und Einführung 6 Disziplinen der Continuous Delivery
MehrProjektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi
Projektgruppe Thomas Kühne Komponentenbasiertes Software Engineering mit OSGi Anforderungen der PG IDSE an ein Komponenten- Client Nativer Client Web Client Alternativen IDSE Nutzer Szenario Pipe IDSE
MehrKarlsruher Entwicklertag 2013. Coding Dojos im Unternehmen
Karlsruher Entwicklertag 2013 Coding Dojos im Unternehmen...und es lohnt sich doch 05.06.2013 1 Agenda Vorstellung Vorgeschichte Basics Beginn Clean Code & TDD Fazit 2 Ralf Schoch Zur Person Freiberuflicher
MehrScala für Enterprise-Applikationen
Scala für Enterprise-Applikationen Eine Bestandsaufnahme Dr. Halil-Cem Gürsoy adesso AG Twitter: @hgutwit G+: http://goo.gl/hljrs 03.11.11 Der Referent Insgesamt über 10 Jahre Beratung und Entwicklung
MehrConfiguration Management mit Verbosy 17.04.2013 OSDC 2013. Eric Lippmann www.netways.de
Configuration Management mit Verbosy 17.04.2013 OSDC 2013 Eric Lippmann Kurzvorstellung NETWAYS Expertise OPEN SOURCE SYSTEMS MANAGEMENT OPEN SOURCE DATA CENTER Monitoring & Reporting Configuration Management
MehrRefactoring relationaler Datenbank. Shaoke Wu
Refactoring relationaler Datenbank Shaoke Wu Überblick Einführung Bad Smells Probleme bei Database Refactoring Durchführung von Database Refactoring Visualisierung Refactoring relationaler DB Einführung
MehrFestlegungen für die Code Entwicklung Table of contents
Festlegungen für die Code Entwicklung Table of contents 1 Vorbemerkungen...2 2 Encoding... 2 2.1 Allgemeines...2 2.2 Konfiguration unter Eclipse... 2 3 Java-Code Formatierung...2 3.1 Allgemeines...2 3.2
MehrContinuous Database Integration mit Flyway
XP Days Germany 2015 Continuous Database Integration mit Flyway Sandra Parsick info@sandra-parsick.de @SandraParsick Zur meiner Person Freiberufliche Softwareentwickler und Consultant im Java- Umfeld Schwerpunkte:
MehrArchitecture Blueprints
Architecture Blueprints Daniel Liebhart, Peter Welkenbach, Perry Pakull, Mischa Kölliker, Michael Könings, Markus Heinisch, Guido Schmutz Ein Leitfaden zur Konstruktion von Softwaresystemen mit Java Spring,.NET,
MehrMobile Apps: Von der Entwicklung bis zum Test mit HP Software
Mobile Apps: Von der Entwicklung bis zum Test mit HP Software Amir Khan Presales Consultant Software Hewlett-Packard (Schweiz) GmbH HP Invent 2015 Copyright 2015 Hewlett-Packard Development Company, L.P.
MehrCode Quality. Steigerung der Codequalität mit Visual Studio & TFS
Code Quality Steigerung der Codequalität mit Visual Studio & TFS Tobias Richling 30 Jahre Wohnhaft im Münsterland Softwareentwickler seit Amiga Basic Microsoftie Logisitksoftware Silverlight TFS Trainer,
MehrGelebte Architektur und ALM in der Praxis
Gelebte Architektur und ALM in der Praxis Agenda 9:00 Begrüßung und Einleitung, Erwartungshaltung 9:15 Build- und Dependency-Management mit dem TFS 11:00 Q&A 11:30 Anforderungen an moderne Software 12:00
MehrBuild- und Delivery-Pipelines als Code mit Jenkins
.consulting.solutions.partnership Build- und Delivery-Pipelines als Code mit Jenkins Alexander Schwartz, Principal IT Consultant Entwicklertag Frankfurt 16.02.2017 Build- und Delivery-Pipelines als Code
MehrDie SOLID-Prinzipien Fünf Grundsätze für bessere Software
ESE Kongress 2014 Vortragsskript: Die SOLID-Prinzipien Fünf Grundsätze für bessere Software Frank Listing, MicroConsult GmbH Die Qualität der Software ist nicht in allen Projekten ideal, und deshalb werden
MehrZuuL - Entwicklung eines Adventures
ZuuL - Entwicklung eines Adventures im Rahmen der Uni-Tage 2009 Team 120 Universität Hamburg 16./17. November 2009 Team 120 (Universität Hamburg) ZuuL - Entwicklung eines Adventures 16.11.09 1 / 21 Übersicht
MehrBildverarbeitung und Algorithmen. Einführung in ImageJ
Prof. Dr. Wolfgang Konen Einführung in ImageJ SS06 3b.1 Konen SS06 3b.2 Konen Tools in der Bildverarbeitung Früher: fast so viele BV-Tools wie BV-Formate Lösungen nur schwer auf andere Systeme übertragbar
Mehr