Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Benjamin Schmid
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Eine süffisante, praxisnahe Reise durch die Fallstricke der Softwareentwicklung
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenRalf Eggert
Viele Entwickler, die mit der Entwicklung eines Alexa-Skills beginnen, machen sich in den seltensten Fällen vorab tiefer gehende Gedanken über ihre Anwendungsstruktur. Quick-Start-Anwendungen und Vorlagen konzentrieren sich in der Regel eher auf die Vermittlung von Featurewissen und weniger darum, eine nachhaltige Anwendungsstruktur einzuführen. Da besteht der eigentliche Code der Sprachanwendungen auch schon mal aus einer einzigen Datei, die durch Konfigurations- oder Sprachdateien angereichert wird.
Für ganz einfache Sprachanwendungen ist das zumeist auch ausreichend. Doch wie sieht es bei komplexeren Anwendungen aus? Wie reagieren wir auf zusätzliche Funktionen und Intents? Wie erhalten wir den Kontext im Rahmen eines Dialogs und wie können wir Daten sinnvoll persistieren? Und was passiert, wenn unsere Sprachanwendung nicht nur für Amazons Alexa, sondern auch für den Google Assistant umgesetzt werden soll?
In dieser Session erfahren Sie, welche Maßnahmen Sie ergreifen können, um den wachsenden Anforderungen an erfolgreiche Sprachanwendungen gerecht zu werden.
Scrum ist gelebtes Qualitätsmanagement und zum Qualitätsmanagement gehört das Testen. Wie genau spielt das Testen in Scrum mit? Welche Arten und Stufen von Tests gibt es und wie können diese den Scrum Prozess unterstützen oder sogar behindern? Was machen Teams hierbei gerne falsch und können klassische Testverfahren behilflich sein die Qualität zu verbessern? Diese Fragen werden in dem Vortrag diskutiert, beantwortet und bewertet.
Open (Government) Data | Chancen - Risiken - NutzenOliver Bildesheim
Eine Präsentation zu Open Government Data, die als roter Faden in einem Online-Workshop "Was sind und wem nutzen eigentlich diese Open Data?" für Einsteiger in das Thema diente.
Inhalt:
1. Überblick
2. Open Government Handlungsfelder
3. Fokus - Was sind Open (Government) Data?
4. Chancen - Welche Ziele helfen Open (Government) Data zu erreichen?
5. Risiken - Welche Herausforderungen bzw. Bedenken bringen Open Data mit sich?
6. Nutzen von Open (Government) Data - Beispiele aus der Praxis
[Präsentation wurde auch hier geteilt: https://t.co/YreeQWKFus ]
CC-BY-SA 3.0 die Inhalte betreffend
In this presentation, a possible trend of the IoT, Mobile Terminals, and Cloud for the emerging 4G/5G high-speed mobile networks will be introduced. Hope Bay (HB) Mobile Inc. has proposed the patented “Cloud Memory Extension (CME)” Technology and the “Data-centric IoT” architecture, so that the system space of the mobile and IoT devices can be merged with the cloud storage seamlessly. In this way, the logical space of the devices could be extended without any limitation. With CME, Developers will be able to create applications easily since the details of the device-to-cloud communications has been hidden; instead, cloud data can be accessed from within the device local file systems directly.
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Benjamin Schmid
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Eine süffisante, praxisnahe Reise durch die Fallstricke der Softwareentwicklung
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenRalf Eggert
Viele Entwickler, die mit der Entwicklung eines Alexa-Skills beginnen, machen sich in den seltensten Fällen vorab tiefer gehende Gedanken über ihre Anwendungsstruktur. Quick-Start-Anwendungen und Vorlagen konzentrieren sich in der Regel eher auf die Vermittlung von Featurewissen und weniger darum, eine nachhaltige Anwendungsstruktur einzuführen. Da besteht der eigentliche Code der Sprachanwendungen auch schon mal aus einer einzigen Datei, die durch Konfigurations- oder Sprachdateien angereichert wird.
Für ganz einfache Sprachanwendungen ist das zumeist auch ausreichend. Doch wie sieht es bei komplexeren Anwendungen aus? Wie reagieren wir auf zusätzliche Funktionen und Intents? Wie erhalten wir den Kontext im Rahmen eines Dialogs und wie können wir Daten sinnvoll persistieren? Und was passiert, wenn unsere Sprachanwendung nicht nur für Amazons Alexa, sondern auch für den Google Assistant umgesetzt werden soll?
In dieser Session erfahren Sie, welche Maßnahmen Sie ergreifen können, um den wachsenden Anforderungen an erfolgreiche Sprachanwendungen gerecht zu werden.
Scrum ist gelebtes Qualitätsmanagement und zum Qualitätsmanagement gehört das Testen. Wie genau spielt das Testen in Scrum mit? Welche Arten und Stufen von Tests gibt es und wie können diese den Scrum Prozess unterstützen oder sogar behindern? Was machen Teams hierbei gerne falsch und können klassische Testverfahren behilflich sein die Qualität zu verbessern? Diese Fragen werden in dem Vortrag diskutiert, beantwortet und bewertet.
Open (Government) Data | Chancen - Risiken - NutzenOliver Bildesheim
Eine Präsentation zu Open Government Data, die als roter Faden in einem Online-Workshop "Was sind und wem nutzen eigentlich diese Open Data?" für Einsteiger in das Thema diente.
Inhalt:
1. Überblick
2. Open Government Handlungsfelder
3. Fokus - Was sind Open (Government) Data?
4. Chancen - Welche Ziele helfen Open (Government) Data zu erreichen?
5. Risiken - Welche Herausforderungen bzw. Bedenken bringen Open Data mit sich?
6. Nutzen von Open (Government) Data - Beispiele aus der Praxis
[Präsentation wurde auch hier geteilt: https://t.co/YreeQWKFus ]
CC-BY-SA 3.0 die Inhalte betreffend
In this presentation, a possible trend of the IoT, Mobile Terminals, and Cloud for the emerging 4G/5G high-speed mobile networks will be introduced. Hope Bay (HB) Mobile Inc. has proposed the patented “Cloud Memory Extension (CME)” Technology and the “Data-centric IoT” architecture, so that the system space of the mobile and IoT devices can be merged with the cloud storage seamlessly. In this way, the logical space of the devices could be extended without any limitation. With CME, Developers will be able to create applications easily since the details of the device-to-cloud communications has been hidden; instead, cloud data can be accessed from within the device local file systems directly.
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)Florian Wolters
German slides that give a overview about developer tests in the C++ programming language. It tries to underline the dependencies between software design, clean code, software quality and the software testing activity itself.
Ich will agil testen! was muss ich können iqnite 2014 - verison 2.0Michael Fischlein
Welche Auswirkung hat eine agiler Softwareentwicklungsprozess auf den Softwaretest und die Qualitätssicherung? Welche Änderungen muss man beachten und wie muss und kann man Softwaretester auf diese Veränderungen vorbereiten.
Dieser Vortrag wurde auf der iqnite 2014 von Michael Fischlein gehalten.
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
Slides for my presentation at WebTechCon/IPC 2014.
Visit us at http://www.thecodecampus.de
Folien zu meinem Vortrag bei der WebTechCon/IPC 2014.
AngularJS verspricht, die Entwicklung moderner Single-Page-Webanwendungen radikal zu vereinfachen. Doch kann dieses Versprechen auch bei Anwendungen, die über eine Demoanwendung (To-do-App) hinausgehen, gehalten werden? In diesem Vortrag zeigen wir die Stärken und Schwächen von AngularJS anhand unserer Erfahrungen aus mehreren Projekten und unserer Schulungen. Wie meistert man den Einstieg? Was sind die Gefahren, und wie minimiert man sie? Ist AngularJS bereit für den Einsatz in großen Anwendungen? Wir geben Antworten. Zusätzlich geben wir einen Ausblick auf AngularJS 2.0, wie die bekannten Schwächen dort behoben werden sollen und was an Neuerungen zu erwarten ist.
http://www.opitz-consulting.com/go/3-4-894
Die Literatur sagt, dass „Broken Builds“ auf jeden Fall zu vermeiden sind, weil andere Entwickler sich durch die fehlerhaften Änderungen ihren Entwicklungsbereich kaputt machen und dann nicht arbeiten können.
Die Solution Architects unserer IT-Beratung, Stefan Scheidt und Richard Attermeyer, zeigten in ihrem Vortrag am 10.Oktober 2013 bei der gearconf 2013 in Düsseldorf, dass „broken Builds“ nicht das Problem sind. Im Rahmen der Präsentation zeigten die Referenten, wie man durch geeignete Branching- und CI-Strategien stets eine stabilen Branch sicherstellen kann.
Veranschaulicht wurde das Ganze durch eine konkrete Umsetzung mittels Git / GitLab und Jenkins.
--
Über uns:
Als führender Projektspezialist für ganzheitliche IT-Lösungen tragen wir zur Wertsteigerung der Organisationen unserer Kunden bei und bringen IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich unsere Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen.
Über unsere IT-Beratung: http://www.opitz-consulting.com/go/3-8-10
Unser Leistungsangebot: http://www.opitz-consulting.com/go/3-8-874
Karriere bei OPITZ CONSULTING: http://www.opitz-consulting.com/go/3-8-5
„Bekommen Sie Ihre SQL Datenbank unter Kontrolle”
Ein Großteil des existierenden .NET Codes steht unter Quellcodeverwaltung und bereits heute verwenden viele Anwendungsentwickler irgendeine Form von Continuous Integration. Die Datenbankentwickler hängen an dieser Stelle leider ein wenig hinterher. Dabei sind gerade die Daten das Herzstück einer Anwendung und Änderungen an Datenbankstrukturen daher besonders komplex. Der erste Schritt um eine Verbesserung herbeizuführen ist es, die Datenbank ebenfalls unter Quellcodeverwaltung zu stellen. Das erleichtert nicht nur die Zusammenarbeit mit anderen Teammitgliedern und ermöglicht ein einfacheres Deployment, sondern es bildet auch die Grundlage für Continuous Integration, sowie automatisiertes Testing.
Dieser User-Group Abend zeigt:
* wie man seine SQL Datenbank genauso einfach in die Quellcodeverwaltung bringt wie .NET Code
* wie man seine Datenbank direkt aus der Quellcodeverwaltung heraus deployen kann und
* wie man einen ersten Schritt in Richtung Continous Integration machen kann
Jedes IT-System stirbt irgendwann und muss durch ein neues System abgelöst werden. Solche Systemablösen bergen zahlreise Herausforderungen: Keine Doku, eine Technologie, die niemand mehr gut kennt, wissende Mitarbeiter sind nicht mehr greifbar, hoher Zeitdruck, großes Risiko im Betrieb etc. - oft eher Organtransplantation, als IT-Projekt.
Im Vortrag möchte ich meine Erfahrungen aus großen Systemablöseprojekten teilen. Wir werden uns ansehen, wie man Methoden aus Requirements Engineering und Reverse Engineering so kombiniert, dass alle notwendigen Anforderungen entdeckt werden. Wir werden sehen, dass die Zusammenarbeit zwischen Fachbereich und IT der kritische Erfolgsfaktor ist, wie man das am Besten organisiert und wie man Use Cases und ein Glossar dabei unterstützend einsetzt.
Digital Future Congress (DFC) 2023, September 2023, München, Andreas Zitzelsberger (Business Unit Director bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Alt-Systeme in die Cloud migrieren – mit sechs Leitplanken geht das effizient und sicher. Neu: Künstliche Intelligenz kann jetzt zum Turbo werden! Wir nutzen KI bei der Cloud-Migration und zeigen in diesem Vortrag, was geht und was nicht.
Power catch up - Everything Practical and Important in Java 9 to 13Benjamin Schmid
Interactive, original source see https://bentolor.github.io/java9to13/
Since Java 9, it's all happening fast: In the 6-month cycle, Oracle releases new major versions, so that one can easily lose track of things. Due to the changed support model, many projects are likely to get in touch with Java versions beyond the long-established "eight" in 2019. Time for us professionals to get up to speed in a concentrated power session!
This session tries to provide a structured overall overview of the changes from Java 9 to 13 and at the same time to emphasize the important and relevant innovations in concrete examples. For example, we learn why collections are now doing better, that variables and case statements have gained new opportunities in the Model Contest, and how Microbenchmark Suite and Flight Recorder are helping to identify performance issues. We also do not hide from our fears and learn how serious it is about eliminating finalize () or problems with jigsaw and how jdeps can help us with the upgrade from nasty surprises.
A quick look at the current status of JDK14 + helps with personal needs planning for the next fitness session.
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEEBenjamin Schmid
Serverseitige Web-Technologien waren lange Zeit das Mittel der Wahl für Java-basierte Webanwendungen. Der Trend jedoch geht immer mehr zu JavaScript-basierten und damit Clientseitigen Web-GUIs. Wir werfen dazu einen Blick auf Google's AngularJS und erläutern an plastischen Beispielen seine Kernkonzepte und Funktionsweise. Was zeichnet AngularJS für die Realisierung der im Java-Umfeld häufig vertretenen, datengetriebenen Anwendungen besonders aus und wie fühlt sich die Entwicklung damit im direkten Vergleich dazu an?
Ein konkretes Fallbeispiel aus der Praxis, bei dem wir durch den Wechsel von einer JSF/Portlet-basierten Portal-Lösung hin zu einem AngularJS-basiertem Ansatz bei identischem JEE-Backend und Funktionalität Performance-Gewinne im Bereich von Zehnerpotenzen realisieren konnte, zeigt dabei auf, daß sich dieser Paradigmentwechsel durchaus lohnen kann!
Weitere ähnliche Inhalte
Ähnlich wie Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)Florian Wolters
German slides that give a overview about developer tests in the C++ programming language. It tries to underline the dependencies between software design, clean code, software quality and the software testing activity itself.
Ich will agil testen! was muss ich können iqnite 2014 - verison 2.0Michael Fischlein
Welche Auswirkung hat eine agiler Softwareentwicklungsprozess auf den Softwaretest und die Qualitätssicherung? Welche Änderungen muss man beachten und wie muss und kann man Softwaretester auf diese Veränderungen vorbereiten.
Dieser Vortrag wurde auf der iqnite 2014 von Michael Fischlein gehalten.
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
Slides for my presentation at WebTechCon/IPC 2014.
Visit us at http://www.thecodecampus.de
Folien zu meinem Vortrag bei der WebTechCon/IPC 2014.
AngularJS verspricht, die Entwicklung moderner Single-Page-Webanwendungen radikal zu vereinfachen. Doch kann dieses Versprechen auch bei Anwendungen, die über eine Demoanwendung (To-do-App) hinausgehen, gehalten werden? In diesem Vortrag zeigen wir die Stärken und Schwächen von AngularJS anhand unserer Erfahrungen aus mehreren Projekten und unserer Schulungen. Wie meistert man den Einstieg? Was sind die Gefahren, und wie minimiert man sie? Ist AngularJS bereit für den Einsatz in großen Anwendungen? Wir geben Antworten. Zusätzlich geben wir einen Ausblick auf AngularJS 2.0, wie die bekannten Schwächen dort behoben werden sollen und was an Neuerungen zu erwarten ist.
http://www.opitz-consulting.com/go/3-4-894
Die Literatur sagt, dass „Broken Builds“ auf jeden Fall zu vermeiden sind, weil andere Entwickler sich durch die fehlerhaften Änderungen ihren Entwicklungsbereich kaputt machen und dann nicht arbeiten können.
Die Solution Architects unserer IT-Beratung, Stefan Scheidt und Richard Attermeyer, zeigten in ihrem Vortrag am 10.Oktober 2013 bei der gearconf 2013 in Düsseldorf, dass „broken Builds“ nicht das Problem sind. Im Rahmen der Präsentation zeigten die Referenten, wie man durch geeignete Branching- und CI-Strategien stets eine stabilen Branch sicherstellen kann.
Veranschaulicht wurde das Ganze durch eine konkrete Umsetzung mittels Git / GitLab und Jenkins.
--
Über uns:
Als führender Projektspezialist für ganzheitliche IT-Lösungen tragen wir zur Wertsteigerung der Organisationen unserer Kunden bei und bringen IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich unsere Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen.
Über unsere IT-Beratung: http://www.opitz-consulting.com/go/3-8-10
Unser Leistungsangebot: http://www.opitz-consulting.com/go/3-8-874
Karriere bei OPITZ CONSULTING: http://www.opitz-consulting.com/go/3-8-5
„Bekommen Sie Ihre SQL Datenbank unter Kontrolle”
Ein Großteil des existierenden .NET Codes steht unter Quellcodeverwaltung und bereits heute verwenden viele Anwendungsentwickler irgendeine Form von Continuous Integration. Die Datenbankentwickler hängen an dieser Stelle leider ein wenig hinterher. Dabei sind gerade die Daten das Herzstück einer Anwendung und Änderungen an Datenbankstrukturen daher besonders komplex. Der erste Schritt um eine Verbesserung herbeizuführen ist es, die Datenbank ebenfalls unter Quellcodeverwaltung zu stellen. Das erleichtert nicht nur die Zusammenarbeit mit anderen Teammitgliedern und ermöglicht ein einfacheres Deployment, sondern es bildet auch die Grundlage für Continuous Integration, sowie automatisiertes Testing.
Dieser User-Group Abend zeigt:
* wie man seine SQL Datenbank genauso einfach in die Quellcodeverwaltung bringt wie .NET Code
* wie man seine Datenbank direkt aus der Quellcodeverwaltung heraus deployen kann und
* wie man einen ersten Schritt in Richtung Continous Integration machen kann
Jedes IT-System stirbt irgendwann und muss durch ein neues System abgelöst werden. Solche Systemablösen bergen zahlreise Herausforderungen: Keine Doku, eine Technologie, die niemand mehr gut kennt, wissende Mitarbeiter sind nicht mehr greifbar, hoher Zeitdruck, großes Risiko im Betrieb etc. - oft eher Organtransplantation, als IT-Projekt.
Im Vortrag möchte ich meine Erfahrungen aus großen Systemablöseprojekten teilen. Wir werden uns ansehen, wie man Methoden aus Requirements Engineering und Reverse Engineering so kombiniert, dass alle notwendigen Anforderungen entdeckt werden. Wir werden sehen, dass die Zusammenarbeit zwischen Fachbereich und IT der kritische Erfolgsfaktor ist, wie man das am Besten organisiert und wie man Use Cases und ein Glossar dabei unterstützend einsetzt.
Digital Future Congress (DFC) 2023, September 2023, München, Andreas Zitzelsberger (Business Unit Director bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Alt-Systeme in die Cloud migrieren – mit sechs Leitplanken geht das effizient und sicher. Neu: Künstliche Intelligenz kann jetzt zum Turbo werden! Wir nutzen KI bei der Cloud-Migration und zeigen in diesem Vortrag, was geht und was nicht.
Ähnlich wie Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code (20)
Power catch up - Everything Practical and Important in Java 9 to 13Benjamin Schmid
Interactive, original source see https://bentolor.github.io/java9to13/
Since Java 9, it's all happening fast: In the 6-month cycle, Oracle releases new major versions, so that one can easily lose track of things. Due to the changed support model, many projects are likely to get in touch with Java versions beyond the long-established "eight" in 2019. Time for us professionals to get up to speed in a concentrated power session!
This session tries to provide a structured overall overview of the changes from Java 9 to 13 and at the same time to emphasize the important and relevant innovations in concrete examples. For example, we learn why collections are now doing better, that variables and case statements have gained new opportunities in the Model Contest, and how Microbenchmark Suite and Flight Recorder are helping to identify performance issues. We also do not hide from our fears and learn how serious it is about eliminating finalize () or problems with jigsaw and how jdeps can help us with the upgrade from nasty surprises.
A quick look at the current status of JDK14 + helps with personal needs planning for the next fitness session.
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEEBenjamin Schmid
Serverseitige Web-Technologien waren lange Zeit das Mittel der Wahl für Java-basierte Webanwendungen. Der Trend jedoch geht immer mehr zu JavaScript-basierten und damit Clientseitigen Web-GUIs. Wir werfen dazu einen Blick auf Google's AngularJS und erläutern an plastischen Beispielen seine Kernkonzepte und Funktionsweise. Was zeichnet AngularJS für die Realisierung der im Java-Umfeld häufig vertretenen, datengetriebenen Anwendungen besonders aus und wie fühlt sich die Entwicklung damit im direkten Vergleich dazu an?
Ein konkretes Fallbeispiel aus der Praxis, bei dem wir durch den Wechsel von einer JSF/Portlet-basierten Portal-Lösung hin zu einem AngularJS-basiertem Ansatz bei identischem JEE-Backend und Funktionalität Performance-Gewinne im Bereich von Zehnerpotenzen realisieren konnte, zeigt dabei auf, daß sich dieser Paradigmentwechsel durchaus lohnen kann!
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungBenjamin Schmid
Die modellgetriebene Softwareentwicklung ist ein etablierter Weg im Streben nach effizienteren Entwicklungsprozessen. Im Bereich der Geschäftslogik sind hier beachtliche Erfolge erzielt worden, welche auch zunehmend in unseren Projekt-Alltag einfließen. Die Anwendungsoberflächen entziehen sich diesem Pfad jedoch bislang hartnäckig.
Modellierung bedeutet Reduktion auf das Wesentliche. Gerade im Bereich der GUIs sind die verschiedenen Facetten jedoch sehr umfassend. Welche Aspekte allgemeingültig und welche individuell behandelt werden wollen, unterscheiden sich je nach Fachlichkeit und technologischem Umfeld teils dramatisch. Für effizientere Wege in der GUI-Entwicklung erfordert diese Quadratur des Kreises jedoch Lösungen.
Wie lassen sich Effizienz steigernde Abstraktionen schaffen, ohne sich auf einzelne Technologien, Layouts und Visualisierungen festzulegen? Wie passen individuelle Lösungen mit wieder verwendbaren Teilen zusammen? Welche Modelle sind überhaupt sinnvoll?
Wir zeigen am Beispiel eines modell-orientierten Frameworks zur Erstellung datenzentrischer Benutzeroberflächen konkrete Architekturen und Konzepte, um die Bedürfnisse unterschiedlichster Projekte mit einem modellorientierten Vorgehen zu verbinden und zeigen an einer lebendigen Demo die dabei entstehenden Perspektiven auf.
Eher unbekannt ist die Pluggable Annotation Processing API von Java, welche erlaubt schon während des Compilerens Annotations zu nutzen. Das Projekt Lombok geht noch weiter und verändert sogar den annotierten Code selbst. Boilercode wie Getter/Setter und das Aufräumen von Ressourcen lassen sich somit durch knackige Annotations ersetzen. Wir betrachten am Livedemo Chance und Grenzen beider Ansätze.
Das lustige Überlebenshandbuch für JavaScriptBenjamin Schmid
Mit Web 2.0 hält auch JavaScript Einzug in den Alltag des Java-Entwicklers. Einerseits glänzt JavaScript mit erlesenen ‚Good Parts’, andererseits warten befremdlichen Spracheigenheiten und puristische Entwicklungsmittel. Mit einem zwinkernden und einem ernsten Auge berichten wir Kurioses und Tückisches aus der Praxis und geben Schützenhilfe für die erfolgreiche Besiedelung dieser neuen Welt.
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery MobileBenjamin Schmid
Dank HTML5 werden Mobilanwendungen möglich, die auf den unterschiedlichsten Geräteplattformen laufen und eine zu nativen Apps vergleichbare User Experience bieten können.
Nach einer Gegenüberstellung von HTML5 vs. nativer App-Entwicklung betrachten wir Konzepte und Technologien des webbasierten Ansatzes und eruieren Möglichkeiten für den Zugriff auf Gerätefunktionen mittels PhoneGap.
Am Beispiel von jQuery Mobile erhalten wir ganz konkrete Eindrücke für die Entwicklung und bieten damit einen praxisnahen Startpunkt für die ersten, eigenen Schritte.
Hybride Schönheit - Das Java/JavaScript Webframeworks EchoBenjamin Schmid
Es gibt unzählige Web-Frameworks - also warum ein weniger bekanntes wie Echo3 aus der Mottenkiste herauskramen? Einfach deshalb, weil es – seiner Zeit weit voraus – bis heute kein Besseres gibt! Das zumindest glaubt eine eingeschworene Fan-Gemeinde, die entschlossen ist das Projekt nach einem kurzen Winterschlaf zu neuem Leben zu erwecken. Warum ein Blick auf das leichtgewichtige und kern-solide Framework lohnenswert ist, und welche attraktive Zukunft sein einzigartiger hybrider Ansatz mit einer server-seitigen Java-API und einer auch standalone nutzbaren client-seitigen JavaScript-API verspricht, das verrät dieser Vortrag. Technische Konzepte, Anwendungsgebiete und Code-Beispiele sollen das Framework illustrieren. Ein Vergleich mit den anderen gängigen Frameworks wie GWT, Vaadin, ZK und Eclipse RAP mit entsprechenden Erfahrungsberichten runden den Vortrag ab und geben auch weiterführende Orientierungshilfe. Zum Abschluss betrachten wir verschiedene Demo-Projekte die z. B. durch mobile Endgeräte und Echtzeitkommunikation glänzen.
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im ÜberblickBenjamin Schmid
Ist Java das neue Cobol? Die Flut neuer JVM-Sprachen hält dem eindrücklich die Leistungsfähigkeit und Modernität der Plattform entgegen. Insbesondere für den industriellen Einsatz gibt es neue Kandidaten, die wir genauer betrachten wollen. Dabei lernen wir viele Innovationen und Features rund um eine robustere und effizientere Entwicklung kennen. Code-Beispiele und Hintergrundinformationen über Tooling und Projekt helfen bei der kritischen Betrachtung. Ein abschließendes Fazit über ihre Potentiale gibt Orientierung im Dschungel der Neuerungen.
Extended Abstract:
Ein bisschen in die Jahre gekommen ist es ja schon: Java! Vereinzelt eilt ihm schon gar der verbrämende Ruf des "neuen Cobols" voraus. Dabei ist die zugrunde liegende JVM Plattform moderner und hochleistungsfähiger als je zuvor. Sowohl Android als auch die schiere Flut neu aus der Taufe gehobenen JVM Sprachen belegen die beeindruckende Solidität ihres Fundaments.
Zu den frühen, eher Scripting-orientierten Sprachentwürfen sind inzwischen einige statisch-typisierte Dialekte dazu gestoßen, die echtes Potential haben auch für Unternehmensanwendungen als ernste Alternativen zu Java aufzusteigen.
So z.B. Kotlin, welches explizit für den industriellen Einsatz bei 100% Java-Interoperabilität entworfen wurde. Oder das unbekanntere Fantom, das mit JavaScript/.NET-Crosscompiling, semi-statisch-/dynamischer Typisierung und innovativen Multithreading-Unterstützung selbst dem JVM-Urgestein Scala einiges entgegenzusetzen hat.
Wir werfen einen Blick auf diese verschiedenen Sprachen. Dabei betrachten wir insbesondere aus der Perspektive des industrienahen Java-Entwicklers ihre spannenden Kern-Features. Einzelne Code-Fragmente und Gegenüberstellungen sowie Hintergründe und Details zu ihrer Tooling- und Projekt-Landschaft sollen helfen, hier frühe Orientierung im Dschungel der spannenden Neuerungen zu erlangen.
Konzepte, Funktionsweise & Best Practices
Diese Session langweilt Sie nicht mit einer weiteren, oberflächlichen Einführung, sondern nutzt direkt ihre bisherigen Erfahrungen als professioneller Anwender von Subversion & Co. für einen fundierten Einblick in die Vorteile und Funktionsweise von Git. Dazu wagen wir einen Blick unter die Motorhaube und erschließen uns daraus Best-Practices für das Projekt z.B. zum Umgang mit Branches. Ein kurzer Blick auf die attraktive Toollandschaft rund um Git und Erfahrungen zu Stolperfallen bei seinem Einsatz z.B. unter Windows runden die Session ab.
Zielpublikum: Entwickler und Architekten
Voraussetzungen: Erfahrungen mit Versionsverwaltungsystemen
Schwierigkeitsgrad: Fortgeschritten
Sie lernen:
Der Zuhörer erhält als Git-Neuling oder Einsteiger eine fundierte Hinführung zu Git speziell im Hintergrund für den Einsatz im professionellen Umfeld. Er lernt damit welche Faszination hinter dem Buzzword Git steckt, aber auch wo diese ihre Grenzen hat. Dazu diskutieren wir seine Funktionsweise und führen ganz praktische Stolperfallen und schwierige Erfahrungen (Windows Einsatz, hohe Lernkurve, History-Rewriting) auf der einen Seite an, auf der anderen Seite aber auch die Mehrwerte & innovativen Lösungen die sich rund um Git bieten.
2. und
Der 10-Punkte Plan
für den sicheren Weg zum
nicht-wartbaren Code
Benjamin Schmid
Software Architect
Oliver Pehnke
Software Engineer
3. Das große Stück
Anteil Wartungskosten in Softwareprojekten
~67% bis >90% der Gesamtkosten
W art ung & Verbesserung
Ent w icklung
Quellen:
Zelkowitz et al. (1970)
”Principles of Software Engineering and Design”
Moad, J. (1990)
“Maintaining the competitive edge”
• Projektlaufzeit überdauert oft Projekt-Mitarbeiter
• Wartbarkeit entscheidend für langfristigen Projekterfolg
5. Die Spielregeln für Projekte
1. Das Spiel kann anhand der Prozess-Anleitung nicht
gewonnen werden – Improvisation erforderlich
2. Die fixen Termine und Budgets
sind zu Beginn der Spielanleitung zu entnehmen
3. Nicht die Fachlichkeit,
sondern der Spielleiter entscheidet
6. Analyse: Fundament der Wartbarkeit
Die Herausforderung:
Gute Spezifikationen
• vollständig und präzise
• sind nicht einfach
(auch graphisch)
Die Probleme:
• Kommunikation
– Kunde, Analyst, Entwickler
haben eigene Vorstellungen
• Konkretisierungen
erforderlich
• Analyse ist die Basis
• Klar & eindeutig = reduziert Risiko
8. Technische Lösungen für
nicht-technische Probleme
Einbinden von Hoffnungen
SOA
„Wieder verwendbarer Baustein“
JUnit.jar
„Applikation ist getestet“
Groovy.jar
„Wir sind agil & flexibel“
MochiKit.js
„Es ist Web 2.0 und komfortabel“
CompanyFramework.jar
„Code ist in Unternehmensstyle
& -qualität“
10. Frameworks: Den Rahmen finden
Richtig gewählt bedeutet
• effizienter
• fehlerfreier
• wartbarer
Falsch gewählt bedeutet
• Einschränkungen
• höhere Komplexität
• unnötige Beschäftigung
mit Technik
Falltüren bei der Auswahl von Frameworks
– Wahllos einbinden
– Blind auf „den Standard“ setzen
– Verzichten und das Rad neu erfinden
Realer Verlust >> Erträumter Gewinn
12. Gegeneinander
WOMM Certification
…in 4 easy steps
1. Compile
(CVS update purely optional!)
2. Launch!
3. Test you code path
(Unless code change is less than 5 lines
or you are a real professional)
4. Check-in!
13. Punkt 4:
Die hohe Kunst der Verschleierung
Namen und Code-Formatierung
15. Name your babies
Compiler übersetzen – nicht Entwickler!
• Lesbare Methoden, Klassen und
Attributnamen
– die tun was sie sagen
– konstante Begrifflichkeiten
– griffige Namen
• Namen und Bedeutung synchron
halten
– Namen sind Orientierung im Code
und Design
20. Kräftig umrühren
Exzessive Nutzung von extends führt zu
– Hohe Komplexität durch tiefe Hierarchieverteilung
– Starken Abhängigkeiten
– Vermischung von Zuständigkeiten
– Versteckten Verhaltens-/Semantikveränderungen
21. Niemals Verantwortung abgeben
Verändern von Verhalten
Vererbung:
Delegation:
A ist ein spezielles B
„Geklebt“
A hat/nutzt/verwendet B
„Gesteckt“
Enge, integrative Bindung
Entkoppelt, einzeln wieder verwendbar
22. …oder gar auf andere hören!
Hinzufügen von Verhalten
Vererbung:
Event/Listener:
Hinzufügen durch Überladen
„Geklebt“
Anfügen als Listener
„Gesteckt“
Enge, integrative Bindung
Entkoppelt, einzeln wieder verwendbar
Listener auch wieder entfernen !
27. Unberührte Natur
“A good modular, componentized design means
minimizing the knowledge and dependency one
part of the system has to have about another.”
Modul
Modul
Modul
Die Preisfragen sind also:
– Was ist eine gute Komponentaufteilung?
– Wie sehen passenden Schnittstellen aus?
28. Der Weg aus der Abhängigkeit
Wegweiser für eine
gute Modul-Einteilung
• Fachliche Ordnung
(„Fax-Service“, „Kontoverwaltung“)
• Technische Schichten
(GUI-, Business-Layer)
• Wenige, unidirektionale Abhängigkeiten
• Klares Gedankenmodell:
Was gehört rein, was nicht?
• Erfahrung
31. Trennungsschmerzen
Schnittstellen sind Rollen mit austauschbarer Besetzung!
Schnittstellen einfach halten!
• Komplexität gehört in die
Implementierung
• “If you’re in doubt – leave it out !”
• Bei Klassen: private, etc. nutzen
• Neue Rollen erkennen und via
Refactoring frühzeitig abbilden
Veröffentliche Schnittstellen sind
Vertragsbestandteil einer Klasse und
nachträglich schwer zu ändern
34. Error-Handling: War was?
•
•
Fehler immer individuell und
vollständig behandeln oder …
… einpacken und weitergeben
– In geeignete, deklarierte Exceptions
– Sonst als RuntimeException
•
•
•
Keine Details bzw. komplette Fehler verschlucken
Keine Fehler „behandeln“ nur weil sie
per throws deklariert sind
Auch try { … } finally { … } nutzen
35. Forensische Medizin
Diagnostikmöglichkeiten einbauen
• Logs sind der Schlüssel zur Laufzeitdynamik
– Nicht nur Details - auch Eckpunkte dokumentieren
„Versuche Fax ID:4711 an Empfänger Y zu senden“
– Kein Sonderzeichen-Krieg;
Logger-Levels & -Kategorien nutzen!
37. Warum die Chefs Tests wollen
Mythen zum Thema Testen
• „… hebt die Qualität“
• „… muss nur die QA“
• „… ist stupide und einfach“
Wartbarkeit und Tests
• Blackbox
Whitebox
• Spezifikation
Testfälle
• Wertvolles Werkzeug
in der Entwicklung (Team)
“I don't need to test my programs.
I have an error-correcting modem.”
38. Entwickler und Tests
Gute Tests zu schreiben ist anspruchsvoll
• Nicht nur Pfade ablaufen, Ergebnisse auch prüfen
• Auch die Nebenpfade und Randbereiche bedenken
• Automatisierbar und Regressionsfähig halten
• Unbedarft gegen den Vertrag der API testen
Fehlern vorbeugen
• Konstruktive Mittel
• Code Robustheit
• Diagnostik
(‚Fehler durch Design verhindern‘)
(Fail gracefully)
(‚schnelle Fehlerlokalisierung‘)
41. Konstruktor vs. Bean
„Fette Konstruktoren“
… wachsen schnell durch Convenience-Parameter und
tiefe Hierarchiestufen
Klassen-Attribute via
– Konstruktor signalisiert Kompositon
– Property signalisiert Konfiguration
„Immutable objects are
the "first class citizens" of
the object world“
44. I‘m a 3l33t h@x0r
static
– static Variablen:
• So nicht: public static HashSet aktuelleZahlen =
Session.getSprache().berechne();
• So ja:
private final static String FOO =
„buh“;
– static Methoden: Jein
– static inner class: Ja
synchronized
– In der der Regel: Vermeiden
– Wenn doch: volatile bekannt?
46. …ist selbsterklärend – denk ich
Was dokumentieren
• Code
(API zu 100%)
• Design
(nach Entwurf)
• Commits (Nachvollziehbarkeit)
Wie dokumentieren
•
•
•
Nicht was, sondern die
Hintergründe (Warum, Wie)
Sagen was der Code nicht sagt
JavaDoc ausnutzen
– Zusammenhänge mit @link, @see
– Parameter (Nullable, Defaults)
und Rückgabewerte (Typ)
48. Vielen Dank für Ihre Aufmerksamkeit!
Besuchen Sie uns!
Foyer, Eingang Ballsaal
www.exxcellent.de
Quellen und Links zum Thema
The Daily WTF
Tips for maintainable Java code
It Works on My Machine
Unmaintainable code
http://worsethanfailure.com/
http://www.squarebox.co.uk/download/javatips.html
http://jcooney.net/archive/2007/02/01/42999.aspx
http://mindprod.com/jgloss/jgloss.html