buschmais unterstützt
das erste JUG Saxony Camp.

JSC_LogoAm 31. März 2017 findet das erste JUG Saxony Campdie IT-Konferenz für Studenten – im NIEPER-Bau der HTWK Leipzig statt und ist für Studenten kostenfrei. Veranstalter sind die JUG Saxony und die HTWK Leipzig in Kooperation mit der GI Regionalgruppe Leipzig.

IT-Studenten können sich einen kompletten Tag lang mit den neusten Trends und Themen aus dem Bereich der Softwareentwicklung auseinandersetzen:

  • Aktiv in Workshops zu den Themen “Agile Softwareentwicklung”, “Graphendatenbanken” und “Web-Applikationen mit Spring Boot” mit bekannten Trainerinnen und Trainern – Julia Dellnitz (Learnical GbR), Michael Hunger (Neo Technology) und Oliver Gierke (Pivotal).
  • Oder in verschiedenen Sessions am Nachmittag, u.a. sprechen Studenten der HTWK Leipzig selbst zu interessanten Themen aus ihren Projekten.

Neben den Sessions und Workshops ist Zeit fürs Networking. Ganz ungezwungen können Kontakte zu den Ausstellern – Unternehmen aus und um Sachsen – geknüpft und mehr über Einstiegsmöglichkeiten oder Abschlussthemen erfragt werden. Abends wird es noch eine kleine Abendveranstaltung geben, bei der man die Konferenz gemeinsam ausklingen lässt.

Was ist dabei unser Part?
Wir sind seit 01.01.2017 offiziell Fördermitglied des JUG Saxony e.V.s Bereits seit einigen Jahren unterstützen wir den Verein / die Community aktiv u.a. in der Veranstaltungsplanung. Das JUG Saxony Camp ist das neuste Projekt, dessen Premiere – so hoffen wir – vor ausgebuchtem Publikum stattfindet.

Wir selbst sind als Sponsor und Aussteller vor Ort und freuen uns, interessierte Studentinnen und Studenten kennenlernen zu dürfen und bekannte Gesichter wiederzusehen.

Liebe Studenten, auf geht´s. Nutzt die Chance. Zur Anmeldung geht es auf leipzig.jugsaxony.camp.

JavaOne 2016

Konferenzen sind der ideale Ort, um aus dem Entwickler-Alltagsgeschäft auszubrechen und wieder mal ein Gefühl dafür zu bekommen, welche Hype-Wellen gerade über das Ökosystem rollen oder gerollt werden. Die diesjährige JavaOne 2016 in San Francisco – das ist die Oracle-Hauskonferenz – machte hier keine Ausnahme und ein Blick auf die Agenda der angebotenen Sessions und Tutorials zeigte deutlich die angesagten Schlüsselworte: Cloud, Microservices, Reactive Programming sowie IoT.

Etwas abseits des Mainstreams hatte ich das Vergnügen, eine Session gestalten zu dürfen: “jQAssistant: Verify Your Design and Architecture“. In dieser lagen die Schwerpunkte einerseits auf der Einführung in Philospohie und Funktionsweise des Werkzeugs, insbesondere aber in der Modellierung von Architekturkonzepten in Codestrukturen bzw. deren Abbildung im Graphen sowie der Formulierung von Regeln in ausführbarer Dokumentation (Asciidoc) für Entwickler. Das unmittelbare Feedback war sehr positiv, insbesondere der letzte Aspekt stieß wiederum auf sehr reges Interesse. Dieser zeigt einen gangbaren Weg auf, die zwar gebräuchlichen, aber naturgemäß stets veralteten Wiki-Seiten bzw. Word-Dokumente abzulösen.

Ich konnte insgesamt nur zwei volle Tage vor Ort sein. Einen Abend davon nutzte ich, um jQAssisant bei der Neo4j-Meetup-Group von San Francisco vorzustellen. Dabei lag der Schwerpunkt auf der Exploration bestehender Anwendungsstrukturen sowie der Gewinnung bzw. Bewertung individueller Metriken.

Leider konnte ich die Keynote der JavaOne mit den sehnsüchtig erwarteten Aussagen zur Zukunft von Java EE nicht besuchen. Das Ergebnis ist mittlerweile bekannt: es gibt ein Commitment zum Standard, Java EE 8 soll Ende 2017 verabschiedet werden und stellt im Wesentlichen eine Auffrischung mit kleineren (Configuration) und ausbleibenden Ergänzungen (MVC) dar. Zwischenzeitlich wird bereits an Java EE 9 gearbeitet, welches – wie die Gerüchteküche es im Vorfeld auch bereits vermutete – eine Neuausrichtung wagt und ein reaktives Programmiermodell anvisiert. Interessant ist dabei der Zeitplan: das Ergebnis soll bereits ein Jahr später verabschiedet werden, was selbst ein Oracle-Mitarbeiter in einem persönlichen Gespräch als zu ambitioniert und unrealistisch einschätzte. Wer den Spezifikationsprozess über die Jahre verfolgt hat, kann diese Auffassung bestätigen. Es ging Oracle offensichtlich erst einmal darum, ein Signal für Java EE zu senden und das sollte trotzdem gelungen sein.

Parallel dazu war deutlich erkennbar, dass man sehr bemüht ist, den Boden für eine hohe Akzeptanz des kommenden Java 9 zu bereiten. Es wurden viele Sessions angeboten, die sich den neuen Features (z. B. JShell) und der wahrscheinlich “heißesten” Änderung widmete: der Modularisierung mit Project Jigsaw und den damit ggf. verbundenen Inkompatibilitäten bei der Migration bestehender Anwendungen. Es wurde auffallend oft (aber zurecht) betont, welchen Stellenwert eine auf Stabilität orientierte Weiterentwicklung hat und dass bisher keine bereitgestellte Funktionalität entfernt wurde. Mit Java 9 wird hier allerdings, wenn auch sehr langsam, ein Paradigmenwechsel eingeleitet: um eine Modularisierung der Plattform zu ermöglichen, wurden 6(!) public-Methoden entfernt. Es wurde deutlich gemacht, dass sich der Prozess des Entsorgens von Altlasten in kommenden Versionen fortsetzen wird. Das wurde insbesondere in einer Fragestunde unter dem Titel “Meet the JDK architects” (mit Mark Reinhold, John Rose und Brian Goetz) sehr deutlich. Diese Session war überhaupt sehr aufschlussreich und unterhaltsam, weil zuweilen mit recht trockener Ironie argumentiert wurde. Getrieben durch Fragen von Entwicklern wurde klar, welche Werte bei der Weiterentwicklung von Plattform und Sprache eine Rolle spielen: Stabilität und ein nachweisbarer Mehrwehrt für neue Features. Die Untersützung von Ahead-Of-Time-Compilation oder Currying wurden unter letzterem Betrachtungswinkel als klar “Low-Priority” deklariert, währenddessen eine Verringerung des Overheads beim Thread-Handling in Aussicht gestellt wurde, um reaktiven Programmiermodellen bzw. entsprechenden Frameworks entgegenzukommen. Die Antwort auf die Frage nach dem “biggest regret” in der Geschichte von Java war übrigens wenig überraschend “Serialization”, verbunden mit der Aussage, dass der aktuelle Mechanismus die mit Abstand meisten Security-Issues verursacht hat…

Im Hinblick auf die Agenda der Konferenz möchte ich abschließend noch auf eine kleine Wahrnehmung am Rande hinweisen: es gab bekanntermaßen vor nicht allzu langer Zeit Spekulationen über eine möglicherweise unsichere Zukunft von JavaFX. Dem entgegen stand aber eine spürbare Menge der JavaOne-Sessions, die sich diesem Thema widmeten. Ähnlich optimistisch fiel dazu auch die Einschätzung in einem Panel zu RIA-Technologien aus, in welcher u. a. auch JavaFX als Basis für Cross-Plattform-Entwicklung im Bereich mobiler Geräte diskutiert wurde.

Slides zu meiner Session:
jQAssistant: Verify Your Design and Architecture (PDF)

Impressionen zur JavaOne 2016 in San Francisco:

ng-week: </> + ()-[]->() = b+

Unsere diesjährige Projektwoche stand ganz im Zeichen von JavaScript und Cypher. Wir wollten gemeinsam eine Anwendung entwickeln, die im Frontend auf AngularJS setzt und zur Datenhaltung eine Neo4J-Graphdatenbank verwendet. Die Anwendung sollte dabei ohne (Java-)Backend auskommen. Um das Ergebnis kurz vorwegzunehmen: Das hat super funktioniert!

Als Anwendungsfall diente eine klassische Adressverwaltung: Personen stehen mit Organisationen in Beziehung, Personen besitzen Kontaktdaten, Organisationen haben kontextabhängige Adressen, Personen finden sich in Empfängerlisten für Marketing-Aktionen wieder und vieles mehr. Die Modellierung dieser Beziehungen als Graph ist sehr intuitiv und hat uns gute Dienste als Diskussionsgrundlage geleistet.

Die technische Umsetzung blieb nicht ohne Herausforderungen. Es zeigte sich sehr schnell, dass das Rest-API der Neo4j-DB nicht auf die $resource Abstraktion von AngularJS passt. Auch mit dem $http-Service haben wir uns schwer getan. Wir hätten beinahe einen HATEOAS-Transformer implementiert, wäre nicht Peter – der erst später zu uns stieß – mit der Frage ins Haus gefallen, warum wir nicht den JavaScript-Treiber der Neo4j-DB verwenden. Eine kurze Evaluierung des APIs ergab: Das müsste gehen! Obwohl eine frühe 1.0, erwies sich der Treiber überaus stabil und weitgehend erwartungskonform.

Der JavaScript-Teil hat bei mir gemischte Gefühle hinterlassen. Das Bootstrapping der Anwendung mittels AngularJS war in wenigen Minuten erledigt. Allerdings ein Build-System aufzubauen, wo alle Ressourcen am Ende automatisch an der richtigen Stelle landen, hat mich viel fluchen lassen. Plugins für Grunt scheinen durchweg nichts von Fehler-Reporting zu halten. Eine Inkompatibilität zwischen grunt-usemin und grunt-angular-file-loader war so nur durch Raten zu finden.

Eine weitere Spitzfindigkeit zeigte sich in der Integration des Neo4j-Treibers mit AngularJS. Beide Frameworks setzen auf Promises – allerdings in verschiedenen Implementierungen. Der Neo4j-Treiber nutzt eine eigene, an ES6 angelehnte Implementierung, während AngularJS mit $q einen Service hat, der an den Digest-Zyklus des Frameworks gekoppelt ist. Die Folge war, dass Ergebnisse aus Datenbank-Abfragen nie unmittelbar angezeigt wurden. Peter – diesmal der, der von Anfang an dabei war – konnte den gordischen Knoten zerschlagen. Die von ihm etablierte Verwendungsweise von $q kannte ich bis dato nicht.

Als Fazit lässt sich festhalten: Keiner hat das Java-Backend vermisst. Wir haben uns durch JavaScript, AngularJS, NPM, Grunt, Bootstrap, Less, Neo4j und Cypher gekämpft und selbst alte Hasen konnten dabei noch neue Tricks dazulernen. Wir haben einen funktionsfähigen Prototyp implementiert, deren Fertigstellung im Wesentlichen jetzt nur noch Fleißarbeit ist. Auf unsere Zusammenarbeit und das erzielte Ergebnis können wir durchaus stolz sein.

Neuer Workshop:
jQAssistant – Getting Started!

logo_jqa_lang_dunkel_rgbNeben unseren Consulting-Leistungen zu jQAssistant bieten wir ab sofort einen Einsteiger-Workshop an, für alle, die jQAssistant als Werkzeug kennen lernen möchten. Dirk Mahler – Trainer und Initiator von jQAssistant – zeigt Ihnen, wie das Kommandozeilen-Werkzeug bzw. das Maven-Plugin zum Einlesen von Artefakten und Projekten eingesetzt werden kann, Abfragen auf den Datenstrukturen interaktiv ausgeführt und Design- und Architektur-Konzepten validiert werden können. Der Workshop findet vom 22. – 23. August in Dresden statt und richtet sich an Entwickler und QA-Ingenieure mit fortgeschrittenen Kenntnissen in Java und grundlegendem Know-how in Apache Maven.

Aktuell können Sie den Workshop zum Starterpreis buchen. Detaillierte Informationen und das Anmeldeformular finden Sie auf unserer Seminarseite:
jQAssistant – Getting Started!

Wenn Sie regelmäßig über jQAssistant informiert werden möchten, können Sie den Newsletter abonnieren oder uns per Twitter folgen:
Anmeldung jQAssistant Newsletter
@jqassistant

Dev-Blog:
https://jqassistant.org

Architekturberatung:
http://jqassistant.de

Fragen rund um jQAssistant:
Dirk Mahler (info@jqassistant.de)

Graph-basierte Software-Analyse mit jQAssistant

Artikel als PDF herunterladen:
Download Graph-basierte Software-Analyse mit jQAssistant

Qualitätssicherung in der Software-Entwicklung ist seit Jahren ein Thema, mit dem es problemlos möglich ist, Zeitschriften, Bücher und Konferenzen inhaltlich zu füllen. Die Ansatzpunkte sind äußerst vielfältig – sie reichen von der Prozessorganisation über Teststrategien, technische Infrastrukturen bis hin zu vermeintlich trivialen Dingen wie der Formatierung des Quellcodes. In diesem Artikel möchte ich einen Aspekt beleuchten, der sich auf der Ebene statischer Code-Analysen abspielt: die Festlegung und Überwachung projektspezifischer Architektur- und Design-Regeln.

 

Verfallene Strukturen

Verfallene Strukturen

weiterlesen

 1 2 Vor