{"id":50,"date":"2018-02-28T16:49:08","date_gmt":"2018-02-28T15:49:08","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=50"},"modified":"2022-11-30T16:49:42","modified_gmt":"2022-11-30T15:49:42","slug":"werkzeuge-zur-erhaltung-der-softwarearchitektur-team-software-automatisierungsprobleme-teil-5","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=50","title":{"rendered":"Werkzeuge zur Erhaltung der Softwarearchitektur &#8211; Team \/ Software \/ Automatisierungsprobleme &#8211; Teil 5"},"content":{"rendered":"\n<p>Dies ist der letzte Post, bevor ich zu den eigentlich Werkzeugen f\u00fcr die Vermeidung technischer Schulden komme. Er behandelt verschiedene Rahmenbedingungen f\u00fcr die Vermeidung technischer Schulden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">QS im Team<\/h2>\n\n\n\n<p>Egal ob wir innerhalb eines Scrum-Teams entwickeln oder ein Softwarearchitekt f\u00fcr die Organisation zust\u00e4ndig ist: Qualit\u00e4tssicherung ist immer eine Aufgabe des <strong>gesamten<\/strong> Teams. TEAM bedeutet also <strong>nicht<\/strong> \u201eToll Ein Anderer Machts\u201c, sondern es m\u00fcssen alle Beteiligte an dem kontinuierlichen Prozess teilnehmen. Teile der technischen Schulden k\u00f6nnen sicher im Laufe der Realisierung von Feature-Request (mit-)erledigt werden. Es f\u00fchrt aber kein Weg daran vorbei, dass f\u00fcr die Beseitigung der technischen Schulden weitere Ressourcen notwendig sind. Es m\u00fcssen regelm\u00e4\u00dfig &#8222;Putztage&#8220; eingeplant werden, in den die Ergebnisse der Analysen abgearbeitet und somit Schulden abgebaut werden. Wenn wir in einem Scrum-Team arbeiten, sollte die unbedingt auch in den Teamvertrag aufgenommen werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Softwareunterst\u00fctzung<\/h2>\n\n\n\n<p>F\u00fcr die hier beschriebenen Prozesse gibt es eine sehr gute (insbesondere OpenSource) Softwareunterst\u00fctzung. Festzustellen ist, dass es nicht \u201edas eine\u201c Tool gibt, um die Anforderungen zu befriedigen. Aktuell muss immer auf mehrere Werkzeuge zur\u00fcckgegriffen werden, um eine solide Basis zu schaffen. Die Tools arbeiten auf verschiedene Ebene wie beispielsweise IDE, Build-System (Maven), CI-System (Jenkins), \u2026 Dies hat zur Folge, dass viele Plugins f\u00fcr die Systeme ben\u00f6tigt werden. Leider muss man feststellen, dass es sich bei den vielen Plugins um einen &#8222;H\u00fchnerhaufen&#8220; handelt, der dazu neigt, in verschiedene Richtungen zu laufen. Man muss immer sehen in welchen Quellen welches Plugin aktuell ist (Quellen: Marketplace vs. Updatesite) und welche \u00c4nderungen sich bei der Konfiguration durch neue Versionen ergeben. Ggf. verhalten sich auch Versionen von Maven (3.5 vs 3.3 evtl. auch Gradle) unterschiedlich in Verbindung mit einzelnen Plugins. Aber der Aufwand lohnt sich!!!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Probleme der Automatisierung<\/h2>\n\n\n\n<p>Es ist nicht alles automatisierbar. Beispiele hierf\u00fcr sind<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funktionserf\u00fcllung<\/li>\n\n\n\n<li>Umsetzungsstil<\/li>\n\n\n\n<li>Symptombehandlung statt L\u00f6sungsfindung<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Funktionserf\u00fcllung<\/h3>\n\n\n\n<p>Auch sehr viele Tests ersetzen keine manuellen Pr\u00fcfungen und k\u00f6nnen nicht zu 100% sicherstellen, dass die Software das gewollte umsetzt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Umsetzungsstil<\/h3>\n\n\n\n<p>Kreativit\u00e4t und Erfahrungsgrad der Entwickler f\u00fchren zu L\u00f6sungen, die ggf. stilistisch soweit voneinander abweichen, dass sie angepasst werden m\u00fcssen, obwohl sie korrekt arbeiten. Grunds\u00e4tzlich sind les- und wartbare und nicht brillante L\u00f6sungen anzustreben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Symptombehandlung statt L\u00f6sungsfindung<\/h3>\n\n\n\n<p>Beispielsweise kann bei einer NPE das Symptom durch eine If Bedingung umgangen werden. Es ist aber h\u00e4ufig viel wichtiger zu kl\u00e4ren, ob ein Nullwert \u00fcberhaupt in diesem Kontext vorkommen darf oder ob Validit\u00e4tspr\u00fcfungen nicht greifen. Diese m\u00fcssten dann statt des &#8222;Umgehens&#8220; der NPE korrigiert werden und damit das ganze System in einen konsistenten Zustand versetzt werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">False Positives<\/h2>\n\n\n\n<p>Eigentlich bei allen automatischen Prozessen kann es dazu kommen, dass ein (Fehler)Zustand falsch erkannt wird. L\u00f6sungen hierf\u00fcr sind in Hinblick auf die Werkzeuge<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Parametrisierung der Regeln<\/li>\n\n\n\n<li>Codestellen ignorieren\n<ul class=\"wp-block-list\">\n<li>Kennzeichnen der Codestellen durch Kommentare<\/li>\n\n\n\n<li>Kennzeichnen der Codestellen durch Annotationen<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Artefakte\/Projekte\/Packages ausschlie\u00dfen\n<ul class=\"wp-block-list\">\n<li>Insbesondere automatisch generierte Pakete wie beispielsweise bei SOAP-Schnittstellen<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Erfassen von Zusatzinformationen\n<ul class=\"wp-block-list\">\n<li>Begr\u00fcndungen warum diese Stelle keine technische Schuld ist und dann Filterung dieser Stellen in den Ergebnislisten (Kennzeichen reviewed)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u201eA fool with a tool is just a fool\u201c<\/h2>\n\n\n\n<p>Wichtig ist nat\u00fcrlich auch, dass die Tools kein Selbstzweck sind. Blind laufende Tools, deren Ergebnisse nicht ausgewertet werden sind sinnlos (Marketing und Vertrieb sehen das eventuell anders<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.schoenberg-solutions.de\/roller\/images\/smileys\/wink.gif\" alt=\";-)\" title=\";-)\"\/><\/figure>\n\n\n\n<p>). Werkzeuge sollen schrittweise eingef\u00fchrt werden. Dabei werden die Regeln nach und nach erweitert und unterscheiden, ob die Reglen f\u00fcr die manuellen und automatischen Pr\u00fcfungen eingesetzt werden. Allgemein gilt: <strong>Lieber umgesetzte Minimalanforderungen, als keine Pr\u00fcfungen!<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dies ist der letzte Post, bevor ich zu den eigentlich Werkzeugen f\u00fcr die Vermeidung technischer Schulden komme. Er behandelt verschiedene Rahmenbedingungen f\u00fcr die Vermeidung technischer Schulden. QS im Team Egal ob wir innerhalb eines Scrum-Teams entwickeln oder ein Softwarearchitekt f\u00fcr die Organisation zust\u00e4ndig ist: Qualit\u00e4tssicherung ist immer eine Aufgabe des gesamten Teams. TEAM bedeutet also [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-50","post","type-post","status-publish","format-standard","hentry","category-softwarearchitektur"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/50","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=50"}],"version-history":[{"count":1,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions"}],"predecessor-version":[{"id":51,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions\/51"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}