Blocs, ports et flux : décrire une architecture en SysML

La structure est la partie de SysML que l'on rencontre en premier, et celle où se jouent les interfaces entre équipes. Blocs, parties, ports, connecteurs et flux forment une grammaire précise : bien la maîtriser évite la plupart des modèles confus. Nous la parcourons ici à partir d'un exemple simple, un vélo à assistance électrique.
Le bloc, unité de base de la structure
En SysML v1, presque tout ce qui a une existence dans le système est un bloc : un composant matériel, un logiciel, un sous-système, un opérateur humain, voire un élément de l'environnement. Un bloc est un type : il décrit ce qu'ont en commun toutes les batteries d'un certain modèle, pas une batterie particulière.
Un bloc possède des propriétés de plusieurs natures :
- Les propriétés de parties : les éléments qui le composent (le vélo a un cadre, deux roues, une batterie, un moteur, un contrôleur).
- Les propriétés de référence : des éléments qu'il utilise sans les posséder (le vélo fait référence à la borne de recharge, qui ne lui appartient pas).
- Les propriétés de valeur : des grandeurs, typées par des types de valeurs avec leurs unités (une masse en kilogrammes, une capacité en wattheures).
- Les ports : les points d'interaction par lesquels le bloc échange avec l'extérieur.
Les comportements (activités, machines à états) et les contraintes peuvent aussi être rattachés à un bloc.
Le bdd : définir les types et leur décomposition
Le diagramme de définition de blocs montre les blocs et leurs relations de type. La composition, représentée par un losange plein, exprime qu'un bloc se compose d'autres : le vélo se compose d'un moteur, d'une batterie et d'un contrôleur. La généralisation, représentée par une flèche à tête triangulaire, exprime qu'un bloc est une sorte d'un autre : une batterie lithium-ion est une sorte de batterie. La multiplicité indique combien d'exemplaires sont présents : deux roues, une batterie, de zéro à un porte-bagages.
Le bdd est le bon endroit pour fixer l'arborescence du produit et les familles de composants. Il ne dit pas comment les parties sont reliées entre elles : c'est le rôle du diagramme suivant. Les deux sont présentés parmi les neuf diagrammes de SysML v1.
L'ibd : relier les parties
Le diagramme de blocs internes montre l'intérieur d'un bloc : ses parties, vues comme des rôles dans un contexte, leurs ports et les connecteurs qui les relient. Le schéma ci-dessous en donne une version simplifiée pour notre vélo.
Exemple simplifié : les carrés sur le bord des parties sont des ports ; les traits sont des connecteurs ; les flèches indiquent le sens des flux d'items.
Cette vue répond à des questions concrètes : quelle partie fournit l'énergie au moteur ? Par où passe la mesure de couple ? Qu'est-ce qui sort du vélo vers la roue ? C'est, en une page, une spécification d'interfaces de premier niveau.
Les ports : où se font les échanges
Un port est un point d'interaction sur la frontière d'un bloc. SysML v1 en a connu plusieurs formes. Les « ports de flux » des premières versions ont été dépréciés avec SysML 1.3, qui a introduit deux sortes de ports :
- Le port proxy
- Il n'a pas de comportement propre : il expose à l'extérieur des caractéristiques de son bloc ou de ses parties internes. C'est le choix le plus courant, par exemple pour un connecteur électrique qui ne fait que transmettre.
- Le port complet
- Il se comporte comme une partie à part entière, avec ses propres caractéristiques et éventuellement son comportement, placée sur la frontière du bloc. Il sert à modéliser un élément physique d'interface qui transforme ce qu'il reçoit, comme un filtre ou un adaptateur.
Un port proxy est typé par un bloc d'interface, qui décrit ce qui peut passer par le port : des propriétés de flux (avec leur direction : entrée, sortie, entrée-sortie), des opérations, des signaux. Deux ports connectés doivent avoir des types compatibles, ce que les outils peuvent vérifier. Un port « conjugué » inverse les directions de son type, ce qui permet d'utiliser le même bloc d'interface des deux côtés d'une connexion.
Les flux d'items
Sur un connecteur, on peut indiquer un flux d'item : ce qui circule effectivement, dans quel sens, et de quel type. Les items peuvent être de la matière (carburant, air, eau), de l'énergie (courant électrique, couple mécanique, chaleur) ou de l'information (une mesure, une commande, un message). Distinguer ces natures est important : une interface « données » et une interface « puissance » n'ont pas les mêmes contraintes de conception ni les mêmes risques.
Valeurs, unités et grandeurs
Les propriétés de valeur sont typées par des types de valeurs, qui peuvent porter une unité et une grandeur physique. SysML s'appuie pour cela sur une bibliothèque de grandeurs et d'unités (dans SysML v1, le modèle QUDV, puis des bibliothèques fondées sur le système international). Typer proprement une masse en kilogrammes ou une puissance en watts n'est pas un détail : c'est ce qui permet ensuite d'écrire des contraintes paramétriques cohérentes et de détecter des erreurs d'unités.
La même chose en SysML v2
SysML v2 conserve ces concepts en les régularisant. Le bloc devient une définition de partie (part def), la propriété de partie devient un usage de partie (part). Les ports sont définis par port def, avec des caractéristiques orientées (in, out, inout). Les connexions entre ports peuvent être typées par des définitions d'interface (interface def), et les flux se déclarent explicitement. Voici le même vélo, très simplifié :
port def PortEnergie {
out attribute puissance : Real;
}
part def Velo {
part batterie : Batterie {
port sortie : PortEnergie;
}
part ctrl : Controleur {
port entree : ~PortEnergie;
}
connect batterie.sortie to ctrl.entree;
}
Le tilde (~) désigne le port conjugué, comme en v1. Ce passage d'une notation graphique à une notation textuelle équivalente est détaillé dans notre article sur SysML v2.
Bonnes pratiques
- Séparer les types (dans des bibliothèques, sur des bdd) des usages (dans des ibd de contexte).
- Définir les blocs d'interface avant de multiplier les connecteurs : c'est là que se jouent les accords entre équipes.
- Typer les flux et les valeurs avec des unités, dès le début.
- Limiter chaque ibd à un niveau de décomposition : un diagramme qui mélange sous-systèmes et composants élémentaires devient illisible.
- Nommer les ports par leur fonction (« alimentation », « bus de données ») plutôt que par leur réalisation (« connecteur J12 »), sauf dans les vues physiques détaillées.
Sources
- Object Management Group, OMG Systems Modeling Language (SysML) 1.7, chapitres « Blocks » et « Ports and Flows », omg.org.
- Object Management Group, OMG SysML 2.0, septembre 2025, chapitres sur les parties, ports, interfaces et flux.
- Bureau international des poids et mesures, Le Système international d'unités, 9e édition, 2019.
SysML & modélisationLes neuf diagrammes de SysML
Exigences, blocs, activités, états, séquences… à quoi sert chaque diagramme, et par lesquels commencer.
SysML & modélisationSysML v2 : ce qui change
KerML, notation textuelle, API, définitions et usages : la rupture avec SysML v1, et comment s'y préparer.
SysML & modélisationSysML, expliqué simplement
Origine, versions, ce que le langage décrit et ce qu'il ne fait pas : les bases pour bien démarrer.