# Systems Modeling Language

Systems Modeling Language - SysML en abrégé - est un langage de modélisation spécifique au domaine de l'ingénierie système. Il permet la spécification, l'analyse, la conception, la vérification et la validation de nombreux systèmes et systèmes-de-systèmes. À l'origine, SysML a été développé dans le cadre d'un projet de spécification open source, et inclut une licence open source pour sa distribution et son utilisation. SysML se définit comme une extension d'un sous-ensemble d'UML (Unified Modeling Language) via l'utilisation du mécanisme de profil UML.

## Apports de SysML par rapport à UML

SysML, spécialisé dans la modélisation de systèmes, offre aux ingénieurs systèmes plusieurs améliorations notables par rapport à UML, qui est plus centré sur le logiciel :
* la sémantique de SysML est plus riche et flexible ; SysML impose moins de restrictions liées à la vision d'UML centrée sur le logiciel, et ajoute deux nouveaux types de diagrammes: Le diagramme des exigences (requirements) peut être utilisé pour la gestion des exigences alors que le diagramme paramétrique peut être utilisé pour l'analyse des performances et l'analyse quantitative. Grâce à ces améliorations, SysML est capable de modéliser une large gamme de systèmes, incluant tant du matériel, que du logiciel, de l'information, des processus, du personnel, ou des équipements (au sens large) ;
* SysML est un langage plus réduit qu'UML, ce qui facilite son apprentissage et son utilisation. SysML supprime beaucoup de concepts d'UML trop liés à sa vision centrée sur le logiciel. L'ensemble du langage SysML est plus petit, tant en nombre de types de diagrammes qu'en nombre de concepts totaux ;
* SysML gère mieux les notations tabulaires. Il fournit des tableaux d'allocations flexibles qui supportent l'allocation des exigences (requirements), l'allocation fonctionnelle, et l'allocation structurelle, ce qui facilite l'automatisation de la vérification et de la validation ;
* les concepts propres à SysML étendent les possibilités d'UML et sont architecturalement alignées avec le standard IEEE-Std-1471-2000 (IEEE Recommended Practice for Architectural Description of Software Intensive Systems).
SysML réutilise sept des treize diagrammes d'UML 2 ; il ajoute deux diagrammes spécifiques plus les tableaux d'allocations. Les changements sont :
* ajoutés : le diagramme des exigences et le diagramme paramétrique, les tableaux d'allocations (dérivés des autres diagrammes SysML) ;
* adaptés : le diagramme de définition de bloc (depuis le diagramme de classes), le diagramme de blocs internes (depuis le diagramme de structure composite) ;
* conservés : le diagramme d'activité, le diagramme des paquetages, le diagramme de séquence, le diagramme d'état et le diagramme des cas d'utilisation ;
* supprimés : le diagramme de composants, le diagramme de communication, le diagramme de déploiement, le diagramme global d'interaction, le diagramme de temps et le diagramme d'objets (l'impossibilité de définir des instances de bloc est fréquemment cité comme un défaut de conception de SysML).

## Exemple: la modélisation d'un système automobile

Les avantages de SysML sur UML pour l'ingénierie système deviennent évidents en utilisant un exemple concret : la modélisation d'un système automobile.
Avec SysML, il est possible d'utiliser les diagrammes des exigences pour capturer efficacement les besoins fonctionnels, de performances et d'interface, alors qu'UML se limite à offrir des diagrammes de cas d'utilisation pour définir les exigences de haut niveau.
Avec SysML, il est possible d'utiliser des diagrammes paramétriques pour définir précisément la performance et les contraintes mécaniques telles que l'accélération maximum, la capacité en air climatisé, et l'ingénierie acoustique/la gestion du bruit dans l'habitacle. UML ne fournit aucun mécanisme aussi direct pour capturer les informations essentielles relatives à la performance et à la mécanique.
Pour le reste du système automobile, l'extension SysML permet d'utiliser des versions étendues des diagrammes d'activité et des diagrammes d'états d'UML pour spécifier (par exemple) la logique de contrôle du logiciel embarqué dans l'ordinateur de bord de l'automobile. Et d'autres diagrammes structurels et comportementaux de SysML peuvent aussi être utilisés pour modéliser les usines qui construisent ces automobiles.

## Historique

L'initiative SysML est issue d'une décision de janvier 2001 du groupe de travail sur la modélisation des systèmes pilotés par les modèles de l'International Council on Systems Engineering (INCOSE), afin de modifier UML pour les applications d'ingénierie système. À la suite de cette décision, l'INCOSE et l'Object Management Group (OMG), qui maintient la spécification UML, ont créé conjointement un groupe d'intérêt spécifique dans le domaine de l'ingénierie système (OMG Systems Engineering Domain Special Interest Group ou bien OMG SE DSIG)) en juillet 2001. Le SE DSIG, avec le soutien d'INCOSE et du groupe de travail ISO AP 233, a développé les spécifications du langage de modélisation, qui fut repris ensuite par l'OMG en tant que UML for Systems Engineering Request for Proposal (UML for SE RFP ; document OMG ad/03-03-41) en mars 2003.
En 2003, Cris Kobryn et Sanford Friedenthal organisèrent et dirigèrent conjointement les « Partenaires SysML » (SysML Partners) au sein d'une association informelle des acteurs majeurs de l'industrie et des vendeurs d'outils, qui initièrent un projet open source de spécification pour développer SysML en réponse au RFP UML pour l'ingénierie des systèmes. Les Partenaires SysML distribuèrent leur premier brouillon de la spécification open source SysML en 2004, et soumirent SysML 1.0a à l'OMG qui l'adopta en novembre 2005.

### OMG SysML

Après de nombreuses propositions concurrentes de spécifications de SysML, une proposition « fusionnée » fut proposée à l'OMG en avril 2006. Cette proposition fut mise au vote et adoptée par l'OMG en juillet 2006 sous le nom OMG SysML, nom adopté par l'OMG pour différencier cette spécification des spécifications open source d'origine. La spécification OMG SysML actuelle est la version 1.6, mise à disposition en décembre 2019. C'est une « Formal Specification » (telle que le définit l'OMG).

### SysML v2

Pour améliorer SysML et accroitre son adoption, le 8 décembre 2017, l'OMG a émis un appel à proposition (RFP) pour une version 2 du standard.
Les principales améliorations visées concernent:
* La précision et l'expressivité du langage.
* La cohérence et l'intégration des concepts.
* L'interopérabilité avec les autres modèles et outils.
* L'extensibilité pour supporter des applications spécifiques à certains domaines.
* La simplicité et facilité d'utilisation par les producteurs et les consommateurs de modèles.
En juin 2023, l'OMG a adopté trois premières spécifications en version beta :
* Kernel Modeling Language (KerML), version 1.0.
* OMG Systems Modeling Language (SysML), version 2.0.
* Systems Modeling Application Programming Interface (API) and Services, version 1.0.
Une des nouveautés par rapport à la première version est l'apparition d'une notation textuelle permettant à la fois, de décrire le modèle d'un système dans un fichier lisible par des humains (à la différence du format XMI), et d'échanger ce modèle entre différents outils.
En phase de révision, ces spécifications devraient être adoptées en tant que spécifications formelles dans le courant de l'année 2024.

## Outils

Plusieurs éditeurs d'outils de modélisation supportent SysML, totalement ou partiellement. Le site officiel de la communauté propose une revue de ces outils.
Une première liste d'outils supportant déjà SysML v2 est disponible sur le site MBSE4U.

### Échange de modèles

En tant que profil UML 2, les modèles SysML peuvent être échangés en utilisant la dernière version d'XML Metadata Interchange (XMI). De plus, SysML est compatible avec le travail actuel de l'ISO 10303 (aussi connu sous le nom de STEP, le « Standard for the Exchange of Product model data »).