S'amuser à apprendre: des explications simples en quelques dizaines de ligne sur les concepts scientifiques et des projets et tutoriels en électronique, domotique, informatique, rétrogaming, etc.
23 Janvier 2011
On me pose de temps en temps cette question, et je crois que jusqu'ici personne n'a vraiment compris en quoi consiste mon travail. J'aimerai que ça change, c'est la raison d'être de cet article.
J'ai essayé d'être compréhensible par les non informaticiens, si quelque chose n'est pas clair dites-le, je retravaillerai cet article.
Contrairement à une légende urbaine très largement répandue due à une méconnaissance du métier informatique, un informaticien ne connait pas forcément tous les logiciels de l'univers dans toutes ses versions... Il ne connait pas forcément non plus le montage vidéo, ni la façon de relier une Livebox avec une télévision et un magnétoscope numérique, ni les outils de bureautique comme la suite Office (Word Excel, etc), ni la retouche photo, ni les imprimantes, ni tous les types de clé USB, ni la façon de réparer une carte électronique grillée, ni la façon de résoudre un bug, etc...
Si votre pote informaticien connait tout ou partie de ces choses, il le doit à sa curiosité naturelle et pas à sa formation scolaire.
L'informatique regroupe un panel énorme de métiers: réparateur, assistant à domicile, formateur, développeur, concepteur, gestion des réseaux informatiques ... Et j'en passe des dizaines...
Je vais parler dans cet article de ce qui me concerne directement: le travail de création d'un logiciel, et la méthodologie employée.
La raison d'être d'un logiciel est de rendre des services à ceux qui l'utilisent. Tout part donc des multiples besoins d'un client.
C'est l'équipe appelée "MOA" pour "Maîtrise d'ouvrage" qui liste les besoins des clients et qui conduiront à la création d'un nouveau logiciel ou l'évolution d'un logiciel existant. Cette équipe MOA doit non seulement recenser et formaliser les besoins clients, mais aussi avoir connaissance du budget à sa disposition et des jalons ou délais qu'elle doit respecter pour la livraison au client. La MOA doit aussi être capable de prioriser ces besoins, puisque généralement il n'y a jamais assez d'argent ni de temps pour faire tout ce dont a besoin le client final.
Une fois tous ces paramètres pris en compte, la MOA livre une demande de travail explicitant la nature exacte de ce qui est attendu (contenu, jalons, délai, budget, etc) à une autre équipe: la MOE (pour "maîtrise d'oeuvre").
La MOE est l'équipe de réalisation d'un logiciel. Elle doit compter de multiples compétences et profils. Son but est de réaliser au plus vite, pour le moins cher possible, et le plus "proprement" possible, les demandes de travaux envoyées par la MOA. A titre personnel, je fais parti d'une équipe MOE. La MOE reçoit les demandes de travaux MOA et livre une version d'un logiciel.
Les étapes de création d'un logiciel par la MOE sont les suivantes:
1 - étude
2 - spécification
3 - conception
4 - codage
5 - test unitaires
6 - test d'intégration
7 - recette
Il s'agit d'une version simplifiée du cycle en V dont vous voyez un schéma ci-dessous (source wikipedia.fr). L'esprit reste le même, j'ai juste fusionné certaines étapes pour plus de clarté.
- L'étude permet de déterminer la faisabilité d'un projet, et les coûts et délais nécessaires à la réalisation, par rapport au cahier des charges fournis par la MOA. Le projet peut s'arrêter à cette étape. Ce sont les ingénieurs d'étude qui réalisent cette étape.
- La phase de spécification permet de préciser par la MOE les modifications fonctionnelles (ajout/suppression/modification de fonctionnalité) qui seront apportées au logiciel.
Les architectes fonctionnels et/ou les architectes logiciel sont chargés de cette phase.
- La conception permet de déterminer les impacts des modifications fonctionnelles (spécifications à l'étape 2) sur le logiciel existant ou à venir, en terme d'architecture fonctionnelle. En effet, les logiciels actuels sont créés en s'aidant de "squelettes" de code, de "modèle" de code, de "bonnes pratiques", etc. Il s'agit d'utiliser ces aides afin d'obtenir un logiciel correspondant au besoin et facilement "maintenable", c'est-à-dire que l'on peut corriger et modifier facilement. En effet, les logiciels sont amenés à évoluer régulièrement en intégrant de nouvelles fonctionnalités, et souvent par des équipes différentes. Il faut donc que les lignes de code et leur organisation soient facilement compréhensible par des personnes différentes de celles qui les ont écrit. Les concepteurs sont chargés de cette phase.
- Le codage consiste à écrire des lignes de code qui sont saisie à l'aide d'un logiciel dédié (une sorte de traitement de texte comme Word mais spécialisé pour les lignes de code). Les lignes de code décrivent dans un langage spécifique ce que l'ordinateur doit réaliser, dans quel ordre et sous quelle condition. On parle d'algorithme. Le logiciel dédié se charge ensuite de traduire ces lignes de code dans un langage informatique compréhensible par l'ordinateur, le binaire (des 0 et des 1): on parle de compilation. Une fois compilé, le logiciel peut être lancé pour être testé afin de vérifier l'absence de bug. Les lignes de code suivent des règles spécifiques avec une syntaxe, une grammaire et une orthographe particulière, un peu comme une langue étrangère. On peut le décrire comme un intermédiaire entre un langage naturel (français, anglais, etc) et le langage binaire. Les développeurs sont chargés de cette phase.
- Les tests unitaires ont pour but de s'assurer que la phase de codage s'est bien déroulée: le code réalise bien ce qui lui est demandé: pas de bug. Les développeurs sont chargés de cette phase.
- Les tests d'intégration permettent de s'assurer que les multiples lignes de code (souvent écrites au même moment mais par des personnes différentes) fonctionnent bien entre elles. Les intégrateurs ou les développeurs sont chargés de cette phase.
- La phase de recette (ou "qualification") permet de s'assurer que le logiciel produit répond bien au besoin exprimé par le client. Les "qualifieurs" sont chargés de cette phase.
En parallèle des différents métiers évoqués pour chacune de ces phases, on peut retrouver d'autres métiers:
- gestionnaire de configuration: chargé de s'assurer de la bonne gestion des fichiers contenant les lignes de code
- experts de tout poil: expert réseau, ou expert base de donnée, architecture, TCP/IP, etc pour des besoins spécifiques.
- gestionnaire de documentation: chargé de s'assurer de la bonne gestion de l'ensemble de la documentation projet (qui peut être considérable)
- responsable qualité: chargé du suivi du respect des processus qualité
- chef de projet: gère l'ensemble des collaborateurs
Y en a encore plein d'autres mais j'abrège.
Un peut de tout ça: ingénieur d'étude, concepteur, développeur ainsi que gestionnaire de configuration, expert dans certains domaines, aide au chef de projet, et d'autres encore.Et ça m'éclate...
http://science-facile.fr/article-l-auteur-de-ce-blog-52994158.html
Voir le profil de Sly sur le portail Overblog