Beiträge

Wartung von Altanwendungen bei TechTalk: Interview mit Softwarearchitekt Thomas Korosa

In unserer Interviewserie „Get to know TechTalk“ stellen wir regelmäßig Mitarbeiter der TechTalk vor. Diesmal verrät uns Softwarearchitekt Thomas Korosa, wie er mit den Herausforderungen bei der Wartung von Altanwendungen umgeht und was seine Arbeitsweise bei der Übernahme sowie Betreuung der Altanwendungen besonders macht.

Was ist Deine Rolle bzw. Dein Betätigungsfeld bei TechTalk?

Zu meinen Aufgaben gehören neben der Programmierung einerseits die Unterstützung und Weiterentwicklung der anderen Developer im Team, andererseits die Unterstützung der internen Product Owner und der Kunden. Den Product Owner unterstütze ich in der Planung und bei der Analyse von Anforderungen, besonders wenn diese nicht nahtlos in die bestehende Anwendung passen. 

Typische Themen im Rahmen der Wartung von Altanwendungen sind bei uns: 

  • Evaluierung und Nach-Dokumentation einer Domain
  • Quick Wins für Refactoring finden, die die Wartbarkeit verbessern und auch mit schonendem Umbau umgesetzt werden können
  • Altanwendungen welche auch oft einen hohen Anteil von Legacy-Code beinhalten 
  • die Erhöhung der Testabdeckung im Nachhinein. 

Das Betätigungsfeld ist also sehr vielfältig.

Worauf legst du besonderen Wert bei der Weiterentwicklung und Zusammenarbeit Deines Developer-Teams?

Bei der Weiterentwicklung von Developern setze ich auf Mentoring. Die Unterstützung ist ganzheitlich und betrifft sowohl Technologien oder Programmier-Patterns, als  auch die Entwicklung des Verständnisses, was Coding Standards und deren konsequente Einhaltung bringen oder welche Auswirkung Knowledge Sharing auf die Effizienz und die Effektivität eines Teams hat – und am Ende auch auf die Motivation. Letztlich ist es mein Ziel, Nachhaltigkeit in Projekten sowohl in technischer als auch in organisatorischer Hinsicht herzustellen. Das bewirkt auch, dass die Teammitglieder von Anfang an viele Aufgaben selbständig lösen können – Eine wichtige Voraussetzung, um Altanwendungen als Team effizient warten zu können.

Welchen Fokus setzt Du bei der Übernahme von Altanwendungen?

Der Fokus liegt auf der behutsamen Modernisierung der bestehenden Architekturen, und weniger auf dem Bau neuer Architekturen. Refactoring so einzusetzen, dass man den Code sukzessive im Zuge der Weiterentwicklung modernisiert und dabei die Anwendung stabil in Betrieb hält, erfordert spezielles Wissen und folgt anderen Kriterien, was das Handling von Code anbelangt, als eine Neuentwicklung.  Das Gleiche gilt für die Modernisierung von Infrastruktur oder Komponenten.

Ist die Betreuung von Altanwendungen nicht ziemlich aufwändig?

Es stimmt schon, dass die Betreuung von Altanwendungen ein paar Herausforderungen mit sich bringt, z.B. häufig geringe Testabdeckung und unzureichende Dokumentation. Oft gibt es keine inhaltlichen oder technischen Ansprechpartner beim Kunden, die uns bei der Übernahme unterstützen könnten. Das alles erhöht den Aufwand für Änderungen an der Software.  Wir haben jedoch genau mit diesen Herausforderungen viel Erfahrung und Routine und können daher unsere Kunden besonders gut dabei unterstützen.

Was schaust Du Dir als Erstes an, wenn ein neuer Kunde mit seiner Altanwendung zu dir kommt?

Bei der Erstanalyse ist unser Ziel, die mindestens notwendigen Umbauarbeiten zu erkennen und Quick Wins zu finden, die leicht realisierbar sind, die Wartung erleichtern und Verbesserungen für die Benutzer*innen bringen. Dabei achten wir besonders auf den Business Value und auf inkrementelle Änderung.  Das heißt wir können relativ schnell eine realistische Empfehlung geben, wie der weitere Betrieb der Software unter Berücksichtigung von Domäne, Technologien und Business Value aussehen sollte.

Wie profitiert ein neuer Kunde, wenn er mit TechTalk seine Altanwendungen verwaltet?

Ich glaube, dass der größte Vorteil für einen neuen Kunden ist, dass wir wissen, was wir brauchen, um seine Software zu übernehmen. Wir integrieren diese in unsere  bestehenden Abläufe, sodass der Betrieb der Anwendung in der gewohnten Qualität kosteneffizient weiterhin gewährleistet ist. 

In organisatorischer Hinsicht profitieren unsere Kunden davon, dass wir mit State-of-the-Art-Tools (DevOps) im Code für Ordnung sorgen und mit unserem –  für die Wartung maßgeschneiderten – agilen Vorgehen auch organisatorisch den Überblick bewahren. Wir arbeiten dabei mit einem Kanban Board und synchronisieren uns regelmäßig mit den Product Ownern im Sprint-Rhythmus von zwei Wochen.

Der Vorteil für die Kunden ist, dass einheitliche Standards für alle Projekte implementiert sind und gelebt werden, die gewährleisten, dass wir im Team transparent und effizient zusammenarbeiten können. Diese Transparenz hilft auch dem Product Owner die Effektivität unserer Arbeit optimal zu unterstützen, sodass wir das Richtige umsetzen, und regelmäßig mit dem Kunden die Prioritäten im Backlog anpassen können, wenn von ihm gewünscht. Das ist in der Wartung besonders relevant, weil sich die Schwerpunkte bei Anwendungen, die bereits in Betrieb sind, oft schneller ändern. Für den Kunden verbessert das also die Kosteneffizienz und Planbarkeit. Zusätzlich erleichtert es die Einbindung weiterer Teammitglieder, was auch das Problem nicht mehr vorhandener Ansprechpartner reduziert. 

Und welche Vorteile ergeben sich aus technischer Hinsicht für den Kunden?

Auch in technischer Hinsicht bieten wir den Kunden Vorteile. Dadurch, dass wir gängige Technologien im Auge behalten, können wir unseren Kunden passende Komponenten vorschlagen, wie zum Beispiel Kibana für die Systemüberwachung. Ein anderes Beispiel ist, dass wir erkennen, wenn eine Komponente deprecated, also veraltet, ist oder Sicherheitslücken bekannt werden. Der Kunde muss sich nicht selbst um solche Probleme kümmern.

Inwiefern ist die Zusammenarbeit mit Kunden in der Wartung anders als bei Neuentwicklungen? 

Der Kontakt zu Kunden unterscheidet sich von der Neuentwicklung vor allem dadurch , dass wir bis zu 5 verschiedene Kunden in jedem Sprint betreuen und oft auch in technischer Hinsicht eng zusammenarbeiten. Die Inhalte reichen dabei von der Analyse eines Problems in der Infrastruktur, wie z.B. dem korrekten Aufruf einer Schnittstelle, bis hin zur Beratung, welche die optimale Lösung für den Benutzer aus Domänen- und Usability-Sicht ist.

Was motiviert Dich besonders bei deiner Arbeit mit Altanwendungen?

Mich motivieren am meisten drei Aspekte meiner Arbeit.

Erstens, wenn es mir gelingt, zu meinen Kunden ein gutes Verhältnis aufzubauen und partnerschaftlich zusammenzuarbeiten. Wenn das gelingt, motiviert es mich besonders, weil gerade in der Wartung oft Probleme schnell gelöst werden müssen und da ist eine gute Beziehung zum Kunden besonders wichtig.

Zweitens kann ich in meiner Rolle junge Kollegen*innen weiterbilden und an den vielfältigen Projekten wachsen lassen – und lerne dabei auch immer selbst dazu .

Drittens analysiere ich gerne, versuche die Domäne und die Implementierung von Anwendungen zu verstehen und freue mich, wenn ich dadurch Lücken schließen kann, die entstanden sind weil im Team des Kunden die  wissenden Personen – Entwickler oder Produktmanager – nicht mehr verfügbar sind. 

Wie bleibst Du am Ball? 

Ich schaue auf einen ständigen Austausch mit Kollegen*innen –  auch mit Juniors – und lasse mich gerne auch von ihnen challengen. 

Außerdem ist es mir wichtig, auch in Legacy-Projekten den Fokus auf die Einhaltung der State-of-the-Art-Qualitätsstandards zu legen. Last but not least lernt man sowieso durch die Unterschiedlichkeit der Lösungen in den Altanwendungen flexibel zu sein und sich effiziente und effektive Lösungen zu überlegen.

Welche Soft Skills hast du im Zuge deiner Tätigkeit weiterentwickelt?

Die wichtigsten Dinge, die ich gelernt habe, sind mehrere verschiedene parallele Aufgaben effizient zu organisieren, mit vielen verschiedenen Standpunkten umgehen zu können und zwischen den Meinungen zu vermitteln. Zuhören und Reflektieren führt zu einer gemeinsamen, ganzheitlichen Sicht und ermöglicht die beste Lösung.

Möchtest du mehr über die Methoden zur Wartung von Altanwendungen bei der TechTalk erfahren? Thomas Korosa steht dir für weitere Fragen über Xing oder Mail zur Verfügung.

Das .NET Framework ist tot, lang lebe .NET!

Auf der diesjährigen Microsoft Entwickler- Konferenz Build, wurde neben der aktuellen .NET Core Version 3 bereits die nächste Version mit dem neuen Namen .NET 5 angekündigt. Um eines gleich zu Anfang klarzustellen, .NET 5 ist nicht der direkte Nachfolger vom .NET Framework 4.8 sondern der direkte Nachfolger von .NET Core 3. Scott Hunter (Director Program Manager für .NET) hat dies ebenfalls in einem Blogpost bestätigt.

Was ist noch einmal .NET Core?

.NET Core ist eine neue Implementierung des .NET Frameworks, welche in Version 1.0 im November 2014 erschienen ist. Mit den Erfahrungen der letzen 12 Jahren am .NET Framework, wurden viele Teile neu implementiert und verbessert. Mit einer modulareren Architektur ist es erstmalig möglich mehrere .NET Core Versionen systemweit nebeneinander betreiben zu können. Dadurch kann eine neuere Version von .NET Core installiert werden, ohne bestehende Anwendungen im Betrieb zu beinflussen. Alternativ zur systemweiten Installation ist es jetzt auch möglich, die .NET Core Runtime mit einer Anwendung selbst mit auszuliefern ohne sie systemweit installieren zu müssen.

Die Release der aktuellen Version .NET Core 3 erfolgte übrigens am 23. September 2019 während der .NET Conf 2019 und für November 2019 ist bereits die Release für .NET Core 3.1 geplant. Diese wird vor allem eine Bugfix- Release werden, welche dann auch als LTS- Version (Long Term Support) gekennzeichnet wird. Long Term Support bedeuted, dass Microsoft für 3 Jahre lang nach der ursprünglichen Release kritische und kompatible Fehlerbehebungen zur Verfügung stellt. Nicht LTS Versionen, welche als Current bezeichnet werden, werden bis zu 3 Monate nach dem Release der nächsten Version offiziell unterstützt.

Ein weiterer großer Unterschied zum .NET Framework ist, dass .NET Core komplett als Open Source Software entwickelt wird und es nicht nur auf Windows, sondern auch auf Linux und Mac OS läuft.

Was ist neu an .NET 5 außer die Versionsnummer?

.NET 5 ist die nächste Evolutionsstufe von .NET Core und vereint alle bisher unterstützten Platformen unter einem .NET. Ob das Windows, Linux, Mac OS, iOS, Android, tvOS, watchOS oder WebAssembly, alle laufen unter der gleichen Runtime und Framework.

Zusätzlich kommen Features von anderen Implementierungen (z.B. Xamarin) in .NET. Das wären unter anderem Java, Objective-C und Swift Interoperabilität und statisches Kompilieren (AOT, Ahead Of Time).

Wann kommt .NET 5 und was kommt danach?

Microsoft plant .NET 5 im November 2020 zu veröffentlichen. Um es für uns EntwicklerInnen leichter zu machen, hat sich Microsoft dazu entschieden ein Release pro Jahr zu veröffentlichen. Ab November 2020 erscheint jedes Jahr im November eine neue Version von .NET.

Jedes zweite Jahr erfolgt die Veröffentlichung einer LTS (Long Term Support) Version, für welche Microsoft länger Support garantiert. Wie lange ist noch nicht klar, ich vermute dass es bei den jetzigen 3 Jahren bleibt. Man hat also von LTS zu LTS Versions-Upgrade ein Jahr Zeit dieses durchzuführen.

Mehr Details zu .NET 5 inkl. Schedule findet man im Blogpost von Richard Lander (Program Manager .NET Team).

Was verwende ich jetzt für meine neuen Anwendungen?

Die kurze Antwort ist: .NET Core.

Die etwas längere Antwort ist: es hängt davon ab, aber wahrscheinlich .NET Core in der Version 3.

Microsoft selbst hat einen kurzen Leitfaden erstellt, wann .NET Core oder .NET Framework verwenden werden soll. Nach diesem Leitfaden soll .NET Framework nur dann verwendet werden, wenn Abhängigkeiten auf Technologien oder Bibliotheken bestehen, welche heute noch nicht oder nicht mehr in .NET Core unterstützt werden.

Was mach ich jetzt mit meinen bestehenden .NET Framework Anwendungen?

Kurzfristig ändert sich für .NET Framework nichts. Als Teil des Betriebssystems wird Microsoft weiterhin Sicherheitspatches für .NET Framework bereitstellen. Detailierte Information finden sich in der offiziellen Lifecycle FAQ. Innovationen finden heute bereits ausschließlich unter .NET Core statt.

Mittel- bis langfristig sollte man sich überlegen, ob es sich lohnt bestehende Anwendung auf .NET Core zu portieren.

Mit dem .NET Portability Anlazer stellt uns Microsoft ein Werkzeug bereit, mit dem Entwickler bestehende Bibliotheken und Software auf Kompatibilität mit .NET Core analysieren können.

Mit der aktuellen Version von .NET Core ist es erstmals möglich auch bestehende WPF und Winforms Desktop Anwendungen nach .NET Core zu portieren und zukünftig mit .NET 5 weiterzuentwickeln.

Fazit

Mit dem Ausblick auf .NET 5 im November 2020 ist jetzt der richtige Zeitpunkt sich Gedanken über eine Portierung von bestehenden .NET Framework Applikationen zu machen.

Gerne unterstützen wir Sie hands-on bei der Planung und Analyse Ihres konkreten Vorhabens.


Wenn Sie Unterstützung bei der Architektur Ihrer nächsten .NET Anwendung brauchen, können Sie sich gerne direkt an mich wenden. Gerne beantworte ich Ihre Fragen. Kontakt: daniel.sack@techtalk.at

Bericht vom JavaScript Training mit Jonas Bandi

 

Update Februar 2017: Im TechTalk Stories Video stellt Jonad Bandi das Training vor

Bereits zum zweiten Mal fand das Training „JavaScript für Enterprise-Entwickler“ in den Räumen der TechTalk statt, wobei der dritte und letzte Tag optional gebucht werden konnte. Das Besuchen desselben lohnte sich jedoch allenfalls, da nach dem Erlernen der Tools und benötigten Grundlagen am dritten Tag vor allem praxisnahe Inhalte und Beispiele anhand von AngularJS vermittelt wurden.

Vortragender war wieder Jonas Bandi, Geschäftsführer der IvoryCode GmbH. Seine mittlerweile 15-jährige Expertise in verschiedenen Bereichen der Softwareentwicklung war hier deutlich erkennbar. In nur drei Tagen das JavaScript Wissen der Teilnehmer auf den aktuellsten Stand zu bringen ist jedenfalls eine Herausforderung, der sich Jonas erfolgreich stellte. Außerdem galt es, die vielen Vorurteile gegenüber der Sprache auszuräumen oder zumindest zu entkräften, welche dazu führen, dass diese immer noch von genügend Entwicklern als nicht vollwertige Programmiersprache betrachtet wird.

Die Technologie JavaScript unterscheidet sich von anderen Bereichen der objektorientierten Softwareentwicklung tatsächlich deutlich in einigen Bereichen, wie für alle Teilnehmer schnell erkennbar wurde. Daher wurden am ersten Tag hauptsächlich die aktuellsten theoretischen Grundlagen und der Umgang mit diversen hilfreichen Tools und Frameworks beigebracht, um das Wissen der Teilnehmer möglichst auf denselben Stand zu bringen. Ebenfalls angesprochen wurde, wie JavaScript Code effektiv gebuildet, getestet und debugged werden kann.

Das nächste Training mit Jonas Bandi findet von 20. bis 22. September in Wien statt.


Als praktisch erwiesen sich dabei die stetig steigenden Möglichkeiten und Features, welche direkt in Visual Studio zur Verfügung stehen – der für viele Developer gewohnten und vertrauten Entwicklungsumgebung. Für Staunen sorgte die Tatsache, dass der neue Code-Editor von Microsoft („Visual Studio Code“), welchen ebenfalls manche Teilnehmer im Rahmen des Workshops verwendeten, rein in JavaScript geschrieben wurde.

Am zweiten Tag lag der Fokus bereits deutlich auf der Vertiefung und Anwendung des eben erlernten Wissens anhand von praktischen Beispielen. Bestehender Code wurde so refactored, dass in etwa das MVC-Pattern angewandt werden konnte. Auch das Prinzip der Promises wurde erklärt, mit dem JavaScript – das dadurch bedingt, dass die Anwendungen im Browser ausgeführt werden, eigentlich kein Threading unterstützt – Asynchronität dennoch in Grundzügen beherrschen lässt.

Der dritte und letzte Tag beschäftigte sich abschließend mit einem der derzeit wichtigsten JavaScript-Frameworks: AngularJS. Dies bereichert Webseiten um dynamische Inhalte – Single-Page Applikationen ist das Stichwort und wohl jedem Entwickler mittlerweile ein Begriff. Auch hier stand die praktische Anwendung von Beginn an im Vordergrund, rasch wurden von den Teilnehmern erste Beispiele erfolgreich umgesetzt. Überraschend war, wie mittels wenig JavaScript-Code schnell einfache, funktionsfähige Applikationen entwickelt werden konnten.

Generell war der Workshop sehr zukunftsorientiert gestaltet. Die vielen Fragen, die von den Besuchern des Trainings gestellt wurden, konnten von Jonas detailliert und ausführlich beantwortet werden, so dass gegen Ende des dritten Tages und einem intensiven, praxisorientierten Workshop eine gute persönliche Grundlage für die weitere Entwicklung von JavaScript-basierten Applikationen geschaffen wurde.

Das nächste Training mit Jonas Bandi findet von 20. bis 22. September in Wien statt.

Hochkarätig besetztes Speaker-Line-Up auf der Agile Tour Vienna 2015

Die Agile Tour findet heuer zum fünften Mal statt. Sie hat sich die letzten Jahre zum Fixpunkt der der österreichischen Agile Community entwickelt und wird auch jedes Jahr international stärker wahrgenommen. TechTalk organisiert die Konferenz gemeinsam mit sinnvoll führen und der FH Technikum Wien.Das Speaker Line-Up der diesjährigen Ausgabe wird erneut für eine größere internationale Aufmerksamkeit sorgen, es ist gelungen bekannte Größen der Agile Community als Speaker zu gewinnen:

  • Gojko Adzic (Vortrag: Test automation without a headache: Five key patterns)
  • Dan North (Vortrag: Scaling Agile Delivery: Turning the Lights On)
  • Jeff Patton (Vortragsthema noch nicht fixiert)
  • Joseph Pelrine (Vortrag: (Wie) mache ich “richtig” Scrum?)

Gojko Adzic wird Anfang November auch für ein ganztägiges Training in Wien sein: 

Specification by Example: From User Stories to Acceptance Tests

 

Nachdem die Agile-Tour fixer Bestandteil der Community ist und das Speaker Line Up heuer sehr gut besetzt ist mit einem baldigen “ausverkauft” Status zu rechnen. Wer also dabei sein will sollte sich jetzt ein Ticket sichern.

Weitere Informationen:

Visual Studio 2015: Kurzüberblick über die Neuerungen und weiterführende Links

DanielTheCoder

image

Ab heute, 20. Juli 2015, wird die neue Visual Studio 2015 Version bereitstehen. Mit Visual Studio 2015 wird die neue Edition “Visual Studio Enterprise 2015” eingeführt die vor allem für alle Visual Studio 2013 Premium Benutzer mit MSDN interessant sein wird da das Upgrade auf die Enterprise Edition gratis ist.

Die Installation der Enterprise Edition mit allen Features benötigt diesmal 22 GB und ergibt sich unter anderem aus der Vielzahl an Cross Plattform Development Werkzeugen und den zugehörigen 3rd Party Erweiterungen, Unterstützung für Windows 10 Universal Windows Apps, usw.

 

image

Für alle .Net Entwickler wird wohl die interessanteste Neuerung die Einführung der .Net Compiler Platform (“Roslyn”) in Visual Studio sein. Mit Roslyn kommt nicht nur die Unterstützung der neuen Sprach-Features von C# 6.0 als auch VB 14 hinzu, sondern eine Vielzahl an weiteren Features wie zum Beispiel verbesserte IDE Features, “Live Code Analyzers” welche es erlauben auch eigene CodeFixes zu schreiben diese per Nuget zu deployen, Debugging support für Lamdas, usw.

Die Git Unterstützung wurde weiter ausgebaut und hinzugekommen sind unter anderem Unterstützung der für Git typischen Graphen Ansicht der Commit Historie, bessere Unterstützung für die Verwaltung von hierarchischen branches und remotes, Unterstützung für rebase, usw.
Als Visual Studio Extension wird außerdem die Unterstützung von Github gehosteten Projekten mitgeliefert.

image

 

Vor allem aber für Web-Entwickler wird die native Unterstützung moderner Web Development Werkzeuge wie node.js, npm, bower, grunt und gulp eine Erleichterung bei der Entwicklung von Single Page Applications bringen.

image

 

Visual Studio 2015 bringt viele nützlichen Neuerungen mit sich doch es wird noch eine Weile dauern bis alle Visual Studio Extension für die neuen Version verfügbar sind.  Wir haben bereits unser Arbeit getan und specflow und specflow+Runner für die neue Version fit gemacht :)

(Beitrag zusammengestellt von @DanielTheCoder)

Weitere Links