Komplexität von Systemen und Methoden des "Kampfes" damit

    Auf die eine oder andere Weise entwerfen und implementieren wir alle Systeme. Ob Softwaresysteme, Infrastruktur oder Plattformlösungen. Dabei werden wir ständig mit dem Konzept eines „komplexen Systems“ konfrontiert. Als Teil dieses Artikels möchte ich meine Vision der Komplexität von Systemen und des „Kampfes“ damit teilen.


    Beginnen wir mit der Definition des Systems. Mir gefällt die Definition in System Architecture . Strategie und Produktentwicklung für komplexe Systeme . Die Übersetzung klingt ungefähr so:


    Ein System ist eine Sammlung von Komponenten und deren Beziehungen. Die Funktionalität des gesamten Systems ist größer als die Summe der Funktionalitäten seiner einzelnen Komponenten.

    Dies ist eine sehr wichtige Definition. Es wird empfohlen, dass das System "Utility" generiert. Wenn das System im Vergleich zu den Komponenten, aus denen es besteht, keine Steigerung des "Nutzens" bietet, ist ein solches System wahrscheinlich nicht sehr notwendig.


    Die nächste Frage, die Sie sich stellen können, ist, was ein "komplexes System" ist. Sie können viel darüber reden, aber meiner Meinung nach ist es schwierig, ein System zu nennen, das schwer zu bewerten ist, mit dem man schwer arbeiten kann, das schwer zu verstehen ist und das schwierig ist, alle Interaktionen zu berücksichtigen, die in diesem System auftreten.


    Und für uns Ingenieure ist es wichtig, einen Mechanismus zu haben, um diese Komplexität zu messen. Als Basis für diesen Mechanismus schlagen die Jungs vom MIT vor, die bekannte "magische Zahl sieben plus minus zwei" zu verwenden. Es gibt eine Originalstudie zu diesem Thema sowie Artikel zu den Präsentationen von Habré und TED. Kurz gesagt, die Idee all dieser Studien ist, dass das "Arbeitsgedächtnis" einer Person gleichzeitig eine begrenzte Anzahl verschiedener Objekte halten und damit arbeiten kann. Hier ist das Konzept der "verschiedenen" Objekte sehr wichtig, da das Gehirn mit der Komplexität kämpft, indem es Objekte gruppiert. Beispielsweise können Verbindungen zwischen Objekten der gleichen Art oder des gleichen Typs als eine Verbindung berücksichtigt werden. Genauer gesagt: Sie müssen sich kein System aus Haufen gemischter Bälle in verschiedenen Farben vorstellen. Gruppieren Sie sie einfach in Ihrem Kopf und sagen Sie, dass es zum Beispiel fünf rote Kugeln gibt, sieben gelbe und drei blaue. Dies vereinfacht die Arbeit mit dem System und reduziert die Anzahl der Objekte von fünfzehn auf drei. Daher sprechen wir im Zusammenhang mit der Bewertung der Komplexität speziell über verschiedene atomare Objekte, die nicht gruppiert werden können.


    Letztendlich gibt es unterschiedliche Schätzungen der Arbeitsspeicherkapazität. Jemand spricht von vier Objekten, jemand - ungefähr fünf, jemand - ungefähr sieben. In seinen Argumenten, werde ich zu dem klassischen Ansatz stecken - „sieben plus oder minus zwei“ .


    Basierend auf diesen Schätzungen können wir sagen, dass wenn es schwierig wird, mit einem System zu arbeiten und seine Komponenten und Kommunikationen im Speicher zu halten, es anscheinend die gleiche Kapazitätsgrenze von "sieben plus minus zwei" überschreitet. Dies bedeutet wiederum, dass diese „magische Zahl Sieben“ als grundlegende Schätzung der Komplexität des Systems verwendet werden kann. Ich denke, dass das Folgende, bislang eine vorläufige Definition, das Recht auf Leben hat:


    Ein komplexes System ist ein System, das aus 7 + -2 Atomkomponenten und ihren Bindungen in verschiedenen Verhältnissen besteht.

    Klassische Möglichkeiten, mit Komplexität umzugehen


    Lassen Sie uns nun kurz die klassischen Methoden oder Werkzeuge für den Umgang mit Komplexität in der Entwurfsphase erläutern. Es gibt nur wenige davon: Abstraktion, Dekomposition, Hierarchie und hierarchische Dekomposition.


    • Abstraktion - eine Methode, mit der Sie die Hauptfunktion eines Systems oder Subsystems hervorheben und den Inhalt ausblenden können
    • Zerlegung - eine Möglichkeit, das System in kleinere Blöcke oder Komponenten zu unterteilen
    • Hierarchie ist eine Möglichkeit, ein System in Ebenen zu unterteilen, wobei Ebenen einen bestimmten Platz in der Struktur haben und übereinander liegen
    • Hierarchische Zerlegung - Eine Methode, die Hierarchie und Zerlegung kombiniert

    Alle diese Tools sind letztendlich darauf ausgelegt, die einzelnen Subsysteme unseres Systems so zu vereinfachen, dass sie bei der Arbeit mit jeder einzelnen Einheit "in den Kopf passen".


    Worum geht es?


    Was geben uns all diese Dinge? Einfach ausgedrückt, besteht die Idee darin, mit verschiedenen Methoden einen unstrukturierten Satz von Systemkomponenten in eine Art strukturelle Form umzuwandeln. Wenn wir uns außerdem an die magische Sieben erinnern, können wir sagen, dass jeder Block in der Zerlegung nicht mehr als sieben plus / minus zwei Elemente enthalten sollte. Andernfalls ist es bei eingehender Prüfung eines solchen Blocks schwierig, ihn zu kontrollieren.


    Wenn wir andererseits ein System mit einer großen Anzahl von Blöcken haben, die in hierarchische Ebenen unterteilt sind, sollte die Anzahl solcher Ebenen vorzugsweise sieben (plus / minus zwei) nicht überschreiten. Zur Veranschaulichung möchte ich eine Folie aus Fundamentals of Systems Engineering geben . Wie aus der Folie ersichtlich, nimmt die Komplexität des Systems mit der Anzahl der Zersetzungsstufen zu.


    KomplexitätBerechnungen


    Somit kann der korrekte Prozess des Systemdesigns ungefähr durch die folgende These beschrieben werden:


    Bauen Sie keine komplexen Systeme. Bauen Sie Systeme mit der erforderlichen Komplexität auf.

    Literatur



    Jetzt auch beliebt: