Génie logiciel (Software Engineering)

Qu'est-ce qu'un gros programme ?

Nous pouvons classer les différents types de développement de programmes selon trois critères :

  • Le nombre de programmeurs impliqués.
  • La durée du développement.
  • La taille du produit.

Quels types de programmes ?

Programmes système :

Nous retrouvons dans cette catégorie, soit des systèmes complets, soit des sous-systèmes.
Il s'agit de programmes écrits pour servir d'autres programmes.
Les programmes systèmes sont caractérisés par :

  • Une interaction importante avec le matériel (hardware).
  • Un usage pour de multiples utilisateurs.

Programmes en temps réel (real-time software) :

Il s'agit de collecter, contrôler, et d'analyser des informations d'un environnement externe. Le temps de réponse dans ce type de programme est extrêmement court, mais plus important encore, il est prévisible. Il est en effet nécessaire de s'assurer que ce temps de réponse soit constant, afin de pouvoir anticiper les actions à entreprendre.

Remarque : La différence entre un système en temps réel et un système interactif est qu'un dépassement du temps de réponse peut avoir des conséquences désastreuses dans un système en temps réel.

Programmes commerciaux :

Ce type de programme (Business software) est souvent destiné à un usage unique, et implique des bases de données de taille importante.

Programmes scientifiques :

Le champ d'applications scientifiques est vaste et touche tous les domaines. L'évolution des programmes scientifiques est marquée par un rapprochement des techniques de temps réel et de programmes système.

Programmes embarqués :

Lors du développement de programmes embarqués (embeded software), nous sommes fortement limités par les caractéristiques du matériel. Généralement, la mémoire est accessible uniquement en lecture, et le programme permet l'exécution de fonctions limitées.

Programmes personnels 

Cette catégorie regroupe l'ensemble des programmes que nous pouvons retrouver sur notre ordinateur.

Intelligence artificielle 

Les programmes d'intelligence artificielle sont caractérisés par la faculté d'auto apprentissage. Ils font usage d'algorithmes non numérique pour résoudre des programmes complexes qui ne peuvent pas faire l'objet d'une analyse rectiligne.

Contents Haut

Qualités d'un programme ?

Erreurs de programmations

Une crise a été constatée dans le monde des programmes vers les années '60. Afin de déterminer les qualités importantes d'un programme, nous pouvons analyser les symptômes de cette crise  :

  • Ne correspond pas au besoin (Responsiveness) : c'était à l'utilisateur d'adapter ses méthodes de travail, et le programme réalisait ce que le programmeur avait envie de faire, ou ce qu'il avait cru comprendre que le client attendait.
  • Faible fiabilité : l'utilisateur travaillait avec la crainte de voir à tout moment son travail détruit à cause d'un bug du système.
  • Coût : le coût des programmes était peu prévisible, et souvent fort élevé.
  • Adaptabilité (Modifiability) : la maintenance était complexe, et le produit était peu évolutif.
  • Délais (Timeliness) : les délais de conceptions n'étaient pas respectés, et le produit délivré ne comportait pas toutes les fonctions demandées, par manque de temps.
  • Portabilité : un programme conçu pour un système était rarement utilisé pour un autre système, même si les fonctions étaient similaires.
  • Efficience : de nombreux programmes répondaient aux besoins, mais n'étaient absolument pas optimisés.
    NB :
    • Efficacité : effectuer correctement la tàche demandée.
    • Efficience : effectuer correctement la tàche demandée en utilisant le moins de ressources possibles.

En réponse à cette crise est né le software engineering :

software engineering :
Angl : software engineering
Fr : génie logiciel


Ensemble des activités de conception et de mise en oeuvre des produits et des procédures tendant à rationaliser la production du logiciel depuis les premières spécifications jusqu'à sa maintenance en cours d'exploitation.

En octobre 1968, deux informaticiens spécialistes des langages de programmation, Friedrich Bauer et Louis Bolliet, inventent le terme software engineering en se disant que si en génie civil il est possible de concevoir et de construire un pont solide et fiable dans un temps donné et dans un budget donné, il devrait être possible de faire la même chose avec des produits logiciels.
Ensuite, en 1993 la branche informatique (Computer Society) de l’IEEE et l’ACM (organisation professionnelle américaine des informaticiens) ont établi un comité qui s’est donné pour tâche de définir les ensembles de critères et de normes appropriés pour la pratique professionnelle du génie logiciel,critères sur lesquels pourront se baser les décisions industrielles, les certifications professionnelles et les programmes d’éducation.

Aspects d'un "bon" programme

Nous pouvons donc dégager certains aspects d'un bon programme :

  • Validité : le programme doit remplir exactement ses fonctions, définies par le cahier des charges et les spécifications.
  • Fiabilité (Reliability) : le programme doit exécuter son travail dans toutes les conditions possibles.
  • Adaptabilité : le programme doit pouvoir être modifié, ou supporter des extensions aux fonctions qui lui sont demandées.
  • Réutilisabilité : le programme doit pouvoir être réutilisé, en tout ou en partie, dans de nouvelles applications.
  • Compatibilité : le programme doit pouvoir être combiné avec d'autres logiciels.
  • Efficience : le programme doit pouvoir utiliser de manière optimales les ressources matérielles à sa disposition.
  • Portabilité : le programme doit pouvoir être utilisé sous différents environnements matériels et logiciels.
  • Vérifiabilité : le programme doit pouvoir prendre en charge des procédures de test.
  • Intégrité : le programme doit pouvoir protéger son code et ses données contre des accès non autorisés.
  • Facilité d'emploi : le programme doit permettre facilement l'apprentissage, l'utilisation, la préparation des données, l'interprétation des erreurs et les méthodes à adopter en cas d'erreur d'utilisation.

Certains facteurs sont contradictoires. Nous devrons donc faire des compromis en fonction du contexte.

English translation

You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.

If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.

Thank you in advance.

Document created the 13/04/2005, last modified the 03/02/2021
Source of the printed document:https://www.gaudry.be/en/analyse-genie-logiciel.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.