Complexité des systèmes et méthodes de «lutte» avec elle

D'une manière ou d'une autre, nous concevons et mettons tous en œuvre des systèmes. Qu'il s'agisse de systèmes logiciels, d'infrastructures ou de solutions de plate-forme. Et dans le cadre de ce travail, nous sommes constamment confrontés au concept de «système complexe». Dans le cadre de ce billet, je souhaite partager ma vision de la complexité des systèmes et de la «lutte» avec eux.


Commençons par définir le système. J'aime la définition donnée dans le livre Architecture système . Stratégie et développement de produits pour les systèmes complexes . La traduction ressemble à ceci:


Un système est un ensemble de composants et leurs relations. La fonctionnalité de l'ensemble du système est supérieure à la somme des fonctionnalités de ses composants individuels.

Il s'agit d'une définition très importante. Il suggère que le système devrait générer une «utilité». Si le système n'offre pas une augmentation de "l'utilité", en comparaison avec les composants qui le composent, alors probablement un tel système n'est pas très nécessaire.


La prochaine question que vous pouvez vous poser est ce qu'est un "système complexe". Vous pouvez en parler beaucoup, mais à mon avis, il est difficile d'appeler un système difficile à évaluer avec votre esprit, difficile à travailler, difficile à comprendre, difficile à garder à l'esprit toutes les interactions qui se produisent dans ce système.


Et ici pour nous, en tant qu'ingénieurs, il est important d'avoir un mécanisme, un moyen de mesurer cette complexité. Comme base pour ce mécanisme, les gars du MIT suggèrent d'utiliser le fameux "nombre magique sept plus deux moins". Il existe une étude originale sur ce sujet, ainsi que des articles sur les présentations Habré et TED . En résumé, l'idée de toutes ces études est que la "mémoire de travail" d'une personne peut simultanément contenir et travailler avec un nombre limité d'objets différents. Ici, le concept d'objets "divers" est très important, car le cerveau se débat avec la complexité en regroupant les objets. Par exemple, les connexions entre des objets du même type ou type peuvent être gardées à l'esprit comme une seule connexion. Ou, plus clairement - vous n'avez pas besoin d'imaginer un système de tas de boules mélangées de différentes couleurs. Groupez-les simplement dans votre tête, dites qu'il y a, disons, cinq boules rouges, sept jaunes et trois bleues. Cela simplifie l'utilisation du système, réduisant le nombre d'objets de quinze à trois. Par conséquent, dans le contexte de l'évaluation de la complexité, nous parlons de différents objets, atomiques, qui ne peuvent pas être groupés.


Au final, il existe différentes estimations de la capacité de la mémoire de travail. Quelqu'un parle de quatre objets, quelqu'un - environ cinq, quelqu'un - environ sept. Dans mon raisonnement, j'adhérerai à l'approche classique - «sept plus moins deux» .


Sur la base de ces estimations, on peut dire que s'il devient difficile de travailler avec un système, de conserver ses composants et ses communications en mémoire, alors, apparemment, il dépasse la même limite de capacité de «sept plus moins deux». Cela signifie à son tour que ce «nombre magique sept» peut être utilisé comme une estimation de base de la complexité du système. Je pense que jusqu'à présent, une définition provisoire a droit à la vie:


Un système complexe est un système composé de 7 + -2 composants atomiques et de leurs liaisons dans divers rapports.

Façons classiques de gérer la complexité


Rappelons maintenant brièvement les moyens ou outils classiques pour gérer la complexité au stade de la conception. Il y en a peu: abstraction, décomposition, hiérarchie et décomposition hiérarchique.


  • Abstraction - une méthode qui vous permet de mettre en évidence la fonction principale d'un système ou d'un sous-système et de masquer le contenu
  • Décomposition - un moyen de diviser le système en blocs ou composants plus petits
  • La hiérarchie est un moyen de diviser le système en niveaux, où les niveaux ont une certaine place dans la structure et sont situés les uns au-dessus des autres
  • Décomposition hiérarchique - une méthode qui combine la hiérarchie et la décomposition

Tous ces outils sont en fin de compte conçus pour simplifier les sous-systèmes individuels de notre système de sorte que lorsque vous travaillez avec chaque unité individuelle, elle "s'insère dans la tête" dans son ensemble.


De quoi s'agit-il


Que nous apportent toutes ces choses? En termes simples, l'idée est, à l'aide de diverses méthodes, de convertir un ensemble non structuré de composants système en une sorte de forme structurelle. De plus, en se souvenant du sept magique, nous pouvons dire que chaque bloc de la décomposition ne doit pas contenir plus de sept plus / moins deux éléments. Sinon, avec un examen détaillé d'un tel bloc, il sera difficile à contrôler.


D'un autre côté, si nous avons un système avec un grand nombre de blocs, divisé en niveaux hiérarchiques, le nombre de ces niveaux, de préférence, ne devrait pas dépasser sept (plus / moins deux). À titre d'illustration, je veux apporter une diapositive de Fundamentals of Systems Engineering . Comme vous pouvez le voir sur la diapositive, la complexité du système augmente avec le nombre de niveaux de décomposition.


complexitéCalculs


Ainsi, le processus correct de conception de système peut être décrit approximativement par la thèse suivante:


Ne construisez pas de systèmes complexes. Construisez des systèmes avec le niveau de complexité nécessaire.

Littérature


Source: https://habr.com/ru/post/fr425807/


All Articles