Un logiciel est souvent le fruit de plusieurs mois ou années de recherche, et d’importants investissements financiers. Comme n’importe quel autre produit, il doit également évoluer pour éviter de mourir. 

Dans la plupart des cas, le cycle de maintenance d’un logiciel constitue la plus grosse part de son cycle de vie, en temps et en argent. Cette maintenance sans fin se justifie par le fait qu’une application doit sans cesse évoluer pour continuer à être utilisée et demeurer commercialement et technologiquement à jour.

De plus, beaucoup d’anciens systèmes ont été développés de façon « artisanale », au fur et à mesure des besoins des utilisateurs, sans s’appuyer sur des règles de développements précises ou des outils de conception, et souvent sans aucune documentation ou avec une documentation qui est totalement inutile.

En conséquence, les ressources nécessaires pour faire fonctionner l'application consomment entre 50% et 90 % du temps de maintenance. Les coûts sont en croissance parce que chaque nouvelle fonction va augmenter les coûts de la maintenance. Il devient alors de plus en plus difficile de faire des changements.

La mission de la réingénierie de logiciels est d’analyser, comprendre et altérer un logiciel existant  et de le reconstituer sous une nouvelle forme.  Le but de la réingénierie est toujours l’efficience, l’adaptabilité et la simplicité de maintenance.

La réingénierie de logiciels est maintenant perçue comme un processus permanent, une évolution continuelle en raison de changements perpétuels des processus d’affaires et des technologies de l’information.

MAINTENIR L’EXISTANT OU RÉINGÉNIRER ?

Après plusieurs années d’exploitation, il arrive souvent un moment où le logiciel ou sa plateforme deviennent désuets ou trop coûteux à maintenir en opération et à faire évoluer. Exemples de « désuétude » :

  • Perte de savoir-faire à l’intérieur de l’organisation;
  • Programmation artisanale, très difficile à modifier ou faire évoluer;
  • Délais et coûts trop longs pour faire évoluer le système.
  • Documentation faible. Support du fournisseur déficient.
  • Langage de programmation qui ne suit pas les développements technologiques;
  • Manque d’adaptabilité et de stabilité;
  • Coûts élevés de maintenance et des évolutions à faire dans le futur.

Dans ce cas, la seule avenue possible est la réingénierie.

Les grandes étapes de la réingénierie logicielle sont :

A. La rétro-ingénierie

La rétro-ingénierie consiste à examiner sous toutes ses coutures le logiciel existant (ses versions exécutable et source, sa documentation, la structure de sa base de données, les notes d’utilisation des utilisateurs…). L’objectif est de « redécouvrir » les besoins et concepts qui ont mené à l’élaboration du logiciel au départ, ainsi que de ses modifications ultérieures.

B. La re-conceptualisation

Une fois la rétro-ingénierie teminée on compare l’ensemble des informations obtenues avec la vision actuelle et future qu’on a du logiciel. C’est la re-conceptualisation, on s’assure de prendre en compte tous les éléments pertinents nécessaires à la réussite du projet.

C. L’ingénierie du nouveau logiciel

L’ingénierie du nouveau logiciel consiste à programmer dans sa totalité l’ensemble des éléments assemblés au point B. Le langage de programmation, la ou les plateformes d’exécution du logiciel, la base de données, l’intégration avec les autres systèmes informatiques de l’organisation sont évidemment d’une importance capitale à ce point.

 

SAGE PEUT VOUS AIDER À FAIRE UN SUCCÈS DE LA RÉINGÉNIERIE DE VOS LOGICIELS.

NOTRE FEUILLE DE ROUTE EST ÉLOQUENTE DEPUIS PLUS DE 20 ANS!