Flux rss
Collection CommentCaMarche.net

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

Publié par sebsauvage, dernière mise à jour le jeudi 21 septembre 2006 à 09:44:25 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 ?
Help : Comment "BIEN" configurer Zone Al (Résolu) Salut! Je me demandais si quelqu'un pourrait me montrer comment "BIEN" configurer Zone Alarm pour minimiser au mieux les risques d'intrusion. quels critères choisir et en fonction de quoi Il y a deux sortes de gens qui n'auront jamais... www.commentcamarche.net/forum/affich-2476280-help-comment-bien-configurer-zone-al
CHOIX LANGUE MSN (Résolu) Bonjour, en installant MSN je me suis trompée dans le choix de langue,tout est en anglais,comment changer l'option de langue svp merci d'avance www.commentcamarche.net/forum/affich-7765507-choix-langue-msn
Codec pour choisir langue films (Résolu) Bonjour, je voudrais savoir si quelqu'un serait, Quel codec faut-il mettre pour avoir le films en francais, quand celui-ci ne l'est pas?merci de vos reponses que j'attends avec impatience www.commentcamarche.net/forum/affich-5648147-codec-pour-choisir-langue-films
[PHP] Rediriger en fonction de la langue du visiteurBeaucoup de sites demandent à ce que l'on choisisse la langue en cliquant sur une icône correspondant au pays. Il est possible de détecter la langue par défaut du visiteur grâce aux informations fournies par son navigateur (langues acceptées :... www.commentcamarche.net/faq/sujet-876-php-rediriger-en-fonction-de-la-langue-du-visiteur
Choisir une distribution LinuxChoisir sa distribution GNU/Linux est loin d'être évident ! Surtout quand on débute sur la banquise ;-) Ceci n'a pas la prétention de promouvoir une distribution au détriment des autres. C'est plutôt une liste de solutions classées par... www.commentcamarche.net/faq/sujet-3742-choisir-une-distribution-linux
Comment choisir son ordinateur portable ?Le marché de l’ordinateur portable est très vivace, les nouveautés sont fréquentes et les performances ne cessent d’augmenter tandis que prix, poids et encombrement baissent. Les points clés pour... www.commentcamarche.net/faq/sujet-13011-comment-choisir-son-ordinateur-portable
Changer la langue de Crysis (Résolu)Salut à tous, j' ai acheté y a quelques temps Crysis en Andorre, problème, quand j'ai installé le jeu j'avais le choix entre la langue espagnol ou italienne, alors qu' il était bien stipulé que le jeu était en version française en... www.commentcamarche.net/forum/affich-8235892-changer-la-langue-de-crysis
Choix de prestataire (Résolu)Bonjour, je suis actuellement chargé de l'encadrement de la création d'un site Web pour une collectivité, et je cherche désespérément un exemple de grille rassemblant les critères pour le choix d'un prestataire. Mon cahier des charges... www.commentcamarche.net/forum/affich-6425770-choix-de-prestataire
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... www.commentcamarche.net/forum/affich-6221470-criteres-de-choix-pour-un-pc-portable
Télécharger CHAOS ShredderCHAOS Shredder permet de supprimer de façon permanente des fichiers ou dossiers spécifiques, le contenu de la corbeille, les fichiers temporaires, les cookies, l'historique ou la liste des documents récents. Contrairement aux outils de suppression... www.commentcamarche.net/telecharger/telecharger-34055093-chaos-shredder
Caractéristiques d'un langage de programmationIl existe une multitude de langages de programmation, correspondant à des besoins spécifiques (calcul formel, traitement de chaînes de caractère, temps réel, etc.) et possédant des caractéristiques et des fonctionnalités spécifiques. Ainsi, le choix... www.commentcamarche.net/contents/langages/langage-caracteristiques.php3
Charte d'utilisation de CommentCaMarche.net - Principes de modérPrincipes de modération Les modérateurs sont des membres de CommentCaMarche choisis sur la base des critères suivants : implication sur le forum, en particulier les forums techniques, participation à la base de connaissances, utilisation éclairée... www.commentcamarche.net/contents/ccmguide/ccmcharte-moderation.php3