Copyright © 2020 Apollo
Le besoin Client
Acteur majeur des revêtements de toit, notre client souhaite se doter d’une application permettant de réaliser des bilans de consommation énergétique et de proposer des solutions photovoltaïques.
Elle se doit d’être évolutive, multi supports et surtout intégrée à son système informatique. Elle viendra en remplacement d’un fichier Excel extrêmement complexe.
Notre solution sur mesure
CLEAN architecture : Implémentation d’une architecture s’appuyant sur la séparation des responsabilités et le découplage des fonctionnalités métier. Ce système va permettre d’obtenir un logiciel avec des couches plus indépendantes et évolutives.
Retro engineering : Analyser et reproduire le fonctionnement du fichier Excel existant.
Nos points forts
L’objectif du projet Simulateur Solaire est de proposer une solution de remplacement efficace au système actuel qui ne satisfait plus l’ensemble des besoins de notre client.
Le challenge pour la Coding Factory Apollo sur ce projet est double. Nous devons d’une part être capables de reproduire à l’identique la complexité technique des calculs existants dans le fichier Excel d’origine. Et d’autre part, nous voulons proposer une interface et une ergonomie qui soit efficace et simple d’utilisation pour l’utilisateur. En effet, le projet actuellement utilisé par la flotte commerciale de notre client pourrait être ouvert à terme à ses propres clients ou à des particuliers.
Techniquement, le projet Simulateur Solaire est réalisé avec un back-end qui s’appuie sur le Framework .Net 5.
Il est associé à une base de données PostgreSQL avec Entity framework pour le mapping de données. Côté Front, nous utilisons la dernière version de la librairie Angular.
La spécificité technique de ce projet est sans contexte l’utilisation du concept de Clean Architecture. Celle ci va nous permettre de rendre le code plus indépendant et plus testable.
La plus grosse difficulté technique a été de reproduire sans régression les milliers de calculs réalisés par l’outil existant sous Excel dans notre application web tout en proposant une interface simple et une ergonomie intuitive.
Ce projet a été pour nous l’occasion de monter une architecture Docker plus complexe qu’à l’accoutumée. En effet, il a fallu reproduire l’environnement du client pour s’assurer des mises en production seraines. C’est pour cela que nous avons dockerisé, l’application web, la base de données, un serveur LDAP, un serveur SAML et un container dédié à la génération de fichiers PDFs. Ainsi nous pouvons executer nos tests dans un environnement très proche de celui de production.
Fonctionnellement, les deux premières versions de l’application se compose de plusieurs écrans dont :
La version 3 du projet aura pour objectif d’améliorer le système de calcul pour se passer complètement du fichier Excel existant. On nous a également demandé d’inclure une gestion tarifaire des produits pour permettre la génération d’un devis clé en main.
Vous pouvez visualiser le résultat de notre travail sur le projet ci-dessous
Le développement du projet est en cours actuellement et devrait s’étaler sur une année environ. Il à été organisé en 3 lots distincts eux-même découpés en plusieurs sprints de deux semaines.L’ensemble du projet à été réalisé en suivant la méthodologie Agile Scrum.
L’ensemble du code source produit par l’équipe de développement est contrôlé automatiquement par le logiciel de qualité de code SonarQube.
Sur le projet simulateur solaire, nous avons également encouragé le binômage entre membres de l’équipe de développement. Dans le même esprit, les leads devs présents sur le projet effectuent plusieurs fois par sprint des revues de code.
Enfin, au vue de la grande complexité des calculs et du projet en général, nous avons créé un grand nombre de tests unitaires, des tests end-to-end et des tests d’intégration et de non régression afin d’assurer le bon fonctionnement du projet dans la durée. Ces tests sont executés à chaque pull request d’un développeur pour s’assurer qu’aucune régression n’est faite à la complétion de celle-ci.
Le projet se compose de plusieurs environnements : développement, qualification et production. Chacun d’eux dispose d’une intégration et d’un déploiement continu à la volée grâce à l’utilisation de Docker.