Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 1 Chapitre 1. Concepts

Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 1 Chapitre 1. Concepts du Génie Logiciel « Le logiciel est l'ensemble des programmes, procédés et règles, et éventuellement de la documentation, relatifs au fonctionnement d'un ensemble de traitements de l'information' » Un logiciel pourra donc être considéré comme un ensemble de programmes informatiques (codes sources, éditables, exécutables), mais également les données qu’ils utilisent et les différents documents se rapportant à ces programmes et nécessaires à leur installation, utilisation, développement et maintenance : spécifications, schémas conceptuels, jeux de tests, mode d'emploi, etc. 1.1. Un peu d’historique  En 1936, Alan Turing (un brillant étudiant en mathématiques à Cambridge en Angleterre, âgé de 24 ans qui cherchera à construire un cerveau artificiel), propose dans un article, tout d'abord de formaliser la notion d'algorithme grâce à la définition d'un dispositif abstrait que depuis on appelle « machine de Turing ». Ce sera le modèle de base qui fonde l'informatique moderne. Une machine de Turing sera vue comme une méthode de calcul, un programme. Programmer (écrire un programme) consiste à écrire une suite d'instructions pour réaliser un traitement sur des données.  Les langages de programmation (« intermédiaire » entre le « programmeur » et la « machine ») vont évoluer dans le temps, au fur et à mesure des besoins en termes de qualité, et pour pouvoir faire face aux problèmes de plus en plus complexes. - Langages de 1ère génération (1954 – 1958 : Fortran I, Algol 58, …) Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 2 - Langages de 2ème génération (1959 – 1961 : Fortran II, Algol60, Cobol, Lisp, …) - Langages de 3ème génération (1962 – 1970 : PL1, Algol68, Pascal, Simula, …) - Langages de 4ème génération (1970 – 1980 : Smaltalk, Ada, C++) - Langages de 5ème génération (année 80 et 90 : Eiffel, Yafool, Objloo, Art, Ulysse, NewFlavors, Neon, Java, …)  La Complexité du développement des Logiciels étant également liée au matériel, on note également une évolution des systèmes matériels : Après l’architecture de Von Neumann, à la base de toutes les architectures modernes, les systèmes matériels vont également évoluer rapidement dans le temps, pour permettre de développer des solutions de plus en plus performantes ; avec au centre le processeur (entité capable d’interpréter et exécuter un traitement ou processus). Au cours des années 70, on observe une révolution avec la création des microprocesseurs (1974 = Intel, 1982 = RISC, 1984 = 88020, etc.). L’explosion qui va suivre dans les années 80 entraînera une baisse permanente des coûts du matériel. 1.2. Temps de Crises :  Malgré les évolutions citées plus haut, on note qu’au fur et à mesure que les coûts du matériel diminuent, les coûts des programmes informatiques (curieusement) augmentent ! La diminution des coûts du matériel (hardware) a conduit à associer l’ordinateur à de plus en plus de produits. Les coûts des logiciels connaissent une très forte croissance, dominant maintenant le coût du Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 3 matériel et peuvent représenter plus de 80 % du coût total d’un système informatique.  A la fin des années 70, on ne sait pas « faire » des logiciels (plusieurs tentatives de logiciels vont échouer) - Les besoins et contraintes de l’utilisateur ne sont pas respectés (pas de facilité d’emploi, interfaces homme/machine inexistantes) - Les coûts ne sont pas maîtrisés - On relève régulièrement des retards dans la livraison des produits (non maîtrise du temps) - On note une grande rigidité dans les solutions mises en place - Quelque fois on arrive à des incohérences pendant l’utilisation - On est aussi confronté au manque de performance et de robustesse (fiabilité) - Les codes sont difficiles à maintenir - On arrive parfois à des logiciels non utilisables  En 1983, on se rend compte que : - 43% des logiciels sont livrés et non utilisés - 28% payés et non livrés - 19% utilisés tels quels - 3% utilisés sans modification (échec de tentative) - 2% utilisés avec modifications (réussite de tentative)  Les coûts de maintenance (lorsque cela se fait) dépassent ceux du développement  Le coût d’une erreur parfois dépasse le coût du système  Les pannes causées par le « bug de l’an 2000 » ont coûté environ 175 milliards de dollars aux entreprises du monde, (Le Monde – 23 oct. 2001). Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 4  D’une étude sur 487 sites de toutes sortes de développement de logiciels, il ressort que : - 70% du coût du logiciel est consacré à sa maintenance - 42% des modifications sont dues à des demandes de l’utilisateur - 30% des exigences de spécification changent entre la 1ère édition d’une documentation et la première sortie du produit - 17% à des changements de format des données - 12% problèmes d’urgence résolus à la hâte - 9% débogages de programmes - 6% à des changements de matériel - 6% problèmes de documentation - 4% améliorations de l’efficacité - 3% autres… Ces différents problèmes vont conduire à la création du Génie Logiciel. 1.3. Le Génie Logiciel Le Génie Logiciel est défini le 30 décembre 1983 comme étant « l’ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationnaliser la production du logiciel et son suivi ».  Objectifs : - Maîtriser les coûts et les délais de développement - Améliorer la productivité (de l’équipe de développement) - Fournir une assurance qualité du produit livré Le génie logiciel s’intéresse : - aux différentes théories - aux méthodologies : (techniques, méthodes) Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 5 - aux outils - à l’organisation générale - à la gestion de projets En bref, le Génie Logiciel c’est l’ensemble des méthodes, outils et techniques utilisées pour développer et maintenir du logiciel dans le but d’assurer la qualité et la productivité. C’est donc l’art de la construction du logiciel. Le génie logiciel est basé sur des méthodologies et des outils qui permettent de formaliser et même d'automatiser partiellement la production de logiciels, mais il est également basé sur des concepts plus informels, et demande des capacités de communication, d'interprétation et d'anticipation. De fait, la « crise du logiciel » n'est pas complètement résolue aujourd’hui. Le génie logiciel reste un « art » qui demande de la part de l'informaticien une bonne formation aux différentes techniques (le savoir), mais également un certain entrainement et de l'expérience (le savoir-faire). 1.4. Le processus logiciel, ou cycle de vie du logiciel Le « cycle de vie d'un logiciel » (en anglais Software Lifecycle), désigne toutes les étapes du développement d'un logiciel, de sa conception à sa disparition. L'objectif d'un tel découpage est de permettre de définir des jalons intermédiaires permettant la validation du développement logiciel, c'est-à-dire la conformité du logiciel avec les besoins exprimés, et la vérification du processus de développement, c'est-à-dire l'adéquation des méthodes mises en œuvre. L'origine de ce découpage provient du constat que les erreurs ont un coût d'autant plus élevé qu'elles sont détectées tardivement dans le processus de réalisation. Le cycle de vie permet de détecter les erreurs au plus tôt et ainsi de maîtriser la qualité du logiciel, les délais de sa réalisation et les coûts associés. Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 6 Historiquement, le premier modèle de développement proposé (1966) est celui dit en ``cascade'', formalisé en 1970. Ce modèle a été assez largement mis en œuvre, mais on s'est rapidement aperçu qu'il n'est pas toujours approprié. Sa vision simpliste du processus sous-estime le coût des retours en arrière dans le cycle de vie. Ainsi, plusieurs alternatives au modèle en cascade ont été proposées, basées notamment sur le prototypage et l'assemblage de composants réutilisables. Le cycle de vie du logiciel comprend généralement au minima les activités suivantes :  Définition des objectifs, consistant à définir la finalité du projet et son inscription dans une stratégie globale.  Analyse des besoins et faisabilité, exprimer, recueillir et formaliser les besoins du demandeur (le client) et de l'ensemble des contraintes.  Spécification, définir le quoi du logiciel après dialogue avec le client. On donne ici les contraintes de temps, etc. Cette phase débouche généralement sur un document de spécification (Software Requirement Analysis - SRA). Le SRA doit dégager clairement les fonctions, les interfaces (machines, utilisateurs, environnement), les contraintes (performance, mémoires, logiciels, machine).  Conception générale. formaliser les spécifications élaborées de l'architecture générale du logiciel.  Conception détaillée, indiquer le comment, définir de façon précise chaque sous-ensemble du logiciel. Ces deux phases débouchent généralement sur un document de conception (Software Design Report - SDR). Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 7  Codage, réaliser (programmer) ou codifier dans un langage de programmation des fonctionnalités définies lors de phases de conception. Cette phase débouche sur un ensemble de codes (Programme).  Tests unitaires, vérifier individuellement que chaque sous-ensemble du logiciel est implémenté conformément aux spécifications.  Intégration, s'assurer de l'interfaçage des différents éléments (modules) du logiciel. Les tests d'intégration uploads/Industriel/ chapitre-1-ingenierie-du-logiciel.pdf

  • 20
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager