LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


expert:developpement

Le développement sous GNU/Linux

Le développement: késako?

Le développement, en informatique, est l'ensemble des techniques utilisées pour créer une application.

La confusion est souvent faite entre le développeur et le programmeur. C'est naturel puisque, d'une part la programmation fait partie du processus de développement et d'autre part, historiquement le développement s'est longtemps résumé à la seule programmation.

Cependant, le développement est un processus bien plus complet. Il inclue les différentes analyses, la modélisation, un grand nombre de mécanismes de contrôle et bien sûr la programmation.

Les grands principes du développement moderne

Software as a Service

Le logiciel en tant que service.

Cette façon de faire est massivement utilisée dans le libre. Le logiciel n'est pas une fin en soi, il évolue en fonction des besoins des utilisateurs. À contrario des éditeurs de logiciels traditionnels qui fournissent une application telle quelle, on part ici du principe que les logiciels doivent s'adapter en permanace aux beoins de l'utilisateur.

Cela force en outre à un dialogue perpétuel entre les développeurs et les utilisateurs finaux.

La modularité

Là encore, les logiciels libres sont des exemples parfaits. L'architecture moteur/module découpe un logiciel de façon à permettre son adaptabilité. Le moteur est constitué d'un ensemble de fonctions utilisées communément et d'un système de contrôle des modules.

Les modules sont des composants complémentaires que l'on peut ajouter à la demande et développer en fonction des besoins.

Ainsi, avec un logiciel modulaire, si une fonctionnalité n'existe pas dans un logiciel donné, il n'y a plus qu'à la créer et l'ajouter sous forme de module.

Le MVC

Model-Vue-Controler: Afin de facilité le développement des applications, on sépare chaque morceau en trois éléments: le modèle de données (la gestion de la base de données et les intéraction avec les données), la vue (L'interface humain-machine qui gère la façon dont les données et leur traitement vont apparaître à l'utilisateur final) et, très important les contrôleurs.

Contrôler les données à tous les niveaux peut paraître rébarbatif, voire même sembler une perte de temps. C'est en fait un gain de temps énorme en débugage et surtout cela tient compte de l'erreur humaine: l'utilisateur qui rentre un mot au lieu d'un chiffre, par exemple, voit s'afficher un message d'erreur qui l'invite à corriger son erreur.

La modélisation

La modélisation est un opération qui consite à créer des modèles (sic!) de structure et de traitement des données.

Le meurise (obsolète)

Je le site ici parcequ'il est toujours enseigné en France et je commence par lui pour pouvoir l'écarter rapidement. Vous en entendrez parler, si vous étudiez le développement en France, il sera sans doute au programme: navré pour vous, souffrez en silence…

Le meurise n'est pas une mauvaise méthode, elle était utile à la grande époque de la programmation impérative mais ne s'est jamais imposée (sauf en France vu que cocorico! c'est un français qui l'a mise au point) et n'est plus du tout d'actualité aujourd'hui.

UML

Unified Modeling Langage (langage de modelisation unifié): l'UML est un standart définit par l'OMG (Object Managing Group) et donc utilisé de manière internationnale pour modéliser les applications orientées objet.

L'UML fournit plusieurs types de diagrammes différents, les plus utilisés en développement objet restent les diagrammes de cas d'utilisation et les diagrammes de classe. Cependant, on trouve aussi les diagramme de déploiement, de séquence, d'état et d'activité, qui permettent d'affiner les autres aspects des programmes, notamment ce qui n'est pas objet.

La sémantique UML comporte relativement peu d'élements, une trentaine en tout. Ce qui en fait un langage visuel très souple et très simple à utiliser, à comprendre et à maîtriser.

Le choix des composants

On n'en est plus à recréer la roue et à inventer tous les élements d'un logiciel à chaque fois. La première chose à faire quand on développe, une fois compris les besoins de l'utilisateur, est de choisir les outils que l'on va utiliser.

Tout d'abord, existe-t-il déjà des outils qui font déjà ce que je veux? Si par exemple on me demande de créer une application qui fera un certain traitement sur des photos, il sera sans doute avisé de créer un module, voire un simple script pour gimp.

Quelles bibliothèques vais-je pouvoir utiliser? Même si la roue n'existe pas encore, je n'ai sans doute pas besoin de réinventer le bucheron!

Les frameworks

Dans un domaine particulier, le fonctionnement et l'utilisation sont souvent les même d'un logiciel à l'autre (par exemple: les sites web) donc on finit par créer des logiciels “généraux” qui vont alors faire tourner des logiciels plus spécialisés. Ce sont les framework.

Les frameworks imposent généralement le MVC, gèrent eux-même la communication avec la/les base(s) de données et mettent à disposition du développeur, pour ce faire, un tas de facilités. Par exemple, le moteur qui s'occupe de la base données offre une interface unifiée au programmeur et ce, quelle que soit le SGDB utilisé. Le code sera le même qu'il s'agisse d'un postgres, d'un mysql ou d'un sqlite.

L'inversion de contrôle

Les frameworks sont basés sur le pricipe d'inversion de contrôle: l'exécution du logiciel n'est plus géré par le logiciel lui-même mais par le framework.

Le choix du langage et du SGBD

Le choix du langage de programmation et le choix du système de gestion de bases de données ne sont pas des paramètres déterminants mais plutôt des choix déterminés par les besoins et le paradigme de programmation. Aujourd'hui, on utilise surtout la programmation orientée objet, la procédurale et l'événementielle. Les langages de haut niveau supportent tous au moins ces 3 paradigmes.

En conséquence, cela devient plus une histoire d'affinités et d'habitudes. Cependant, il faut noter que plus un langage est spécialisé, plus il sera performant dans son domaine.

Les langages de scripts

PHP, Perl, Python, Ruby, etc. Ces langages dits de haut niveau offrent une très grande abstraction vis à vis de la machine elle-même. Ils permettent une programmation rapide et on peut tester les scripts très vite sans avoir à les compiler. Ce sont les langages roi du web.

Évidemment, ceci se paye par plus de lourdeur. Le script doit être interprété par un logiciel appelé intérpréteur (étonnant, non?), celui-ci s'interface avec le système pour faire jouer les instructions qu'il reçoit. Il est donc fréquent d'optimiser les morceaux de code critiques à l'aide d'un langage compilé.

Les langages compilés de haut niveau

Le C++ et le java sont certainement les plus populaires. Ce sont des langages orientés objet et qui offrent des performances exemplaires. Après avoir créé le code, il faut le transformer en langage binaire: c'est la compilation. L'étape de compilation peut être longue mais le binaire qui en résulte pourra être utilisé directement par le système, ce qui induit un gain conséquent en termes de performances.

Les langages compilés procéduraux

Pour du procédural pûr, il est évident que le C, le fortan ou le lisp, aujourd'hui souvent considérés comme des langage de bas niveau, seront plus adaptés.

Le langage assembleur (ASM)

C'est le langage de plus bas niveau, les instructions qui vont être directement données au processeur, les seules qu'il est réellement capable d'interpreter. Chaque instruction ASM correspond à une séquence précise de langage machine (binaire).

On ne l'utilise que rarement:

  • Pour créer un langage de programmation
  • Pour créer des drivers
  • Pour optimiser certains morceaux de code

Le SGBD

En ce qui concerne les bases de données, on pourra utiliser sqlite pour les besoin réduits, postgres pour les gros besoins. Mysql est beaucoup utilisé pour le web mais peut poser des problèmes à cause du non respect des standards sql.

L'utilisation d'un framework rend ce choix très abstrait.

Par exemple, pour se simplifier la vie durant la phase de développement, on peut utiliser sqlite, qui ne nécessite quasiment pas de configuration, même si par la suite on met l'application en ligne sur une base postgres ou mysql.

Les outils de travail

Modélisation

Pour créer des diagrammes, n'importe quel logiciel de dessin fera l'affaire. Cependant, il existe des logiciels dédiés aux diagrammes, avec leurs modèles prédéfinis et des fonctionnalités adaptées:

(Tout ça est pour de l'uml; pour du merise, il n'existe qu'un seul logiciel, diffusé uniquement en France et comme il est propriétaire, je ne le citerai pas. De toute façon, si vous vous posez la question, vous êtes sûrement étudiant et je vous l'ai déjà dit: vous souffrirez en silence!)

Les IDE

Les IDE (integrated development environment) sont des programmes rassemblant des ensembles d'outils (compilation automatique, tests intégrés, facilité de composition, doc, etc) pour faciliter (ce point est sujet à troll) le développement.

Les éditeurs de texte

L'utilisation d'un IDE n'est en rien une obligation, un “simple” éditeur de texte fera parfaitement l'affaire:

  • Gedit: éditeur de texte par défaut sous gnome
  • Kate: éditeur de texte KDE

Les frameworks

Je vous donne un échantillon des frameworks les plus répendus mais il y en a des centaines d'autres (surtout des frameworks web):

Frameworks multimedia

  • FFmpeg
  • Gstreamer
  • xine
  • Phonon (KDE)

Frameworks graphiques

  • Graphical Modeling Framework

Frameworks web

  • Python:
    • Django
    • Zope
    • Twisted
    • Web2py
  • Javascript:
    • jQuery
    • Dojo
    • Google Web Toolkit
    • Node.js
  • PHP:
    • Symphony
    • Zend
    • eZ Publish
  • Perl:
    • Catalyst
  • Ruby
    • Ruby on Rails

Tutoriels sur linuxPedia

expert/developpement.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1