Chap 1-..-9
Chap 1-..-9
1
Ing. NTOH MOUALAM Annick
Langue utilisée ......................................................................................................................... 62
Formatage du code.................................................................................................................. 62
Commentaires ............................................................................................................................. 63
Chapitre 6. Systèmes de gestion de versions..................................................................................... 65
Notion de gestion de versions ..................................................................................................... 65
Application concrète : une infrastructure ................................................................................... 65
La gestion des versions d'un logiciel, en utilisant comme exemple l'outil Git. ....................... 66
Les logiciels de gestion des versions ....................................................................................... 67
Chapitre 7. Travail collaboratif ........................................................................................................... 71
Les enjeux du travail collaboratif ................................................................................................ 71
Présentation de GitHub ............................................................................................................... 71
Chapitre 8. Documentation ................................................................................................................ 75
Introduction ................................................................................................................................. 75
Documentation technique .......................................................................................................... 75
La documentation utilisateur .................................................................................................. 80
Conseils de rédaction .............................................................................................................. 82
Chapitre 9. Architecture logicielle...................................................................................................... 83
Définition ..................................................................................................................................... 83
Importance .................................................................................................................................. 83
Objectifs................................................................................................................................... 83
Architecture ou conception ? .................................................................................................. 84
L'activité d'architecture ............................................................................................................... 84
L'architecture d'un logiciel ...................................................................................................... 85
Chapitre 10. Principes de conception .................................................................................................. 86
2
Ing. NTOH MOUALAM Annick
Objectif du module :
Avoir des procédures systématiques pour des logiciels de grande taille afin que:
3
Ing. NTOH MOUALAM Annick
Chapitre 1. Notion de génie logiciel
Définitions
Génie logiciel
Ingénierie (ou génie) : Ensemble des fonctions allant de la conception et des études à la responsabilité de la
construction et au contrôle des équipements d'une installation technique ou industrielle
Logiciel :
Ensemble de programmes qui permet à un système informatique d’assurer une tâche ou une fonction en
particulier
Génie logiciel : Ensemble des méthodes, des techniques et des outils dédiés à la conception, au
développement et à la maintenance des systèmes informatiques.
Environnement du logiciel
4
Ing. NTOH MOUALAM Annick
● utilisateurs : grand public (traitement de texte), spécialistes (calcul météorologique), développeurs
(compilateur)
● matériel : capteurs (système d'alarme), réseau physique (protocole), machine ou composant matériel
contrôlé.
Spécification : ce que doit faire le logiciel, ensemble de critères que doivent satisfaire son fonctionnement
interne et ses interactions avec son environnement.
Crise du logiciel
Constat du développement logiciel fin années 60 :
5
Ing. NTOH MOUALAM Annick
6
Ing. NTOH MOUALAM Annick
« La satisfaction du client et la valeur du produit sont plus grandes lorsque les fonctionnalités livrées sont
bien moins nombreuses que demandé et ne remplissent que les besoins évidents. »
7
Ing. NTOH MOUALAM Annick
4) Difficultés spécifiques du logiciel :
● Produit invisible et immatériel
8
Ing. NTOH MOUALAM Annick
● Coût en vies, coût de l'impact écologique
Qualité du logiciel
Critères de qualité :
9
Ing. NTOH MOUALAM Annick
Principes utilisés dans le Génie Logiciel
10
Ing. NTOH MOUALAM Annick
Chapitre 2. Processus de développement logiciel
Le cycle de vie désigne l’ensemble d'activités successives, organisées en vue de la production d'un logiciel
Les modèles décrivent les liens, les relations entre les différentes étapes du cycle de vie du logiciel.
Les méthodes permettent de mettre en œuvre un développement logiciel selon un modèle en organisant les
différentes étapes du cycle de vie du logiciel.
En pratique :
● Choix du processus en fonction des contraintes (taille des équipes, temps, qualité...)
● Spécification
● Conception
● Programmation
● Validation et vérification
● Livraison
● Maintenance
2) Spécification :
● Établir une description claire de ce que doit faire le logiciel (fonctionnalités détaillées, exigences de
qualité, interface…)
● Clarifier le cahier des charges (ambiguïtés, contradictions) en listant les exigences fonctionnelles et non
fonctionnelles
11
Ing. NTOH MOUALAM Annick
3) Conception : Élaborer une solution concrète réalisant la spécification
● Description architecturale en composants (avec interface et fonctionnalités)
● Réalisation des fonctionnalités par les composants (algorithmes, organisation des données)
5) Validation et vérification
Objectifs :
● Validation : assurer que les besoins du client sont satisfaits (au niveau de la spécification, du produit
fini...)
6) Maintenance
Types de maintenance :
● Adaptation : adapter le logiciel aux changements dans l'environnement (format des données,
environnement d'exécution...)
12
Ing. NTOH MOUALAM Annick
● Perfection : améliorer la performance, ajouter des fonctionnalités, améliorer la maintenabilité du logiciel
13
Ing. NTOH MOUALAM Annick
7) Processus en cascade
Chaque étape doit être terminée avant que ne commence la suivante
14
Ing. NTOH MOUALAM Annick
Caractéristiques :
● Découverte d'une erreur entraîne retour à la phase à l'origine de l'erreur et nouvelle cascade, avec de
nouveaux documents...
● Coût de modification d'une erreur important, donc choix en amont cruciaux (typique d'une production
industrielle)
Pas toujours adapté à une production logicielle, en particulier si besoins du client changeants ou difficiles à
spécifier
8) Processus en V
Caractéristiques :
● Mise en évidence de la complémentarité des phases menant à la réalisation et des phases de test permettant
de les valider
15
Ing. NTOH MOUALAM Annick
a) Niveaux de test
Test unitaire : test de chaque unité de programme (méthode, classe, composant), indépendamment
du reste du système
Test d'intégration : test des interactions entre composants (interfaces et composants compatibles)
Test système : test du système complet par rapport à son cahier des charges
Test d'acceptation (recette) : fait par le client, validation par rapport aux besoins initiaux
Principe :
● Développement rapide d'un prototype avec le client pour valider ses besoins
16
Ing. NTOH MOUALAM Annick
Avantage : Validation concrète des besoins, moins de risques d'erreur de spécification. Les efforts consacrés
au développement d’un prototype sont le plus souvent compensés par ceux gagnés à ne pas développer de
fonctions inutiles
Avantage : Minimiser le risque d'inadéquation aux besoins, meilleure intégration du client dans la boucle,
produit conforme à ses attentes
Un modèle mixte
17
Ing. NTOH MOUALAM Annick
A chaque cycle, recommencer :
Consultation du client
Analyse des risques
Conception
Implémentation
Tests
Planification du prochain cycle
Avantages : meilleure maitrise des risques, mais nécessite une (très) grande expérience
18
Ing. NTOH MOUALAM Annick
Fonctionne pour petites équipes de développement (< 20) car communication cruciale
Documentation
Objectif : Traçabilité du projet
Pour l'équipe :
Pour le client :
● Ambiguïtés : plusieurs sens d'un même mot selon les personnes ou les contextes
● Pseudo-code : description algorithmique de l'exécution d'une tâche, donnant une vision opérationnelle du
système
Langages semi-formels :
● Notation graphique : diagrammes accompagnés de texte structuré, donnant une vue statique ou dynamique
du système
19
Ing. NTOH MOUALAM Annick
Langages formels :
Langages formels :
En pratique : utilisation de langages formels principalement pour logiciels critiques, ou restreinte aux parties
critiques du système.
2) Documents courants
Cahier des charges : Description initiale des fonctionnalités désirées, généralement écrite par
l’utilisateur
Spécifications : Décrit précisément les conditions que doit remplir le logiciel
Modèle objet : indique les classes et les documents principaux
Scénarios des cas d’utilisation : indique les differents enchaînements possibles du point de vue de
l’utilisateur
Calendrier du projet : Ordre des differentes tâches ; Details et ressources qu’elles demandent
Plan de test du logiciel : Décrit les procédures de tests appliquées au logiciel pour contrôler son bon
fonctionnement
Tests de validation : tests choisis par le client pour déterminer s’il peut accepter le logiciel
Plan d’assurance qualité : Décrit les activités mises en œuvre pour garantir la qualité du
Logiciel
20
Ing. NTOH MOUALAM Annick
Documents produits dans le cycle de vie
21
Ing. NTOH MOUALAM Annick
1) Modèle de processus logiciels
Un modèle de processus logiciels décrit
o Les tâches
o Les artefacts (fichiers, documents, données...)
o Les auteurs
o Les décisions (facultatif)
Règles à observer
o Deux tâches doivent être séparées par un artefact
o Une tâche ne peut être exécutée tant que ses artefacts d’entrée n’existent pas
o Il doit y avoir au moins une tâche de début et une de fin
o Il doit y avoir un trajet depuis chaque tâche jusqu’à la tâche de fin
22
Ing. NTOH MOUALAM Annick
o Deux flèches sortant d’une case peuvent indiquer
• Soit deux sorties simultanées
• Soit deux sorties exclusives
pour représenter (x + y) × (w + z)
23
Ing. NTOH MOUALAM Annick
Chapitre 3. Gestion de projets
24
Ing. NTOH MOUALAM Annick
1) Analyse de la valeur acquise
f) Mesures de base
Somme des quantités de travail estimées pour l’ensemble des tâches devant être achevées à une date
donnée
Total des CBTP et donc l’estimation de la quantité de travail pour le projet entier
VP : valeur prévue
VP = CBT/CBA(cout estimé/achevé)
CBTE : coût budgété´ du travail éffectué
Somme des quantités de travail estimées pour les tâches achevées à une date donnée
Somme des quantités de travail réelles pour l’ensemble des tâches du projet.
g) Indicateurs d’avancement
VA : Valeur acquise
VA = CBTE/CBA
= PA (pourcentage achevé)
IPT = CBTE/CBTP
VE = CBTE −CBTP
25
Ing. NTOH MOUALAM Annick
IC = CBTE/CRTE
VC = CBTE −CRTE
Exemple 1
CBA : somme des estimations des quantités de travail (somme du trav estimé)
CBA = 330jh
Le CBTE est la somme des CBT pour ces tâches(som trav estimé tach 1,2 et 4)
CBTE = 70jh
VA = 70/330 = 21.2%(pourcentage achevé ;somme des valeur prevue pour les taches achevé)
La CRTE est la somme des quantités de travail réelles pour les tâches 1,2 et 4
CRTE = 80jh
IC = 70/80 = 87.5%
VC = 70 − 80 = −10jh
26
Ing. NTOH MOUALAM Annick
Exemple 2
Problème : que deviennent ces indicateurs, à supposer que la tâche 3 a également été achevée avec 140jh de
travail et que nous sommes le 01/07 ?
CBTE = 190jh
CBTP = 250jh
CRTE = 220jh
VA = 190/330 = 57.5%
IC = 190/220 = 86.6%
h) Taux d’erreur
Ex : si une erreur se produit tous les deux jours, TE = 0.5 erreurs par jour
27
Ing. NTOH MOUALAM Annick
Taux d’erreur instantané : estimation du taux d’erreur courant
Taux d’erreur cumulé : bonne estimation des taux d’erreur à venir
Une représentation graphique permet d’estimer les tendances des taux d’erreur par régression
linéaire
y : taux d’erreurs
x : deux possibilités :
Exemple
Les durées entre une série d’erreurs sont les suivantes : 4, 3, 5,
6, 4, 6, 7
Si on prolonge cette courbe, on voit qu’elle coupe l’axe des abscisses pour une valeur de 11 erreurs environ
Permet de :
28
Ing. NTOH MOUALAM Annick
Déterminer l’ordre des tâches
Décider des ressources allouées à chaque tâche
1) Organigramme technique
i) Work Breakdown Structure (WBS)
Objectif : Diviser les tâches principales en tâches plus petites.
Nécessité de :
Structure arborescente
Le premier niveau de décomposition correspond souvent au modèle de cycle de vie adopté
Structure arborescente
o Pas de boucle
o Les actions itératives apparaissent dans le modèle de processus ou dans le modèle de cycle
de vie.
Les descriptions des tâches et des livrables doivent être claires et sans ambigüité
o Chaque livrable doit être associe à une tâche, sans quoi il ne sera pas produit
Chaque tâche doit avoir un critère d’achèvement
o Le plus souvent un livrable
L’achèvement de toutes les sous-tâches doit entrainer l’achèvement de la tâche
Exemple
Modèle de cycle de vie pour la consommation de tartines
29
Ing. NTOH MOUALAM Annick
Modèle de processus pour cuisiner du pain
Choisir la recette
Cuisiner
Manger
Nettoyer
Choisir la recette
Cuisiner
Manger
Nettoyer
30
Ing. NTOH MOUALAM Annick
Choisir la recette
Cuisiner
Mélanger
Manger
Nettoyer
Choisir la recette
Cuisiner
Mélanger
Manger
Nettoyer
Choisir la recette
Cuisiner
Manger
31
Ing. NTOH MOUALAM Annick
Découper en tranches → Tranches de pain
Nettoyer
2) La méthode PERT
Program Evaluation and Review Technique
32
Ing. NTOH MOUALAM Annick
k) Identification des tâches et de leur durée
33
Ing. NTOH MOUALAM Annick
m) Construction du réseau
La crêpe doit être cuite (I) et le mélange doit être flambé (H) pour pouvoir commencer à verser du mélange
sur la crêpe (J)
Quand se terminera le projet ? Quel est le délai nécessaire pour atteindre une étape déterminée ?
Elles se calculent de gauche à droite en partant de 0 et rajoutant la durée de la tâche à la date précédente. En
cas de convergence, on prend la valeur la plus élevée.
Quand doit démarrer le projet pour être achevé à temps ? A quelle date chaque étape doit-elle être atteinte
pour que le projet ne prenne pas de retard ?
Elles se calculent de droite a` gauche en partant de la date de fin au plus tard et en retranchant la durée de la
tâche à la date précédente. En cas de convergence comme au 7 niveau on prend la valeur la plus faible
34
Ing. NTOH MOUALAM Annick
o Chemin critique
La crêpe sera mangée à la date 773 (soit à peu près 13 mn après le début de la fabrication)
Il faut avoir fini la sauce au plus tard à la date 643 (étape 10)
On pourra mélanger le rhum et les bananes au plus tôt à la date 300 (étape 4)
On remarque aussi que certaines étapes ont une marge nulle et que pour d’autres on est plus libre
Un retard dans une tâche sur le chemin critique entrainera un retard dans le projet entier
L’analyse des temps de battements peut motiver une réaffectation des ressources associées à chaque tâche
3) Autres modèles
o) Diagrammes de Gantt
Utilise les dates au plus tôt et des dates au plus tard
35
Ing. NTOH MOUALAM Annick
Devoirs :télécharger l’application Gantt Project
36
Ing. NTOH MOUALAM Annick
a) Le modèle COCOMO de base
COnstructive COst Model
Développé à la firme TRW (organisme du DoD, USA) par B.W. Boehm et son équipe
Petites équipes
Mode semi-détaché
Mode embarqué
Contraintes serrées
Problèmes complexes
c) Calcul de l’effort
Formule générale
Organique
Semi-détaché´
37
Ing. NTOH MOUALAM Annick
Embarque
Estimation modifiant l’estimation brute fournie par le modèle COCOMO de base en se servant des attributs
Logiciel
Matériel
Projet
Personnel
...
38
Ing. NTOH MOUALAM Annick
k) Les attributs du projet
Compétence de l’analyste
Compétence du programmeur
Expérience dans l’utilisation du langage de programmation
Expérience dans le domaine de l’application
Expérience dans l’utilisation du matériel
m) Calcul de l’éffort
Ajouts :
o L’impact de la conduite des coûts sur chaque étape du cycle de développement
o Le projet est analysé comme une hiérarchie : module, sous-système et système
COCOMO expert permet une véritable gestion de projet
o Utile pour de grands projets
39
Ing. NTOH MOUALAM Annick
o Ajustement des paramètres possibles en fonction de données locales portant sur les
habitudes de développement
o Problème : nécessite une estimation de la taille du projet en KLOC
Plutôt que d’estimer le nombre de lignes de code, il peut être plus judicieux d’estimer des points de fonction.
Les éléments les plus courants à prendre en compte sont les :
Interrogations : paires requête-réponse
Entrées : les champs individuels ne sont généralement pas comptés séparément (nom, prénom...
comptent pour 1)
Sorties (comme les entrées)
Fichiers internes : fichiers tels que le client les comprend
Interfaces externes : données partagées avec d’autres programmes
Les coefficients pondèrent une somme du nombre d’éléments récencés pour obtenir les points de
fonction du logiciel
o Manque de standard pour compter les PF
o Estimation des coefficients à faire en interne
o Relation entre points de fonction et coût a` estimer en interne
40
Ing. NTOH MOUALAM Annick
III. Analyse et gestion des risques
1) Le risque
Définition
Risque : probabilité qu’un évènement indésirable ait lieu. Le risque implique des idées de
o Incertitude : les événements ne se produiront pas de manière certaine
o Perte : plus l’évènement est indésirable, plus le risque est grand
Une gestion proactive des risques peut aider à minimiser les effets négatifs d’événements
susceptibles de se produire
2) Types de risques :
o Les risques de projet concernent le déroulement du projet
o Les risques techniques portent sur la qualité du produit
o Les risques commerciaux peuvent affecter sa viabilité
41
Ing. NTOH MOUALAM Annick
Exemple : jeu à deux dés à six faces
L’obtention d’un 7 fait perdre 60 euros, quel est le risque ?
42
Ing. NTOH MOUALAM Annick
IV. Test logiciel
Tester un logiciel : Exécuter le logiciel avec un ensemble de données réelles
« Un programme sans specifications est toujours correct »
Il faut confronter résultats de l’exécution et résultats attendus
Impossibilité de faire des tests exhaustifs
Ex : 2 entiers sur 32 bits en entrée : 264 possibilités. Si 1ms par test, plus de 108 années nécessaires pour
tout tester
Choix des cas de tests :
Il faut couvrir au mieux l’espace d’entrées avec un nombre réduit d’exemples
Les zones sujettes à erreurs nécessitent une attention particulière
1) Tests fonctionnels
Identification, à partir des specifications, des sous-domaines à tester
o Produire des cas de test pour chaque type de sortie du programme
o Produire des cas de test déclenchant les differents messages d’erreur
Objectif : Disposer d’un ensemble de cas de tests pour tester le programme complètement lors de
son implémentation
Test « boîte noire » parce qu’on ne préjuge pas de l’implémentation
o Identification possible des cas de test pertinents avant l’implémentation
o Utile pour guider l’implémentation
Exemple :
Problème : Créer un ensemble de cas de test pour un programme qui
1. Prend trois nombres a, b et c
2. Les interprète comme les longueurs des côtés d’un triangle
3. Retourne le type de triangle
Exemple :
43
Ing. NTOH MOUALAM Annick
44
Ing. NTOH MOUALAM Annick
45
Ing. NTOH MOUALAM Annick
2) Matrices de test
Les matrices de test permettent de :
Formaliser l’identification des sous-domaines a` partir des conditions des spécifications
Indiquer systématiquement si les combinaisons de conditions sont vraies ou fausses
Toutes les combinaisons possibles de V et de F seront examinées
46
Ing. NTOH MOUALAM Annick
Exemple :
A partir des specifications, on identifie des conditions d’exécution du programme qui permettront de
produire les sorties voulues :
3) Tests structurels
Tests « boîte blanche » : détermination des cas de test en fonction du code
Critère de couverture : Règle pour sélectionner les tests et déterminer quand les arrêter
o Au pire, on peut sélectionner des cas de test au hasard jusqu’à ce que le critère choisi soit
satisfait
Oracle : Permet de déterminer la sortie attendue associée aux cas sélectionnés
o Difficile à mettre en place si on veut automatiser complètement le processus de test
47
Ing. NTOH MOUALAM Annick
Après le quatrième test, toutes les instructions sont exécutées Il est rare que le jeu minimal soit bon d’un
point de vue fonctionnel.
48
Ing. NTOH MOUALAM Annick
c) Test de tous les chemins
49
Ing. NTOH MOUALAM Annick
4) Test de flot de données
Test structurel
S’appuie sur la circulation des données à l’intérieur du programme
o Elles circulent depuis l’endroit où elles sont definies jusqu’à celui où elles sont utilisées
def : definition d’une donnée, correspond à l’attribution d’une valeur à une variable
c-use : utilisation pour calcul, la variable apparait à droite d’un opérateur
d’affectation
p-use : utilisation comme prédicat dans une condition
o A noter :
L’utilisation p-use est attribuée aux deux branches conditionnelles
Un chemin sans definition, noteé def-free, va de la definition d’une variable à une
utilisation sans passer par d’autres definitions
50
Ing. NTOH MOUALAM Annick
o Depuis J jusqu’à K : chemin JK
dpu : les p-use portent sur les variables a,b et c qui ne sont définies que dans le nœud ABC
o Depuis ABC jusqu’a` l’arc ABC-D
o Depuis ABC jusqu’a` l’arc ABC-E
o Depuis ABC jusqu’a` l’arc E-F
o Depuis ABC jusqu’a` l’arc E-G
o Depuis ABC jusqu’a` l’arc G-H
o Depuis ABC jusqu’a` l’arc G-I
o Depuis ABC jusqu’a` l’arc I-J
51
Ing. NTOH MOUALAM Annick
Chapitre 4. L’ergonomie du logiciel
Comment évaluer l’ergonomie d’un logiciel ou un progiciel préexistant ?
L’ergonomie peut être définie comme l’ensemble des connaissances scientifiques relatives à l’homme et
nécessaires pour concevoir des outils, des techniques et des dispositifs qui puissent être utilisés avec
le maximum de confort, de sécurité et d’efficacité.
• l’effort de prise en compte de la globalité d’une situation de travail (contenu des tâches,
environnement, organisation, formation...);
Plus précisément, l’ergonomie du logiciel a pour objectif de permettre une meilleure adéquation des
applications informatiques aux besoins des utilisateurs.
Problématique de l’ergonomie :
52
Ing. NTOH MOUALAM Annick
Fig. Illustration du principe d’une communication ergonomique
En regardant la figure ci-dessus, dans toute communication, ce qui importe, ce n’est pas l’étape 1 mais bien
finalement l’étape 5 ! Les outils que l’on vous a donné lors des précédentes interventions permettent de
passer de l’étape 2 à l’étape 3. Nous allons maintenant approfondir le passage de l’étape 3 à 4.
Dans certaines entreprises multinationales les taches sont séparées mais c’est loin d’être le cas de toutes les
structures.
3) Présentation de l’intervention
L’objectif que nous nous sommes fixé ici, est de vous sensibiliser à l’importance de l’ergonomie et de
vous donner quelques points de repère vous permettant d’être rapidement opérationnel, lors de vos
prochaines expériences professionnelles.
Certaines personnes passent plus de 4 ans à étudier l’ergonomie, nous n’avons évidemment pas la
prétention d’être exhaustif, c’est la raison pour laquelle nous avons choisi de vous présenter des résultats
sous forme de « règles », que l’on pourrait classer sous la rubrique « trucs et astuces » dans un
magasine informatique, mais qui résulte d’études sérieuses.
Pour vous permettre d’appréhender cela, nous allons d’abord nous intéresser à l’Ergonomie en rentrant un
peu dans les « détails conceptuels ». Nous établirons ensuite une grille de critères à observer et nous
terminerons par l’étude de site Internet pour voir concrètement la mise en application de ces principes.
53
Ing. NTOH MOUALAM Annick
Cette étude se fait autant sous l'aspect humain de ces fonctions que sous ceux de la modélisation et de la
simulation artificielle, en tenant compte de la validité biologique de tels modèles. Classiquement,
les champs disciplinaires intéressés par les sciences cognitives sont :
- les Sciences Humaines : Psychologie cognitive & Linguistique pour l'étude de l'humain et du langage ;
composantes biologiques ;
pour la modélisation.
- D'autres sciences peuvent encore s'ajouter à cette liste, telles la philosophie, l'épistémologie ou
l'anthropologie (parmi les sciences humaines), ainsi que la physique (pour son apport aux Sciences
de l'artificiel).
Les sciences cognitives forment ainsi un domaine de recherche qui se nourrit de la confrontation des points
de vue des divers secteurs liés à l'étude de la cognition, pariant sur les possibilités d'interfécondation
des visions et sur le développement des études transcendant les diverses disciplines
Il est intéressant de constater que les formations d’ergonome (que ce soit en Europe ou aux Etats-Unis), ne
sont que des spécialisations auxquelles on ne peut postuler qu’après plusieurs années d’étude (en général
4).
Gardez donc en mémoire les préalables à l’ergonomie et n’oubliez pas que la question de fond
reste « comment l’utilisateur va-t-il appréhender/comprendre l’outil ? » et non comment faire quelque chose
de beau !
54
Ing. NTOH MOUALAM Annick
Par la suite, on retrouve les ergonomes dans les domaines où il a fallu optimiser les conditions de travail.
C’est à dire dans tous les milieux soumis à de forte contrainte de vitesse, de précision, de stress… On peut
citer les aéroports, les hôpitaux, les centre de service d’urgence, l’informatique (hardware et software),
l’automobile et parfois –mais plus rarement– dans le domaine du mobilier.
Pour approfondir la question, vous pourrez consulter plus tard les sites d’ergonomes que nous avons mis sur
le réseau.
Le challenge d’une application Web est de rendre accessible via un petit écran de 800 x 600 pixel, des
informations ou des produits qui étaient parfois disposés dans des entrepôts de plusieurs centaines de mètres
carrés. Il faut donc pouvoir retranscrire l’appréhension visuelle qu’avait l’utilisateur en arrivant dans son
entrepôt ou sa pièce. Pour cela, il est important de rendre lisible la structure de votre site. Comment:
- avec un plan du site si la structure n’est pas suffisamment lisible, ou si le site est trop grand pour que
l’utilisateur ne puisse sans effort avoir une vue d’ensemble,
Remarques :
- Notez que la structure « visuelle » que vous donnez à votre utilisateur n’est pas forcément calquée
sur l’architecture technique que vous avez déterminée au préalable.
- Dans le cas d’un site commercial ou vous cherchez à vendre quelque chose, des études ont montré que
vous avez le droit à 3 cliques et moins d’une minute pour « ferrer » le client !
Mode de fonctionnement des moteurs de recherche, importance du titre des pages et des mots clefs,
présentation du « profiling ».
- Se faire référencer :
Sans rentrer dans les détails, il est important de savoir comment rendre accessible son site sur le Web.
Il existe des moteurs de recherche (type « google » ou « alta vista ») et des annuaires (type « Yahoo »). Dans
le premier cas, il n’y a aucune démarche à faire pour se faire référencer, ce sont des petits « moteurs » qui
55
Ing. NTOH MOUALAM Annick
parcourent le Web et référence les sites en fonction des mots clefs indiqués dans au début du code HTML
et des mots figurants dans le site.
Dans le deuxième cas, il faut inscrire le site sur une liste, et son site est ensuite visité manuellement ou
toujours à l’aide de « robot » pour vérifier certains critères.
Quand on veut rendre un site accessible sur le Web, il est bien sur capital d’être bien référencé si on veut
être visité.
Les termes que l’on choisit dans la définition de ses mots clefs sont déterminant.
- une forte densité d’affichage entraîne davantage d’erreurs de la part de l’utilisateur et augmente le temps
- une trop grande dilution de l’information dans un trop grand nombre de fenêtres gêne l’utilisateur dans sa
perception globale de l’application.
56
Ing. NTOH MOUALAM Annick
b) La disposition des éléments dans les fenêtres
Pour regrouper les données (regroupement au sein de rubriques) et définir leur enchaînement
(chronologie de présentation des données affichées ou à saisir), tenir compte des habitudes de travail
de l’utilisateur :
- fréquence d’utilisation,
Présenter les groupes de données les plus importants selon le critère privilégié (par exemple, fréquence
d’utilisation) vers le haut de la fenêtre.
Remarque : si le travail de l’utilisateur s’appuie sur un formulaire papier, et si ce formulaire est bien
construit, faire en sorte que la disposition des champs dans la fenêtre soit proche de la structure du
formulaire.
Aligner verticalement les champs de saisie et/ou d’affichage avec leurs libellés ; la justification peut
se faire de trois manières :
- 1 : si les « libellés » sont de dimension sensiblement identique, justifier les champs et les libellés à gauche
;
- 2 : si les libellés sont de dimensions très variables, justifier ces libellés à droite et les champs à gauche ;
- 3 : il est également possible de disposer les libellés au-dessus des « champs de saisie » ; il faut alors les
justifier à gauche.
57
Ing. NTOH MOUALAM Annick
Attribuer un libellé à chaque donnée et à chaque groupe de données.
Séparer les différentes catégories d’informations par des espaces et éventuellement par des boîtes
de groupe (= encadrements).
- utiliser uniquement celles qui sont le plus largement adoptées par les utilisateurs car ces derniers pourront
avoir rencontré certaines abréviations qui signifient autre chose ;
- préférer la contraction (omission des lettres internes) pour les mots courts ;
- préférer la troncature pour les mots longs (omission des lettres finales).
- Par souci d’homogénéité, ne pas utiliser de synonymes : désigner toujours un même objet ou une même
action par le même libellé.
58
Ing. NTOH MOUALAM Annick
Lors de la création de listes d’éléments, on peut être confronté à des éléments de texte trop longs
pour contenir dans l’espace d’une ligne de la liste. Dans ce cas, supprimer des parties de texte dans
le milieu du libellé et y insérer des points de suspension, conservant ainsi le début et la fin du libellé
de l’élément. Attention toutefois :
dans certains cas, il sera plus judicieux de conserver le début du libellé et de faire suivre ce dernier par des
points de suspension.
Repérer chaque champ, liste, tableau, colonne ou groupe de données par un libellé. On distingue
trois grands types de libellés :
- l’en-tête de colonne, à utiliser pour identifier la colonne d’un tableau ou d’une liste ;
- l’en-tête de groupe, à utiliser pour identifier un ensemble de données rassemblées sous la forme
d’un groupe.
d) La typographie
Concernant la taille des caractères :
taille minimum : 8 points ; des caractères de plus petite taille sont quasiment illisibles ;
taille maximum : 16 points ; l’utilisation de caractères de plus grande taille gêne la lisibilité.
e) La couleur
La couleur peut être employée pour coder visuellement l’information : différenciation et identification des
informations affichées.
La couleur ne doit pas être le seul moyen utilisé pour communiquer de l’information et ne devrait
pas être le seul élément qui distingue deux objets ; il doit y avoir d’autres indicateurs (libellés,
forme, disposition) ;appliquez ce principe surtout pour tenir compte des utilisateurs daltoniens ou
achromates mais aussi pour les écrans monochromes (même si ces derniers sont « rares » !)
59
Ing. NTOH MOUALAM Annick
Choisir les couleurs en gardant à l’esprit que l’objectif est de faciliter la lisibilité des informations
affichées. C’est pourquoi certaines associations de couleurs doivent être évitées. Ainsi, essayer de
ne jamais utiliser ensemble :
Pour le fond des fenêtres, éviter les teintes de rouge, de jaune et de ses dérivés (vert, orange, …). Privilégier
plutôt le gris pâle, sinon du bleu foncé.
Pour de l’information que l’utilisateur doit lire, éviter le bleu pâle (et les couleurs pâles en général).
Homogénéité : au sein d’une même application et entre différentes applications destinées à un même
groupe d’utilisateurs, toujours choisir les mêmes “ codages couleur ”.
Respecter les règles d’association conventionnelles entre la couleur et sa signification :
Eviter d’utiliser plus de 5 ou 6 couleurs différentes dans une même fenêtre (mais également
au sein d’une même application). Au-delà de 5 ou 6, cela entraîne une surcharge visuelle
et l’utilisateur éprouve des difficultés à saisir le rôle joué par la couleur au sein de l’application.
Concernant les états sur les imprimantes noir et blanc : s’assurer que chaque couleur reste
visible sur les impressions (il doit y avoir correspondance entre les couleurs qui apparaissent à
l’écran et les niveaux de gris des sorties papier ; si le nombre de niveaux de gris disponible est
insuffisant, prévoir des hachures).
Comme nous avons pu le constater ensemble, la bonne ergonomie de ses applications Web ne tient pas à
grand-chose, il suffit de faire attention à un certain nombre de critères.
Notez tout de même que, la prise en compte de ces recommandations ne se substitue pas à la
connaissance des utilisateurs ni à la connaissance de leur travail ; elle ne remplace pas une analyse
du travail, elle est simplement complémentaire à un travail d’analyse de la cible. Ces recommandations
sont particulièrement applicables pour les sites Internet qui ne ciblent pas de public particulier.
60
Ing. NTOH MOUALAM Annick
Chapitre 5. Production du code source
L'objectif de ce chapitre est de présenter les enjeux et les solutions liés à la production du code source d'un
logiciel.
Introduction
Le code source est le cœur d'un projet logiciel. Il est essentiel que tous les membres de l'équipe de
développement se coordonnent pour adopter des règles communes dans la production de ce code.
L'objectif de ces règles est l'uniformisation de la base de code source du projet. Les avantages liés sont
les suivants :
La consultation du code est facilitée.
Les risques de duplication ou d'erreurs liées à des pratiques disparates sont éliminés.
Chaque membre de l'équipe peut comprendre et intervenir sur d'autres parties que celles qu'il a
lui-même réalisées.
Les nouveaux venus sur le projet mettront moins longtemps à être opérationnels.
Il est important de garder à l'esprit qu'un développeur passe en moyenne beaucoup plus de temps à lire
qu'à écrire du code.
Convention de nommage
Une première série de règle concerne le nommage des différents éléments qui composent le code.
Il n'existe pas de standard universel à ce sujet.
La convention la plus fréquemment adoptée se nomme camelCase (ou parfois lowerCamelCase).
Elle repose sur deux grands principes :
Les noms des classes (et des méthodes en C#, pour être en harmonie avec le framework .NET)
commencent par une lettre majuscule.
Les noms de tous les autres éléments (variables, attributs,
paramètres, etc) commencent par une lettre minuscule.
Si le nom d'un élément se compose de plusieurs mots, la première lettre de chaque mot suivant le
premier s'écrit en majuscule.
Voici un exemple de classe conforme à cette convention.
61
Ing. NTOH MOUALAM Annick
On peut ajouter à cette convention une règle qui impose d'utiliser le pluriel pour nommer les éléments
contenant plusieurs valeurs, comme les tableaux et les listes. Cela rend le parcours de ces éléments
plus lisible.
Langue utilisée
La langue utilisée dans la production du code doit bien entendu être unique sur tout le projet.
Le français ( idClientSuivant) et l'anglais ( nextClientId ) ont chacun leurs avantages et leurs
inconvénients. On choisira de préférence l'anglais pour les projets de taille importante ou destinés
à être publiés en ligne.
Formatage du code
La grande majorité des IDE et des éditeurs de code offrent des fonctionnalités de formatage
automatique du code. A condition d'utiliser un paramétrage commun, cela permet à chaque
membre de l'équipe de formater rapidement et uniformément le code sur lequel il travaille.
Les paramètres de formatage les plus courants sont :
Taille des tabulations (2 ou 4 espaces).
Remplacement automatique destabulations par des espaces.
Passage ou non à la ligne après chaque accolade ouvrante ou fermante.
Ajout ou non d'un espace avant une liste de paramètres.
...
Sous Visual Studio, la commande de formatage automatique du code est Edition->Avancé-
>Mettre le document en forme.
62
Ing. NTOH MOUALAM Annick
Voici quelques exemples de paramétrages possibles du formatage (menu Outils->Options).
Commentaires
L'ajout de commentaires permet de faciliter la lecture et la compréhension d'une portion de code source.
L'ensemble des commentaires constitue une forme efficace de documentation d'un projet logiciel.
Il n'y a pas de règle absolue, ni de consensus, en matière de taux de commentaires dans le code source.
Certaines méthodologies de développement agile (eXtreme Programming) vont jusqu'à affirmer qu'un
code bien écrit se suffit à lui-même et ne nécessite aucun ajout de commentaires.
Dans un premier temps, il vaut mieux se montrer raisonnable et commenter les portions de code
complexes ou essentielles : en-têtes de classes, algorithmes importants, portions atypiques,etc. Il faut
éviter de paraphraser le code source en le commentant, ce qui alourdit sa lecture et n'est d'aucun intérêt.
63
Ing. NTOH MOUALAM Annick
Voici quelques exemples de commentaires inutiles : autant lire directement les instructions décrites.
64
Ing. NTOH MOUALAM Annick
Chapitre 6. Systèmes de gestion de versions
Notion de gestion de versions
Pour éviter de se tromper sur le bon fichier ou d’écraser un fichier plus récent, et bien d’autres situations,
on peut faire appel au système de gestion de versions ; qui facilitera la gestion de plusieurs versions d’un
même fichier. Ainsi de façon globale, chaque membre de l'équipe pourra récupérer la dernière version des
fichiers du projet, modifier le fichier de son choix et le livrer une fois le travail terminé.
Pour obtenir des résultats de qualité et une meilleure organisation de votre projet, il est donc recommandé
d’utiliser un outil logiciel de gestion de versions. Ils aident en plus à simplifier et mieux organiser
l’arborescence du projet. Il ne nous encombre pas avec des versions physiques nombreuses du même fichier.
Bien sûr, même si on dispose d'un unique fichier, on peut à tout moment récupérer l'historique des
modifications effectuées ainsi que n'importe quelle version antérieure. On pourra même parfois effectuer
la fusion de modifications entre plusieurs version d'un même fichier.
Un exemple d’outil de gestion de version est « SVN » (gratuit, successeur de CVS), très performant, et
compatible avec n'importe quel type de fichier.
Par ailleurs, on peut bloquer les modifications sur un fichier pendant que l'on travaille dessus. De cette
manière, vous pouvez empêcher un autre membre de l'équipe d'y accéder et de créer une version concurrente
à la vôtre.
Il faut signaler ici que s’il arrive que si deux membres de l'équipe travaillent sur le même fichier, le chef de
projet n'a pas fait correctement son travail d'affectation des tâches.
Le système SVN peut fonctionner à distance. Les données de l'équipe qui sont centralisées sur le
serveur distant peuvent être récupérées via le net suivant différents protocoles, dont plusieurs sécurisés.
N’oubliez pas que lorsque l'équipe devient importante (>3), une petite amélioration peut consister à héberger
sur votre serveur le site internet de l'équipe. Réalisé sous la forme d'un site de news, il vous permettra
d'assurer la communication du projet, en interne et en externe.
65
Ing. NTOH MOUALAM Annick
La gestion des versions d'un logiciel, en utilisant comme exemple l'outil Git.
Nous avons déjà mentionné qu'un projet logiciel d'entreprise a une durée de vie de plusieurs années et subit
de nombreuses évolutions au cours de cette période. On rencontre souvent le besoin de livrer de
nouvelles versions qui corrigent des bogues ou apportent de nouvelles fonctionnalités. Le code source
du logiciel "vit" donc plusieurs années. Afin de pouvoir corriger des problèmes signalés par un
utilisateur du logiciel, on doit savoir précisément quels fichier source font partie de quelle(s) version(s).
En entreprise, seuls une petite minorité de logiciels sont conçus par un seul développeur. La
grande majorité des projets sont réalisés et/ou maintenus par une équipe de
plusieurs personnes travaillant sur la même base de code source. Ce
travail en parallèle est source de complexité :
Comment récupérer le travail d'un autre membre de l'équipe ?
Comment publier ses propres modifications ?
Comment faire en cas de modifications conflictuelles (travail sur le même fichier source qu'un
ou plusieurs collègues) ?
Comment accéder à une version précédente d'un fichier ou du logiciel entier ?
Pour les raisons précédentes, tout projet logiciel d'entreprise (même mono-développeur) doit faire l'objet
d'une gestion des versions (Revision Control System ou versioning). La gestion des versions vise les
objectifs suivants :
Assurer la pérennité du code source d'un logiciel.
Permettre le travail collaboratif.
Fournir une gestion de l'historique du logiciel.
La gestion des versions la plus basique consiste à déposer le code source sur un répertoire partagé
par l'équipe de développement. Si elle permet à tous de récupérer le code, elle n'offre aucune solution aux
autres complexités du développement en équipe et n'autorise pas la gestion des versions.
66
Ing. NTOH MOUALAM Annick
Afin de libérer l'équipe de développement des complexités du travail collaboratif, il existe une
catégorie de logiciels spécialisés dans la gestion des versions.
Un logiciel de gestion des versions est avant tout un dépôt de code qui héberge le code source du projet.
Chaque développeur peut accéder au dépôt afin de récupérer le code source, puis de publier ses
modifications. Les autres développeurs peuvent alors récupérer le travail publié.
Le logiciel garde la trace des modifications successives d'un fichier. Il permet d'en visualiser l'historique
et de revenir à une version antérieure.
Un logiciel de gestion des versions permet de travailler en parallèle sur plusieurs problématiques (par
exemple, la correction des bogues de la version publiée et l'avancement sur la future version) en créant des
branches. Les modifications réalisées sur une branche peuvent ensuite être intégrées (merging) à une autre.
En cas d'apparition d'un conflit (modifications simultanées du même fichier par plusieurs développeurs),
le logiciel de gestion des versions permet de comparer les versions du fichier et de choisir les
modifications à conserver ou à rejeter pour créer le fichier fusionné final.
Le logiciel de gestion des versions permet de regrouper logiquement des fichiers par le biais du
tagging : il ajoute aux fichiers source des tags correspondant aux différentes versions du logiciel.
67
Ing. NTOH MOUALAM Annick
mais handicape le travail en mode déconnecté : une connexion au logiciel de SCM est indispensable.
Une seconde catégorie est apparue il y a peu. Elle consiste à voir le logiciel de gestion des versions
comme un outil individuel permettant de travailler de manière décentralisé (hors ligne). Dans ce cas de
figure, il existe autant de dépôts de code que de développeurs sur le projet. Le logiciel de gestion des
versions fournit heureusement un service de synchronisation entre toutes ces bases de code. Cette solution
fonctionne suivant le principe du pair-à-pair. Cependant, il peut exister un dépôt de référence
68
Ing. NTOH MOUALAM Annick
contenant les versions livrées.
Les logiciels de SCM décentralisés sont apparus plus récemment. On peut citer Mercurial et surtout
Git, que nous utiliserons dans la suite de ce chapitre. Ce sont également des logiciels libres. Microsoft
fournit un logiciel de SCM développé sur mesure pour son environnement. Il se nomme TFS (Team
Foundation Server) et fonctionne de manière centralisée. TFS est une solution payante. Il est
tout à fait possible de gérer le code source d'un projet .NET avec un autre outil de gestion des versions que
TFS.
a) Présentation de Git
Git est un logiciel libre de gestion des versions. C'est un outil qui permet d'archiver et de maintenir les
différentes versions d'un ensemble de fichiers textuels constituant souvent le code source d'un projet
logiciel. Créé à l'origine pour gérer le code du noyau Linux, il est multi-langages et multi-plateformes Git
est devenu à l'heure actuelle un quasi-standard.
69
Ing. NTOH MOUALAM Annick
Fonctionnement
Git rassemble dans un dépôt (repository ou repo) l'ensemble des données associées au projet.
Il fonctionne de manière décentralisée : tout dépôt Git contient l’intégralité des données (code source,
historique, versions, etc). Chaque participant au projet travaille à son rythme sur son dépôt
local. Il existe donc autant de dépôts que de participants. Git offre des
mécanismes permettant de synchroniser les modifications entre tous les dépôts.
Un dépôt Git correspond physiquement à un ensemble de fichiers rassemblés dans un répertoire .git.
Sauf cas particulier, il n'est pas nécessaire d'intervenir manuellement dans ce répertoire.
Lorsqu'on travaille avec Git, il est essentiel de faire la distinction entre trois zones :
Le répertoire de travail (working directory) correspond aux fichiers actuellement sauvegardés
localement.
L'index ou staging area est un espace de transit.
HEAD correspond aux derniers fichiers ajoutés au dépôt.
70
Ing. NTOH MOUALAM Annick
Chapitre 7. Travail collaboratif
L'objectif de ce chapitre est de présenter les enjeux du travail collaboratif dans le cadre de la réalisation d'un
logiciel.
• signaler des problèmes ou proposer des améliorations qui peuvent ensuite être discutés collectivement ;
Pour répondre à ces besoins, des plates-formes de publication et de partage de code en ligne sont apparues.
On les appelle parfois des forges logicielles. La plus importante à l'heure actuelle est la plate-forme GitHub.
Présentation de GitHub
GitHub est une plate-forme web d'hébergement et de partage de code. Comme son nom l'indique, elle se
base sur le logiciel Git.
Le principal service proposé par GitHub est la fourniture de dépôts Git accessibles en ligne. Elle offre aussi
une gestion des équipes de travail (organizations et teams), des espaces d'échange autour du code (issues et
pull requests), des statistiques, etc.
GitHub est utilisée par pratiquement toutes les grandes sociétés du monde du logiciel, y compris
Microsoft, Facebook et Apple. Pour un développeur, GitHub peut constituer une vitrine en ligne de son
travail et un atout efficace pour son employabilité.
1) Modèle économique
Le business model de GitHub est le suivant :
71
Ing. NTOH MOUALAM Annick
• la création d'un compte et de dépôts publics est gratuite ;
Ce modèle économique est à l'origine de l'énorme popularité de GitHub pour la publication de projets open
source.
GitHub peut offrir des dépôts privés gratuits aux étudiants et aux établissements scolaires.
• BitBucket autorise les dépôts privés gratuits, mais limite la taille de l'équipe à cinq personnes ;
• GitLab est une solution open core pour installer sur ses propres serveurs une plate-forme similaire à
GitHub.
2) Fonctionnement
Sur GitHub, un dépôt est associé à un utilisateur individuel ou à une organisation. Il est ensuite accessible
via une URL de la forme https://github.com/.../nomDuDepot.git.
L'organisation du travail en équipe autour de GitHub peut se faire suivant deux modèles distincts.
Un dépôt GitHub fait office de dépôt central pour l'équipe. Après avoir obtenu les droits nécessaires,
chaque développeur clone ce dépôt (git clone) sur sa machine de travail. Ensuite, chacun peut envoyer ses
modifications locales vers le dépôt commun (git push) et récupérer celles des autres membres de l'équipe
72
Ing. NTOH MOUALAM Annick
(git pull).
Un dépôt GitHub principal est forké (dévié, détourné ?) par chaque développeur pour en obtenir une copie
exacte sur son compte GitHub, puis cloné sur sa machine locale. Les modifications sont pushées (envoyées
?) sur GitHub, puis le développeur émet une demande d'intégration (pull request) pour signaler au
responsable du dépôt commun qu'il a effectué des améliorations de son côté. Ce responsable étudie le code
ajouté et décide de l'intégrer ou non dans le dépôt principal.
3) Issues
Parmi les autres services proposés par GitHub, les issues (« sujets de discussion ») permettent de
communiquer autour du projet. Elles sont souvent utilisées pour signaler des problèmes ou proposer des
idées.
73
Ing. NTOH MOUALAM Annick
74
Ing. NTOH MOUALAM Annick
Chapitre 8. Documentation
L'objectif de ce chapitre est de découvrir les différents aspects associés à la documentation d'un logiciel.
Introduction
Nous avons déjà mentionné à plusieurs reprises qu'un logiciel a une durée de vie de plusieurs années et subit
de nombreuses évolutions au cours de cette période. En entreprise, seule une petite minorité de
logiciels sont conçus par un seul développeur. La grande majorité des projets sont réalisés et/ou maintenus
par une équipe de plusieurs personnes travaillant sur la même base de code source. Il est fréquent que les
effectifs changent et que des développeurs soient amenés à travailler sur un logiciel sans avoir participé à
sa création. L'intégration de ces nouveaux développeurs doit être aussi rapide et efficace que possible.
Cependant, il est malaisé, voire parfois très difficile, de se familiariser avec un logiciel par la seule lecture
de son code source. En complément, un ou plusieurs documents doivent accompagner le logiciel. On peut
classer cette documentation en deux catégories :
• la documentation technique ;
• la documentation utilisateur.
Documentation technique
1) Rôle
Le mot-clé de la documentation technique est « comment ». Il ne s'agit pas ici de dire pourquoi le logiciel
existe ni de décrire ses fonctionnalités attendues. Ces informations figurent dans d'autres documents comme
le cahier des charges. Il ne s'agit pas non plus d'expliquer à un utilisateur du logiciel ce qu'il doit faire pour
effectuer telle ou telle tâche : c'est le rôle de la documentation utilisateur.
2) Public visé
La documentation technique est écrite par des informaticiens, pour des informaticiens. Elle nécessite
des compétences techniques pour être comprise. Le public visé est celui des personnes qui interviennent sur
le logiciel du point de vue technique : développeurs, intégrateurs, responsables techniques, éventuellement
chefs de projet.
Dans le cadre d'une relation maîtrise d'ouvrage / maîtrise d'œuvre pour réaliser un logiciel, la responsabilité
de la documentation technique est à la charge de la maîtrise d'œuvre. Bien sûr, le ou les document(s)
associé(s) sont fournis à la MOA en fin de projet.
3) Contenu
Le contenu de la documentation technique varie fortement en fonction de la structure et de la complexité du
logiciel associé. Néanmoins, nous allons décrire les aspects que l'on y retrouve le plus souvent.
75
Ing. NTOH MOUALAM Annick
a) Modélisation
La documentation technique inclut les informations liées au domaine du logiciel. Elle précise comment les
éléments métier ont été modélisés informatiquement au sein du logiciel.
Si le logiciel a fait l'objet d'une modélisation de type entité-association, la documentation technique présente
le modèle conceptuel résultat.
Si le logiciel a fait l'objet d'une modélisation orientée objet, la documentation technique inclut une
représentation des principales classes (souvent les classes métier) sous la forme d'un diagramme de classes
respectant la norme UML.
76
Ing. NTOH MOUALAM Annick
Si le logiciel utilise une base de données, la documentation technique doit présenter le modèle d'organisation
des données retenu, le plus souvent sous la forme d'un modèle logique sous forme graphique.
b) Architecture
La phase d'architecture d'un logiciel permet, en partant des besoins exprimés dans le cahier des charges, de
réaliser les grands choix qui structureront le développement : technologies, langages, patrons utilisés,
découpage en sous-parties, outils, etc.
La documentation technique doit décrire tous ces choix de conception. L'ajout de schémas est conseillé, par
exemple pour illustrer une organisation logique multicouche.
77
Ing. NTOH MOUALAM Annick
L’implantation physique des différents composants (appelés parfois tiers) sur une ou plusieurs machines
doit également être documentée.
Afin que les nouveaux développeurs les connaissent et les respectent, ces normes et standards doivent
être présentés dans la documentation technique.
d) Génération
Le processus de génération (« build ») permet de passer des fichiers sources du logiciel aux éléments
exécutables.
Sa complexité est liée à celle du logiciel. Dans les cas simples, toute la génération est effectuée
de manière transparente par l'IDE utilisé. Dans d'autres, elle se fait en plusieurs étapes et doit donc être
documentée.
e) Déploiement
La documentation technique doit indiquer comment s'effectue le déploiement du logiciel, c'est-à-dire
l'installation de ses différents composants sur la ou les machines nécessaire(s). Là encore, cette étape peut
être plus ou moins complexe et nécessiter plus ou moins de documentation.
78
Ing. NTOH MOUALAM Annick
f) Documentation du code source
Il est également possible de documenter un logiciel directement depuis son code source en y
ajoutant des commentaires (voir plus haut). Certains langages disposent d'un format spécial de commentaire
permettant de créer une documentation autogénérée
Le langage Java a le premier introduit une technique de documentation du code source basée sur
l'ajout de commentaires utilisant un format spécial. En exécutant un outil du JDK appelé javadoc, on obtient
une documentation du code source au format HTML.
L'avantage de cette approche est qu'elle facilite la documentation du code par les développeurs, au fur et à
mesure de son écriture. Depuis, de nombreux langages ont repris l'idée.
Voici un exemple de documentation d'une classe C#, qui utilise une syntaxe légèrement différente.
79
Ing. NTOH MOUALAM Annick
La documentation utilisateur
1) Rôle
Contrairement à la documentation technique, la documentation d'utilisation ne vise pas à faire comprendre
comment le logiciel est conçu. Son objectif est d'apprendre à l'utilisateur à se servir du logiciel.
• utile : une information exacte, mais inutile, ne fait que renforcer le sentiment d'inutilité et gêne la recherche
de l'information pertinente ;
• agréable : sa forme doit favoriser la clarté et mettre en avant les préoccupations de l'utilisateur et non pas
les caractéristiques techniques du produit.
2) Public visé
Le public visé est l'ensemble des utilisateurs du logiciel. Selon le contexte d'utilisation, les utilisateurs du
logiciel à documenter peuvent avoir des connaissances en informatique (exemples : cas d'un IDE ou d'un
outil de SCM).
Cependant, on supposera le plus souvent que le public visé n'est pas un public d'informaticiens.
Conséquence essentielle : toute information trop technique est à bannir de la documentation d'utilisation.
Pas question d'aborder l'architecture MVC ou les design patterns employés : ces éléments ont leur place
dans la documentation technique.
D'une manière générale, s'adapter aux connaissances du public visé constitue la principale difficulté de la
rédaction de la documentation d'utilisation.
3) Formes possibles
a) Manuel utilisateur
La forme la plus classique de la documentation d'utilisation consiste à rédiger un manuel utilisateur, le plus
souvent sous la forme d'un document bureautique. Ce document est structuré et permet aux utilisateurs de
retrouver les informations qu'ils recherchent. Il intègre très souvent des captures d'écran afin d'illustrer le
propos.
création d'un compte, ajout d'écritures, pointage… Cette organisation plaît souvent aux utilisateurs, car elle
leur permet d'accéder facilement aux informations essentielles. En revanche, s'informer sur une
fonctionnalité avancée ou un détail complexe peut s'avérer difficile ;
• manuel de référence : dans ce mode d'organisation, on décrit une par une chaque fonctionnalité du logiciel,
sans se préoccuper de leur ordre ou de leur fréquence d'utilisation. Par exemple, on décrit l'un après l'autre
chacun des boutons d'une barre de boutons, alors que certains sont plus « importants » que d'autres. Cette
80
Ing. NTOH MOUALAM Annick
organisation suit la logique du créateur du logiciel plutôt que celle de son utilisateur. Elle est en général
moins appréciée de ces derniers.
b) Tutoriel
De plus en plus souvent, la documentation d'utilisation inclut un ou plusieurs tutoriel(s), destiné(s) à faciliter
la prise en main initiale du logiciel. Un tutoriel est un guide pédagogique constitué d'instructions détaillées
pas à pas en vue d'objectifs simples.
Le tutoriel a l'avantage de « prendre l'utilisateur par la main » afin de l'aider à réaliser ses premiers pas avec
le logiciel qu'il découvre, sans l'obliger à parcourir un manuel utilisateur plus ou moins volumineux. Il peut
prendre la forme d'un document texte, ou bien d'une vidéo ou d'un exercice interactif. Cependant, il est
illusoire de vouloir documenter l'intégralité d'un logiciel en accumulant les tutoriels.
c) FAQ
Une Foire Aux Questions (en anglais Frequently Asked questions) est une liste de questions/réponses sur
un sujet.
La création d'une FAQ permet d'éviter que les mêmes questions soient régulièrement posées.
d) Aide en ligne
L'aide en ligne est une forme de documentation d'utilisation accessible depuis un ordinateur. Il peut s'agir
d'une partie de la documentation publiée sur Internet sous un format hypertexte.
Quand une section de l'aide en ligne est accessible facilement depuis la fonctionnalité d'un logiciel qu'elle
concerne, elle est appelée aide contextuelle ou aide en ligne contextuelle. Les principaux formats d'aide en
ligne sont le HTML et le PDF. Microsoft a publié plusieurs formats pour l'aide en ligne des logiciels tournant
sous Windows : HLP, CHM ou encore MAML.
81
Ing. NTOH MOUALAM Annick
Un moyen simple et efficace de fournir une aide en ligne consiste à définir des infobulles (tooltips). Elles
permettent de décrire succinctement une fonctionnalité par survol du curseur.
Conseils de rédaction
1) Structure
Qu'elle soit technique ou d'utilisation, toute documentation doit absolument être écrite de manière structurée,
afin de faciliter l'accès à une information précise.
• utiliser des styles de titres, une table des matières, des références…
2) Niveau de langage
Comme dit plus haut, le public visé n'a pas forcément d'expérience informatique : il faut bannir les
explications trop techniques et penser à définir les principaux termes et le « jargon » utilisé.
Une documentation doit être rédigée dans une langue simple, pour être comprise de tous, y compris de
personnes étrangères apprenant la langue.
82
Ing. NTOH MOUALAM Annick
Chapitre 9. Architecture logicielle
L'objectif de ce chapitre est de présenter ce qu'est l'architecture logicielle.
Définition
Le Petit Robert définit l'architecture comme étant « l'art de construire les édifices ». Ce mot est avant tout
lié au domaine du génie civil : on pense à l'architecture d'un monument ou encore d'un pont.
Par analogie, l'architecture logicielle peut être définie comme étant « l'art de construire les logiciels ».
• l'activité d'architecture, c'est-à-dire une phase au cours de laquelle on effectue les grands choix qui vont
structurer une application : langages et technologies utilisés, découpage en sous-parties, méthodologies
mises en œuvre…
Importance
Dans le domaine du génie civil, on n'imagine pas se lancer dans la construction d'un bâtiment sans avoir
prévu son apparence, étudié ses fondations et son équilibre, choisi les matériaux utilisés, etc. Dans le cas
contraire, on va au-devant de graves désillusions…
Cette problématique se retrouve dans le domaine informatique. Comme un bâtiment, un logiciel est fait pour
durer dans le temps. Il est presque systématique que des projets informatiques aient une durée de vie de
plusieurs années.
Plus encore qu'un bâtiment, un logiciel va, tout au long de son cycle de vie, connaître de nombreuses
modifications qui aboutiront à la livraison de nouvelles versions, majeures ou mineures. Les évolutions par
rapport au produit initialement créé sont souvent nombreuses et très difficiles à prévoir au début du projet.
Exemple : le logiciel VLC n'était à l'origine qu'un projet étudiant destiné à diffuser des vidéos sur le campus
de l'École Centrale de Paris. Sa première version remonte à l'année 2001.
Objectifs
Dans le domaine du génie civil, les objectifs de l'architecture sont que le bâtiment construit réponde aux
besoins qu'il remplit, soit robuste dans le temps et (notion plus subjective) agréable à l'œil.
L’architecture logicielle poursuit les mêmes objectifs. Le logiciel créé doit répondre aux besoins et résister
aux nombreuses modifications qu'il subira au cours de son cycle de vie. Contrairement à un bâtiment, un
logiciel mal pensé ne risque pas de s'effondrer. En revanche, une mauvaise architecture peut faire exploser
le temps nécessaire pour réaliser les modifications, et donc leur coût.
Les deux objectifs principaux de toute architecture logicielle sont la réduction des coûts (création et
maintenance) et l'augmentation de la qualité du logiciel.
La qualité du code source d'un logiciel peut être évaluée par un certain nombre de mesures appelées
métriques de code : indice de maintenabilité, complexité cyclomatique, etc.
83
Ing. NTOH MOUALAM Annick
Architecture ou conception ?
Il n'existe pas de vrai consensus concernant le sens des mots « architecture » et « conception » dans le
domaine du développement logiciel. Ces deux termes sont souvent employés de manière interchangeable.
Il arrive aussi que l'architecture soit appelée « conception préliminaire » et la conception proprement dite «
conception détaillée ».
Certaines méthodologies de développement incluent la définition de l'architecture dans une phase plus
globale appelée « conception ».
Cela dit, la distinction suivante est généralement admise et sera utilisée dans la suite de ce livre :
• l'architecture logicielle (software architecture) considère le logiciel de manière globale. Il s'agit d'une vue
de haut niveau qui définit le logiciel dans ses grandes lignes :
- que fait-il ?
- interagissent-elles ?
- etc.
• la conception logicielle (software design) intervient à un niveau de granularité plus fin et permet de préciser
comment fonctionne chaque sous-partie de l'application :
- etc.
• à l'inverse, certaines sous-parties d'un projet de taille conséquente peuvent nécessiter en elles-mêmes un
travail d'architecture qui, du point de vue de l'application globale, relève plutôt de la conception…
L'activité d'architecture
1) Définition
Tout logiciel, au-delà d'un niveau minimal de complexité, est un édifice qui mérite une phase de réflexion
initiale pour l'imaginer dans ses grandes lignes. Cette phase correspond à l'activité d'architecture. Au cours
de cette phase, on effectue les grands choix structurant le futur logiciel : langages, technologies, outils…
Elle consiste notamment à identifier les différents éléments qui vont composer le logiciel et à organiser les
interactions entre ces éléments.
84
Ing. NTOH MOUALAM Annick
Selon le niveau de complexité du logiciel, l'activité d'architecture peut être une simple formalité ou bien un
travail de longue haleine.
L’activité d’architecture peut donner lieu à la production de diagrammes représentant les éléments et leurs
interactions selon différents formalismes, par exemple UML.
Les évolutions d'un projet logiciel peuvent nécessiter de nouvelles phases d'architecture tout au long de sa
vie. C'est notamment le cas avec certaines méthodologies de développement itératif ou agile, où des phases
d'architecture souvent brèves alternent avec des phases de production, de test et de livraison.
• gérer les interactions avec l'extérieur, en particulier l'utilisateur : saisie et contrôle de données, affichage.
• effectuer sur les données des opérations (calculs) en rapport avec les règles métier (« business logic »).
C'est la problématique des traitements ;
• accéder aux informations qu'il manipule et les stocker, notamment entre deux utilisations. C'est la
problématique des données.
Dans certains cas de figure, l'une ou l'autre problématique sera très réduite (logiciel sans utilisateur, pas de
stockage des données, etc.).
La phase d'architecture d'une application consiste aussi à choisir comment sont gérées ces trois
problématiques, autrement dit à les répartir dans l'application créée.
On peut décrire l'architecture d'un logiciel selon différents points de vue. Entre autres, une vue logique
mettra l'accent sur le rôle et les responsabilités de chaque partie du logiciel. Une vue physique présentera
les processus, les machines et les liens réseaux nécessaires.
85
Ing. NTOH MOUALAM Annick