Traduction technique des besoins fonctionnels
- Participer à l’analyse fonctionnelle détaillée des besoins utilisateurs.
- Etudier les opportunités et la faisabilité technologique de l’application.
- Elaborer et rédiger le cahier des charges techniques, à partir des spécifications fonctionnelles.
Conception et développement
- Concevoir une architecture logicielle avec les architectes, et proposer le framework du projet, constitué de motifs de conception et de librairies.
- Analyser et développer les composants en utilisant les langages appropriés (c++, c, java, c#...).
- Assurer le développement et la réalisation des applications (prototypes et modules).
- Adapter et paramétrer les progiciels retenus pour l’architecture logicielle.
- Participer à la structuration des bases de données.
- Harmoniser et industrialiser l’ensemble des composants et applications.
- Documenter les applications pour les développements ultérieurs et la mise en production.
Tests et recette
- Définir les protocoles et les scenarii de tests (tests unitaires et tests de charge).
- Tester, identifier et traiter les dysfonctionnements éventuels du logiciel développé.
- Analyser les résultats et rédiger le rapport de tests.
- Vérifier la conformité des capacités de l’ouvrage avec la demande formulée par le client.
Mise en production et intégration
- Intégrer les sites pilotes chez le client permettant de tester l’ouvrage, dans sa version définitive.
- Déployer en masse le produit auprès des utilisateurs.
Maintenance évolutive et corrective
La mission de l’ingénieur de développement peut se prolonger après la mise en service des applications. Cette étape porte le nom de tierce maintenance corrective et/ou évolutive applicative (TMA).
Activités éventuelles
Assurer une veille technologique afin de proposer au client des solutions prenant en compte les innovations en matière de développement et de langages.
Dans le cadre de ses missions, l’ingénieur développement peut être amené également à rédiger les documentations techniques et dispenser des formations aux utilisateurs. Cette étape est une composante clé pour optimiser l’appropriation de l’outil, par les populations cibles.
Variabilité des activités
La nature des applications à la charge du développeur peut être un élément de variabilité :
- Les progiciels développés chez les éditeurs
- Les applications spécifiques, ayant pour vocation de répondre à un besoin technique ou fonctionnel précis, sur lequel aucune solution générique n’a été retenue
- Les applications en informatique de gestion et celles en informatique industrielle, plus proches du « langage machine »
D’autre part, la nature des projets sur lequel l’ingénieur d’études est amené à intervenir, peut varier selon sa taille et sa durée :
- Petits projets et/ou cycles courts de développement : impliquant peu d’interlocuteurs et pouvant être gérés de manière autonome par l’ingénieur développement, lui permettant d’avoir une vision globale d’un cycle de production : analyse du besoin, conception et développement, tests et livraison de l’application. La méthode agile notamment est un exemple de méthodologie permettant à l’ingénieur développement de prendre en charge un projet de l’analyse des besoins des utilisateurs à la recette fonctionnelle.
Sur certains projets, l’ingénieur développement prend en charge la conception de l’architecture des applicatifs (architecture logicielle).
- Grands projets avec cycles de développement longs (notamment les grands projets industriels de type aéronautique, défense ou bancaire.) : plus significatifs et impliquant un nombre important d’interlocuteurs (architectes, consultants fonctionnels, chefs de projet…), ils nécessitent une définition plus précise du périmètre d’intervention de chacun des acteurs. Dans ce cadre, l’ingénieur développement peut même être centré et spécialisé sur des éléments du projet bien précis : tests, débugage, développement de modules spécifiques…
Enfin, en SSII, l’ingénieur développement est en contact direct avec le client. De sa capacité à s’imposer non seulement techniquement mais également au niveau relationnel dépend la satisfaction du client et donc la pérennité de sa mission. Il peut travailler :
En régie, c'est-à-dire, en fonction de sa présence au sein des équipes du client : il exerce alors un rôle très opérationnel de développement sur des tâches précises et encadrées. S’il dépend hiérarchiquement du directeur d’agence ou du consultant manager de sa SSII, il relève fonctionnellement du chef de projet de la société cliente.
Au forfait : dans ce cas, l’ingénieur développement est davantage soumis aux problématiques de délais, la rentabilité de sa prestation dépendant de sa vitesse de réalisation.
Quelques développeurs travaillent en indépendant, ce qui leur impose une activité commerciale et de gestion en plus de leurs missions.
Rattachement hiérarchique
- Responsable recherche et développement
- Chef de projet
- Directeur de projet ou directeur des études informatiques (dans de petites structures)
Contexte et facteurs d’évolution du métier
Le métier d’ingénieur développement informatique tend à se rapprocher de celui de concepteur développeur web dans la mesure où les technologies web sont utilisées désormais dans la plupart des applications informatiques.
Simultanément, le métier tend à devenir techniquement plus complexe avec la multiplication des outils de développement, et les problématiques d’architecture technique. Cela amène les entreprises à rechercher des développeurs de plus en plus qualifiés, capables d’apprendre et de maîtriser très vite de nouveaux langages, et susceptibles de réaliser la conception de l’architecture logicielle ainsi que l’analyse fonctionnelle des besoins utilisateurs notamment s’ils travaillent sur des projets de type « agile ».