{"id":19679,"date":"2023-07-17T07:41:27","date_gmt":"2023-07-17T07:41:27","guid":{"rendered":"https:\/\/devologyx.io\/komplexitaet-bringt-softwareentwickler-um\/"},"modified":"2024-10-31T17:43:43","modified_gmt":"2024-10-31T17:43:43","slug":"komplexitaet-bringt-softwareentwickler-um","status":"publish","type":"post","link":"https:\/\/devologyx.io\/de\/komplexitaet-bringt-softwareentwickler-um\/","title":{"rendered":"KOMPLEXIT\u00c4T BRINGT SOFTWAREENTWICKLER UM"},"content":{"rendered":"\n<p>Die zunehmende Komplexit\u00e4t moderner Softwarestrukturen bringt Softwareentwickler immer mehr in Bedr\u00e4ngnis. Die Komplexit\u00e4t von Software macht die Arbeit von Entwicklern anstrengend, da die Planung, Erstellung und das Testen von Produkten immer schwieriger wird. Die Einf\u00fchrung neuer Sicherheitsanforderungen f\u00fchrt zu Frustration bei Administratoren und Benutzern. In den meisten F\u00e4llen sind kompliziert und komplex nicht voneinander zu unterscheiden, aber nicht in diesem Fall. Komplexit\u00e4t deutet darauf hin, dass etwas schwer zu verstehen ist, aber mit der Zeit und bei entsprechender Anstrengung kann es schlie\u00dflich erkannt werden. Auf der anderen Seite steht Komplexit\u00e4t f\u00fcr die Verbindung zwischen mehreren Entit\u00e4ten. Wenn die Anzahl der Entit\u00e4ten zunimmt, nehmen auch die Verbindungen enorm zu und erreichen einen Punkt, an dem es unpraktisch ist, sie zu kennen und zu verstehen.      <\/p>\n\n<p>Dementsprechend erh\u00f6ht ein \u00fcberm\u00e4\u00dfiges Ma\u00df an Komplexit\u00e4t in der Software das Risiko, versehentlich die Verbindungen zu blockieren. Etwas, das die Wahrscheinlichkeit der Einf\u00fchrung von Fehlern bei der Implementierung von \u00c4nderungen erh\u00f6ht, kann die Verbesserung der Software praktisch unm\u00f6glich machen. <\/p>\n\n<figure class=\"wp-block-image is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/IHCqG2RXQ5p5x7rYvd-tIvV7HIdZ9low6o8qgQhslOSnODJJcxibGqctFAk9yJ3k3lp573MEKFrLHEbvEb0bc2MddRdMjMAIj2blvZ06olkBV3T0bY5cGOccUm3EFYKYRkHlW6j0nXsx6Vtv4FlGlg\" alt=\"\" width=\"342\" height=\"227\"\/><\/figure>\n\n<p><strong>Software-Komplexit\u00e4t<\/strong><\/p>\n\n<p>Die Komplexit\u00e4t von Software bezeichnet die Schwierigkeit, Software zu warten, zu analysieren, zu testen, zu modifizieren und zu entwerfen. Je h\u00f6her die Komplexit\u00e4t, desto anspruchsvoller ist es, die Software zu lesen und zu warten, und desto gr\u00f6\u00dfer ist die Wahrscheinlichkeit, dass Fehler und Defekte auftreten. Softwarekomplexit\u00e4t ist eine Technik, die eine bestimmte Gruppe von Code-Merkmalen ausdr\u00fcckt. Diese Merkmale konzentrieren sich darauf, wie Ihr Code mit anderen Teilen des Codes zusammenh\u00e4ngt.   <\/p>\n\n<p>Die Softwarekomplexit\u00e4t gilt als ein wesentlicher Bestimmungsfaktor f\u00fcr die Kosten der Softwarewartung. Eine h\u00f6here Softwarekomplexit\u00e4t bedeutet, dass Wartungs- und Verbesserungsprojekte l\u00e4nger dauern, viel mehr kosten und zu mehr Fehlern f\u00fchren. Die Softwarekomplexit\u00e4t eines bestimmten Systems ist eine der wichtigsten langfristigen Auswirkungen der bei der urspr\u00fcnglichen Entwicklung verwendeten Tools und Ans\u00e4tze. So f\u00fchrt beispielsweise der Einsatz neuer CASE-Ausr\u00fcstung zur Entwicklung von schlecht strukturierter Software. Die Folgen dieser schlechten Struktur werden Sie zu sp\u00fcren bekommen, wenn es an der Zeit ist, das System anzupassen.    <\/p>\n\n<p><strong>Arten von Software-Komplexit\u00e4t<\/strong><\/p>\n\n<p>Die Komplexit\u00e4t von Software wird mit der Entwicklung der technischen Industrie immer mehr zu einem Problem. Als Entwickler verbringen Sie h\u00e4ufig viel Zeit mit dem Schreiben, aber noch mehr Zeit verbringen Sie mit der Pflege dieses Codes. Wie oft stellen Sie fest, dass der Code so un\u00fcbersichtlich geworden ist, dass Sie ihn fast nicht mehr verstehen k\u00f6nnen? Um zu verstehen, wie man mit der st\u00e4ndig zunehmenden Komplexit\u00e4t umgehen kann, ist es wichtig, die drei grundlegenden Arten von Softwarekomplexit\u00e4t zu unterscheiden.   <\/p>\n\n<p><strong>Wesentliche Komplexit\u00e4t<\/strong><\/p>\n\n<p>Wesentliche Komplexit\u00e4t findet sich in der Regel in dem Gesch\u00e4ftsfeld, in dem Sie arbeiten. Sie ist mit dem Problem verbunden und kann nicht entfernt werden. Sie haben mit den Regeln der Gesch\u00e4ftspolitik zu tun, die die Gesch\u00e4ftsabl\u00e4ufe in spezifischerer Weise steuern. Wenn Sie sich bem\u00fchen, diese Regeln anzuwenden und ihre Verarbeitung zu automatisieren, sto\u00dfen Sie auf verschiedene Ebenen der Komplexit\u00e4t. Die Tatsache, dass Unternehmen in der Regel \u00e4u\u00dferst undurchdringliche Umgebungen sind, macht das Problem, das Sie zu l\u00f6sen versuchen, von Natur aus komplex. Die wesentliche Komplexit\u00e4t ergibt sich aus den Eigenschaften des zu l\u00f6senden Problems und kann nicht eingegrenzt werden.     <\/p>\n\n<p>Egal, wie sehr Sie sich bem\u00fchen, diese Komplexit\u00e4t l\u00e4sst sich nicht vermindern, denn die Gesch\u00e4ftspolitik, die die Bearbeitung eines Schadensfalls regelt, sieht 15 verschiedene Schritte vor. Daher k\u00f6nnen Sie die Regeln nicht kl\u00e4ren, indem Sie einige Schritte auslassen und die Bearbeitung auf einige wenige grundlegende Schritte reduzieren. Unterm Strich ist die notwendige Komplexit\u00e4t unvermeidlich und in erster Linie der eigentliche Grund, warum Sie als Softwareentwickler t\u00e4tig sind.  <\/p>\n\n<p><strong>Unbeabsichtigte Komplexit\u00e4t<\/strong><\/p>\n\n<p>Diese Komplexit\u00e4t bezieht sich auf die L\u00f6sung eines Problems, die direkt damit zusammenh\u00e4ngt, wie Sie sich entscheiden, es zu l\u00f6sen, und hat weniger mit der Art der Komplikation zu tun. Wenn Sie eine Strategie w\u00e4hlen, um ein Problem zu l\u00f6sen, das mehr Komplexit\u00e4t und Arbeit erfordert, ist das zuf\u00e4llige Komplexit\u00e4t. Es k\u00f6nnte die Wahl Ihrer Softwareentwicklungswerkzeuge sein und das, was Sie bei der Entschl\u00fcsselung des Problems auf den Tisch legen. Diese Komplexit\u00e4t ist der Situation, die Sie l\u00f6sen sollen, nicht inh\u00e4rent, sondern hat sich versehentlich eingeschlichen. Unbeabsichtigte Komplexit\u00e4t \u00e4u\u00dfert sich in schlechtem Design oder Struktur, Code und mangelhaften Softwareentwicklungsverfahren. Die einzige M\u00f6glichkeit, unbeabsichtigte Komplexit\u00e4t zu beseitigen, besteht darin, ihre Quelle zu eliminieren.     <\/p>\n\n<p>Sie k\u00f6nnen eine zuf\u00e4llige Komplexit\u00e4t nicht absichtlich herbeif\u00fchren. Schon der Name sagt alles: &#8222;zuf\u00e4llig&#8220;. Sie tritt manchmal auf, wenn Sie:  <\/p>\n\n<ul class=\"wp-block-list\">\n<li>M\u00f6chten Sie eine neue Sprache oder ein neues Tool verwenden, um ein Projekt zu bew\u00e4ltigen, das nicht geeignet ist?<\/li>\n\n\n\n<li>Sind Sie gezwungen, ein bestimmtes technisches Paket zu verwenden?<\/li>\n\n\n\n<li>Mangel an Wissen \u00fcber die akzeptabelsten Praktiken zur Entschl\u00fcsselung dieses speziellen Problems.<\/li>\n<\/ul>\n\n<p><strong>Ursachen f\u00fcr Komplexit\u00e4t in Software<\/strong><\/p>\n\n<p>Das grundlegende Problem von Software ist die Komplexit\u00e4t. Software ist ein gro\u00df angelegtes System, das aus Hunderten von Mikrodiensten besteht, die sich gegenseitig aufrufen und voneinander abh\u00e4ngen. Viele Aspekte der Software sind m\u00f6glicherweise nicht ganz klar definiert. Hier er\u00f6rtern wir einige der entscheidenden Ursachen, die zu Komplexit\u00e4t in der Softwareentwicklung f\u00fchren, wie unten aufgef\u00fchrt.   <\/p>\n\n<ul class=\"wp-block-list\">\n<li>Die Wahl der falschen Tools. Gelegentlich haben Sie es entweder eilig, loszulegen, oder Sie lieben es einfach, ein bestimmtes Tool zu verwenden, wenn Sie an Code arbeiten. Nehmen wir an, Sie arbeiten an einer vierseitigen Website, die Ruby on Rails oder eine RESTful Web-API erfordert, aber Sie bestehen darauf, die Website mit Objective C zu erstellen. Nicht, dass Objective C effektiv oder gut genug w\u00e4re, aber es wurde einfach f\u00fcr das falsche Problem implementiert. Das kann zu Komplexit\u00e4t in Ihrem Code f\u00fchren.   <\/li>\n\n\n\n<li>Systeme auf Systemen aufbauen &#8211; Systeme werden hierarchisch formuliert. Bankensysteme werden zum Beispiel auf Internet-Software aufgebaut, die auf Telekommunikationssoftware basiert. Telekommunikationssoftware dezentralisiert die Kauf- und Entscheidungsbefugnis intern und extern aufgrund der entscheidenden agilen Rekonfiguration der Cloud. Dies f\u00fchrt auch zu Softwarekomplexit\u00e4t.   <\/li>\n\n\n\n<li>Die Anwendung der falschen Abstraktionen. Von Zeit zu Zeit entdecken Sie Software, die sich auf ein bestimmtes Vokabular bezieht, z.B. Bibliotheksdatens\u00e4tze, aber in einer anderen Sprache geschrieben wurde, z.B. in einem CMSes Posts-Datentyp. Die Abstraktion ist gut, aber sie ist nicht die richtige. Alles wurde durch die Notwendigkeit, die Inkonsistenz zwischen den beiden Konzepten zu manipulieren, noch viel schwieriger.   <\/li>\n<\/ul>\n\n<p><strong>WERKZEUGE ZUR REDUZIERUNG DER KOMPLEXIT\u00c4T DER KODIERUNG  <\/strong><\/p>\n\n<p>Die in einem System enthaltene Funktionalit\u00e4t und die Integration zwischen seinen Teilsystemen beeinflussen offenkundig die Komplexit\u00e4t des Systems. Eine ideale Stabilit\u00e4t zwischen den Funktionen und der Koordination innerhalb eines Systems ist erforderlich, um eine geringere Komplexit\u00e4t zu erreichen. In der realen Welt k\u00f6nnen Sie die Software nicht immer einfach halten. Typischerweise neigen Anwendungsattribute, die einen gesch\u00e4ftlichen Nutzen bieten, dazu, komplex zu sein. Viele Wege konzentrieren sich jedoch darauf, die Komplexit\u00e4t f\u00fcr Ingenieure zu verringern. Neben der Nutzung von Microservice-Architekturen k\u00f6nnen auch andere Ans\u00e4tze genutzt werden, um die Komplexit\u00e4t in Ihrer Anwendung zu minimieren.    <\/p>\n\n<p><strong>Software-unterst\u00fctzte Entwicklung<\/strong><\/p>\n\n<p>Dabei handelt es sich um die F\u00e4higkeit, Tools zu nutzen, die in der Regel durch k\u00fcnstliche Intelligenz und Techniken des maschinellen Lernens unterst\u00fctzt werden, um Sie beim Schreiben von Code zu unterst\u00fctzen, Probleme im Code zu diagnostizieren und die Gesamtkomplexit\u00e4t des Codes zu kontrollieren. Dieser Ansatz erm\u00f6glicht es Ihnen, genaue und schnelle Tests durchzuf\u00fchren, die die Komplexit\u00e4tsrate minimieren, da Bugs leicht zu erkennen sind und den Entwicklungsprozess verk\u00fcrzen. Unternehmen wie GitHub nutzen KI, um Entwicklern zu helfen, zuverl\u00e4ssigeren Code mit weniger Fehlern zu schreiben.  <\/p>\n\n<p><strong>Einrichtung einer internen Plattform<\/strong><\/p>\n\n<p>Die zunehmende Komplexit\u00e4t hat viele Unternehmen dazu veranlasst, ein internes Plattformmodell einzuf\u00fchren. Das interne Plattformteam ist damit betraut, die wichtigsten Tools von Ingenieuren zu bewerten, Vorlagen zu strukturieren und ihren Produktionsprozess zu erleichtern. Das Team konzentriert sich auch auf Funktionen wie Sicherheit, Finanzoperationen und Governance, um die kognitive Belastung der einzelnen Entwickler zu verringern.  <\/p>\n\n<p>Die L\u00f6sung f\u00fcr eine akzeptable interne Entwicklerplattform besteht darin, das Gleichgewicht zwischen Selbstbedienung f\u00fcr Entwickler, die mit der Arbeit beginnen m\u00f6chten, und Abstraktion der kleineren praktischen Aufgaben zu wahren, ohne die Entwickler einzuschr\u00e4nken.<\/p>\n\n<p><strong>METRIKEN ZUR SOFTWAREKOMPLEXIT\u00c4T<\/strong><\/p>\n\n<p>Je h\u00f6her die Komplexit\u00e4t, desto anstrengender ist es, den Code zu pflegen und zu lesen, und desto mehr Fehler und Defekte werden Sie finden. Die Messung der Softwarekomplexit\u00e4t kann Ihnen helfen, das Problem zu verstehen und anzugehen, solange es noch klein ist. Die folgenden Metriken k\u00f6nnen zur Bewertung der Komplexit\u00e4t herangezogen werden.  <\/p>\n\n<p><strong>Zyklomatische Komplexit\u00e4t<\/strong><\/p>\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/I8kgcVcU-sEVB3OQUm6og7V10wHdzum9jhy8nCbzgyLgR4aQVrlsbYBTpZe9XW8PMfxcfUwJIM_3EYfFjxdGliyGAsKtvifFDs4fFTYSywNoZ2I2KsPHSbDZ_1Job3Jd_ZJniXdxpv1j-y7MBkgCDw\" alt=\"\" width=\"340\" height=\"190\"\/><\/figure>\n\n<p>Diese Metrik basiert auf der Graphentheorie und anderen mathematischen Definitionen. Die zyklomatische Komplexit\u00e4t misst die strukturelle Komplexit\u00e4t des Codes. Diese Metrik sch\u00e4tzt die Anzahl der linear unabh\u00e4ngigen Pfade durch ein Programm. Ein linear unabh\u00e4ngiger Ansatz ist eine schicke Umschreibung f\u00fcr einen eindeutigen Pfad, bei dem Sie Schleifen nur einmal z\u00e4hlen. Operationen wie IF, DO und SELECT stellen bedingte Logik dar und machen das Programm schwerer verst\u00e4ndlich. Je mehr solcher Prozeduren im Code vorhanden sind, desto mehr logische Verzweigungen beherbergen sie und desto h\u00f6her ist die zyklomatische Komplexit\u00e4t.     <\/p>\n\n<p>Diese Kennzahl kann mit der folgenden Formel ermittelt werden<\/p>\n\n<p>V(G) = e &#8211; n + 2p<\/p>\n\n<p>Wobei: e = die Anzahl der Kanten im Graphen ist<\/p>\n\n<p>n = Anzahl der Noten im Diagramm<\/p>\n\n<p>p = Anzahl der verbundenen Komponenten<\/p>\n\n<p><strong>Wartungsfreundlichkeits-Index<\/strong><\/p>\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/yIOEhMXqs0P8Z5I4iyOZszH1grqo4JHLYDokMJtVx8HolSrpwUTYbS-ZSYWl6of4uTarACzzVBT1adDH2ZhxIQLZ8rJ72_YP9pvPUpil76k80CSu3lRsgsIYFiX9hwAoHcspfs6Olug5DhrOlZeiJw\" alt=\"\" width=\"414\" height=\"193\"\/><\/figure>\n\n<p>Damit wird ein Indexwert zwischen 0 und 100 berechnet, der die relative Wartungsfreundlichkeit des Codes angibt. Mit anderen Worten, diese Metrik misst, wie wartungsfreundlich Ihr Code ist. Je h\u00f6her der Wert, desto besser ist die Wartbarkeit Ihres Codes. Der Wartbarkeitsindex wird als eine Formel aus SLOC (Source Lines Of Code), zyklomatischer Komplexit\u00e4t und Halstead-Volumen berechnet.   <\/p>\n\n<p><strong>Halstead Metriken<\/strong><\/p>\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/mleZos0KzEK25mwNvIKfjKH97E7xGjiyLmP4qZDUrk-SEjhhjZvJEwJyStwN9R5nfVBR_nGKYqCOTlU0Nk8lMRF1YF6Mr_HEkghil7dXihIssBp7G_7tGTcFqTev2hG7Kcoc7FyT7_GlHh4dwgH4vw\" alt=\"\" width=\"386\" height=\"263\"\/><\/figure>\n\n<p>Die Metrik sch\u00e4tzt, wie viele Sachinformationen im Quellcode vorhanden sind, einschlie\u00dflich der Anzahl der Variablen und wie sie im Quellcode, in den Funktionen und Methoden verwendet werden. Es wird spekuliert, dass ein Programm umso komplexer ist, je mehr unabh\u00e4ngige Elemente im Code vorhanden sind und je mehr von ihnen verwendet werden. Diese Metrik h\u00e4ngt von der Code-Ausf\u00fchrung und ihren Ma\u00dfen ab, die statisch aus den Operatoren und Operanden im Quellcode berechnet werden.  <\/p>\n\n<p>Halsteads Metrik kann mit der folgenden Formel berechnet werden<\/p>\n\n<p>Schwierig = L \/ V<\/p>\n\n<p>Wobei: L = Programm Level<\/p>\n\n<p>V = Programmvolumen<\/p>\n\n<p>Die Formel zur Bestimmung der Programmstufe L lautet:<\/p>\n\n<p>L = (2 + n2*) *log2 (2 + n2*)<\/p>\n\n<p>Dabei gilt: n1 = Anzahl der Operatoren<\/p>\n\n<p>N2 = Anzahl der Operanden<\/p>\n\n<p>Das Programm zur Bestimmung des Programmvolumens V lautet:<\/p>\n\n<p>V = (N1 + N2)* log2 (n1 + n2)<\/p>\n\n<p>Wobei: N1 = Gesamtzahl der Operator-Ereignisse<\/p>\n\n<p>N2 = Gesamtzahl der Operandenvorkommen<\/p>\n\n<p><strong>Objektorientierte Design-Metriken<\/strong><\/p>\n\n<p>Quantitative Metriken f\u00fcr objektorientiertes Design konzentrieren sich normalerweise auf Klassen- und Designmerkmale. Sie erm\u00f6glichen es den Entwicklern, Software in einem fr\u00fchen Stadium der Entwicklung zu bewerten und zu verstehen, wie man die Komplexit\u00e4t minimieren und die Wartbarkeit verbessern kann. <\/p>\n\n<p><strong>AUSWIRKUNGEN DER SOFTWAREKOMPLEXIT\u00c4T<\/strong><\/p>\n\n<p><strong>Auswirkung der Komplexit\u00e4t auf die Fehlerquote.<\/strong><\/p>\n\n<p>Das Ziel, warum wir Entwickler uns \u00fcber die Komplexit\u00e4t aufregen, h\u00e4ngt mit wichtigeren Merkmalen des Softwareentwicklungsprozesses zusammen. Je schwieriger der Code zu verstehen ist, desto wahrscheinlicher ist es, dass Programmierfehler unentdeckt bleiben. Wenn ein Programm schwer zu testen ist, werden Fehler nicht entdeckt, bevor die Software funktioniert.  <\/p>\n\n<p>Sie erwarten hohe Fehlerquoten in Programmen, die eine hohe Entscheidungsdichte aufweisen (mit ihrer gleichm\u00e4\u00dfig verteilten Anzahl von Entscheidungspfaden zum Testen auf Fehler). In solchen Systemen werden wahrscheinlich neue Fehler erzeugt. <\/p>\n\n<p><strong>Auswirkungen der Komplexit\u00e4t auf die Wartungskosten<\/strong><\/p>\n\n<p>Die Komplexit\u00e4t von Software wirkt sich direkt auf die Wartungskosten aus. Je anspruchsvoller ein komplexes Anwendungssystem zu warten ist, desto mehr Kosten entstehen bei der Wartung, die einen Gro\u00dfteil des Entwicklungsprozesses in Anspruch nimmt. Die Softwarewartung wird als ein Produktionsverfahren betrachtet, dessen Inputs Computerressourcen und Arbeit sind und dessen Output ein verbesserter Code ist. Arbeitsstunden sind wesentlich bedeutender als Computerressourcen, und beide lassen sich nur in geringem Ma\u00dfe ersetzen. Das Hauptaugenmerk liegt auf den Arbeitsstunden, die den gr\u00f6\u00dften Teil der Kosten ausmachen.    <\/p>\n\n<p><strong>EIN MITTEL GEGEN DIE KOMPLEXIT\u00c4T IN DER SOFTWAREENTWICKLUNG<\/strong><\/p>\n\n<p>Auch wenn Microservice-Architekturen umfangreichere und komplexere Anwendungen erstellen, entlasten sie die Entwickler von der Arbeit. Microservice-Architekturen erzeugen eine komplexere Anwendung als eine entsprechende Anwendung, die als Monolith aufgebaut ist. Das bedeutet jedoch nicht, dass die Arbeit des Entwicklers komplizierter ist.  <\/p>\n\n<p><strong>Komplexit\u00e4t der Microservice-Architektur.<\/strong><\/p>\n\n<p>Die Microservices-Architektur ist eine DevOps-Methode, die eine dynamischere und agilere Technik f\u00fcr die Ausf\u00fchrung, Entwicklung und Verwaltung von Anwendungen bietet, indem sie mit modularen Komponenten im Gegensatz zu einem monolithischen Aufbau arbeitet.<\/p>\n\n<p>Viele gehen davon aus, dass Microservices alle Probleme mit der Softwarekomplexit\u00e4t l\u00f6sen k\u00f6nnen. Sie k\u00f6nnen jedoch nur f\u00fcnfzig Prozent dieser Probleme allein rehabilitieren. Um die andere H\u00e4lfte zu l\u00f6sen, m\u00fcssen Sie Microservices mit den neuesten DevSecOps-Praktiken kombinieren und Ihr Unternehmen in die ultimative Killermaschine verwandeln.  <\/p>\n\n<p>Microservices erm\u00f6glichen es Unternehmen, t\u00e4glich eine Million Implementierungen durchzuf\u00fchren, das System bis ins Unendliche zu skalieren, die Komplexit\u00e4t der Codebasis zu minimieren und Ressourcen zu sparen. Microservices verlagern die Komplexit\u00e4t von den Diensten auf die Plattform, das Ignorieren des Faktischen f\u00fchrt zu suboptimalen Ergebnissen. Viele Unternehmen haben monolithische Anwendungen entwickelt, nur um dann festzustellen, dass sie zu komplex werden. Als Entwickler, der in einer einzigen Codebasis arbeitet, ist es m\u00fchsam, unabh\u00e4ngig voneinander Funktionen hinzuzuf\u00fcgen und Fehler zu beheben. Dies schr\u00e4nkt in der Regel die Anzahl der Projekte ein, an denen Sie in einer einzigen Anwendung arbeiten k\u00f6nnen.    <\/p>\n\n<p>Microservices machen eine Anwendung weniger komplex, indem sie bestimmte Teile davon entfernen. Wenn Sie die Anwendung in verschiedene Module aufteilen, versuchen Sie, die Komplexit\u00e4t aufzuteilen, um die Anzahl der Entwickler zu minimieren, die an einer einzigen Codebasis arbeiten. Die Aufteilung kann so erfolgen, dass Sie eine organisierte Komplexit\u00e4t entwickeln, die leicht zu verstehen ist.  <\/p>\n\n<p><strong>Das Modell der Softwarekomplexit\u00e4t<\/strong><\/p>\n\n<p>Die Ursachen der Komplexit\u00e4t wurden bereits in der Einleitung dieses Kapitels er\u00f6rtert. Die Komplikation verleiht dem Projekt eine inh\u00e4rente Komplexit\u00e4t, und dann entsteht im Laufe des Designs und der Phase des Softwareentwicklungsprozesses mehr Komplexit\u00e4t. Auf der Grundlage dieses Modells vereint sich die Komplexit\u00e4t mit anderen Faktoren, um die Fehleranf\u00e4lligkeit und den Umfang des Programms zu bestimmen. Die Diskussion \u00fcber das Wesen, die Quellen und die Auswirkungen von Softwarekomplexit\u00e4t sowie ein theoretischer Rahmen f\u00fcr eine grafische Darstellung des Konzepts der Softwarekomplexit\u00e4t wurden ebenfalls bereitgestellt.   <\/p>\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/LsIP2ArglCSM8UdpDBpX2S4CNlz6RYmKmzKSWpzyB21kRzUH4OEh7cO2GqaE3A_pgeObCNG5f-jXYFsIQOiEfOjQyLx7F5pTtWlUnShO66GLjxr75uZ17XmiAvZvdxXJouSPP0qJtier4DgapeARJQ\" alt=\"\" width=\"372\" height=\"405\"\/><\/figure>\n\n<p><strong>SCHLUSSFOLGERUNG<\/strong><\/p>\n\n<p>Viele Unternehmen m\u00fcssen sich mit Softwarekomplexit\u00e4t auseinandersetzen, und die Ans\u00e4tze, die Sie bei der Bew\u00e4ltigung dieser Komplexit\u00e4t anwenden, werden die Zukunft Ihres Unternehmens beeinflussen. Es gibt verschiedene M\u00f6glichkeiten, die Softwarekomplexit\u00e4t zu bew\u00e4ltigen. Ans\u00e4tze wie die Einrichtung einer internen Plattform und die Standardisierung externer Dienste im gesamten Unternehmen k\u00f6nnten gute Strategien sein.  <\/p>\n\n<p>Auch wenn Microservice-Architekturen die Softwarekomplexit\u00e4t erh\u00f6hen, bieten sie den Vorteil, dass sie die kognitive Belastung und die visuelle Komplexit\u00e4t f\u00fcr den einzelnen Entwickler minimieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die zunehmende Komplexit\u00e4t moderner Softwarestrukturen bringt Softwareentwickler immer mehr in Bedr\u00e4ngnis. Die Komplexit\u00e4t von Software macht die Arbeit von Entwicklern anstrengend, da die Planung, Erstellung und das Testen von Produkten immer schwieriger wird. Die Einf\u00fchrung neuer Sicherheitsanforderungen f\u00fchrt zu Frustration bei Administratoren und Benutzern. In den meisten F\u00e4llen sind kompliziert und komplex nicht voneinander zu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":16658,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"_jet_sm_ready_style":"","_jet_sm_style":"","_jet_sm_controls_values":"","_jet_sm_fonts_collection":"","_jet_sm_fonts_links":"","footnotes":""},"categories":[20],"tags":[],"writer":[],"class_list":["post-19679","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/posts\/19679","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/comments?post=19679"}],"version-history":[{"count":1,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/posts\/19679\/revisions"}],"predecessor-version":[{"id":19681,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/posts\/19679\/revisions\/19681"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/media\/16658"}],"wp:attachment":[{"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/media?parent=19679"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/categories?post=19679"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/tags?post=19679"},{"taxonomy":"writer","embeddable":true,"href":"https:\/\/devologyx.io\/de\/wp-json\/wp\/v2\/writer?post=19679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}