Flux rss

[Programmation] Critères de choix d'un langage/framework

Bookmark Ajouter aux favoris / Partager
Dernière mise à jour le 21 septembre 2006 à 09:44 par sebsauvage
Publié par sebsauvage
[Note de sebsauvage: Cet article est loin d'être complet ! à compléter, détailler et raffiner]

Voici quelques questions à vous poser pour bien choisir un langage, une plateforme de développement ou un framework pour un projet.

Il est impossible de dire de but en blanc que tel ou tel langage est le meilleur: Le meilleur choix sera très dépendant de vos besoins et contraintes. Les questions ci-dessous devraient vous guider.

Notez que chaque question peut ou non être importante ou pertinente pour votre projet. Tout ceci est très dépendant de votre projet.


Note: Cette liste n'est pas exhaustive.

Dans le document ci-dessous, le terme "langage" peut être remplacé par "framework" ou "plateforme de développement": les questions restent valides.

Nature

Est-ce un langage à typage fort, faible ?
à typage statique/dynamique ?
Compile-t-il en code natif ou tourne-t-il dans une machine virtuelle ?
Si natif, pour quels processeurs est-il disponible ?
Y'a-t-il une possibilité de temps d'exécution garanti ? Ou d'exécution sécurisée ?
Si machine virtuelle, sur quelles plateformes est disponible cette machine virtuelle ? Quelle est la maturité de la machine virtuelle sur chaque plateforme ?

Le langage permet-il une séparation nette données/code ?
Permet-il une séparation nette logique du programme/présentation ?
Supporte-t-il la programmation procédurale, assertionnelle, objet, évènementielle ? Est-ce important pour votre projet ?

Est-ce que ce langage/framework permet, favorise ou impose une approche n-tiers ? client/serveur ? centralisée ? déconnectée ? nomade ?
Est-ce important pour votre projet ?


Ce langage (et des librairies) peut-il se conformer à des standards ?
(XML, SOAP, HTTP, Rosetta.Net, ITIL, RFC et protocols divers...)

Portabilité

Ce langage est-t-il dépendant d'un système d'exploitation particulier ?
Sur combien de systèmes d'exploitation des compilateurs pour ce langage sont disponibles ? De combien de vendeurs différents ?
Est-ce que les API et librairies que vous utilisez seront disponibles dans d'autres systèmes d'exploitation ?

Est-ce que ce langage ou ses librairies permettent de faire abstraction du système d'exploitation ? Du matériel ? Des ressources (mémoire, disque...) ?

Stabilité

Depuis combien de temps existe ce langage ?
Est-il encore en beta ?
Des entreprises l'utilisent-elles ? Si oui, pour des tâches critiques ?
Avez-vous pu trouver sur internet des discussions critiques sur ce langage ? Que disent-elles ?

Pérennité

Depuis combien de temps existe ce langage ?
Ce langage est-il un standard (de fait, ISO, W3C, IETF...) ?
Si c'est un standard, y'a-t-il beaucoup d'implémentations différentes de ce standard ? Par combien de vendeurs différents ? Jusqu'à quel point ces implémentations respectent-elles le standard ?
Ce langage est-il propriétaire ou libre ?
Est-il ouvert ou fermé ?
Y'a-t-il des compilateurs de différents vendeurs pour ce même langage ?
Y-a-t'il une communauté forte autour de ce langage ?
Trouve-t-on des librairies, modules et exemples pour ce langage sur internet ? Dans quelle proportions ? Sont-elles majoritairement payantes ou gratuites ?

Le vendeur assure-t-il un support technique pour ce langage ?
Si oui, à quel tarif et quelles conditions ?
Quel est le cycle de vie de ce langage chez le vendeur ?
Jusqu'à quand sera-t-il supporté ?
L'enteprise assurant le support ou le vendeur lui-même sont-ils solides économiquement ?
Depuis combien de temps cette entreprise existe-elle ?
Quels sont ses clients utilisant le produit ?

Si le vendeur met la clé sous la porte, quelles conséquences pour vous et votre projet ?
Si le vendeur décide de ne plus supporter le produit, quelles conséquences pour vous et votre projet ?
Quels seraient les coûts de migration vers un autre langage ? Un autre serveur de base de données ? Un autre système d'exploitation ?

Vos données restent-elles accessible même si l'application/le langage/le framework/le vendeur vous lâche ?
Quels seraient les coûts de migration de vos données ?

Métier et maintenance

Trouve-t'on facilement des gens compétents sur ce langage ?
La syntaxe et les outils de ce langage permettent-ils une maintenance aisée ? (syntaxe claire, langage explicite...)

Les outils de génie logiciel sont-il disponible pour ce langage ?
(Modélisation, débuggers, IDE, RAD, code coverage, test unitaires automatisés, auto-documentation du code, analyse du code, build automatique, gestion de sources/versionning...)
Comment ce langage peut-il s'intégrer aux outils de génie logiciel existants dans le commerce ou déjà présents dans votre entreprise ?

Ce langage est-t-il bien documenté ? La documentation est-elle à jour ?
Des exemples sont-il disponible en nombre ?
Les API et librairies fournies avec ce langage sont-elles nombreuses ? Bien documentées ?

Le code et les données sont-elles accessible en dehors de l'IDE/RAD fourni avec le langage ?
Est-t-il possible de lancer la compilation et édition des liens en ligne de commande ?


Ce langage est-t-il déjà utilisé dans votre entreprise ?
Quels sont les retours des personnes l'ayant utilisé ? Que pouvez-vous apprendre d'eux (problèmes rencontrés, solutions, avis sur le support du vendeur, vie au jour le jour de la maintenance...)
Pouvez-vous capitaliser sur leur expérience ? (Utilisation des connaissances acquises par les autres, réutilisation des outils et librairies développés en interne, aide pour installation, documentations...)


Comment ce langage/framework pourra-t-il s'intégrer à l'infrastructure existante de votre entreprise ?
(Serveur de base de données, sites web, annuaires (Single SignOn, LDAP...), gestion de domaines, architecture réseau, règles de sécurité...)

Ouverture

Ce langage permet-il d'interagir avec d'autres langages ? (C, C++, Java...)
Quelle connectivité supporte ce langage ? (ftp, http, ssh...)
A quelles API ce langage permet-il d'accéder ? (Win32, SOAP, .Net...)
Ce langage est-il fortement lié à une API particulière ?
A quels types de bases de données ce langage permet-il de se connecter ? (Oracle, SQL Server, mySQL, ou génériques: ODBC, JDBC... ?)

Sécurité

Ce langage et ses librairies possède-t-il des fonctions intrinsèque de sécurité ?
Est-il vulnérable aux risques de buffer overflow ? Est-ce important pour votre projet ?
Aux risques de SQL injection ?
Aux risques de cross-site scripting ?
etc.
Les librairies fournies avec ce langage offrent-elles ces protections ?

License et droits

Que vous permet la license de ce langage ?
Y'a-t-il des risques juridique liés à ce langage ? (Qu'il soit propriétaire ou opensource).
Ou des risques juridiques liés à ses librairies ?
Avez-vous vérifié la license de chacun des librairies que vous utilisez ?
Quels droits de redistribution avez-vous sur ces librairies ?
Les licenses sont-elles compatibles entre elles ? Sont-elles compatible avec la license de votre propre logiciel ? Qu'imposent ces licenses sur votre license ou la distribution/vente de votre logiciel ?

Combien de poste développeur pouvez-vous équiper, et à quel prix ?
Devrez-vous repayer pour chaque serveur d'intégration et de production ?
Comment se calculent les coûts de license ? Par poste développeur installé, par nombre d'utilisateurs simultanés, par nombre de connexions réseau simultannées ?
Et en production: Par serveur installé, par utilisateur simultanés, par nombre total d'utilisateurs déclarés ?
Si le langage nécessite un runtime, quels sont les droits de distribution liés à ce runtime ?

Devrez-vous payer la license des librairies/runtimes nécessaire au langage/framework chaque fois que vous installera votre logiciel chez un nouveau client ?

Les différentes licenses imposent-elles des contraintes chez le client ?

Scalabilité

Qu'exige-t-il en matière de logiciel et matériel ? (Serveurs dédiés, système d'exploitation et serveur de base de données spécifiques ?)
Que vont vous coûter les licenses des logiciels, librairies et serveurs nécessaire pour faire fonctionner ce langage/framework ?

Quelle charge peut supporter un programme écrit dans ce langage ?
Que consomme-t-il comme ressources ? (mémoire, CPU, espace disque, débit réseau...)

Ce langage possède-t-il des goulots d'étranglement/limites/points faibles ? (lock globaux, nombre de connexions simultannées, quantité max de mémoire qu'il est capable d'utiliser...)

Ce langage/framework permettra-t-il à votre application d'être utilisée par 100, 1000 ou un million d'utilisateurs simultanément ?
Comment se comportera le langage/framework et votre application dans ce cas ?
Quelles sont les possibilités d'extension ? (clusters de machines, machines multi-processeurs ?) Le langage/framework supportera-t-il ces concepts ?
Choix langage programmation Web bonjour je cherche un site ou quelqu'un qui pourrait m'indiquer les avantages/inconvenients comaprés des differents langages du web (asp, jsp, php, cgi etc ...), ainsi que les criteres de choix. Et partant de la, quels sont les meilleurs... www.commentcamarche.net/forum/affich-4879-choix-langage-programmation-web
Critères de choix pour un PC Portable (Résolu) Bonjour, Je suis actuellement à la recherche d'un PC portable. Seulement je n'ai pas assez de compétences pour savoir quel PC choisir. Selon mes besoins je souhaites acquérir un PC portable qui pourra supporter mes actions! J'ai besoin de ce PC pour... www.commentcamarche.net/forum/affich-6221470-criteres-de-choix-pour-un-pc-portable
Critères de choix écran plat Bonjour, J'aurais aimé savoir comment choisir un écran plat? Tout d'abord, j'ai un écran, du type, "énorme", or on m'a dit que cela consommait beaucoup d'énergie... Ensuite, il paraît que pour des raisons médicales, pour les yeux, il était meilleur... www.commentcamarche.net/forum/affich-9256893-criteres-de-choix-ecran-plat
Choisir un ventilateurVous voulez changer de ventilateur sur votre ordinateur de bureau ou en ajouter un, voici les caractéristiques à comparer pour faire le bon choix. Le ventilateur est un composant absolument indispensable. En fonctionnement, l’ordinateur produit... www.commentcamarche.net/faq/sujet-15295-choisir-un-ventilateur
[Programmation] Comment débuter, quel langage?Comment débuter, quel langage? Introduction Ceux que l'on peut utiliser Delphi/Pascal Java Python .Net Smalltalk Ceux que l'on peut utiliser à la rigueur C/C++ PHP Ada Lisp/Caml/... Ceux que l'on peut ne pas utiliser www.commentcamarche.net/faq/sujet-457-programmation-comment-debuter-quel-langage
Bien choisir son appareil photo numériqueBien choisir son appareil photo numérique Compact, bridge ou réflex : quel usage ? Les critères techniques Critères graphiques Ordinateur et périphérique Il existe trois types d'appareil photo numérique : compact, bridge et réflex.... www.commentcamarche.net/faq/sujet-13064-bien-choisir-son-appareil-photo-numerique
Choix langue tntBonjour à tous, voici mon problème : j'ai acheté il y a quelques mois un adaptateur tnt qui fonctionne très bien, et je m'en sers entre autres pour regarder les films en VO. Depuis quelques temps, lorsque je choisis la langue anglais dans le menu, le... www.commentcamarche.net/forum/affich-11069380-choix-langue-tnt
Choix de la langue sur copie de DVDBonjour, Novice, très très novice en informatique, j'ai réussi à copier un dvd de fitness GRACE au forum de ce site avec AVS DVD Copy 1.4 Sur le dvd original, j'ai le choix entre l'anglais et le français. La présentation du dvd se fait en français et... www.commentcamarche.net/forum/affich-5845166-choix-de-la-langue-sur-copie-de-dvd
Choix langue TV avec Windows Media CenterBonjour, j'ai un soucis quand je regarde la TNT avec Windows media center : je ne peux pas choisir la langue (dans le cas d'une diffusion multilingue, comme les experts sur TF1, par exemple) ni mettre les sous titres. Lorsque je vais dans "Tâches",... www.commentcamarche.net/forum/affich-4259079-choix-langue-tv-avec-windows-media-center
Télécharger Microsoft .NET Framework 2.0 (x86)Le package redistribuable de Microsoft .NET Framework 2.0 installe le runtime .NET Framework et les fichiers associés requis pour l'exécution d'applications développées pour le .NET Framework 2.0. Le .NET Framework 2.0 fournit une évolutivité et... www.commentcamarche.net/telecharger/telecharger-34055209-microsoft-net-framework-2-0-x86
Télécharger .NET FrameworkMicrosoft .NET Framework 3.5 contient de nouvelles fonctionnalités issues de .NET Framework 2.0 et 3.0, et inclue .NET Framework 2.0 service pack 1 et .NET Framework 3.0 service pack 1. www.commentcamarche.net/telecharger/telecharger-34055523-net-framework
Javascript - Introduction au langage JavascriptQu'est-ce que le Javascript? Le Javascript est un langage de script incorporé dans un document HTML. Historiquement il s'agit même du premier langage de script pour le Web. Ce langage est un langage de programmation qui permet d'apporter des... www.commentcamarche.net/contents/javascript/jsintro.php3
Le langage SQLQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,... www.commentcamarche.net/contents/sql/sqlintro.php3
Langage C++ - Les types de donnéesLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître... www.commentcamarche.net/contents/cpp/cpptype.php3