SysML, le langage de modélisation OMG basé sur UML et adapté à l’ingénierie système, est actuellement en version 1.3 bêta. Cette version devrait être officielle au mois de Juin.
SysML 1.3 apporte de nombreux changements à la définition des ports, points d’interactions sur les Blocs. Pour rappel, SysML 1.2 intègre les ports standards pour exposer des interfaces, et les ports de flux (flow ports) pour représenter ce qui peut circuler en entrée et/ou en sortie d’un bloc, que ce soit des données, de la matière ou de l’énergie.
Les “flow port” et les “port specifications” de SysML 1.2 ont été abandonnés dans la version 1.3, mais leurs concepts ont été conservés. Les changements apportés dans la version 1.3 portent sur la définition et l’implémentation de ces concepts, qui se résume de manière non-exhaustive par les points suivants :
- Ports complets (full ports)
- permet de représenter une partie intégrante du bloc sur la frontière du bloc principal (main block boundary)
- un port complet est typé par un bloc; il peut ainsi combiner les flux d’éléments en entrée/sortie et l’exécution d’opérations, remplaçant respectivement les flow ports et les ports standards de SysML 1.2
- les interfaces ne sont alors plus exposées sur le port, supprimant l’utilisation de la notation lollipop
- les ports complets peuvent être « conjugés » comme dans les flow ports de SysML 1.2 ayant pour effet d’inverser la direction des éléments ; cela a le même effet sur les opérations i.e. les opérations fournies par le bloc sont alors des opérations requises
- Ports proxy
- sert de proxy aux fonctions du bloc principal ou de ses parties intégrantes
- un port proxy ne porte pas de comportement, ni ne constitue une partie du bloc principal
- les flux d’éléments ou l’exécution d’opérations sur le port proxy sont transmis directement vers le bloc principal ou une partie intégrante
- un port proxy est typé par un bloc d’interface (block interface) pour spécifier les fonctions disponibles (éléments, opérations), alors que les ports complets comme indiqué précédemment sont typés par des blocs
- Ports et flux imbriqués (nested ports & flows) : SysML permet de définir des ports imbriqués ; pour cela le bloc utilisé comme type du port possède lui-même des ports
- Blocs d’association : ces blocs permettent de définir la compatibilité entre ports de blocs différents
En conclusion
SysML 1.3 propose une implémentation et une approche plus complète que la version 1.2 actuelle pour gérer la notion de ports, flux et connecteurs sur les Blocs. Il évite par exemple la duplication de ports si l’on a besoin de définir un port pour transmettre des éléments et fournir des opérations.
Ce changement pourrait avoir un impact non négligeable dans l’organisation du modèle comme l’on ne va plus exposer les interfaces sur un port. Par exemple, il semble que ce sera le bloc, utilisé comme type du full port, qui va réaliser les interfaces du modèle (dans le cas où un référentiel d’interfaces existe). Si un bloc doit appeler des opérations d’un autre bloc, on remplacera donc le lien entre deux interfaces required/provided de SysML 1.2, par le lien entre un full port et son inverse (full port du même type mais conjugué).
La seconde édition du livre “A Practical Guide to SysML” de Sanford Friedenthal (consultant MBSE et membre de l’OMG), Alan Moore, et Rick Steiner est déjà disponible et intègre SysML 1.3 (cf. chapitre 7.6) ; ce livre fournit ainsi des exemples concrets sur l’utilisation de full ports, proxy ports, interface blocks, etc.
Lorsque le langage SysML 1.3 sera officiel, il sera intéressant de voir si les éditeurs d’outils de modélisation SysML tel que Sparx Systems (Enterprise Architect) auront intégrés ces nouveaux principes par une utilisation simple (par exemple pouvoir changer facilement une partie intégrante en ‘full port’ par le choix de la porter sur la frontière du bloc).