{"id":543,"date":"2020-04-03T09:22:17","date_gmt":"2020-04-03T07:22:17","guid":{"rendered":"https:\/\/unity-software.de\/?p=543"},"modified":"2020-06-01T11:14:34","modified_gmt":"2020-06-01T09:14:34","slug":"qualitaet-braucht-zeit","status":"publish","type":"post","link":"https:\/\/unity-software.de\/?p=543","title":{"rendered":"Qualit\u00e4t braucht Zeit"},"content":{"rendered":"\n<p>Wenn heutzutage eine neues Produkt auf den Markt gebracht werden soll, muss es oft sehr schnell gehen. Egal ob es sich um einen neuen Fernseher, ein neues Smartphone oder auch um neue Software geht. Bei Softwareanwendungen gibt es auch den sch\u00f6nen Begriff &#8222;Minimal Viable Product&#8220; (MVP). Das bedeutet, dass zuerst ein minimaler Funktionsumfang der Softwareanwendung durch den Hersteller implementiert und dieses Produkt so den Kunden verkauft wird. Alle weiteren Funktionalit\u00e4ten werden dann erst nach und nach per Update an den Kunden geliefert. Der Vorteil ist, dass das Produkt schnell am Markt verf\u00fcgbar ist und die Kunden schnell die Grundfunktionalit\u00e4t erhalten. Ein Nachteil wiederum ist, dass zun\u00e4chst auf viele zus\u00e4tzliche Funktionen, Komfort oder Qualit\u00e4t verzichtet werden muss.<\/p>\n\n\n\n<p>Eigentlich ein praktischer Ansatz. Doch was ist, wenn weitere Funktionalit\u00e4ten durch den Kunden gew\u00fcnscht werden, der Hersteller sich aber entscheidet, die eine oder andere Funktionalit\u00e4t gar nicht zu implementieren. Oder, wie die Realit\u00e4t oft zeigt, die Hersteller gar nicht ausreichende Kapazit\u00e4ten haben, um viele wichtige Funktionalit\u00e4ten in absehbarer Zeit zu bauen. Dann muss der Kunde damit leben, dass aus einer Basis-Softwareandwendung nie die tolle voll ausgebaute Softwareanwendung wird, die sich der Kunde eigentlich w\u00fcnschen w\u00fcrde.<\/p>\n\n\n\n<p>Die Ursache dieses Problems liegt oft im Ansatz des &#8222;Minimal Viable Product&#8220; selbst. Damit es zu Beginn schnell geht, werden oft kleine agile Entwicklungsteams eingesetzt und viele grundlegende Funktionsbausteine der Software erst mal noch gar nicht implementiert. Sobald dann aber viel mehr Funktionen ben\u00f6tigt werden, k\u00f6nnen die kleinen Entwicklungsteams den manchmal exponentiellen Arbeitsaufwand nicht mehr bew\u00e4ltigen. Die Entwickler sind \u00fcberlastet. Und wenn dann die Entwicklungsmanschaft personell aufgestockt wird, zieht das unweigerlich mehr Organisation und Management nach sich, was die durchschnittliche Entwicklungsgeschwindigkeit nicht unbedingt im gleichen Ma\u00dfe steigert.<\/p>\n\n\n\n<p>Ein selten diskutierter, aber ebenfalls wichtiger Aspekt ist die nachtr\u00e4gliche Erg\u00e4nzung von Funktionalit\u00e4ten in der Software. Oft ist das gar nicht so einfach und schnell m\u00f6glich, da die grunds\u00e4tzliche Architektur daf\u00fcr gar nicht ausgelegt ist. Und der Umbau der Architektur, um neue Funktionalt\u00e4ten optimal zu unterst\u00fctzen, scheitert vielleicht auch daran, dass personelle Ressourcen daf\u00fcr nicht bereit gestellt werden k\u00f6nnen oder dass Entwickler nicht immer bereit sind umzudenken und bereits vorhandene Softwarearchitekturen nochmal komplett neu zu strukturieren. Die langfristigen Folgen von mangelndem &#8222;Refactoring&#8220; sind oft zu beobachten: schlecht implementierte Funktionalit\u00e4ten oder aus Architekturgr\u00fcnden \u00fcberhaupt nicht realisierbare Funktionalit\u00e4ten, h\u00f6here Anzahl an Fehler, l\u00e4ngere Implementierungs- und Fehlerbehebungszeiten. Manche Software endet dann als der viel zitierte &#8222;Spagetti-Code&#8220;. Das Gegenteil von Qualit\u00e4t!<\/p>\n\n\n\n<p>Zur Vermeidung dieser Situation ist man bei <strong>Unity Software<\/strong> einen anderen Weg gegangen. Es ging nie darum ein Produkt so schnell wie m\u00f6glich auf den Markt zu bringen. Von Anfang an war die Qualit\u00e4t und ein gro\u00dfer Funktionsumfang verankert in einer idealen Softwarearchitektur das oberste Ziel. &#8222;Refactorings&#8220; fanden und finden zu jedem Zeitpunkt statt. Wenn neue Funktionalit\u00e4ten durch kreative Konzepte in die Softwareandwendung eingebaut werden k\u00f6nnen, ist es egal ob zus\u00e4tzlicher Aufwand f\u00fcr den Umbau von grundlegenden Funktionen entsteht. Die Softwarearchiektur kann zu jeder Zeit adaptiert werden, durch alle Softwareschichten hindurch.<\/p>\n\n\n\n<p>Und der Funktionsumfang bei den \u00fcblichen Grundfunktionen einer Anwendung ist heutzutage enorm. Egal ob beim Thema Loginmethoden, Sicherheitsimplementierungen, Einbindung von Dokumentarchiv, Bereitstellung von Webservice-Schnittstellen, Import- und Export von Daten, Hochverf\u00fcgbarkeit der Anwendung, flexible Konfigurationsm\u00f6glichkeiten, Einbindung von lokalen Ger\u00e4ten (Drucker und Scanner), viele Gesch\u00e4ftsfunktionalit\u00e4ten usw. Bei <strong>Unity Software<\/strong> wurden die Hausaufgaben gemacht. Nachtr\u00e4gliche W\u00fcnsche f\u00fcr die eine oder andere Funktionalit\u00e4t sollen beim Kunden gar nicht erst aufkommen m\u00fcssen. Ein umfangreicher Funktionsumfang soll von Anfang an bereitstehen und dem Kunden Zeit und Kosten sparen, weil er sich darum keine Sorgen mehr machen muss.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn heutzutage eine neues Produkt auf den Markt gebracht werden soll, muss es meist sehr schnell gehen. Egal ob es sich um einen neuen Fernseher, Smartphone oder auch um Software geht. Bei Softwareanwendungen gibt es auch den sch\u00f6nen Begriff &#8222;Minimal Viable Product&#8220; (MVP).<\/p>\n","protected":false},"author":1,"featured_media":633,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-543","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-feature-artikel"],"_links":{"self":[{"href":"https:\/\/unity-software.de\/index.php?rest_route=\/wp\/v2\/posts\/543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unity-software.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unity-software.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unity-software.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unity-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=543"}],"version-history":[{"count":8,"href":"https:\/\/unity-software.de\/index.php?rest_route=\/wp\/v2\/posts\/543\/revisions"}],"predecessor-version":[{"id":640,"href":"https:\/\/unity-software.de\/index.php?rest_route=\/wp\/v2\/posts\/543\/revisions\/640"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unity-software.de\/index.php?rest_route=\/wp\/v2\/media\/633"}],"wp:attachment":[{"href":"https:\/\/unity-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unity-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unity-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}