Recommandations et bonnes pratiques pour le développement logiciel
Ce guide vise à aider les développeurs à adopter de bonnes pratiques lors du développement de leurs applications. Ces pratiques sont conçues pour améliorer la qualité, la sécurité et la maintenabilité du code.
Conception de l'application
Planification initiale
- Conception sur papier : Avant de commencer le développement, dessinez l'architecture de votre application sur papier. Utilisez des outils comme les user stories et les diagrammes UML pour réfléchir à toutes les fonctionnalités nécessaires. Trop de changements en cours de développement peuvent rallonger le processus et le rendre difficile à gérer.
- Estimation des ressources : Essayez d'estimer les ressources nécessaires tout au long de la vie de l'application, comme l'espace de stockage et la bande passante si le site est hébergé.
Composants logiciels
Bibliothèques Open Source : Utilisez autant que possible des bibliothèques Open Source bien maintenues. Vérifiez sur la forge logicielle correspondante (GitHub, Gitlab...) le nombre d'utilisateurs, de contributeurs, et la date des derniers commits. Évitez les bibliothèques peu référencées et non mises à jour qui posent des problèmes de sécurité et de maintenabilité.
Pour chaque besoin, recherchez les bibliothèques existantes qui fournissent déjà ces services et fonctionnalités. Comparez-les en tenant compte de la vivacité de leur développement, de la qualité de leur documentation et de leur complexité. Il est recommandé d'utiliser des bibliothèques plutôt que de coder soi-même les fonctionnalités, mais assurez-vous que ces bibliothèques n'ont pas trop de dépendances à des bibliothèques tierces. Plus votre environnement logiciel est simple, plus il sera pérenne.
Nous vous encourageons à utiliser autant que possible les logiciels et bibliothèques présents dans la distribution du système d’exploitation et de ne recourir qu’en dernier recours à des dépôts logiciels externes.
Choix du framework : Choisissez un framework adapté à votre application et limitez l'utilisation de bibliothèques externes.
- Pour une application web avec un backend, le choix du framework est crucial. Vérifier les fonctionnalités intégrées et la complexité pour prendre en main le framework. Pour Python, utilisez Django ou Flask, pour PHP, utilisez Symfony etc...Même remarque pour la base de données. Choisissez selon vos besoins et le framework choisi.
- Pour un site statique ou le front-end, privilégiez le HTML, CSS et du pur Javascript à des frameworks comme React ou Bootstrap, qui sont lourds et complexes à gérer dans le temps.
- Gestion des utilisateurs : Implémentez des systèmes d'authentification et d'autorisation pour vos applications. Certains frameworks web contiennent déjà cette fonctionnalité, se renseigner lors du choix. Si votre application web est publique (si elle est accessible par tout le monde sur internet), utilisez des standards comme OAuth2 ou JWT (JSON Web Tokens) pour gérer les sessions utilisateur de manière sécurisée.
Gestion du code
Contrôle de version
- Utilisation de git : Utilisez un outil de contrôle de version comme Git pour gérer votre code. Ne jamais inclure de mots de passe, tokens ou autres informations sensibles dans le dépôt Git. Utilisez des variables d'environnement pour ces informations sensibles.
- Commentaires et documentation du code : Commentez votre code, en particulier les fonctions et les classes, à l'aide de docstrings. Cela facilite la compréhension et la reprise du développement après plusieurs mois, ou par d'autres développeurs.
- Sauvegardes régulières : Faites des sauvegardes régulières de votre code dans plusieurs endroits sécurisés pour éviter toute perte de données.
- Logs : Implémentez une journalisation détaillée des actions de l'application pour faciliter le débogage et le suivi des incidents.
Documentation
- Documentation fonctionnelle : Documentez les fonctionnalités du site en fonction de sa complexité, les bibliothèques utilisées et les détails de déploiement (système d'exploitation du serveur, serveur web, etc.).
- Pré-requis logiciels : Listez les prérequis des composants logiciels pour la mise en place et le déploiement du site, incluant le nom et la version de chaque composant. Si vous recourez à des composants logiciels hors de votre distribution de système d’exploitation, précisez l’URL permettant leur téléchargement.
- Procédures de déploiement :
• Déploiement sur une machine vierge (où seul l’OS est installé) : Fournissez des instructions détaillées pour déployer le site (installation de paquets, configuration, copie de fichiers, etc.).
• Installation des certificats SSL : Expliquez comment installer et mettre à jour les certificats SSL.
La fourniture de certificats SSL pour Sorbonne Université se fait en lien avec la DSI :
Obtenir un certificat ssl pour un serveur de Sorbonne-université
• Démarrage et arrêt du site : Détaillez comment démarrer, arrêter et redémarrer le site.
• Données : Fournissez une procédure pour importer et exporter les données. - Diagramme de classe : Si vous utilisez une base de données relationnelle, incluez un diagramme de classe pour faciliter la compréhension de la structure des données.
Développement externe
- Accès et transparence : Exigez le code source ainsi que tous les mots de passe et accès nécessaires si le développement est externalisé.
- Suivi et implication : Investissez-vous tout au long du développement, demandez des versions de test régulièrement et soyez critique. Il est moins coûteux en temps de demander des modifications en cours de développement que d'attendre la fin du projet.
Bonnes pratiques de sécurité
- Mises à jour : Assurez-vous que toutes les bibliothèques et le serveur sont à jour avec les dernières mises à jour de sécurité.
- Chiffrement des données : Utilisez SSL pour chiffrer les données en transit et protéger les informations sensibles.
- Gestion des mots de passe : Utilisez des outils de gestion de mots de passe comme KeePassXC pour stocker vos mots de passe en toute sécurité. Ne réutilisez jamais les mots de passe.
Conclusion
Adopter ces bonnes pratiques dès le début de votre projet vous aidera à créer des applications plus robustes, sécurisées et faciles à maintenir. En suivant ces conseils, vous éviterez de nombreux pièges courants et améliorerez la qualité de votre travail.