Organisation, outils, démarches spécifiques
Ce séminaire de référence examine l’impact de l’utilisation de l’Open Source dans les projets logiciels. Il examine les différents niveaux d’adoption par les équipes projet : utilisation de composants d’infrastructure, choix d’outils et de solutions issues du libre, prise en compte des méthodes de développement communautaire, participation à des projets Open Source. Les apports et les risques liés à l’Open Source sont analysés au travers de nombreux exemples illustrant :
- l’organisation des équipes de développement ainsi que les relations avec les prestataires et les communautés de développeurs. Les facteurs favorisant la pérennité de ses investissements logiciels ;
- les différents niveaux de collaboration avec les communautés de développement. Les méthodologies et outils à adopter à chacun de ces niveaux ;
- l’utilisation d’outils Open Source afin de maîtriser ses propres développements : outils de développement, outils de conception, outils de tests, etc. ;
- les principaux frameworks techniques de développement sur les environnements Java, PHP, et .Net ;
- l’état de l’art des solutions applicatives (portail, gestion de contenu, groupware, outils collaboratifs, etc.) issues du libre ;
- les solutions d’infrastructure Open Source pour garantir un niveau de service donné en déploiement.
1. L’Open Source dans les projets
- Historique, motivations, chiffres et tendances.
- Les différentes licences Open Source, les pièges à éviter.
- Les acteurs de l’Open Source dans le domaine du développement logiciel (clients finaux, sociétés de services, éditeurs, etc.).
- Impact de la perte de propriété du code utilisé et/ou produit par les équipes de développement.
- Évaluation de la pérennité d’une solution issue de l’Open Source : organisation et taille de la communauté, activité, les sites à consulter (sf.net, freasmeat.net, fsf.org, etc.).
- Prévention des principaux risques : les coûts cachés, les pseudo-solutions Open Source, le support, les conflits d’intérêt, les "roadmaps", etc.
- Apports de l’Open Source à l’évolutivité et la pérennité de ses investissements logiciels.
- Modèle de participation aux communautés
- Formes de contribution (Bugs Reports/Request For Enhancement, Support/Abonnement aux mailings lists, Création de documentation ou traduction, Patches/Correction de bugs, Extension et implémentation de nouvelles fonctionnalités)
- Les statuts : project leader, commiter, contributor.
- Favoriser l’émergence d’une communauté et gestion des conflits d’intérêt entre ses propres objectifs et ceux de la communauté.
- Étude de cas d’un projet Open Source applicatif
- Acteurs, motivations, rôles.
- Les étapes de mise en libre de ce logiciel auprès de la communauté.
- Maintenance par un regroupement d’entreprises et administrations utilisatrices.
2. Méthodologies Open Source et industrialisation des développements
- Les principes popularisés par l’Open Source
- "Release Early, Release Often"
- "Keep It Simple Stupid"
- Les concepts de l’eXtreme Programing applicables en entreprise : peer review, build automatique, tests unitaires, auto-documentation, etc.
- L’environnement des développeurs / concepteurs
- Les ateliers de conception UML.
- Les ateliers de développement Eclipse.
- Source code manager, règles d’utilisation et politique de versionning : CVS, subversion.
- Automatisation des builds et stratégie : nightly-build, snapshot, etc.
- L’environnement de support au déploiement
- Les tests automatiques : Maven/Cruise Control, Canoo WebTest, etc.
- Les outils de suivi des bugs : JIRA, Mantis, Bugzilla.
- Les mailings lists Users, Developpers, Announcement, Commit.
3. Les principaux frameworks techniques
- Les serveurs d’applications cible
- La prise en compte de l’Open Source dans ses choix de serveurs d’applications.
- PHP, Java, .Net, Zope : forces, faiblesses, opportunités, risques.
- Identifier quand les développeurs font du propriétaire sur du libre.
- Faire du libre sur du propriétaire : exemple les communautés .Net.
- Les différents mécanismes de templates.
- Les principaux frameworks : PHPLib, Horde, BinaryCloud, Seagull, etc.
- PEAR, l’entrepôt de composants du PHPGroup.
- Implémentation de Web Services en PHP.
- Génération de graphiques, production de PDF, manipulation de documents Office, etc.
- Le cas des serveurs d’applications Java Open Source : moteur de servlets, containers EJB, implémentation JDO, etc.
- Les différents projets Jakarta (Turbine, Avalon, Velocity, Jelly, Commons, etc.).
- Vue d’ensemble de Struts : briques fournies, APIs, fonctionnement général, les limites.
- Exemple d’architecture applicative à base de différentes briques performantes : Xform pour la validation, Hibernate pour le mapping objet/relationnel, etc.
- Implémentation de Web Services en Java.
- Génération de graphiques, production de PDF, manipulation de documents Office, etc.
- Les communautés de développeurs .Net.
- Les différents modèles de distribution de composants sur la plate-forme .Net et exemples (GPL, ASP.Net Starter Kit, etc.).
- Le projet Mono.
- Problématique d’urbanisation
- Cohabitation de plusieurs briques Open Source. Démarche pour mettre en place une “glue” efficace.
- Solution de Single Sign On : CAS, etc.
- Intégration type EAI léger : BIE, OpenConnector, etc.
4. Les briques fonctionnelles majeures
- Entre développement spécifique et intégration de produits packagés : la troisième voie.
- Les stratégies gagnantes d’adoption : prototypage, projet pilote, généralisation.
- Ce que cache le besoin portail : gestion de contenu Web, portail d’intégration, outils de collaboration.
- Les huit briques fonctionnelles : intégration à l’existant ; catégorisation des contenus ; recherche ; publication du contenu ; automatisation des process ; outils de collaboration ; personnalisation/customisation ; analyses de statistiques.
- État de l’art des principales solutions Open Source : SPIP-Agora, EZPublish, Zope, RedHat CCM, Typo 3, uPortal, JetSpeed, DotNetNuke, etc.
- Les solutions de gestion de projet : PHProjekt, phpCollab, dotProject, etc.
- Les outils de gestion électronique de document.
- Les besoins couverts par les moteurs de recherche issus du libre : recherche plein texte, propagation des recherches, recherche dans des formats natifs (PDF, Word, etc.).
- État de l’art des principales solutions.
5. Les composants d’infrastructure influant sur les développements
- Répartition de charges/ Reprise sur incident
- Précautions à prendre dans ses développements pour rester compatible avec ces technologies.
- Reverse Proxy : Apache, configuration Bind, Squid, etc.
- Solution de type cluster : Linux Virtual Server, Beowulf, etc.
- Système maître/esclave : HeartBeat.
- Caches de données : Squid.
- Caches applicatifs en PHP, Java.
- Détection de bon fonctionnement d’un service applicatif.
- Statistiques ressources système : MRTG, RRDtool, etc.
- Analyse de logs : Logcheck, Webalizer, Awstat, etc.
PRIX : 1 480 €HT (1 770,08 €TTC)