Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Eine süffisante, praxisnahe Reise durch die Fallstricke der Softwareentwicklung
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
Folien zum Vortrag von Stefan Zörner (embarc GmbH) auf der JAX 2014 in Mainz.
Abstract: Mitunter gelingt ein Entwicklungsvorhaben, und alle sind zufrieden. Oder es scheitert am Ende kläglich. Manchmal auch irgendwas dazwischen. Alles nur Zufall? Der Begriff "Zufällige Architektur" (engl. Accidental Architecture) ist als Anti-Pattern durchaus gebräuchlich, der Ausspruch "Historisch gewachsen" passt ebenfalls prima in diesen Kontext. Wie kann Softwarearchitektur zum Erfolg beitragen? Was genau macht eine gute Architektur aus? Wie erreicht oder erkennt man sie? Müssen am Ende alle glücklich sein? Oder sind Kompromisse sogar zwingend erforderlich? Dieser Vortrag ordnet Projektsituationen zwischen zufälliger und wirkungsvoller Softwarearchitektur ein. Er stellt bewährte Praktiken zum Kurs setzen vor und gibt konkrete Tipps rund um Entwurf und Bewertung für Ihr eigenes Vorgehen. Werfen Sie Ballast ab und erhöhen Sie gleichzeitig die Wirksamkeit der Architekturarbeit in ihrem Projekt.
#SpeakRoslyn - Die Microsoft .NET Compiler PlattformRobin Sedlaczek
This are the slides from my talk about the Microsoft .NET Compiler Platform. I traveled around the .NET User Groups in Germany and showed them the .NET Compiler Platform aka Project Roslyn and how Visual Studio 2015 was partly reimplemented to make use of Roslyn.
FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...Verein FM Konferenz
Strategien und Best-Practise für die Namensgebung von Feldern, Beziehungen und Layouts.
Ziele sind:
- Teamkollegen und nachfolgende Programmierer sollen die Programmierung gut nachvollziehen können.
- der Überblick soll auch bei wachsenden Anwendungen und steigender Komplexität bestehen bleiben.
- Wie wird eine Historie der Veränderungen erstellt? Wie arbeitet man effizient im Team?
- Schrittweise Entwicklung der Regeln, deren Optimierung
- Beispiel
- Anwendungs Beispiele
- Grenzen der Regeln
- Fallen und Fehlerquellen
- Diskussion / Fragen
Vortrag erklärt die Vorraussetzungen für 2. Teil: Aufbau von eigener FrameWorks in FileMaker
In diesem Video geht es mit dem Kurs entgültig los. Den Einstieg bildet ein wenig Theorie rund um die Software Entwicklung selbst.
Links:
- http://gitlab.com
- http://programmierenlernen.info
Slides für meinen Workshop bei der BASTA Spring 2014 in Darmstadt. Hier eine Beschreibung des Workshopinhalts: Es ist schwierig genug, die Anforderungen der Kunden und Kollegen im Alltag zu erfüllen. Da bleibt nicht immer genug Zeit, um auch noch up to date zu bleiben was Neuerungen in C# betrifft. Wenn Ihnen dieses Problem bekannt vorkommt, kann dieser Workshop helfen. Wir widmen einen ganzen Tag besserem C#. Rainer Stropek, bekannter BASTA!-Speaker und Microsoft MVP, zeigt Ihnen, was C# mittlerweile leisten kann. Der Schwerpunkt im Workshop liegt diesmal auf folgenden Themen:
Coding und Design Guidelines – Best und Worst Practices, um besseren C#-Code zu schreiben.
Deep Dive in Lambdas und Linq – was hinter den Kulissen geschieht, wo sie helfen und wo sie mehr schaden als zu nützen.
Parallele und asynchrone Programmierung mit Task Parallel Library (TPL) und async/await – praktische Anwendung am Server und im Full-Client
Modularisierung von .NET-Anwendungen mit NuGet, MEF und Portable Class Libraries (PCL)
Neuerungen in Visual Studio 2013 für C#-Entwickler – alle Beispiele werden mit Visual Studio 2013 gezeigt. Sie erfahren dabei, was VS2013 an Verbesserungen für C#-Entwickler bringt.
Rainer Stropek setzt bei den Teilnehmern C#-Wissen zumindest auf dem Level von Version 2, idealerweise auch ein wenig Version 3, voraus. Ein eigener Laptop ist nicht Voraussetzung. Alle Konzepte werden anhand vieler Live-Coding-Beispiele erklärt. Zusätzlich erhalten alle Teilnehmer eine umfangreiche Präsentation als Zusammenfassung der gezeigten Themen.
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.
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!
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.
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.
Folien zum Vortrag von Stefan Zörner (embarc GmbH) auf der JAX 2014 in Mainz.
Abstract: Mitunter gelingt ein Entwicklungsvorhaben, und alle sind zufrieden. Oder es scheitert am Ende kläglich. Manchmal auch irgendwas dazwischen. Alles nur Zufall? Der Begriff "Zufällige Architektur" (engl. Accidental Architecture) ist als Anti-Pattern durchaus gebräuchlich, der Ausspruch "Historisch gewachsen" passt ebenfalls prima in diesen Kontext. Wie kann Softwarearchitektur zum Erfolg beitragen? Was genau macht eine gute Architektur aus? Wie erreicht oder erkennt man sie? Müssen am Ende alle glücklich sein? Oder sind Kompromisse sogar zwingend erforderlich? Dieser Vortrag ordnet Projektsituationen zwischen zufälliger und wirkungsvoller Softwarearchitektur ein. Er stellt bewährte Praktiken zum Kurs setzen vor und gibt konkrete Tipps rund um Entwurf und Bewertung für Ihr eigenes Vorgehen. Werfen Sie Ballast ab und erhöhen Sie gleichzeitig die Wirksamkeit der Architekturarbeit in ihrem Projekt.
#SpeakRoslyn - Die Microsoft .NET Compiler PlattformRobin Sedlaczek
This are the slides from my talk about the Microsoft .NET Compiler Platform. I traveled around the .NET User Groups in Germany and showed them the .NET Compiler Platform aka Project Roslyn and how Visual Studio 2015 was partly reimplemented to make use of Roslyn.
FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...Verein FM Konferenz
Strategien und Best-Practise für die Namensgebung von Feldern, Beziehungen und Layouts.
Ziele sind:
- Teamkollegen und nachfolgende Programmierer sollen die Programmierung gut nachvollziehen können.
- der Überblick soll auch bei wachsenden Anwendungen und steigender Komplexität bestehen bleiben.
- Wie wird eine Historie der Veränderungen erstellt? Wie arbeitet man effizient im Team?
- Schrittweise Entwicklung der Regeln, deren Optimierung
- Beispiel
- Anwendungs Beispiele
- Grenzen der Regeln
- Fallen und Fehlerquellen
- Diskussion / Fragen
Vortrag erklärt die Vorraussetzungen für 2. Teil: Aufbau von eigener FrameWorks in FileMaker
In diesem Video geht es mit dem Kurs entgültig los. Den Einstieg bildet ein wenig Theorie rund um die Software Entwicklung selbst.
Links:
- http://gitlab.com
- http://programmierenlernen.info
Slides für meinen Workshop bei der BASTA Spring 2014 in Darmstadt. Hier eine Beschreibung des Workshopinhalts: Es ist schwierig genug, die Anforderungen der Kunden und Kollegen im Alltag zu erfüllen. Da bleibt nicht immer genug Zeit, um auch noch up to date zu bleiben was Neuerungen in C# betrifft. Wenn Ihnen dieses Problem bekannt vorkommt, kann dieser Workshop helfen. Wir widmen einen ganzen Tag besserem C#. Rainer Stropek, bekannter BASTA!-Speaker und Microsoft MVP, zeigt Ihnen, was C# mittlerweile leisten kann. Der Schwerpunkt im Workshop liegt diesmal auf folgenden Themen:
Coding und Design Guidelines – Best und Worst Practices, um besseren C#-Code zu schreiben.
Deep Dive in Lambdas und Linq – was hinter den Kulissen geschieht, wo sie helfen und wo sie mehr schaden als zu nützen.
Parallele und asynchrone Programmierung mit Task Parallel Library (TPL) und async/await – praktische Anwendung am Server und im Full-Client
Modularisierung von .NET-Anwendungen mit NuGet, MEF und Portable Class Libraries (PCL)
Neuerungen in Visual Studio 2013 für C#-Entwickler – alle Beispiele werden mit Visual Studio 2013 gezeigt. Sie erfahren dabei, was VS2013 an Verbesserungen für C#-Entwickler bringt.
Rainer Stropek setzt bei den Teilnehmern C#-Wissen zumindest auf dem Level von Version 2, idealerweise auch ein wenig Version 3, voraus. Ein eigener Laptop ist nicht Voraussetzung. Alle Konzepte werden anhand vieler Live-Coding-Beispiele erklärt. Zusätzlich erhalten alle Teilnehmer eine umfangreiche Präsentation als Zusammenfassung der gezeigten Themen.
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.
05 Das richtige DoE-Design für Ihren Erfolg auswählenStefan Moser
Im fünften Teil meiner „Design of Experiments“ Vorstellung geht es um die Design-Auswahl. Tatsächlich hat sich in den letzten Jahren eine Menge im Bereich der softwareunterstützen Versuchsplanung getan. Wurde vor Jahren noch mit Formblättern gerechnet so bietet die Versuchsplanung heutzutage eine Vielzahl von neunen und weiterentwickelten Möglichkeiten.
In diesem Tutorial möchte ich eine Vielzahl von Designs vorstellen die unterschiedlichen Zwecken dienen. Ebenso habe ich diese Auswahl um einige methodische Ansätze ergänzt die einen Einstieg zu späten Zeitpunkten in die Versuchsplanung aufzeigen.
Aktuelle Software verlangen vom Anwender keine Programmierkenntnisse oder umfangreiches Wissen in der Statistik mehr, sondern überzeugen durch gute integrierte Benutzerführung. Natürlich ist ein Vorwissen stets von Vorteil im Bereich von Problemformulierung und Durchführung der Versuchsplanung. Es ist jedoch nicht notwendig, dass all die Hintergrund-Berechnungen auch selbst von Hand durchgeführt werden könnten. Dies ist schließlich der Grund, weshalb man sich ggf. für eine validierte Software entscheidet.
Natürlich ist "DoE" kein Garant für Prozessverbesserung, aber es bietet Ihnen die Möglichkeit, mit vergleichsweise geringem Aufwand die Grenzen und Möglichkeiten Ihres Prozesses auszuloten.
Besonders interessant wird es, wenn Sie nach der Auswertung Ursache und Wirkung sowie Widersprüche und Grenzen Ihres Produkte/Prozesses eindrucksvoll, visuell und nachvollziehbar darstellen können.
2. und
Auf dem Weg zu Unwartbarkeit
Die besten Strategien für den sicheren Erfolg!
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
4. Die Spielregeln für Projekte
1.
2.
3.
4.
Das Spiel kann anhand der Prozess-Anleitung nicht
gewonnen werden – Improvisation erforderlich
Die fixen Termine und Budgets
sind zu Beginn der Spielanleitung zu entnehmen
Nicht die Fachlichkeit,
sondern der Spielleiter entscheidet
Wenn‘s kein Spass macht, machs‘d was falsch!
6. Analyse: Fundament der Wartbarkeit
Gute Spezifikationen
Die Herausforderung:
• vollständig und präzise
• sind nicht einfach
(auch graphisch)
Die Probleme:
• Kommunikation
– Kunde, Analyst, Entwickler
haben eigene Vorstellungen
• Konkretisierungen nötig
Analyseergebnis ist die Basis von Allem
Klarheit & Eindeutigkeit reduzieren die Risiken
10. Tech.Lösungen für nicht-technische Probleme
Einbinden von Hoffnungen
SOA
„Wieder verwendbarer Baustein“
JUnit
„Applikation ist getestet“
Groovy
„Wir sind agil & flexibel“
MochiKit
„Es ist Web 2.0 und komfortabel“
CompanyFramework.jar
„Manfestierter
Unternehmensstyle & -qualität“
14. Gegeneinander
WOMM Certification
…in 4 easy steps
1. Compile
(CVS/SVN 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!
Welcome as WOMM solutionist!
18. Nun aber zur Preisfrage
Wenn a und b false sind, dann ist x:
a) 42!
b) z
c) y
d) x
d) x
19. Name your babies
Compiler übersetzen – Entwickler lesen!
• 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
• Java Coding Conventions
23. Kräftig umrühren
Extensive Nutzung von extends bewirkt
– Hohe Komplexität durch verteilte Logik
innerhalb der Hierarchie
– Starke, nicht-lösbare Abhängigkeiten
– Vermischung von Zuständigkeiten
– Versteckte Verhaltens- &
Semantikänderungen
24. Niemals Verantwortung abgeben
Verändern bzw. Hinzufügen von Verhalten in der OO
Vererbung:
Delegation bzw. Event/Listener:
A ist ein spezielles B
A hat/nutzt/verwendet B
Enge, integrative Bindung
Entkoppelt, einzeln wieder verwendbar
29. 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
Was ist eine gute Komponentaufteilung?
Wie sehen passenden Schnittstellen aus?
30. Der Weg aus der Abhängigkeit
Wegweiser für gute
Modul-Einteilungen / Dekomposition
• Fachliche Ordnung
(„Fax-Service“, „Kontoverwaltung“)
• Technische Schichten
(GUI-, Business-Layer)
• Wenige, unidirektionale Abhängigkeiten
• Klares Gedankenmodell bzgl. Frage:
Was gehört rein, was nicht?
• Erfahrung
33. 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
36. Error-Handling: War was?
•
•
Fehler immer individuell, vollständig und
korrekt behandeln oder …
… einpacken und weitergeben
–
–
In geeignete, deklarierte Exceptions
oder komfortable RuntimeException
Dass bedeutet
– Keine Details/Fehler verschlucken
– auch wenn throws nervt (lieber: RuntimeException)
– Fehlerhandling Alternativen, z.B. try {…} finally {…}
37. 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; Log-Levels/Kategorien
42. I‘m a 3l33t h@x0r
static Variablen/Mutables
– Pitfall!
public static HashSet aktuelleZahlen =
Session.getSprache().berechne();
– Good style:
private final static String FOO = „buh“;
(Immutable und Konstante)
synchronized
– In der der Regel: Vermeiden!
Besser: java.util.concurrent verwenden
– Wenn doch, erst mal Gegenprobe: volatile bekannt?
44. Testen? Wir sind WOMM-zertifiziert!
“I don't need to test my programs.
I use error-correcting RAM (ECC)”
45. Entwickler und Tests
Gute Tests zu schreiben ist anspruchsvoll
•
•
•
•
Nicht nur Pfade ablaufen, Ergebnisse prüfen
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‘)
47. …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)
49. Vielen Dank für Ihre Aufmerksamkeit!
Besuchen Sie uns!
… Zertifizierung bei uns am Stand!
http://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