Valid XHTML     Valid CSS2    

DECRA : Décomposition, Conception et Réalisation d'Applications

Cours 1 : Applications, programmation et développement

                    gilles.hunault "at" univ-angers.fr

Table des matières cliquable

  1. Les 4 ages de la programmation et du développement

  2. Qu'est-ce qu'une application ?

  3. Différences entre codage, programmation et développement

  4. Connaissances et compétences pour bien développer

1. Les 4 ages de la programmation et du développement

Si à l'université on apprend à programmer, c'est-à-dire qu'on suit une inititiation à la programmation, dans la vie réelle, on développe des applications, ce qui signifie qu'on conçoit, qu'on écrit du code qui doit être testé, documenté, maintenu et diffusé. Dans la réalité, une application ne se réduit pas à quelques dizaines de lignes écrites lors d'un TP ou à quelques centaines de lignes écrites dans le cadre d'un projet étudiant...

Apprendre à programmer peut sans doute se définir en quatre temps ou quatre «âges» :

               non su                
La programmation pour enfants :
affectations, variables, boucles, tests, tableaux classiques.
La programmation pour adolescents :
structures, fonctions, tableaux associatifs, expressions régulières.
La programmation pour adultes :
fonctions bien paramétrées, structures (graphes, piles...), récursivité, objets, itérateurs.
La programmation professionnelle ou développement :
cahier des charges, algorithmes, documentation interne et externe de l'application et des fonctions,
jeux d'essais, démonstrations, formats d'entrée et sortie, détail des bases de données,
site web, benchmarks, procédure d'installation, XML.

Lorsqu'une application repose sur plus de dix mille lignes de code, il est clair que la maintenance ou la modification de l'application ne peuvent pas se faire en dix minutes sur le coin d'une table.

2. Qu'est-ce qu'une application ?

Les termes application, logiciel, programme sont souvent considérés comme synonymes. Toutefois, en initiation on écrit des petits programmes ou des scripts là ou les logiciels et applications font plutôt référence à «du gros et du lourd», voire à du programme payant. En ce sens une application doit être assimilée à un produit fini, à une marchandise. Elle se doit donc d'être robuste et fiable, elle doit pouvoir s'installer facilement ou à l'aide d'une procédure d'installation bien détaillée, elle doit disposer d'exemples, voire d'une FAQ, d'une personne ou d'une organisation à contacter en cas de problème, même pour un logiciel gratuit en open-source.

Nous prendrons ici deux exemples pour montrer ce que sont de «vraies» applications : le logiciel SAS et l'application MetaPhlAn2.

 

               non su           non su

 

Le logiciel SAS, conçu initalement pour réaliser des analyses statistiques est devenu une plate-forme d'informatique décisionnelle si l'on reprend les termes de l'entreprise SAS. SAS inclut un langage de programmation dit de quatrième génération, des environnements de développement et d'exécution. La société SAS possède de nombreuse filiales et dispose même de sa propre maison d'éditions d'ouvrages. Le logiciel ne s'achète pas, il se loue. Une installation typique en mode Desktop requiert en général une machine puissante. Pour les étudiants, SAS fournit une machine virtuelle nommée SAS university edition. Pour les grandes entreprises et leur «big data», le produit SAS Viya requiert un serveur «musclé».

L'application MetaPhlAn est un outil d'analyse phylogénétique pour la métagénomique. Elle se compose principalement d'un script Python mais requiert de nombreux outils comme l'indique la page de tutorial.

Contrairement à ce qu'on voit à l'école, une application a un but et correspond à une communauté d'utilisateurs. Elle fait donc référence à un domaine particulier de compétences, que celles-ci soient ultra-techniques (comme SASReduce pour le Big Data) ou simplement opérationnelles (logiciel de comptabilité, logiciel pour faire les feuilles de salaire, par exemple). Savoir utiliser une application conséquente demande donc une période d'apprentissage qui peut être assez longue.

Comme une application au bout du compte n'est qu'un programme ou un ensemble de programmes, il est clair qu'il y a eu des personnes pour imaginer, concevoir, designer ce programme et qu'il a ensuite été codé, voire recodé. Ainsi SAS fut initialement programmé en Fortran mais il est aujourd'hui programmé en C.

Lorsqu'on doit modifier une application -- imaginez qu'on vous demande d'ajouter des QR-codes dans les impressions SAS-ODS, ou une option d'interfaçage des sorties de MetaphlAn2 avec un package R ou une nouvelle option pour Krona ou le circle-packing de D3 -- il faut bien sûr franchir le barrage des termes-métiers, mais vouloir appréhender l'application dans son ensemble est souvent illusoire.

 

               non su           non su

 

3. Différences entre codage, programmation et développement

Nota Bene : les définitions suivantes reflètent notre conception de la programmation, du développement.

Coder, c'est «simplement» enchaîner des lignes de code pour répondre à des spécifications fonctionnelles et techniques, c'est suivre les indications fournies par les analystes afin d'assurer la perfection des parties et la cohérence du tout. En ce sens, c'est juste programmer ce que l'on nous demande de faire.

Programmer désigne en général une activité un peu plus intellectuelle qui combine analyse et réalisation. Un programmeur se posera la question des formats d'entrée et de sortie (PDF ou TXT) là où le codeur viendra écrire le module sortieTexte(...) ou le module sortiePDF(...) parce que c'est indiqué dans le cahier des charges.

Dans les deux cas, codage et programmation, il convient de s'assurer que les spécifications ont été respectées et il faut donc en en général une batterie de tests pour le prouver. En particulier il est d'usage de réaliser des tests de non régression lorsqu'on touche à des fonctionnalités déjà existantes.

Savoir gérer des versions, maintenir des "branches" et des "forks" doit aussi faire partie des compétences minimales d'un ou d'une programmeuse, d'un ou d'une codeuse.

Un développeur, quant à lui, se doit de maitriser toute la chaine de développement, de la conception à la documentation. Ce n'est pas en général à lui de chercher des clients ni d'effectuer la livraison ni l'installation de l'application mais il lui incombe de fournir un produit opérationnel.

4. Connaissances et compétences pour bien développer

La section précédente a sans doute clairement montré qu'un bon programmeur ne sera pas forcément un bon développeur. En ce sens, il nous semble qu'il faut rappeler les principes d'une bonne programmation avant de lister les compétences que doit avoir toute personne qui souhaite développer.

Principes d'une bonne programmation

  • Programmer, c'est réfléchir et organiser.

  • Programmer, c'est choisir et expliciter ses choix.

  • Programmer, c'est prévoir, tester et valider.

  • Programmer, c'est être précis(e), endurant(e) et savoir travailler avec beaucoup de rigueur.

Compétences requises pour du développement professionnel

  • Développer, c'est concevoir, programmer, documenter et exposer donc il faut être intellectuel(le) pour bien développer, être volontaire et curieux ou curieuse, savoir se tenir informé(e), avoir l'habitude du long terme et de la reprise.

  • Développer demande de savoir communiquer et rédiger.

  • Développer, c'est savoir utiliser des outils de programmation, des frameworks de développement, des suites logicielles pour coder, tester, installer, déployer les applications.

  • Un bon développeur est une personne qui sait s'intégrer, dialoguer et qui sait quand il faut s'entourer de bons programmeurs.

 

       retour au plan de cours  

 

Code-source PHP de cette page.

 

retour gH    Retour à la page principale de   (gH)