CYCLE DE VIE D’UN LOGICIEL Définition d'un système – Un système est un ensemble d'éléments matériels et logiciels qui permettent • D'assurer un ensemble de fonctions d'échanges d'informations avec son environnement extérieur • Le traitement de ces informations
– La décomposition en éléments est définie en concertation avec le client – Souvent volumineux, un sous-ensemble logiciel est alors décomposé en composants logiciels
1/36
Les fonctions du développement logiciel – Fonctions de production • • • • • • • •
Expression des besoins Spécification Conception Programmation et tests unitaires Intégration et tests de qualification Installation Exploitation et maintenance Rétro-ingénierie
– Fonctions de gestion et de contrôle • Gestion de projet • Évaluation du produit tout au long de développement • Gestion de configuration
2/36
Les fonctions de production – Expression des besoins • Le but de cette activité est de définir les besoins exacts attendus pour un domaine d'application donné en terme de – Frontières – Rôles – Ressources disponibles et requises – Contraintes d'utilisation et de performance • Définition des limites en terme – Économiques et de stratégie technique » Analyse de la valeur, ressources, délais, retour sur investissement » Faisabilité, choix matériel et technologie – De risques » Grands projets, sûreté de fonctionnement – De compétitivité et d'avantage concurrentiel – D'organisation globale » Relations MOA/MOE, projets étatiques, consortium 3/36
Les fonctions de production – Expression des besoins • Nécessité d'un dialogue entre les experts du domaine d'application et les futurs utilisateurs • Les méthodes utilisées ne relèvent pas directement des techniques informatiques • Le résultat de cette phase est un ensemble de documents qui décrivent – Les aspects pertinents de l'environnement du futur système, son rôle et sa future utilisation – Un manuel d'utilisation préliminaire – Le partage entre logiciel et matériel • L'analyse des besoins est l'activité essentielle du début du processus de développement… – Apparition des nouvelles questions sur les besoins et l'environnement • …et se poursuit durant tout le processus et tout le cycle de vie du logiciel – Maintenance évolutive
4/36
Les fonctions de production – Spécification • Le but de cette phase est d’établir une première description du futur système • Les données en entrée sont – Les résultats de l’expression des besoins – Les considérations de techniques et faisabilité informatique • Le résultat est une description de ce que doit faire le logiciel – On dit quoi, on ne dit pas comment • Cette description est le point de départ du développement • Cette phase est – Fortement corrélée avec la phase d’expression des besoins – Corrélée avec la phase de validation • Eviter de faire des choix d’implémentation prématurés • Chaque besoin sera traduit en terme d’exigence
5/36
Les fonctions de production – Spécification • Cette phase nécessite parfois un maquettage ou un prototypage de certaines fonctions – Pour être en mesure de les spécifier correctement – Particulièrement vrai pour les E-programmes • Le maquettage est caractérisé par – Un développement rapide » Sans contrainte de performance » Ni toutes les fonctionnalités » Et ne répond pas aux exigences finales de qualité – Il facilite l’expression des besoins et la spécification des éléments logiciel en contact direct avec les utilisateurs • Le prototypage est caractérisé par – Le développement d’un système » Éventuellement incomplet » Dans son dimensionnement réel – Il permet de faire des essais en vrai grandeur – Il est composé de code instrumenté et constitue un premier incrément du logiciel – Il est codé dans un autre langage ou “bouchonné" 6/36
Les fonctions de production – Conception • Cette phase consiste à définir de façon très précise les fonctions et architecture du logiciel – On passe à la description du comment • Elle se décompose en deux étapes – Conception préliminaire » Définition de l’architecture en composants simples » Définition des interfaces et des fonctions de chaque composant – Conception détaillée » Fournit le détail de chaque composant : algorithmes, représentation des données » Définit la structure de contrôle, l’enchaînement des fonctions et le séquencement des opérations • Cette phase est corrélée avec l’activité d’intégration • Tous les composants sont répertoriés dans la nomenclature du logiciel (gestion de configuration) 7/36
Les fonctions de production – Programmation et tests unitaires • Cette phase correspond à la programmation des fonctions issues de la conception • Traduction en langage de programmation Applications de normes de programmation • Cette phase est la plus outillée • A ce stade on passe de la pensée à l’exécutable • Les premières faiblesses vont se révéler • Nécessité de rétro-conception • Chaque fonction programmée doit compiler sans erreur • Chaque fonction programmée doit faire l’objet de tests unitaires • L’activité de tests unitaires est un compromis complétude/coût • Cette phase représente – 15 à 20% voire 10% du temps de développement – Contre 40% pour la spécification/conception – Et 40% pour la validation/vérification 8/36
Les fonctions de production – Intégration et tests de qualification • Cette phase consiste à assembler tout ou partie des composants d’un logiciel en vue d’obtenir un système exécutable • Cette phase permet de garantir la vérification et la validation progressive du logiciel • La vérification consiste à s’assurer que les descriptions successives du logiciel satisfont la spécification globale • La validation consiste à s’assurer que le système répond bien aux attentes des utilisateurs • A l’issue de cette phase, il est possible de s’assurer que chacune des exigences qui ont été analysées lors de l’expression des besoins puis spécifiées sont vérifiées • Cette phase utilise la gestion de configuration pour assembler des version cohérentes de chaque composant
9/36
Les fonctions de production – Installation • Cette phase correspond à la mise en œuvre opérationnelle du logiciel dans le contexte client • Il s'agit de vérifier que la procédure d'installation est conforme aux exigences formulées par l'équipe d'exploitation du client • Des formations sont prévues • Le support technique est opérationnel
10/36
Les fonctions de production – Exploitation et maintenance • Cette phase correspond au déploiement du logiciel tel qu'il a été initialement envisagé • Durant cette phase pouvant être longue, assurance du bon fonctionnement du logiciel • Ce qui implique la correction des fautes dans des délais correspondant au contrat de maintenance • Cette activité diffère selon que le logiciel est clef en main ou un progiciel – Correction d'erreurs – Modifications + ou – importantes demandées par les usagers
11/36
Les fonctions de production – Exploitation et maintenance • Maintenance corrective des clefs en main – Corrections des erreurs durant la phase d'exploitation du système » 10 à 20 ans pour les grands systèmes – Pas d'innovation techniques » L'architecture est connue » Les méthodes et outils connus – Pas de création mais nécessite une grande organisation et beaucoup de rigueur parce que grand volume d'information à manipuler » Le mainteneur n'est pas l'auteur » Cohérence documentation, historique, tests et logiciel » Les normes donnent de la rigueur et de l'homogénéité » Si laisser-aller en conception et programmation alors coût de maintenance 12/36
Les fonctions de production – Exploitation et maintenance • Maintenance corrective des progiciels – La problématique est identique aux clefs en main – La complexité supplémentaire vient de l'effet de parc – Les fautes et défaillances ont des manifestations différentes selon les contextes d'emploi – La complexité de correction vient de la combinatoire entre les différents états des systèmes installés » Le nombre d'états technique croît avec l'âge du parc » Le coût de gestion du parc a tendance à croître (objets à gérer + états techniques ) » La solution pour réduire le nombre d'états technique vient de la distribution systématique des corrections sur tout le parc » Solution coûteuse, risquée, voire inutile
13/36
Les fonctions de production – Exploitation et maintenance • Maintenance évolutive – Signe positif de réactivité du parc – Deux catégories d'évolutions » Maintenance adaptative (modification de l'ergonomie, des performances, …) » Ajout d'extensions répondant à des nouveaux besoins – La maintenance évolutive s'apparente à un développement – Il faut pondérer les phases
14/36
Les fonctions de production – Rétro-ingénierie • Le coût moyen des modifications apportées en maintenance – L'architecture et les interfaces se saturent – Risque de régression – La documentation technique se délite – Les tests ne sont plus pertinents – Les équipes de développement et de maintenance ont été renouvelées plusieurs fois – Le flux d'erreurs se remet à croître après une période d'amélioration • Deux attitudes sont possibles – On refait tout (années 80) – On essaie de récupérer (années 90) • Cette dernière opération est appelée rétro-ingénierie
15/36
Les fonctions de production – Rétro-ingénierie • Un grand logiciel qui est composé de S, P et E programmes – Beaucoup de fonctions sont recyclables – Des fonctions P et E deviennent S • Les éléments les plus facilement récupérables – Les documents d'architecture – Le code source – Les données pour les logiciels utilisant des fichiers ou bases de données – Les tests – Certains outils développés spécifiquement • Tous ces éléments doivent être archivés soigneusement • Tout s'articule autour du processus d'intégration
16/36
Les fonctions de gestion et de contrôle – Gestion de projet • Ressources humaines • Organisation • Temps/coûts
– Évaluation du produit tout au long de développement • Contrôles en fonction des prévisions • Revues
– Gestion de configuration • Évolutions, versions, documentation
17/36
Le cycle de vie – Il s'agit de l'ensemble du processus de développement, d'installation et de maintenance – Il est constitué de différentes phases – Chaque phase regroupe un ensemble d'activités cohérent – Point commun à toutes les phases : la documentation • Elle varie d'une norme à l'autre mais d'une façon générale à chaque phase correspond au minimum un document
– Les cycles comportent généralement des revues de fin de phase • Elles vérifient que toutes les exigences de la phase ont été réalisées • Elles valident la phase par passage à la suivante
– Il y a parfois des audits externes, des inspections des services qualité internes
18/36
Le cycle de vie – Il existe différents modèles de cycle de vie • • • • •
IEEE En V En cascade Par incréments En spirale
– Le "temps" de réalisation d'un logiciel est découpé en périodes se superposant en partie ou non durant lesquelles des ensembles d'activités sont définis : les phases
19/36
Le cycle de vie – Exemple : IEEE
20/36
21/36
Le cycle de vie – Le plus courant : en V
• Premières étapes = construction • Dernières étapes = vérification et validation • Deux sortes de dépendances – Enchaînement et itération éventuelle des phases – Dépendance entre les phases amonts et avals
22/36
Spécification des logiciels
23/36
La spécification – Pour qui ? • Le client – vérifier que le système remplit ses objectifs – Il ne faut pas proposer plus que ce que le client exige • Le concepteur – Que faut-il résoudre ? – Que faut-il faire ? – Il faut être le plus précis possible pour faciliter sa tâche
– Antagonisme entre les deux points de vues – Une seule spécification – Solution : exprimer toutes les exigences et que les exigences
24/36
La spécification – Pourquoi ? • S'assurer que l'on a compris le client • S'assurer que le client nous a compris communiquer par écrit • La spécification doit donc être écrite – Document lisible et compréhensible » tous les termes sont définis – Problème de maintenance des documents qui seront évolutifs • Analyser le problème pour : – mieux comprendre – poser toutes les questions nécessaires à la réalisation
25/36
La spécification – Quoi ? • Une spécification est un ensemble d'exigences – Interfaces externes – Fonctionnalités – Données – Qualité (facteurs) – Qualification • Qualité et qualification doivent être prises en compte très tôt • Il faut pouvoir valider toutes les exigences • Les exigences sont inscrites dans un document – Plan type – Si possible une exigence par phrase
26/36
La spécification – Comment ? • On utilise une méthode d'analyse • But : construire un modèle – C'est-à-dire un moyen d'obtenir les réponses aux questions posées par la réalité – On capture un aspect de cette dernière • Il faut connaître : – Les questions auxquelles on veut répondre – Le point de vue de la personne concernée – Utilisateur ≠ concepteur informatique • Le point de vue permet la modélisation
27/36
La spécification – Comment ? • La méthode c'est – Un langage – Des règles – Une démarche • Langage = éléments lexicaux + syntaxe – Sémantique + règles de bon usage – Langages textuels : français, anglais, maths, … » + précis, + pratique – Langages graphiques : SART, SADT, UML, … » + synthétique • La démarche et la méthode seront supportées par des outils
28/36
La spécification – Comment ? • Il existe des langages – Informels » syntaxe et sémantique peu définies (textuel) – Semi-formels » Syntaxe bien définie, sémantique peu définie – Formels » Syntaxe et sémantique fixées (langage machine) • La spécification utilise un langage semi-formel • Le modèle capture les 3 aspects du réel
29/36
Les sept qualités d'une bonne spécification – Conforme aux besoins réels de l'utilisateur : éviter d’interpréter les besoins du client. – Communicable : soigner le fond et la forme ; employer une méthode de description bien documentée qui sera comprise par le client. – Faisable : tout en restant dans la description du quoi, il faut penser aux concepteurs. – Modifiable : la modularité sera un gage d’évolutivité. – Validable : chaque exigence devra pouvoir être vérifiée simplement par le client. • en tant que document • par la qualification
– Cohérente : éviter les contradictions. – Complète : ne rien omettre. 30/36
Les sept péchés capitaux des spécifications – Bruit : élément du texte n'apportant d'information sur aucune des caractéristiques du problème. – Silence : caractéristique du problème à laquelle ne correspond aucun élément du texte. – Sur spécification : élément du texte correspondant à une caractéristique non pas du problème mais d'une solution possible. – Contradiction : éléments du texte définissant de façons incompatibles une même caractéristique du problème. – Ambiguïté : élément du texte permettant de comprendre une caractéristique du problème de deux façonss ou plus. – Référence en avant : élément du texte utilisant une caractéristique du problème définie plus loin dans le texte. – Vœu pieux : élément du texte décrivant une caractéristique du problème de telle façon qu'il sera impossible de valider une solution éventuelle relativement à cette caractéristique. 31/36
Conception du logiciel dans un contexte système – Tout système informatique est un assemblage d’équipements informatiques et de logiciels d’origine diverse : notion de plateforme / infrastructure • Niveau de dépendance du logiciel par rapport au matériel • Perception du niveau de risque logiciel (caractéristiques non fonctionnelles, cf. Norme ISO 9126) – Système à logiciel prépondérant
– Idéalement, il faut rendre la conception du logiciel la plus indépendante possible du matériel et des plate-formes – Très important pour le client-serveur, les IHM, les SGBD, etc.
– La caractéristique « soft » du logiciel est de pouvoir être facilement modifiée doit être préservée – C'est un vecteur de souplesse et d'adaptabilité du système
32/36
Les étapes de la conception – Notion de système englobant • Le logiciel fait nécessairement partie d'un ensemble plus vaste qui détermine tout ou partie des comportements attendus (contraintes)
– Notion de modèle • C'est une représentation abstraite rigoureuse de tout ou partie d'un système en vue d'en étudier le comportement. L'étude peut être : – Qualitative : existence de telle ou telle propriété » Le système est-il stable ? – Quantitative : on sait associer une mesure à la propriété » Quel et le temps de réponse moyen? • Quelques mots clés – Représentation abstraite : syntaxe, sémantique, pragmatique – Isomorphisme / homomorphisme : règles de correspondance qui relient le modèle à la réalité, d’où : fidélité→vérification, validation, test – Observable : ce qui relie le modèle à la réalité (observateur)
33/36
Les étapes de la conception – Intérêts des modèles • Pouvoir d’anticipation : c'est la capacité à prédire – Détection et contrôle » Contrôle aérien et spatial, météo… • Pouvoir d’accélération : le modèle va plus vite que la réalité – Calcul numérique, simulation, recherches sur critères… – Aides à la décision • Pouvoir de substitution : on remplace la réalité par un modèle – Un conducteur de train » Le modèle prend toutes les décisions à la place du conducteur – Les comptables et employés aux écritures dans les banques » Système d'information
– Tout système informatique est, par définition, un modèle
34/36
Les étapes de la conception – Ces étapes indiquent un cheminement, une progression, et non pas une séquence d’activités nettement séparées
35/36
Les étapes de la conception
36/36