Up Next
Page d'accueil du cours
La version finalisée, largement enrichie et corrigée de cette première ébauche de cours est parue, dans la collection Info+
chez les éditions Ellipses, sous le titre UML 2 - de l'apprentissage à la pratique (cours et exercices) (FNAC, amazon.fr)


1.1  Le génie logiciel

1.1.1  L'informatisation

L'informatisation est le phénomène le plus important de notre époque. Elle s'immisce maintenant dans la pluspart des objets de la vie courante et ce, que ce soit dans l'objet proprement dit 1, ou bien dans le processus de conception ou de fabrication de cet objet.

Actuellement, l'informatique est au cur de toutes les grandes entreprises. Le système d'information d'une entreprise est composé de matériels et de logiciels. Plus précisément, les investissements dans ce système d'information se réparatissent généralement de la manière suivante : 20% pour le matériel et 80% pour le logiciel. En effet, depuis quelques années, la fabrication du matériel est assurée par quelques fabricants seulement. Ce matériel est relativement fiable et le marché est standardisé. Les problèmes liés à l'informatique sont essentiellement des problèmes de logiciel.

1.1.2  Les logiciels

Un logiciel ou une application est un ensemble de programmes, qui permet à un ordinateur ou à un système informatique d'assurer une tâche ou une fonction en particulier (exemple : logiciel de comptabilité, logiciel de gestion des prêts).

Les logiciels, suivant leur taille, peuvent être développés par une personne seule, une petite équipe, ou un ensemble d'équipes coordonnées. Le développement de grands logiciels par de grandes équipes pose d'importants problèmes de conception et de coordination. Or, le développement d'un logiciel est une phase absolument cruciale qui monopolise l'essentiel du coût d'un produit2 et conditionne sa réussite et sa pérennité.

En 1995, une étude du Standish Group dressait un tableau accablant de la conduite des projets informatiques. Reposant sur un échantillon représentatif de 365 entreprises, totalisant 8 380 applications, cette étude établissait que :

  • 16,2% seulement des projets étaient conformes aux prévisions initiales,
  • 52,7% avaient subi des dépassements en coût et délai d'un facteur 2 à 3 avec diminution du nombre des fonctions offertes,
  • 31,1% ont été purement abandonnés durant leur développement.

Pour les grandes entreprises (qui lancent proportionnellement davantage de gros projets), le taux de succès est de 9% seulement, 37% des projets sont arrêtés en cours de réalisation, 50% aboutissent hors délai et hors budget.

L'examen des causes de succès et d'échec est instructif : la plupart des échecs proviennent non de l'informatique, mais de la maîtrise d'ouvrage3 (i.e. le client). Pour ces raisons, le développement de logiciels dans un contexte professionnel suit souvent des règles strictes encadrant la conception et permettant le travail en groupe et la maintenance4 du code. Ainsi, une nouvelle discipline est née : le génie logiciel.

1.1.3  Le génie logiciel

Le génie logiciel est un domaine de recherche qui a été défini (fait rare) du 7 au 11 octobre 1968, à Garmisch-Partenkirchen, sous le parrainage de l'OTAN. Il a pour objectif de répondre à un problème qui s'énonçait en deux constatations : d'une part le logiciel n'était pas fiable, d'autre part, il était incroyablement difficile de réaliser dans des délais prévus des logiciels satisfaisant leur cahier des charges.

L'objectif du génie logiciel est d'optimiser le coût de développement du logiciel. L'importance d'une approche méthodologique s'est imposée à la suite de la crise de l'industrie du logiciel à la fin des années 1970. Cette crise de l'industrie du logiciel était principalement due à :

  • l'augmentation des coûts ;
  • les difficultés de maintenance et d'évolution ;
  • la non fiabilité ;
  • le non respect des spécifications ;
  • le non respect des délais.

La maintenance est devenue une facette très importante du cycle de vie d'un logiciel. En effet, une enquête effectuée aux USA en 1986 auprès de 55 entreprises révèle que 53% du budget total d'un logiciel est affecté à la maintenance. Ce coût est réparti comme suit :

  • 34% maintenance évolutive (modification des spécifications initiales) ;
  • 10% maintenance adaptative (nouvel environnement, nouveaux utilisateurs) ;
  • 17% maintenance corrective (correction des bogues) ;
  • 16% maintenance perfective (améliorer les performance sans changer les spécifications) ;
  • 6% assistance aux utilisateurs ;
  • 6% contrôle qualité ;
  • 7% organisation/suivi ;
  • 4% divers.

Pour apporter une réponse à tous ces problèmes, le génie logiciel s'intéresse particulièrement à la manière dont le code source d'un logiciel est spécifié puis produit. Ainsi, le génie logiciel touche au cycle de vie des logiciels :

  • l'analyse du besoin,
  • l'élaboration des spécifications,
  • la conceptualisation,
  • le développement,
  • la phase de test,
  • la maintenance.

Les projets relatifs à l'ingénierie logicielle sont généralement de grande envergure et dépassent souvent les 10000 lignes de code. C'est pourquoi ces projets nécessitent une équipe de développement bien structurée. La gestion de projet se retrouve naturellement intimement liée au génie logiciel.

1.1.4  Notion de qualité pour un logiciel

En génie logiciel, divers travaux ont mené à la définition de la qualité du logiciel en termes de facteurs, qui dépendent, entre autres, du domaine de l'application et des outils utilisés. Parmi ces derniers nous pouvons citer :

Validité :
aptitude d'un produit logiciel à remplir exactement ses fonctions, définies par le cahier des charges et les spécifications.
Fiabilité ou robustesse :
aptitude d'un produit logiciel à fonctionner dans des conditions anormales.
Extensibilité (maintenance) :
facilité avec laquelle un logiciel se prête à sa maintenance, c'est-à-dire à une modification ou à une extension des fonctions qui lui sont demandées.
Réutilisabilité :
aptitude d'un logiciel à être réutilisé, en tout ou en partie, dans de nouvelles applications.
Compatibilité :
facilité avec laquelle un logiciel peut être combiné avec d'autres logiciels.
Efficacité :
Utilisation optimales des ressources matérielles.
Portabilité :
facilité avec laquelle un logiciel peut être transféré sous différents environnements matériels et logiciels.
Vérifiabilité :
facilité de préparation des procédures de test.
Intégrité :
aptitude d'un logiciel à protéger son code et ses données contre des accès non autorisés.
Facilité d'emploi :
facilité d'apprentissage, d'utilisation, de préparation des données, d'interprétation des erreurs et de rattrapage en cas d'erreur d'utilisation.

Ces facteurs sont parfois contradictoires, le choix des compromis doit s'effectuer en fonction du contexte.


1
Par exemple, aujourd'hui, 90% des nouvelles fonctionnalités des automobiles sont apportées par l'électronique et l'informatique embarquées. Il y a, ou aura à terme, du logiciel partout : ampoules électriques, four à micro ondes, tissus des vêtements, stylos, livres, etc.
2
Comparativement à sa production, le coût du développement d'un logiciel est extrêmement important. Nous verrons par la suite que la maintenance coûte également très cher.
3
c.f. section 1.2.1 << Maîtrise d'ouvrage et maîtrise d'uvre >> pour une définition de ce terme.
4
Souvent, les personnes qui doivent opérer des modifications ultérieures dans le code ne sont plus les personnes qui l'ont développé.



UML 2 – Laurent Audibert
La version finalisée, largement enrichie et corrigée de cette première ébauche de cours est parue, dans la collection Info+
chez les éditions Ellipses, sous le titre UML 2 - de l'apprentissage à la pratique (cours et exercices) (FNAC, amazon.fr)
Ce cours a déjà été consulté fois. Ce document a été traduit de LATEX par HEVEA

Up Next

Copyright © 2009 Laurent AUDIBERT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Cette page est déposée.

 
 
 
 
Partenaires

Hébergement Web