Académique Documents
Professionnel Documents
Culture Documents
1) Introduction :
Les problèmes qui sont soumis aux ingénieurs logiciels sont souvent d’une complexité extrême. Comprendre la nature
exacte d’un problème s’avère très complexe particulièrement s’il est nouveau et qu’aucun système non automatique
n’existe pour servir de modèle au logiciel à développer.
Il est important de préciser le niveau de détail des besoins exprimés par l’utilisateur. L’information concernant ce problème
doit être assemblée et analysée pour donner une définition compréhensible du problème qui servira pour concevoir et
réaliser le logiciel.
Le processus visant à établir quelles fonctionnalités le système doit fournir et les contraintes auxquelles il sera soumis,
s’appelle l’analyse et la définition des besoins qui est la première grande étape du cycle de vie du logiciel.
Remarque 1 : Le fait de présenter le besoin d’un logiciel pour gérer la comptabilité d’une entreprise, ne suffit pas à
l’ingénieur logiciel de concevoir ce système. Il faudra rassembler et analyser toutes les informations concernant le
problème et une définition compréhensible devra être produite et qui servira par la suite à concevoir et à réaliser le logiciel.
Remarque 2 : Il faut faire la distinction entre un but et un besoin. Ce dernier peut être testé tandis que le but est une
caractéristique plus générale que devrait posséder le système. Exemple : un but pourrait être que le système soit agréable à
utiliser (critère subjectif). Par contre un besoin associé à ce but pourrait être que toutes les commandes utilisateur soient
activées par menu.
Remarque 3 : La tâche de définition des besoins peut parfois être confiée à un analyste dans le cas où un système manuel
doit être automatisé mais souvent cela est fait en concertation avec l’ingénieur logiciel. Par contre, pour les systèmes
complexes, souvent c’est l’ingénieur logiciel qui se charge de cette tâche.
Les résultats de cette 1ère phase sont regroupés dans un document de définition des besoins appelé le cahier des charges du
logiciel qui donc, doit décrire le système que l’on veut bâtir, et ce de manière aussi précise, complète et consistante que
possible. Toute information non pertinente, superflue ou incomplète soit être éliminée an faisant des analyses critiques.
- C’est un document qui contient des indications concernant les phases suivantes du cycle de vie.
- C’est un ensemble de propriétés ou de contraintes, décrites de façon précise, qu’un système logiciel doit satisfaire.
- Ce n’est pas un document de conception ; il doit décrire ce que le système doit faire sans spécifier comment il doit le
faire.
- Les besoins exprimés dans ce document doivent constituer un ensemble complet et cohérent (aucun besoin ne doit être
en conflit avec un autre déjà exprimé).
En pratique, ces propriétés sont extrêmement difficiles à vérifier, particulièrement si les besoins sont exprimés dans un
langage naturel.
Cependant, des notations plus formelles existent qui permettent dans une certaine mesure, de faire des vérifications de
cohérence automatiques.
Remarque : Cette vérification n’est pas facile ; par exemple le cahier de charges d’un système de défense à base de
missiles contenait plus de 8000 besoins distincts couvrant 2500 pages.
Les critères que devrait vérifier tout cahier de charges (selon Heninger, 1980), sont les suivants :
1- il doit spécifier uniquement le comportement externe du système.
2- il doit spécifier les contraintes de réalisation.
3- il doit être facile à mettre à jour.
4- il doit servir d’outil de référence aux programmeurs de maintenance du système.
5- il doit contenir des indications concernant les étapes ultérieures du cycle de vie du système.
6- il doit spécifier les réponses acceptables aux événements non désirables.
Pour pouvoir satisfaire les critères cités précédemment, un cahier des charges doit être structuré comme suit :
1- Introduction : décrit la raison d’être d’un tel système et place celui-ci dans son contexte, en donnant brièvement ses
fonctions et en présentant un justification de son organisation. L’introduction doit également préciser la structure du
document et décrire les notations utilisées.
Page 1
2- Matériel : si le système est réalisé sur un matériel spécial, cet équipement et ses interfaces doivent être décrits. Si un
matériel standard est utilisé, les configurations minimale et optimale sous lesquelles le système peut s’exécuter,
doivent être définies.
3- Modèle Conceptuel : Ce modèle doit définir une vue à très haut niveau des fonctions majeures du système et de
leurs relations. Ce modèle est bien décrit par une notation graphique (exemple : modèle de flot de données).
4- Besoins fonctionnels : les besoins fonctionnels du système (les services fournis à l’utilisateur) doivent être décrits.
Suivant la nature de ces besoins, la notation utilisée peut être un langage naturel, un langage semi-formel, un langage
formel ou bien un mélange de ces notations.
5- Les besoins en matière de base de données : l’organisation logique des données manipulées par le système et leurs
relations doivent être décrits dans cette section.
6- Besoins non fonctionnels : les contraintes sous lesquelles le logiciel doit opérer, doivent être exprimées et reliées
aux besoins fonctionnels. Exemple : contraintes de temps, espace mémoire, représentation des données, langage de
programmation.
7- Information destinée à la maintenance : cette section doit décrire les hypothèses fondamentales sur lesquelles le
système est fondé ainsi que les changements prévus du fait de l’évolution du matériel, des besoins des utilisateurs,
etc. Dans la mesure du possible, les fonctions et les contraintes particulièrement sujettes aux changements doivent
être indiquées explicitement.
8- Glossaire : doit définir les termes techniques utilisés dans le document et ce de manière précise et sans faire aucune
présupposition sur l’expérience ou la formation du lecteur.
9- Index : il est préférable de fournir plus d’une seule sorte d’index (alphabétique, par chapitre, des fonctions, …).
Remarque : Du fait que les besoins sont susceptibles de changer, il est essentiel que le document d’analyse des besoins
soit organisé de façon qu’il puisse évoluer facilement. Faute de quoi, des changements pourront intervenir dans le système
sans qu’ils soient enregistrés dans le cahier des charges. Cela provoquera un défaut de synchronisation entre le programme
et sa documentation créant ainsi des problèmes immenses aux programmeurs de maintenance.
Une fois l’analyse initiale des besoins réalisée, l’étape suivante consiste à produire un modèle conceptuel du système qui
est une vue du système à très haut niveau, dans laquelle les fonctions majeures voulues par l’utilisateur sont identifiées et
leurs relations documentées.
Pour les systèmes très simples, ce modèle peut n’exister que dans l’esprit de l’ingénieur responsable de la définition des
besoins car celui-ci comprend le système dans son ensemble et connaît les fonctions qui doivent être fournies ainsi que les
contraintes imposées à l’exécution de ces fonctions.
Par contre, pour les systèmes complexes, il est nécessaire de définir très tôt un modèle du système qui soit précis et
explicite et d’utiliser ce modèle pour en comprendre le fonctionnement.
Les notations les plus efficaces pour la description du modèle conceptuel du système, sont graphiques. En effet, dessins et
diagrammes sont en général compréhensibles par des utilisateurs mêmes non spécialistes en génie logiciel.
Exemple : Considérons un système bureautique composé d’un courrier électronique, d’un tableur et de services de
préparation de documents et de recherche d’informations.
Utilisateur
Courrier
électronique Préparation de Tableur
documents
Système de
communication Recherche d’Information
Communications externes
Base de données
Page 2
2ème étape : L’étape suivante du processus de modélisation consiste à prendre chaque fonction principale et en définir un
modèle conceptuel. Exemple : Fonction Courrier.
Utilisateur
Envoyer le
courrier Lire le Faire suivre le
courrier courrier
Classer le Accuser
courrier Recherche
réception d’Information
Système de
communication Base de données
Un modèle similaire peut être dérivé pour chaque fonction principale ; ces modèles peuvent être affinés à plusieurs niveaux
de détails si nécessaire.
Le modèle conceptuel fournit alors un cadre sur lequel la définition des besoins plus détaillée et plus complète peut
s’appuyer mais à condition de ne pas influer trop directement sur la phase de conception.
Remarque : Si le système est complètement nouveau, le modèle conceptuel peut être incomplet car on ne connaît pas
exactement les fonctions souhaitées. Les besoins logiciels dérivés d’un tel modèle sont inévitablement imprécis. Les
besoins plus précis ne peuvent être formulés qu’après avoir fait des expériences de conception de tels systèmes et dont les
résultats permettent au retour d’établir un modèle conceptuel plus complet.
5) Besoins fonctionnels :
Habituellement, la plus grande partie du document de définition des besoins logiciels est consacrée à la définition des
besoins fonctionnels.
Les besoins fonctionnels définissent les services attendus par l’utilisateur. En général, l’utilisateur ne se soucie pas de
savoir comment ces services seront utilisés. L’ingénieur logiciel doit donc éviter l’introduction de concepts de réalisation
dans cette section du document de définition des besoins.
En principe, les besoins fonctionnels doivent constituer un ensemble complet et cohérent. La complétude signifie que tous
les services requis par l’utilisateur doivent être spécifiés, et la cohérence que les définitions des besoins ne doivent pas être
contradictoires.
Dans les systèmes grands et complexes, il est impossible d’atteindre les propriétés de complétude et de cohérence dans la
version initiale du document de définition des besoins.
Au fur et à mesure que les problèmes sont découverts pendant les revues ou plus tard dans le cycle de vie, le document de
définition des besoins, doit être modifié.
Il y a trois façons d’exprimer les besoins fonctionnels :
1- dans un langage naturel,
2- dans un langage structuré comportant quelques règles sans définition précise de sa syntaxe et sa sémantique.
3- Dans un langage de spécification formel ayant une définition rigoureuse de sa syntaxe et sa sémantique.
Le langage naturel est le plus utilisé car il est le plus expressif et le plus compréhensible par les utilisateurs et les
développeurs à la fois.
Les langages structurés sont utilisés car ils permettent la construction d’outils logiciels de vérification de cohérence et de
complétude.
La dernière approche est toujours au stade de recherche et est très peu utilisée en industrie.
Page 3
Exemple : La BD doit permettre l'accès aux objets d'une même version par l'utilisation d'un nom incomplet (simplement en
connaissant le contexte racine de la version).
Problèmes :
Bien que les langages naturels constituent probablement le seul moyen d’exprimer des besoins de haut niveau, des défauts
sont constatés lors d’expression des besoins à l’aide de paragraphes non structurés:
- Ils reposent sur l'expérience linguistique partagée du lecteur et du rédacteur du document. Ce dernier suppose que les
termes utilisés ont le même sens pour lui et pour le lecteur. Cela conduit à des ambiguïtés dangereuses.
- Ils ne permettent pas d'exprimer l'architecture fonctionnelle d'un système de façon claire et concise. L'architecture
fonctionnelle (Schoman et Ross, 77) est une description des activités du système et des entités en interaction à
l'intérieur du système.
- Ils sont trop souples (différencient des besoins proches, …).
- Ils ne permettent pas de séparer efficacement les besoins.
Un besoin non fonctionnel correspond à une restriction ou à une contrainte placée sur une des fonctions du système.
Exemple : contraintes sur le temps de réponse maximum, limitations sur l'espace mémoire nécessaire, restrictions sur la
représentation des données.
Bien que les besoins fonctionnels et non fonctionnels soient tous deux susceptibles d'évoluer, les besoins non fonctionnels
sont particulièrement affectés par les modifications de la technologie du matériel (surtout dans les projets de grands
systèmes ayant une durée de développement et d'exploitation de plusieurs années).
Les changements matériels qui peuvent se produire lorsque le logiciel est en cours de développement, peuvent être
anticipés. Les besoins non fonctionnels qui dépendent du matériel peuvent être spécifiés en supposant des performances qui
ne seront effectives qu'en fin de projet. Ce type d'anticipation ne peut être fait pour des changements concernant la période
d'exploitation.
En conséquence, il est important que ces besoins liés au matériel soient spécifiés de telle façon qu'ils puissent être
facilement modifiés.
Les besoins non fonctionnels peuvent rentrer en conflit et interagir les uns avec les autres et même avec des besoins
fonctionnels.
Page 4
7) Validation des Besoins :
Une fois que les besoins sont définis, il faut les valider comme suit :
La cohérence des besoins doit être établie. Aucun besoin ne peut être en conflit avec un autre besoin.
L'ensemble des besoins exprimés doit être complet. Il doit comprendre toutes les fonctions et contraintes souhaitées par
l'utilisateur du système.
Les besoins doivent être réalistes vis à vis de la technologie des matériels et logiciels. Il est possible d'anticiper quelque peu
l'évolution du matériel mais pour ce qui est du logiciel, les développements sont beaucoup moins prévisibles.
Les besoins des utilisateurs doivent être valides. Un utilisateur peut penser qu'un système doit fournir certains services,
mais une analyse poussée peut faire apparaître la nécessité de fournir des fonctionnalités supplémentaires ou différentes.
Remarque : les erreurs dans cette étape seront propagées aux phases de conception et réalisation du système. Pour les
corriger, il faut procéder à des modifications qui s'avèrent souvent très coûteuses. Boehm (1974) rapporte que pour
quelques grands systèmes, il a été nécessaire de récrire jusqu'à 95% du code pour tenir compte des changements dans la
définition des besoins.
Une revue de définition des besoins constitue le moyen de validation le plus efficace. Pendant une revue, les besoins sont
étudiés à la fois par les utilisateurs et par les développeurs afin de déceler toute anomalie ou contradiction. Ce travail est
facilité s'il existe des outils d'analyse.
Remarque 1 : d'autres outils automatiques permettent de vérifier qu'il n'existe pas de termes différents pour désigner le
même objet, ou comparent les entrées et les sorties des fonctions.
Remarque 2 : Des outils appelés simulateurs permettent, à partir de descriptions formelles (mathématiques) d’un futur
système, de simuler son exécution afin de vérifier certaines propriétés importantes.
Problème :
L'étape de validation des besoins, nécessite une étroite coopération de la part des utilisateurs. Or, beaucoup d'eux ne
comprennent pas clairement leurs besoins et ne peuvent pas comparer un besoin effectif à sa traduction fonctionnelle
surtout dans le cas d'un nouveau système grand et complexe.
Ils ne peuvent alors valider leurs besoins qu'en évaluant un logiciel existant.
Prototypage
Ceci à conduit à l'adoption de l'approche évolutive du développement des systèmes en utilisant la technique du prototypage
(jetable ou non).
On présente à l'utilisateur un système incomplet à partir d'une spécification grossière et on procède à des expérimentations
pour améliorer la spécification.
Pour la suite, deux options se posent : le prototype (jetable) peut être abandonné pour reconstruite complètement le système
réel à partir de zéro ou bien le prototype (non jetable) est lui même transformé progressivement en un produit final.
D'où l'approche "Conception centrée sur l'utilisateur" qui prône le développement d'un prototype et l'implication de
l'utilisateur dans la phase de conception de l'interface.
Page 5
Suite Chapitre 2 : La Méthode SADT
Structured Analysis and Design Technique
1) Introduction
Spécifier un problème informatique, c’est le poser aussi précisément que possible en s’interdisant de penser prématurément
à sa réalisation [Meyer B.]. Autrement dit, spécifier c’est définir ce que le problème doit faire et non comment le faire.
C’est dans ce cadre que s’inscrit la méthode SADT particulièrement adaptée à la phase de spécification fonctionnelle de
produits ou de systèmes intégrant ou non du logiciel.
Née en 1976 aux USA où elle a été mise au point par la société SOFTECH avec ITT, cette méthode a acquis une renommée
internationale aussi bien au niveau des grands groupes industriels ou des organismes nationaux ou internationaux que des
départements informatiques de société pour lesquelles l’informatique n’est qu’un outil.
SADT est une méthode générale qui cherche à favoriser la communication entre les demandeurs et les utilisateurs, d’une
part, et les concepteurs et les réalisateurs, d’autre part. Le père de SADT, D.T. Ross avait présenté SADT en 1977 dans un
article intitulé « SADT, un langage pour communiquer les idées ».
SADT, étant une méthode de spécification fonctionnelle, conduit à la réalisation d’un ou plusieurs modèles du système.
Un modèle est une description abstraite d’un système, destinée à en préciser certaines caractéristiques. Le but du
processus de modélisation est d’identifier les caractéristiques intéressantes d'une entité que l’on cherche à faciliter la
compréhension, l’analyse et la simulation.
Un modèle correct est celui qui permet de trouver les réponses aux bonnes questions.
Page 6
2.3) Niveaux d’abstraction (séparer le Quoi du Comment)
Toute spécification de système consiste à séparer les 3 niveaux d’abstraction que sont :
- Niveau Conceptuel Æ (le quoi, le pourquoi)
- Niveau Organisationnel Æ (le Qui, le Ou et le Quand)
- Niveau Opérationnel Æ (le Comment).
SADT permet de répondre aux deux premiers niveaux d’abstraction. Ceci afin de garantir que le problème soit clairement
compris avant que les détails d’une solution ne soient arrêtés.
Chef de Projet
Comité de Experts
Page 7
Donnée de contrôle : SADT permet de distinguer parmi les données sollicitées par l’activité, celles qui ne sont pas
modifiées (les données de contrôle), mais qui influencent son comportement, de celles qui sont créées, générées,
transformées, sollicitées (données d’entrée) par l’activité. Donc une donnée de contrôle n’est pas modifiable et exprime une
contrainte sur la façon dont l’activité sollicite l’entrée. On peut la considérer comme étant un paramètre contrôlant la
transformation de la donnée d’entrée en donnée de sortie.
Influence déclenchante
Données de contrôle sur l’activité concernée
Influence inhibitrice
Mécanismes ou supports de l’activité : Ces mécanismes sont utilisées pour exprimer les moyens de réaliser la fonction /
activité (qui réalise telle ou telle fonction).
Précision Temps d’exécution
Type d’opération
Un mécanisme dans un modèle peut être lui-même représenté (défini) par un autre modèle.
Un datagramme, crée à partir d’activités d’entrée (génératrices) sous le contrôle d’activités de création, une donnée,
manipulée, observée, consommée par l’activité de sortie (utilisatrice) sous le contrôle d’activités de manipulation,
d’observation ou d’utilisation
Activités de contrôle : influent sur la création et sur l’utilisation des données créées.
Activités de contrôle
Sélectionner le type
d’ é i
Saisir Opérande Afficher
Activités Datagramme Activités
Génératrices utilisatrice Registre de
s calculette
Datagramme « Opérande »
Mécanismes ou supports de la donnée
(2) Boîtes et flèches : Les boîtes sont les constituants de la décomposition, les flèches sont les contraintes de liaison entre
les boîtes (ni commandes, ni séquencements).
(3) Connexions entre les boîtes : La sortie d’une boîte peut devenir l’entrée ou le contrôle d’une ou plusieurs autres boîtes
(schéma « producteur – consommateur »).
Page 8
Nécessité ou plaisir
du voyage
Itinéraire, Destination
Cartes et guides Faire l’itinéraire &
décider destination (1)
Valise
prête
Valise vide Préparer la valise
(2)
Vêtements
A0 - Partir en voyage
Laver Laver
Vaisselle propre
Page 9
D1
A D3
D2
D1 D31
A1 D3
D4
D5
D12 A2
D32
D2 A3
(8) Liste hiérarchique et numérotation des diagrammes :
Système de référence basé sur l’arbre hiérarchique.
A-0
A1
A2
A0 A3
A11 A31
A12 A32
A1 A13 A33
A3
(9) Glossaire :
Le glossaire explique les sens des termes techniques, des termes généraux utilisés, des abréviations …
Page 10