Your new post is loading...
Your new post is loading...
Monter une usine logicielle moderne c’est avant tout se poser la question du niveau d’intégration au regard de l’ambition de son entreprise et définir deux piliers essentiels : la gestion du contrôle de code source (SCM) et les pratiques combinées d’intégration et de livraison continue (CI/CD).
Delve into the ideals behind the new normal for software development. This new normal applies to anyone building software in a modern application lifecycle
Release your software products faster with recommended SDLC patterns in agile environment.
Apache Allura is an open-source forge software for managing source code repositories, bug reports, discussions, wiki pages, blogs and more for any number of individual projects. Allura graduated from incubation with the Apache Software Foundation in March 2013. Allura can manage any number of projects, including groups of projects known as Neighborhoods, as well as sub-projects under individual projects.
2 mouvements semblent a priori prendre des voies opposées : les partisans de l’industrialisation du génie logiciel et les partisans du Software Craftsmanship, poussés par des petits gars comme Martin Fowler ou Uncle Bob Martin et dont nos aimables voisins d’à côté nous parlaient il y a peu. Ces deux tendances sont-elles réellement contradictoires et incompatibles ? Quel est le métier d’un développeur ? Développer du logiciel. Très bien. Quelles sont ses tâches au quotidien ? Elles se composent de tâches répétitives et de tâches uniques, exécutées pour la première et dernière fois. Par définition, chaque logiciel est unique, de par le besoin auquel il répond, ses utilisateurs, ses contraintes d’exécution et enfin son architecture et sa conception. Et toute la problématique est précisément là : comment assister le développeur, l’aider à dégager du temps de cerveau disponible pour être réellement efficace sur les tâches où le cerveau humain a une réelle valeur ajoutée. Et, miracle, c’est précisément le but de l’usine logicielle. Décharger autant que possible le développeur de ses tâches répétitives, l’assister, de façon à le laisser pouvoir se concentrer sur les tâches où son cerveau a une réelle utilité.
Une usine logicielle s’inscrit dans une démarche de gestion complète du cycle de vie d’une application. Microsoft appelle cette dernière Application Lifecycle Management (ALM), et l’adresse avec son offre Team Foundation. L’idée est donc de proposer des solutions pour chacun des maillons du cycle itératif de la vie de l’application.
Nous retrouvons dans ce schéma l’ensemble des étapes de la vie d’une application : - Le recueil des besoins
- L’architecture
- La conception, le développement
- Les tests
- La qualimétrie
- Le déploiement
- La gestion des changements
Et par-dessus tout ceci, des éléments transversaux : l’Intégration Continue, la gestion de la dette technique, la gouvernance… Microsoft propose une solution clé en main, Team Foundation Server (TFS). La solution est bonne, voire excellente, pour peu qu’on ait les budgets. L’intégration entre le serveur TFS et Visual Studio est très forte. Pour des raisons diverses, cette solution n’est ici pas retenue. Premièrement, pour donner un sens à cet article. Ensuite, et plus sérieusement, nous avons choisi de nous orienter plutôt vers une solution plus ouverte vers l’extérieur, et si possible gratuite. Il est fortement envisagé d’inclure dans notre usine des solutions RubyOnRails. Même si TFS n’est plus cantonné à 100% aux technologies Microsoft, la plateforme leur reste tout de même intimement liée. Quelles sont donc les alternatives ? Détaillons ses composants.
Visual Studio Team Foundation Server 2015 est une plateforme homogène de contrôle du code source, de gestion de projet et de collaboration des équipes sur laquelle repose la suite d'outils Microsoft de gestion du cycle de vie des applications (ALM), qui aide les équipes à mieux travailler, à collaborer plus efficacement et à livrer plus systématiquement des logiciels de qualité.
Donc pour récapituler, nous avons vu comment organiser un projet de développement en terme d’équipe et de tâche, comment architecturer la plateforme et les développements, mais pour aller encore plus loin il faut identifier les tâches récurrentes des développeurs et fournir l’outillage nécessaire pour maximiser les opérations.
Un des aspects important de la phase de conception est la mise en œuvre d’une plateforme de développement. Celle-ci doit être optimisée de manière à supporter tous les flux d’activités des développeurs.
Learn how to get the most value from your MSDN subscription, including Microsoft Azure benefits. Use the cloud to help increase your team's efficiency.
Présentation faite à ScrumDay Paris en 2011 Les développeurs, les responsables qualité, les ScrumMasters, les ProductOwners ou les responsables des développeme…
Would you like to see how a productive, effective, and successful (real-world!) software development team works, from code to customer? Watch Northwest Cadence experts Steven Borg and James Tupper as
|
La conception des tests est la partie « intelligente » des tests. C’est celle où l’on décide à quoi vont ressembler les tests et quels seront leurs buts. L’exhaustivité des tests étant impossible il faut faire des choix et en faire des pertinents. Il existe plusieurs techniques de conception dont de nombreuses basées sur les spécifications. Pour les découvrir je vous recommande la série de Benjamin Butel à ce sujet. Un ALM n’est pas un outil de conception Un ALM est un outil « presque » à tout faire pour le testeur, néanmoins il n’inclut pas de module pour concevoir ses tests. En effet, ses fonctions sont des fonctions de taxonomie, de répertorie et de suivi. Ils ne permettent malheureusement pas au testeur de savoir quels sont les tests à exécuter. Existe t-il des outils de conception de test ? Oui, il existe des outils de conception de test. Ces outils aident le testeurs à générer des tests en suivant diverses contraintes indiqués par celui-ci. Les outils de conception de test les plus représentatifs sont les outils de MBT (Model Based Testing) qui se base sur des représentations graphiques des fonctionnalités de l’application.
Sam Guckenheimer propose dans sa récente keynote à l'ALM Summit 3 de réinventer la gestion du cycle de vie des applications (ALM) pour permettre d'avoir un retour en continu sur le développement logiciel, en se basant sur une métrique liée au temps nécessaire pour mener une expériementation et en tirer une leçon valide.
Offers advice on change request tracking, inventory control, process automation, deployment automation, compliance reporting, and ALM.
Les anomalies sont une mine de connaissance sur le logiciel. Néanmoins, comme toute mine il faut arriver à extraire ce qu’elle contient. Pour se servir des anomalies il faut être capable de les classer : Pour cela il y a 2 possibilités : - Faire tout manuellement… Ce qui est très compliqué - S’aider de la puissance des ALM…
The Visual Studio ALM | DevOps Rangers provide practical guidance, experience, and gap-filling solutions to the developer community.
Ce n'est pas nouveau, le versionning et le déploiement de base données dans un projet est un sujet sensible. Les déploiements SQL avec SSDT DB apportent une partie de la réponse.
Pouvoir gérer le versioning du code source de ses applications est devenu un prérequis mais au niveau des bases de données, il y avait encore des efforts à faire.
Tout d’abord, il faut bien déterminer les différents niveaux de développements : - Paramétrages : Il s’agit ici de la configuration spécifique apportée à l’organisation (ex : numérotation automatique, paramètres régionaux …)
- Personnalisations : Désigne toutes les opérations liées aux entités, vues, tableaux de bord, …
- Développements : Concerne tous les éléments éditable dans Visual Studio, à savoir : plugins, workflows, webresources, …
Les paramétrages et personnalisations doivent être réalisés dans l’interface CRM dans une solution spécifique. Une fois les modifications appliquées et publiées, il est possible de les exporter de CRM (fichier compressé .zip) pour les livrer dans les autres environnements. Les développements (c#, js …) sont déclarés dans la solution CRM mais doivent être réalisés dans Visual Studio. Ces développements sont de plusieurs types (en très synthétique) : - Plugins / Workflows : Extensions des processus CRM par le biais d’assemblies (dll) qui sont développés en C#.
- Webresources : Extensions de l’interface CRM par le biais de pages HTML et de fichiers JavaScript (js).
- Rapports : Rapports SSRS (rdl) réalisés avec SSDT Business Intelligence for Visual Studio
- Batchs : Processus permettant le chargement et la reprise de données (en c#, Powershell, ou SSIS)
Pour optimiser les développements, tous ces éléments doivent être gérés depuis une même solution technique, cela simplifiera la gestion du cycle de vie des différents composants.
TFS propose 3 axes de ventilation des WorkItems : - Discipline : analyse, développement, déploiement …
- Area : L’area peut être le domaine fonctionnel CRM, comme par exemple :
- Iteration : L’itération peut-être la phase du projet (ex : Sprint 1, Lot 1, …) et la phase de réalisation technique, comme par exemple :
Ainsi les éléments de travail sont répartis de manière à faciliter leur assignation.
Team Foundation Server est la “forge logicielle” de Microsoft. C’est un outil permettant d’intégrer les activités liées à la gestion de cycle de vie logiciel. TFS propose les fonctionnalités suivantes : - Contrôle de version
- Collaboration et planification Agile
- Version
- Gestion de cas de test
- Création de rapports
De plus, TFS s’intègre à Visual Studio, Office, SharePoint et Project : ce qui décuple ces capacités de collaboration dans les processus du projet.
Get a close look at Application Lifecycle Management (ALM) from code to customer, and see how the most effective software development teams work.
Suggests patterns and anti-patterns, including Hybrid SCM, Git champions, blessed repository, per-feature topic branches, and ALM integration.
|