Partie 1 : Introduction
1. Avant-propos
A good notation has subtlety and suggestiveness which at times makes it almost seem like a live teacher.
— Bertrand Russell
1.1. A qui est destiné ce document?
Les étudiants qui découvrent le langage, mes collègues enseignants qui cherchent un document de cours et d’exercice accessible, et … moi-même (pour organiser mes notes diverses)!
1.2. A qui n’est-il pas destiné?
Si vous appartenez à l’une de ces catégories, ce livre n’est pas pour vous :
1.3. Historique
Ce document est la compilation de plusieurs années d’enseignement de SysML depuis 2007, que ce soit :
-
au Master TI, de l’Université de Pau et des Pays de l’Adour (cours d’introduction avec mon collègue et ami Nicolas Belloir),
-
au Master Recherche SAID, de l’UPS (introduction),
-
au Master ICE de l’Université de Toulouse II - Le Mirail (introduction avec mon collègue et ami Pierre de Saqui Sannes),
-
au Master of Science de Göteborg, Suède (introduction réalisée par Nicolas Belloir),
-
à l’Universitad Autonoma de Guadalajara, au Mexique (40h de formation professionnelle aux employés de Continental),
-
ou plus récemment au Master DL-SI de l’UPS.
Vous trouverez en référence (cf. Bibiliographie) les ouvrages et autres documents utilisés.
Je tiens à remercier mes collègues qui m’ont aidé dans mon entreprise :
-
Nicolas Belloir de l’Université de Pau et des Pays de l’Adour, Laurent Nonne de l’IUT de Blagnac et Karina Aguilar de l’Universitad Autonoma de Guadalajara;
-
mes collègues de SysML-France : Pascal Roques (PRFC), Agusti Canals (C-S) et Loïc Féjoz (RTaW);
-
mon maître d’AsciiDoc : Jean-Michel Inglebert.
1.4. Sur l’auteur
-
Professeur à l’Univesité de Toulouse
-
Co-foundateur de l’association SysML-France
-
Membre du comité éditorial de la revue Software and System Modeling journal
-
Membre du Steering Committee de la conférence ACM/IEEE MODELS
-
Chef du département informatique de l’IUT de Blagnac de 2009 à 2012
-
Co-responsable de l’axe Systèmes Ambiants de l’IRIT
-
Marié, une (merveilleuse) fille
1.5. Comment lire ce document?
1.5.1. Version électronique
Ce document a été réalisé de manière à être lu de préférence dans sa version électronique, ce qui permet de naviguer entre les références et les renvois interactivement, de consulter directement les documents référencés par une URL, etc.
|
Si vous lisez la version papier de ce document, ces liens clickables ne vous servent à rien, et c’est votre punition pour avoir utilisé du papier au lieu du support électronique! |
1.5.2. Conventions typographiques
J’ai utilisé un certain nombre de conventions personnelles pour rendre ce document le plus agréable à lire et le plus utile possible, grâce notamment à la puissance d’AsciiDoc :
-
Des mises en formes particulières concernent les noms de personnalités (e.g., Jean-Michel Inglebert), etc.
-
Les références bibliographiques présentées en fin de document (cf. Bibliographie) sont complétées par le numéro des pages (lien clickable dans la version électronique de ce document) qui renvoie à l’endroit du document où elles sont citées.
-
Tous les flottants (figures, tableaux, définitions, etc.) sont listés à la suite de la table des matière.
-
Les termes anglais (souvent incontournables) sont repérés en italique, non pas pour indiquer qu’il s’agit d’un mot anglais, mais pour indiquer au lecteur que nous employons volontairement ces termes (e.g., Requirements).
1.6. Pourquoi parler de "document"?
1.7. Utilisation et autres mentions légales
N’hésitez pas à m’envoyer vos remarques en tout genre en m'écrivant ici.
2. Méthode pour cet ouvrage
Everything should be made as simple as possible, but not simpler.
Mon approche pédagogique repose sur plusieurs principes bien établis :
- La répétition
-
Par exemple certains diagrammes sont abordés plusieurs fois (comme le diagramme paramétrique). Le lecteur pourra avoir une impression de redite par moment. Sauf erreur de ma part (toujours possible!), c’est volontaire. En général les répétitions vont en niveau de précision, de détails et de complexité croissant.
- L’illustration
-
Dans la mesure du possible, j’essaye de donner des exemples aux principes énoncés.
- Le référencement
-
Les définitions ou autres affirmations sont tirées d’ouvrages de référence généralement citées.
- La "carte de base"
-
J’aime réaliser une "carte"
[voir aussi le concept de Mind Maps.]
qui sert à "placer" les différents concepts abordés. Il me semble que cela permet aux étudiants de raccrocher les nouveaux concepts aux précédents.
A part le chapitre d’UML à SysML, aucune connaissance particulière d’UML n’est nécessaire. Il s’agit d’un partie pris prenant en compte plusieurs points :
3. C’est quoi SysML?
Si vous ne deviez lire qu’un seul chapitre, voilà ce qu’il faudrait retenir…
|
Carte d’identité
|
SysML, c’est :
-
Un ensemble de 9 types de diagrammes :
-
Diagrammes structuraux
-
Diagrammes de définition de blocks (bdd)
-
Diagrammes internes de blocks (ibd)
-
Diagrammes paramétriques (par)
-
Diagrammes de packages (pkg)
-
-
Diagrammes comportementaux
-
Diagrammes de séquence (seq)
-
Diagrammes d’activité (act)
-
Diagrammes de cas d’utilisation (uc)
-
Diagrammes d'états (st)
-
-
Diagramme d’exigence (req)
-
-
Un profil UML, c’est à dire une extension de cette notation
-
Une notation de plus en plus enseignée et connue et qui servira donc de plus en plus de référence à la modélisation des systèmes
SysML, ce n’est pas :
-
Une méthode ou une démarche de développement de système
-
Un outil
-
Un raton laveur (c’est juste pour voir ceux qui suivent)
4. A propos du Bac STI2D
Si vous utilisez cet ouvrage dans le cadre du bac STI2D qui a introduit depuis 2011 la notation SysML au programme, nous donnerons
ici (bientôt) des conseils sur l’utilisation de ce cours
[Je remercie au passage les collègues de Lycée rencontrés dans le cadre de SysML-France pour nos fructueuses discussions à ce sujet.]
.
L’objectif en STI2D n’est pas de former des spécialistes de SysML mais de permettre à tous d’apprendre une notation pour la modélisation de système qui se veut universelle. Il ne faut donc pas viser la complétude ou même demander trop de détails. La logique de la démarche de modélisation et l’importance de la communication devront primer.
A l’heure où nous écrivons ces lignes, il est également prévu de l’enseigner en classe prépa dès 2013.
5. Un exemple fil rouge
L’exemple de système qui sera modélisé tout au long de ce livre en guise d’exemple est l’exemple d’un système de gestion et de supervision de crise. Les détails sont donnés en annexe (cf. Annexes).
Il existe un certain nombre d’autres exemple complets :
-
Le radio-réveil de Pascal Roques [Roques2010]
-
Le distilleur de [FMS]
-
Le pacemaker de [SeeBook2012]
Partie 2 : Ingénierie système
1. Introduction
La matrice qui nous servira de "carte de base" pour placer les activités ou les modèles, sera celle-ci :
Requirements | Structure | Comportement | Transverse | |
---|---|---|---|---|
Organisation |
||||
Analyse |
||||
Conception |
||||
Implémentation |
1.1. Points de vue
Dans un axe horizontal, j’ai différencié quatre grands points de vue :
- Requirements
-
Les exigences et leur prises en compte sont un éléments critique pour le succès du développement du système. Sans explorer l’ensemble des activités d’ingénierie système (ce qui nécessiterait tout un volume du type de [reqs]) nous insisterons beaucoup sur cet aspect qui est souvent à l’origine de l’intérêt de SysML.
- Structure
-
La description de l’architecture et des éléments constitutifs du système, avec les blocs, leurs relations, organisations internes, etc. constituera un point de vue important. C’est souvent la partie de SysML qui pose le moins de problème aux débutants.
- Comportement
-
Le comportement d’un système est du point de vue de l’utilisateur final beaucoup plus important que la structure elle-même. C’est la partie qu’il est la plus à même d’exprimer, de comprendre (vos modèles) et de valider.
- Transverse
-
Un certains nombre de concepts sont transverses aux trois points de vue précédents. Il s’agira principalement de parler de cohérence entre les phases de développement ou entre les points de vue.
1.2. Phase de développement
Dans un axe vertical, j’ai différencié quatre grandes phases du cycle de vie du développement :
- Organisation
-
Une étape indépendante du type de cycle de développement envisagé (en V, agile, etc.) mais qui concerne la mise en place d’un cadre de travail qui permette un développement de qualité (outils, éditeurs, gestionnaire de version, de tâches, etc.)
- Analyse
-
Cette phase vise plutôt à examiner le domaine du problème. Elle se focalise sur les cahiers des charges et les exigences. L’analyse débouche sur un dossier d’analyse qui décrit les grandes lignes (cas d’utilisation, architecture principale) du système.
- Conception
-
Cette phase vise plutôt à examiner le domaine de la solution. Elle débouche sur un dossier de conception qui décrit les détails conceptuels de la solution envisagée (structure détaillée, comportement, etc.)
- Implémentation
-
Cette phase traite des développements finaux (construction ou approvisionnement en matériel, développement de codes, etc.).
2. Différence avec l’ingénierie logicielle
Enseignant en informatique, je me retrouve souvent à enseigner SysML à des informaticiens. D’où ce petit exposé sur mon opinion de la différence entre les deux "mondes".
2.1. Une ingénierie plus ancienne
Que ce soit généralement en terme de cycle de développement ou historiquement, l’Ingénierie Système arrive avant l’Ingénierie Logicielle. Les ingénieurs systèmes ont donc une longue expérience et des pratiques bien ancrées.
2.2. Des systèmes plus complexes
On parle de système complexe lorsque l’on a affaire à :
-
un ensemble d'éléments humains et matériels en relation avec :
-
de nombreux éléments technologiques (Informatique, Hydraulique, Electronique, …)
-
intégrés pour fournir des services (finalité du système) en fonction de leur environnement
-
interagissant entre eux et avec leur environnement
-
On parle aussi de Système de systèmes quand un système :
-
doit gérer les interactions entre ses parties (ou composantes)
-
assure un comportement prévu à l’avance
-
gère les comportements (de l’environnement) inatendus
2.3. Différents types d’analyse
Toute la question que l’Ingénierie Système cherche à résoudre est : comment passer des exigences au système de la façon la plus efficace possible.
Pour cela l’Ingénierie Système est découpée en plusieurs analyses, chacune avec un but bien particulier :
Pour arriver à combler le gap entre le système à développer et ses spécifications.
3. Normes et standards
Il existe un grand nombre de standards en Ingénierie Système . Cette section fera (bientôt) une revue de ces différents standards et organismes et de leur utilisation (IEEE, EIA, ISO, certification, NASA, INCOSE, AFIS, …).
Enfin, citons un rapport de 2010, le Rapport Potier, qui présente l'état des logiciels embarqués et qui sera utiles à ceux qui s’intéressent aux verrous technologiques liés à ce domaine.
L’Ingénierie Système génère beaucoup de documentation. Les processus de certification (par exemple dans l’aéronautique) sont encore basés sur des documents textuels.
4. Des documents aux modèles
Vue la complexité grandissante des systèmes, petit à petit cette ingénierie tente de passer d’une ingénierie centrée documents à une ingénierie centrée modèles. D’où l’importance de se poser la question des notations et langages pour réaliser et communiquer avec ces modèles (cf. [Notation]).
5. Les exigences
L’ingénierie des exigences est d’une importance capitale en Ingénierie Système . Nous renvoyons pour l’instant le lecteur au cours de Master qui précède ce cours.
6. L’architecture du système
Liens avec AADL, …
7. Le comportement du système
Liens avec la V&V
8. Méthodes et démarches
SysML n’est pas une méthode. En effet aucune démarche n’est imposée pour l’utilisation des diagrammes, l’ordre logique dans lesquels il vaut mieux les réaliser, etc. La spécification ne porte que sur la notation elle-même. D’où le pluriel dans le titre de cette section : il existe presque autant de méthodes que d’entreprise développant des systèmes. Nous nous contenterons de donner ici quelques heuristiques (cf. Annexe Considérations méthodologiques pour la présentation de quelques méthodes bien identifiées) :
Un diagramme ne doit pas être considéré comme définitif. Il peut être complété alors que l’on traite un autre aspect de la modélisation (exemple classique : ajout d’un nouveau block lors de la réalisation d’un diagramme de séquence). Quelque soit la démarche adoptée elle doit être itérative et permettre de revenir sur les premières étapes.
Bien intégrer les niveaux d’abstraction dans votre démarche. SysML possède certaines constructions pour formaliser cet aspect (Packages par exemple). Nous matérialisons cet aspect par la partie verticale de la matrice (cf. [Matrice]).
|
Bien intégrer les niveaux d’abstraction dans votre démarche. SysML possède certaines constructions pour formaliser cet aspect (Packages par exemple). Nous matérialisons cet aspect par la partie verticale de la matrice (cf. [Matrice]). |
N’essayez pas de réaliser tous les diagrammes possibles pour votre système. Réalisez uniquement ceux qui sont utiles à votre cas particulier.
Partie 3 : La notation SysML
1. Pourquoi une nouvelle notation
Il existe une notation qui se veut "unifiée" pour les modèles : UML. Néanmoins cette notation est peu adaptée pour l’Ingénierie Système :
-
UML 1.x était complètement inadaptée :
-
Principalement pour les systèmes d’information
-
Peu de liens entre les diagrammes
-
Peu de liens entre les modèles et les exigences
-
-
UML 2.x n’est pas beaucoup mieux si ce n’est :
-
Implication des ingénieurs systèmes pour sa définition
-
Introduction du diagramme de structure composite
-
En conclusion UML est une bonne base :
-
Standard De facto en génie logiciel
-
Fournit beaucoup de concepts utiles pour décrire des systèmes (même complexes)
-
Stable et extensible (grâce notamment au mécanisme de profile)
-
Beaucoup d’outils disponibles
Mais…
-
Manque de certains concepts clés d’Ingénierie Système
-
Vocabulaire beaucoup trop « software » pour être utilisé par les ingénieurs systèmes (concept de classe ou d'héritage par exemple)
-
Trop de diagrammes (13 sortes)
2. Introduction à SysML
2.1. Fiche d’identité
|
Versions de la spécification de SysML
La version 1.0 du langage de modélisation SysML a été adoptée officiellement par l’OMG le 19 septembre 2007. Depuis, trois révisions ont été réalisées : 1.1 en décembre 2008, 1.2 en juin 2010, et 1.3 en juin 2012. |
2.2. Différence avec UML
2.3. Qui est "derrière"?
- Industrie
-
American Systems, BAE Systems, Boeing, Deere & Company, EADS Astrium, Eurostep, Israel Aircraft Industries, Lockheed Martin, Motorola, NIST, Northrop Grumman, oose.de, Raytheon, Thales, …
- Vendeurs d’outils
-
Artisan, EmbeddedPlus, Gentleware, IBM, Mentor Graphics, PivotPoint Technology, Sparx Systems, Vitech, …
- Autres organisations
-
AP-233, INCOSE, Georgia Institute of Technology, AFIS, …
2.4. Organisation des différents diagrammes
2.5. Différence entre modèle et dessin
SysML n’est pas une palette de dessins et d'éléments de base servant à faire des diagrammes. Il existe une représentation graphique des éléments modélisés en SysML. Elle est importante car elle permet de communiquer visuellement sur le système en développement, mais du point de vue du concepteur, c’est le modèle qui importe le plus.
C’est pourquoi nous vous recommandons de ne jamais "dessiner" des diagrammes SysML
[Sauf bien sûr au brouillon ou sur un tableau, notamment quand on travaille en équipe.]
, mais d’utiliser des outils dédiés (cf. section [Outils]).
Pour ceux qui cherchent à étudier un diagramme en particulier voici un plan de cette section (nous utilisons ici le "plan" vu lors de l’introduction de la [Matrice]) :
Requirements, cf. [reqs] | Structure, cf. [archi] | Comportement, cf. [behavior] | Transverse, cf. [transvers] | |
---|---|---|---|---|
Organisation, cf. [orga] |
pkg |
pkg, bdd |
pkg |
|
Analyse, Conception, Implémentation |
req |
bdd, ibd, seq, par |
uc, seq, st, act |
par |
3. Outils SysML
Il existe un certain nombre d’outils permettant de réaliser des modèles SysML. Voici une liste non exhaustive :
Vous trouverez sur Internet des comparatifs et des avis à jour sur les outils.
Ce que je voudrai souligner ici c’est l’importance du modèle comme "dépôt" (je préfère le terme anglais de repository) d'éléments de base en relation les uns avec les autres. C’est toute la différence entre le dessin et le modèle.
|
Attention toutefois à ne pas confondre ce que vous permet (ou pas) de faire l’outil et la notation elle-même. Les fabricants ont parfois pris des libertés ou bien n’ont pas complètement implémenté toutes les subtilités de la notation. |
4. Principes de base
Abordons quelques principes généraux de SysML.
-
Chaque diagramme SysML représente un élément de modélisation
-
Chaque diagramme SysML doit être incluse dans un cadre (Diagram Frame)
-
L’entête du cadre, appelé cartouche, indique les informations sur le diagramme:
-
le type de diagramme (req, act, bdd, ibd, sd, etc.)
-
le type d'élément (package, block, activity, etc.)
-
le nom de l'élément
-
le nom du diagramme ou de la vue
-
Dans l’exemple ci-dessous, le diagramme "Context_Overview" est un Block Definition Diagram (type bdd) qui représente un package, nommé "Context".
5. Organisation
Requirements | Structure | Comportement | Transverse | |
---|---|---|---|---|
Organisation |
||||
Analyse |
||||
Conception |
||||
Implémentation |
5.1. Fondements
On abordera :
-
Le Package Diagram
-
Les différent types de packages
-
Les organisations possibles
-
La notion de Namespaces
-
Les Dependencies
5.2. Le Package Diagram
-
Identique à UML, et classique pour les développeurs (java notamment)
-
Permet d’organiser les modèles en créant un espace de nommage (name space)
|
Espace de nommage
Dans un package, on n’a pas à se soucier des noms des éléments. Même si d’autres utilisent les mêmes noms, il n’y aura pas ambiguité. |
Les modèles peuvent être organisés selon toutes sortes de considération (cf. [organisation]). Le mécanisme qui permet de les organiser est le package (paquetage).
-
hiérarchie "système" (e.g., entreprise, système, composant)
-
types de diagrammes (e.g., besoins, structure, comportements)
-
par points de vue
-
etc.
5.3. Les différent types de packages
Il existe plusieurs types de package :
- models
-
un package "top-level" dans une hiérarchie de package
- packages
-
le type le plus classique : un ensemble d'éléments de modèles
- model librairies
-
un package prévu pour être réutilisé (importé) par d’autres éléments
- views
-
un package spécial pour représenter les points de vue
5.4. Les organisations possibles
Les modèles peuvent être organisés selon toutes sortes de considération :
-
par hiérarchie "système" (e.g., entreprise, système, composant, …)
-
par types de diagrammes (e.g., besoins, structure, comportements, …)
-
par cycle de vie (e.g., analyse, conception, …)
-
par équipes (e.g., architectes, [IPT], …)
-
par points de vue (e.g., sécurité, performance, …)
-
etc.
|
Organisation par défaut
L’outil TOPCASED propose, lors de la création d’un premier modèle, de créer une organisation "type" par défaut. +
+ |
5.5. La notion de Namespaces
Un package est un espace de nommage pour tous les éléments qu’il contient.
|
Dans les outils SysML, vous pouvez demander à voir les noms complets (Qualified names) des éléments, c’est à dire le nom de l'élément prefixé par son (ou ses) package(s) (e.g., Structure::Products::Clock). |
5.6. Les dépendances
Un certain nombre de dépendances peuvent exister entre des éléments de package ou entre les packages eux-mêmes :
- Dependency
-
une dépendance "générale", non précisée,
représentée par une simple flèche pointillée -----> - Use
-
l'élément "utilise" celui à l’autre bout de la flèche (un type par exemple),
représentée par le stéréotype << use >> - Refine
-
l'élément est un raffinage (plus détaillé) de celui à l’autre bout de la flèche,
représentée par le stéréotype << refine >> - Realization
-
l'élément est une "réalisation" (implémentation) de celui à l’autre bout de la flèche,
représentée par le stéréotype << realize >> - Allocation
-
l'élément (e.g., une activité ou un requirement) est "alloué" sur celui à l’autre bout de la flèche (un block la plupart du temps),
représentée par le stéréotype << allocate >>
5.7. En résumé
5.8. Questions de révision
-
Quels sont les 5 types de dépendances entre packageable elements ?
-
A quoi sert-il de renseigner les dépendances (donnez des exemples concrets) ?
6. Les exigences
Requirements | Structure | Comportement | Transverse | |
---|---|---|---|---|
Organisation |
||||
Analyse |
||||
Conception |
||||
Implémentation |
6.1. Fondements
On abordera :
-
L’organization des Requirements
-
Les tableaux de Requirements
-
Les Requirements properties
-
Les Requirements links
-
Les Requirements Diagrams
-
Les considerations sur la Traceability
-
Annotations des Requirements
-
Les Use Case Diagrams (scénarios)
|
L’ingénierie des exigences est une discipline à part entière et nous n’abordons ici que les aspects en lien avec la modélisation système. Voir le livre de référence pour plus de détails ([Sommerville1997]) ou le guide de l’AFIS ([REQ2012]). |
6.2. L’organisation des Requirements
Comme nous l’avons vu pour les packages, plusieurs types d’organisations sont possibles :
-
Par niveau d’abstraction
-
Besoins généraux (en lien avec les use cases par exemple)
-
Besoins techniques (en lien avec les éléments de conception)
-
-
Par point de vue
-
Besoins principaux (en lien avec les use cases)
-
Besoins spécifiques :
-
Fonctionnels
-
Marketing
-
Environnementaux
-
Business
-
…
-
-
-
etc.
6.2.1. Tableaux de Requirements
Les requirements sont généralement stockés dans des feuilles excel.
6.3. Les Requirements properties
Il est possible d’indiquer un certain nombre de propriétés sur un requirement :
-
priority (high, low, …)
-
source (stakeolder, law, technical, …)
-
risk (high, low, …)
-
status (proposed, aproved, …)
-
verification method (analysis, tests, …)
6.4. Les Requirements links
Les principales relations entre requirement sont :
- Containment
-
pour décrire la décomposition d’un besoin en plusieurs sous-besoins (⊕–)
- Refinement
-
pour décrire un ajout de précision (<<refine>>)
- Derivation
-
pour indiquer une différence de niveau d’abstraction (<<deriveReqt>>), par exemple entre un système et un de ses sous-systèmes
Il existe ensuite les relations entre les besoins et les autres éléments de modélisation (les block principalement) comme <<satisfy>> ou <<verify>>, mais nous les aborderons dans la partie transverse.
6.6. Les considerations sur la Traceability
Une fois que les requirements ont été définis et organisés, il est utile de les lier au moins aux use cases (en utilisant <<refine>> par exemple) et aux éléments structurels (en utilisant <<satisfy>> par exemple), mais ceci sera abordé dans la partie transverse.
|
Chaque requirement doit être relié à au moins un use case (et vice-versa!). |
6.7. Annotations des Requirements
Il est possible d’annoter les éléments de modélisation en précisant les raisons (rationale) ou les éventuels problèmes anticipés (problem).
6.8. Les Use Case Diagrams (scénarios)
Bien que nous traitions les cas d’utilisation dans la partie comportement, nous les abordons ici du fait de leur proximité avec les requirements.
Ce diagramme est exactement identique à celui d’UML.
|
Un acteur représente un rôle joué par un utilisateur humain. Il faut donc plutôt raisonner sur les rôles que sur les personnes elles-mêmes pour identifier les acteurs. |
6.9. En résumé
Requirements | Structure | Comportement | Transverse | |
---|---|---|---|---|
Organisation |
⊕–, <<deriveReqt>> |
|||
Analyse |
<<satisfy>>, <<refine>> |
<<satisfy>> entre reqs et UC |
<<refine>> |
|
Conception |
<<allocate>> |
|||
Implémentation |
<<satisfy>>, <<verify>> |
6.10. Questions de révision
-
Quelles sont les différences entre besoins et exigences ?
7. L’architecture du système
Requirements | Structure | Comportement | Transverse | |
---|---|---|---|---|
Organisation |
||||
Analyse |
||||
Conception |
||||
Implémentation |
7.1. Fondements
On abordera :
-
l’organisation du système et des modèles
-
les Block Definition Diagrams
-
les Internal Block Diagrams
-
les Parametric Diagrams (pour les contraintes physiques)
-
les Sequence Diagrams (diagramme de séquence système)
7.2. Organisation du système et des modèles
En terme d’organisation, le mécanisme clef est celui de package. Celui-ci va permettre d’organiser les modèles, pas le système lui-même. Nous avons abordé cette organisation ici.
Pour l’organisation du système, on trouve le plus souvent :
-
un diagramme décrivant le contexte (le système dans son environnement), décrit dans un block definition diagram (cf. [contextebdd])
-
un diagramme décrivant les éléments internes principaux du système, décrit dans un internal block diagram
7.3. Block Definition Diagrams
7.3.1. Principes de base
Un bdd peut représenter :
-
un package
-
un block
-
un block de contrainte (constraint block)
Un diagramme de block décrit les relations entre les blocks (composition, généralisations, …).
Un block est constitué d’un certain nombre de compartiments (Compartments) :
- Properties
-
Equivalent UML des propriétés (e.g., attributs)
- Operations
-
Les méthodes supportées par les instances du bloc.
- Constraints
-
Les contraintes
- Allocations
-
Les allocations
- Requirements
-
Les exigences liées à ce bloc.
- User defined
-
On peut définir ses propres compartiments
7.3.2. Propriétés
On peut différencier 3 types de propriétés d’un block :
- parts
-
Les éléments qui composent le block (cf. [ibd])
- values
-
Des caractéristiques (quantifiables)
- references
-
Les éléments auquel le block a accès (via des associations ou des agrégations)
|
Les values sont ce qui se rapproche de plus des attributs de classes UML. |
7.3.4. Associations entre blocks
Il existe deux types de relations entre blocs :
-
l’association (y compris l’agrégation et la composition)
-
la généralisation
7.4. Internal Block Diagrams
Un ibd décrit la structure interne d’un bloc sous forme de :
- parts
-
Les parties qui constituent le système (ses sous-systèmes)
- ports
-
Elément d’interaction avec un block
- connecteurs
-
Liens entre ports
7.4.1. Parts
Les parties sont représentés par les éléments au bout d’une composition dans un bdd. Elles sont créés à la création du block qui les contient et sont détruites avec lui s’il est détruit (dépendance de vie).
|
Il ne s’agit pas de redessiner le BDD. Les parts sont des instances et non des classes (au sens objet). |
On représente les parts comme des block en traits pleins et les references comme des blocks en trait pointillés.
7.4.2. Ports
Les ports :
-
préservent l’encapsulation du block
-
matérialise le fait que les interactions avec l’extérieur (via un port) sont transmise à une partie (via un connecteur)
-
les ports connectés doivent correspondre (kind, type, direction, etc.)
|
Les ports définissent les points d’interaction offerts («provided») et requis («required») entre les blocs. |
Les ports de type Flux peuvent être :
-
atomiques (un seul flux),
-
composites (agrégation de flux de natures différentes).
|
Un flow port atomique ne spécifie qu’un seul type de flux en entrée ou en sortie (ou les deux), la direction étant simplement indiquée par une flèche à l’intérieur du carré représentant le port. Il peut être typé par un bloc ou un Value Type représentant le type d’élément pouvant circuler en entrée ou en sortie du port. |
7.5. Parametric Diagrams
Ce diagramme utilise 3 concepts clefs :
-
Constraints (un type de block)
-
Parametric diagram (un type d'ibd)
-
Value binding
7.5.1. Contraintes
C’est un block particulier :
-
avec un stéréotype ≪constraint≫ (au lieu de block)
-
des parametres en guise d’attributs
-
des relations liant (contraignant) ces paramètres
7.5.2. Diagramme paramétrique
C’est une forme particulière de Internal Block Definition
7.6. Diagrammes de séquence système
Les diagrammes de séquence système (DSS) sont des Sequence Diagrams UML classiques où seul le système est représenté comme une boîte noire en interaction avec son environnement (les utilisateurs généralement).
Il permet de décrire les scénarios des cas d’utilisation sans entrer dans les détails. Il convient donc mieux à l’ingénierie système qu’un diagramme de séquence complet.
7.7. En résumé
En résumé…
7.8. Questions de révision
-
Quelle est la différence entre un package de type model et un package de type package?
8. Le comportement du système
Requirements | Structure | Comportement | Transverse | |
---|---|---|---|---|
Organisation |
||||
Analyse |
||||
Conception |
||||
Implémentation |
8.1. Fondements
On abordera :
-
les Use Case Diagrams (scénarios)
-
les Sequence Diagrams
-
les State Machines
-
les Activity Diagrams
8.1.1. Use Case Diagrams
Les éléments de base :
- Acteurs
-
les principaux acteurs (leur rôle) qui participent (on parle parfois d’acteurs principaux) ou qui bénéficient (on parle alors d’acteurs secondaires) du système.
- Cas d’utilisation
-
représente un ensemble d’actions réalisées par le système intéressant pour au moins un acteur
- Association
-
participation d’un acteur à un cas d’utilisation.
|
Un acteur représente un rôle joué par un utilisateur humain. Il faut donc plutôt raisonner sur les rôles que sur les personnes elles-mêmes pour identifier les acteurs. |
8.1.2. Sequence Diagrams
8.1.3. State Machines
8.1.4. Activity Diagrams
8.2. En résumé
En résumé…
8.3. Questions de révision
Pour réviser…
9. Les aspects transversaux
Requirements | Structure | Comportement | Transverse | |
---|---|---|---|---|
Organisation |
||||
Analyse |
||||
Conception |
||||
Implémentation |
9.1. Fondements
On abordera ici les aspects transversaux comme :
-
la traçabilité des exigences
-
les mécanismes d’allocation
-
le diagramme paramétrique
|
Chaque requirement doit être relié à au moins un use case (et vice-versa!). |
9.2. En résumé
En résumé…
9.3. Questions de révision
Pour réviser…
Partie 4 : Modéliser un système en SysML
1. Une démarche parmi d’autres
Nous allons aborder le développement complet de notre exemple fil rouge en suivant une démarche classique et simple (utilisée par exemple dans [SeeBook2012], où proche de la démarche globale enseignée dans nos cous de DUT Informatique, ou encore proche des documents de référence en la matière [HAS2012], [KAP2007],[FIO2012]) :
-
Spécification du système
-
Conception du système
-
Traçabilité et Allocations
-
Modèle de test
Nous partirons du modèle des exigences produit initialement. Mais avant tout, parlons outils.
1.1. Environnement de développement
Nous sommes des défenseurs des principes [DRY] et [TDD]. Nous allons donc réaliser nos diagrammes dans un outil et non "à la main" (de simples dessins). Nous choisissons ici l’outil TOPCASED pour des raisons que nous expliquerons ailleurs. La version utilisée pour réaliser les exemples de cette section est la version 5.2.
Un outil SysML seul ne suffit pas (cf. Outillage). Il faut penser à la documentation (cf. Génération de doc).
1.1.1. Outils
Il existe de nombreux outils SysML. Nous renvoyons le lecteur sur le site de SysML-France pour des informations sur les dernières versions des outils.
1.1.2. Génération de documentation
La plupart des outils permettent de générer de la documentation. Pour les outils basés eclipse comme TOPCASED, il est possible d’utiliser le plug-in GenDoc2.
Les outils commerciaux comme Rhapsody permettent de générer de nombreux formats.
1.1.3. Animation de modèles et simulation
Fortement liée aux outils, la possibilité d’animer les modèles ou encore d’effectuer des simulations est une exigence de plus en plus forte des ingénieurs systèmes.
Il existe de nombreuses possibilités. Citons par exemple :
- Génération de code VHDL
-
L’outil RTaW propose, via génération de code VHDL de simuler les modèles. Voir une démonstration ici.
- Simulation en Rhapsody
-
L’outil Rhapsody possède une interface très pratique pour faire du prototypage rapide.
Voir mon tutoriel (en anglais) disponible ici.
- Animation de modèles en Artisan
-
L’outil Artisan permet également de faire de l’animation de modèles.
1.2. Spécification du système
Il s’agit ici de décrire le contexte et d’identifier les principaux cas d’utilisation du système.
1.3. Conception du système
Chaque cas d’utilisation sera précisé (seq et act). Les données métier seront alors identifiées pour construire le modèle d’architecture logique (bdd et ibd) complété par la description des comportements complexes (st). Enfin le modèle d’architecture physique permettra de déterminer les aspects déploiement et constructions physiques d'équipements/
1.4. Traçabilité et Allocations
Afin de consolider les différents modèles, les liens de traçabilité qui n’auront pas été déjà décrit
[Il est recommandé de ne pas attendre pour matérialiser ces liens, mais de les exprimés dès que rencontrés dans telle ou telle modélisation.]
seront rajoutés en insistant sur les liens :
-
de satisfaction des exigences par les éléments de l’architecture,
-
d’allocation des éléments du modèle fonctionnel vers les éléments logiques,
-
d’allocation des éléments logiques vers les éléments de l’architecture physique.
1.5. Modèle de test
Nous insistons dans l’ensemble de nos formations sur les approches test-driven, alors nous montrons dans cette section comment participer à la qualité du développement d’un système en formalisant (par exemple avec des diagrammes de séquence de scénarios à éviter) les test et les jeux de test.
2. Recettes et bonnes pratiques
La plupart des ouvrages sur un langage enseignent les éléments de ce langage, comme nous l’avons fait à la partie précédente. Nous allons ici partir du principe inverse : comment modéliser tel ou tel partie ou vue de mon système avec SysML. Un peu à la manière des ouvrages du type Cookbook, nous allons donner une liste non exhaustives de recettes. Les choix des éléments de modélisation sont arbitraires ou tirés de discussions (comme ce sera mentionné si c’est le cas).
2.1. Architecture
C’est conseillé. Un block System permet de raccrocher tous les éléments qui le composent à un même niveau.
Dans l’exemple ci-dessous le système (le bloc Pacemaker) est lui-même un simple composant d’un élément de plus haut niveau : le contexte du système (le bloc Context) qui relie alors le système à son environnement.
Voir aussi la section [contexte].
2.2. Comportement
Un diagramme d'état peu modéliser les différents modes et les événements qui produisent les changements de mode.
2.3. Patrons de conception système
Mérite une section ??
Partie 5 : Pour aller plus loin
1. Considérations méthodologiques
2. Exercices de révision
Reprendre ici les questions des chapitres (à organiser en fichiers!).
2.1. Quizz
2.1.1. Sujet
Un quizz en ligne est disponible ici (me contacter pour le mot de passe).
En voici une capture d'écran :
2.1.2. Corrigé
L’ensemble des questions du quizz a été généré à partir de ce fichier quizz (qui contient les réponses).
2.2. Mots croisés
2.2.1. Sujet
Voici un petit exercice (en anglais pour l’instant, désolé) pour changer :
- Vertical (across)
-
-
2. outside-inside connection
-
4. the full name of a model element is also a … name
-
6. the black diamond in SysML
-
9. History is one of them
-
10. what a block can do
-
13. between states
-
14. a supporter of SysML
-
- Horizontal (down)
-
-
1. used to describe a flow of actions
-
3. message represented by a regular (unfilled) arrow
-
5. each use case is advised to be linked to at least one of them
-
7. they are handled in SysML by Packages
-
8. communication entity in a seq
-
11. a supporter of SysML
-
12. number of diagrams in SysML
-
Annexes
1. Liens utiles
-
Sites officiels
-
Le site de l’association SysML-France
-
Le site de l’OMG (Object Management Group)
-
Le portail SysML de l’OMG (Object Management Group)
-
Le site de l’INCOSE (International Council on Systems Engineering)
-
Le site de l’AFIS (Association Française d’Ingénierie Système)
-
-
Blogs
-
Le site de Tim Weilkiens
-
La démarche Caminao
-
-
Outils SysML
-
Outils de production
-
Les conseils généraux de Scott Ambler sur Ecrire un livre technique
-
Les conseils techniques de Matthew Mc Cullough sur Ecrire un livre technique
-
AsciiDoc comme moteur de base.
-
Pandoc pour la conversion de documents.
-
git-scribe pour la génération des documents à partir d’AsciiDoc.
-
-
Divers
-
Pour en savoir plus sur l’auteur
-
2. Historique de SysML
Un point sur les évolutions de SysML.
4. Idées de projets
Quelques exemples de sujet propice au développement SysML.
5. Challenges et questions ouvertes autour de SysML
6. FAQ
Cette Frequently Asked Question a été construite par expérience, en regroupant les questions des étudiants durant mes différentes interventions. J’ai aussi ajouté des questions souvent rencontrées dans les journées organisés par SysML-France.
|
Voir aussi cette FAQ très bien faite. |
Cette FAQ peut servir de base à la révision d’examens (cf. aussi [Exos]).
6.1. Peut-on avoir un requirement contenu dans plusieurs autres ?
Non. Le lien de containment est en fait une action qui place le "contenu" dans le "contenant". Dans TOPCASED, le diagramme laisse les liens précédents à l'écran, mais dans le modèle, c’est bien le dernier containment réalisé qui est pris en compte. Dans la figure ci-dessous le lien A-C a été "dessiné" après celui B-C.
|
Ce "bug" provient du fait que le lien de containment n’est pas un lien de dépendance, mais plutôt une représentation graphique de la contenance. |
6.2. Comment alors peut-on "partager" un requirement ?
(En lien avec la question précédente)
L’organisation SysML des requirements est en fait un arbre. Pour réaliser ce "partage" certains utilisent un lien <<copy>> pour créer plusieurs copies d’un même requirement. Personnellement je n’aime pas cette solution.
6.3. Peut-on avoir un lien <<satisfy>> entre exigences?
Techniquement oui (<<satisfy>> étant dérivé de <<dependency>>), mais ça n’a pas beaucoup de sens que de dire qu’un besoin est satisfait par un autre. Il s’agit le plus souvent d’un lien <<deriveReqt>>.
|
Certaines méthodes utilise ce lien pour par exemple exprimer qu’une exigence cliente et satisfaite par une exigence système (comme la méthode Harmony). |
6.4. Quelle est la différence entre <<deriveReqt>> et <<refine>> ?
La norme n’impose pas de sémantique précise à <<deriveReqt>>. Il y a généralement deux interprétations.
-
Un usage classique est de l’utiliser pour ajouter des exigences plus détaillés déduites à partir d’autres exigences. Un exemple issue de la norme est une exigence de puissance moteur déduite (deriveReqt) depuis l’exigence sur l’accélération d’un véhicule.
-
Une vision plus stricte, aussi illustré par l’exemple précédent, est que l’exigence dérivée est une condition nécessaire (un pré-requis) à l’exigence cible.
Autre exemple respectant 1 mais pas 2 : "Le véhicule doit posséder 4 roues." est dérivé de "Le véhicule doit se déplacer sur route." En effet, un aéroglisseur répondrait aussi l’exigence initiale et n’a pourtant pas de roues.
Quant au <<refine>> il est utilisé pour indiquer qu’un élément de modèle (qui peut être lui-même un requirement) est un raffinement (au sens niveaux d’abstraction, du plus abstrait au plus concret) d’un requirement. Par exemple, un use case ou un diagramme d’activité peut être un raffinement d’une exigence fonctionnelle (textuelle par exemple).
6.5. A quoi sert le lien <<trace>> ?
Il est utilisé pour indiquer que l’on souhaite conserver un lien de traçabilité entre les éléments (par exemple entre un élément de modélisation et un document). Il est recommandé d’utilisé une de ces versions plus précises (<<deriveReqt>> ou <<satisfy>> par exemple).
6.6. Quelle est la version courante de la spécification et comment l’obtenir?
Verson 1.3 et disponible à l’URL: http://www.sysml.org/docs/specs/OMGSysML-v1.3-12-06-02.pdf
6.7. Quels en sont les changements notables depuis la dernière version ?
(en lien avec la question précédente)
Les changements notables par rapport à la 1.2 concernent :
-
synchronisation avec les changements d’UML 2.3
-
le métamodèle de Conjugate ports et sa notation
-
le nommage des activity regions "interruptible"
-
inclusion de UML instance
-
inclusion des structured activity nodes d’UML
-
inclusion des multiple item flow d’UML
-
améliorations du support à Unit et QuantityKind pour les value types, et ajout d’un modèle (non normatif) pour définir les systèmes d’unités et de quantités.
|
SysML v1.3 Revision Task Force dirigée par Roger Burkhart et Rick Steiner améliore de manière régulière la spécification en fonction des retours des utilisateurs. |
6.8. Divers
Quelques autres questions que je laisse à votre sagacité :
-
Pourquoi les ingénieurs systèmes auraient-ils besoin d’un n-ième langage de modéliation ?
-
Quelles sont les relations entre “open source SysML” et “OMG SysML” ?
-
Quelle est la feuille de route pour SysML 2.0?
-
Quelles sont les relations entre UML et SysML? Peut-on les utiliser ensemble?
-
Peut-on "customizer" SysML?
-
Quel langage est le plus facile à apprendre, SysML ou UML?
7. A propos de ce document…
Bibliographie
Les références…
-
[FIO2012] Fiorèse S., Meinadier J., Découvrir et comprendre l’ingénierie système, AFIS 2012.
-
[HAS2012] Haskins C., SE Handbook Working Group, INCOSE Systems Engineering Handbook: Version 3.2.2, International Council on Systems Engineering, 2012.
-
[KAP2007] Kapurch S., NASA Systems Engineering Handbook, 2007 (pdf).
-
[REQ2012] Guide Bonnes Pratiques en Ingénierie des Exigences, AFIS 2012.
-
[Roques2010] Pascal Roques. SysML par l’exemple - Un langage de modélisation pour systèmes complexes. Eyrolles. a acheter ici.
-
[Sommerville1997] Ian Sommerville, Pete Sawyer. Requirements Engineering: A Good Practice Guide. Wiley, 1997.
-
[SysML] OMG. Systems modeling language version 1.3. Technical report, 2012.
-
[taoup] Eric Steven Raymond. The Art of Unix Programming. Addison-Wesley. ISBN 0-13-142901-9.
-
[Walsh1999] Norman Walsh & Leonard Muellner. DocBook - The Definitive Guide. O’Reilly & Associates. 1999. ISBN 1-56592-580-7.
Glossaire
|
Ressources
Les définitions ci-dessous sont regroupées à titre indicatif. Les sources utilisées sont :
|
- DRY
-
Don’t Repeat Yourself : Un bon principe qui veut qu’on évite de répéter des tâches manuelles (comme les tests) en utilisant plutôt des scripts et des programmes.
- INCOSE
-
International Council on Systems Engineering : une organisation fondée en 1990 pour faire avancer les technologies d’Ingénierie Système .
- IPT
-
Integrated Product Team : une équipe classique en développement système.
- OMG
-
Object Management Group : L’organisme international chargé des principales normes liés à l’objet (CORBA, UML, etc.).
- TDD
-
Test Driven Development : Développements dirigés par les tests. On écrit les tests avant d'écrire le code. On travaille son code tant que les tests ne passent pas.
- TRL
-
Technology Readiness Level : système de mesure employé par des agences gouvernementales américaines et par de nombreuses compagnies (et agences) mondiales afin d'évaluer le niveau de maturité d’une technologie (cf. Wikipedia).
- SysML
-
System Modeling Language ™ : le langage de modélisation de systèmes maintenu par l’OMG.