Partager des connaissances sur l’architecture et la conception des applications open source
(aosabook.org)Résumé
-
Sujet principal
- Présentation d’un livre et de ressources associées dans lesquels des développeurs expliquent directement l’architecture interne et les décisions de conception d’applications open source.
-
Points essentiels
- Contrairement aux architectes, les développeurs logiciels ont historiquement peu d’occasions d’étudier de façon structurée l’architecture de grands programmes marquants.
- Cela conduit à répéter des erreurs similaires plutôt qu’à s’appuyer sur des exemples existants ayant fait leurs preuves.
- Ces ouvrages rassemblent l’architecture de grands projets open source, leurs composants, leurs modes d’interaction et les enseignements tirés de leur développement.
- Les développeurs débutants peuvent y apprendre la manière de penser de développeurs expérimentés, tandis que les profils intermédiaires et avancés peuvent s’en servir comme références pour résoudre des problèmes de conception complexes.
- Toutes les ressources sont proposées sous licence Creative Commons Attribution 3.0, et les revenus issus de la vente des livres sont reversés à Amnesty International.
- La communauté peut contribuer en signalant des erreurs, en réalisant des traductions ou en rédigeant de nouveaux chapitres.
Introduction
-
Les limites structurelles de l’apprentissage de la conception logicielle
- Dans leur formation, les architectes observent un grand nombre de bâtiments et étudient aussi les critiques formulées par des experts.
- À l’inverse, les développeurs logiciels ont peu d’occasions de comprendre en profondeur de grands programmes.
- Beaucoup accumulent surtout de l’expérience sur les programmes qu’ils ont eux-mêmes écrits.
- Il en résulte une forte probabilité de répéter des erreurs de conception similaires, au lieu de progresser à partir des meilleurs exemples du passé.
-
Objectif de ces ressources
- L’objectif est de fournir l’architecture réelle d’applications open source sous une forme pouvant être analysée.
- Les auteurs des projets expliquent eux-mêmes l’architecture logicielle et le contexte des choix de conception.
- L’ensemble aide les développeurs à apprendre la manière de penser d’autres concepteurs logiciels.
Développement
Expliquer directement l’architecture des projets open source
-
Principaux objets d’analyse
- Au total, quatre livres traitent de diverses applications open source et de thèmes associés.
- Chaque chapitre explique l’architecture et l’approche de conception d’un projet spécifique ou d’un sujet technique donné.
- Les auteurs sont des développeurs du projet concerné ou des experts du domaine.
-
Questions clés de l’analyse
- Quels sont les principaux composants du programme ?
- Comment ces composants interagissent-ils ?
- Quelles décisions de conception ont été prises au cours du développement ?
- Quels enseignements ont été tirés de la création du projet ?
AOSA Volume 1 traite de l’architecture de grandes applications open source
-
Contenu principal
- L’ouvrage couvre divers projets comme Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver et Sendmail.
- Il couvre un large éventail de domaines, notamment les logiciels systèmes, les outils de développement, les bases de données, les systèmes de fichiers distribués, les outils collaboratifs et les outils de visualisation.
-
Intérêt
- Il permet de comprendre l’architecture interne de projets open source du point de vue de développeurs réels.
- Il permet aussi de comparer les problèmes de conception récurrents et les façons de les résoudre dans différents domaines techniques.
AOSA Volume 2 élargit le champ technique et les cas de conception
-
Contenu principal
- Il traite notamment d’architectures web extensibles, de l’ingénierie de release de Firefox, de FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted et ZeroMQ.
- Les sujets couverts sont variés : web, compilateurs, systèmes d’exploitation, systèmes distribués, runtimes de langage, frameworks et outils d’infrastructure.
-
Intérêt
- Il fournit des cas concrets sur la façon de concevoir et d’exploiter des systèmes logiciels complexes.
- C’est une ressource utile pour les développeurs intermédiaires et avancés qui souhaitent examiner des cas réels de décisions de conception.
POSA aborde les problèmes de performance des applications open source
-
Contenu principal
- Il couvre notamment le réseau haute performance de Chrome, l’évolution de SocialCalc vers EtherCalc, le système de build Ninja, l’optimisation du parsing XML, MemShrink, les performances des réseaux mobiles et le traitement du big data en bioinformatique.
-
Intérêt
- Il montre que l’amélioration des performances logicielles ne se limite pas à l’optimisation du code, mais touche aussi à l’architecture, au mode de déploiement, à l’environnement réseau et au traitement des données.
- Il permet d’analyser les problèmes de performance à partir de cas concrets.
500 Lines or Less met en œuvre des idées clés avec peu de code
-
Contenu principal
- Il traite d’outils de programmation visuelle, de systèmes d’intégration continue, de systèmes de build dynamiques, de crawlers web, de bases de données graphe en mémoire, de frameworks web événementiels, d’interpréteurs Python, d’OCR, de feuilles de calcul web, d’analyse statique, de moteurs de templates et de serveurs web simples.
-
Intérêt
- Il explique les principes clés de conception dans un volume de code limité.
- Il est conçu pour permettre l’apprentissage de concepts de systèmes complexes à travers de petites implémentations.
La licence et les modalités de contribution sont clairement définies
-
Licence
- Ces ressources sont proposées sous licence Creative Commons Attribution 3.0 Unported.
- Elles peuvent être réutilisées à condition de respecter l’obligation d’attribution.
-
Utilisation des revenus
- Toutes les royalties issues de la vente des livres sont reversées à Amnesty International.
-
Modes de contribution
- Il est possible de signaler des erreurs.
- Il est possible de participer à des traductions vers d’autres langues ou d’autres formats.
- Il est possible de rédiger un nouveau chapitre décrivant l’architecture d’un projet open source.
- Les personnes intéressées par une nouvelle traduction ou la rédaction d’un chapitre peuvent contacter les responsables du projet.
Conclusion
-
Synthèse essentielle
- Ces ressources constituent un ensemble de cas permettant d’apprendre de manière structurée l’architecture interne des applications open source et les choix de conception qui les sous-tendent.
- Les développeurs peuvent y comprendre non pas seulement des fragments de code, mais l’organisation du système dans son ensemble et les raisons de sa conception.
- Pour les débutants, c’est un point de départ pour apprendre la manière de penser de développeurs expérimentés.
- Pour les développeurs intermédiaires et avancés, c’est une base pour comparer et analyser des cas réels de résolution de problèmes de conception complexes.
-
Valeur pratique
- Ces ressources sont utiles non seulement aux développeurs qui utilisent des projets open source, mais aussi à ceux qui conçoivent et exploitent eux-mêmes des systèmes.
- Elles aident à réduire la répétition d’erreurs de conception et à apprendre à partir d’exemples éprouvés.
- Elles montrent que le partage de connaissances porté par la communauté peut contribuer à améliorer les compétences en développement logiciel.
1 commentaires
Merci.