Expérience professionnelle
Enablon
Avril 2019 – Novembre 2024
Consultant iOS
Inspection
Inspection est une application mobile iOS conçue pour faciliter la gestion de check-lists dans
des environnements où la sécurité des données et la continuité du service sont cruciales.
L'application permet aux utilisateurs de suivre des processus de manière structurée, même
en mode hors ligne, grâce à une synchronisation automatique des données une fois la
connexion rétablie.
Un des points techniques clés de ce projet est l'intégration d'une authentification PKCE via
des webviews, utilisée pour sécuriser l'accès aux services et API externes. Cette méthode
assure une protection accrue des données des utilisateurs tout en garantissant une
expérience fluide lors de l'authentification.
L'application comporte également plusieurs formulaires dynamiques gérés par un
framework interne qui permet de structurer et de valider les entrées utilisateurs de manière
flexible et sécurisée. Ce système permet d'adapter les formulaires aux besoins spécifiques de
chaque utilisateur ou processus, tout en garantissant une gestion efficace des données
collectées.
De plus, l'application a été développée dans un environnement multilingue, avec une
gestion des interfaces RTL pour la langue arabe, et inclut l'intégration de fonctionnalités
vidéo/audio pour enrichir l'expérience utilisateur. L'application est également optimisée pour
iPhone et iPad, offrant une expérience fluide et cohérente sur les deux types d'appareils.
Interventions principales :
● Mise en œuvre d'un nouveau système de téléchargement : Cela comprend l'utilisation
de caches pour améliorer les performances, l'emploi de workers pour effectuer des
tâches en arrière-plan et la création de workflows pour gérer les processus
d'interaction.
● Migration entre différentes versions d'APIs : Assurer une transition en douceur entre les
différentes versions des APIs sans affecter les fonctionnalités existantes.
● Gestion des documents et prévisualisation : Mise en place d’un module complet de
gestion des fichiers, incluant leur listing, gestion et prévisualisation directement dans
l’application, garantissant une expérience utilisateur fluide.
● Implémentation de l'authentification PKCE via webviews : Intégration d'une
authentification sécurisée via PKCE (Proof Key for Code Exchange) pour garantir la
sécurité des échanges avec les services et APIs externes, notamment en utilisant des
webviews pour un accès fluide et protégé.
● Utilisation et intégration de bibliothèques tierces : Mise en œuvre et intégration de
bibliothèques tierces telles que Alamofire pour les appels réseau.
● Téléchargement et visionnage des fichiers média : Intégration d'une fonctionnalité
permettant aux utilisateurs de télécharger des fichiers média pour un accès hors ligne,
4
avec une prévisualisation facilitée via Quick Look. Cette mise en œuvre optimise
l’expérience utilisateur en leur offrant la possibilité de gérer et de visionner les médias
directement dans l'application.
● Élaboration et rédaction des spécifications fonctionnelles et techniques : Comprend la
définition des exigences fonctionnelles et techniques du projet, ainsi que leur
documentation claire et concise,
● Mise en œuvre de la solution : Implication active dans le développement et le
déploiement de la solution logicielle.
● Migration de la base de données CoreData sans perte de données : Mise à jour de la
base de données CoreData vers une nouvelle version, tout en garantissant la sécurité
et l'intégrité des données existantes.
● Intégration de la langue arabe et adaptation de l'UI en RTL : Incorporation de la prise
en charge de la langue arabe dans l'application, y compris le basculement de
l'interface utilisateur pour une lecture de droite à gauche.
● Ajout du mode paysage (Landscape) : Introduction de la compatibilité avec le mode
paysage pour une meilleure expérience utilisateur sur les appareils en mode horizontal.
● Développement d'un module de verrouillage par code : Création d'une fonctionnalité
permettant de sécuriser l'accès à l'application par un code personnel.
● Rédaction détaillée des spécifications fonctionnelles et techniques sur Confluence :
Documentation approfondie des spécifications du projet, en utilisant Confluence pour
une meilleure gestion et collaboration.
● Développement de tests unitaires pour augmenter le taux de couverture de code :
Écriture et mise en œuvre de tests unitaires pour s'assurer que chaque unité de code
fonctionne comme prévu, améliorant ainsi la qualité et la fiabilité du code.
● Maintenance corrective et évolutive : Prise en charge de l'entretien du logiciel, y
compris l'identification et la correction des bugs, ainsi que l'ajout de nouvelles
fonctionnalités pour répondre aux demandes évolutives des utilisateurs.
● Revue de code : Analyse régulière du code pour s'assurer qu'il est bien structuré,
efficace et conforme aux normes de codage, pour maintenir la qualité du code à un
niveau élevé.
Framework interne
Le moteur de formulaire est un module natif, aussi appelé pod, qui est conçu pour
fonctionner avec les applications mobiles. Ce moteur s'occupe principalement de la
création et de la gestion des formulaires.
L'une des caractéristiques principales de ce moteur est sa capacité à respecter les
conditions envoyées par le serveur. Cela signifie qu'il peut ajuster la présentation et la logique
des formulaires en fonction des directives fournies par le serveur. Par exemple, si le serveur
fournit des règles spécifiant que certains champs doivent être affichés ou masqués en
fonction des entrées de l'utilisateur, le moteur de formulaire est capable d'interpréter ces
règles et d'ajuster le formulaire en conséquence.
De plus, le moteur de formulaire peut prendre en charge la logique complexe pour gérer les
formulaires. Par exemple, il peut s'occuper de la validation des données entrées par
l'utilisateur, du remplissage automatique des champs en fonction des entrées précédentes,
de la gestion des dépendances entre les champs, et bien plus encore. Ces capacités
5
permettent au moteur de formulaire de gérer une grande variété de scénarios de formulaire,
tout en offrant une expérience utilisateur fluide et réactive.
Domaines d’intervention :
● Mise en œuvre d'une solution de suivi : Élaboration et déploiement d'une stratégie de
suivi détaillée pour analyser le comportement des utilisateurs au sein de l'application,
améliorant ainsi la compréhension des interactions des utilisateurs et permettant des
améliorations ciblées.
● Gestion des formulaires via APIs REST : Conception et mise en œuvre d'un système de
gestion de formulaires basé sur les APIs REST, facilitant la création, la mise à jour et la
soumission de formulaires dans l'application.
● Étude et mise en œuvre de la logique de gestion des formulaires : Conception et
implémentation d'un système logique robuste pour gérer les interactions de l'utilisateur
avec les formulaires, assurant ainsi une interface utilisateur efficace et réactive.
● Intégration de la solution OData (Protocole Microsoft) : Incorporation du protocole de
communication de données OData de Microsoft, garantissant une interopérabilité des
données fluides entre l'application et divers services de données.
● Définition et rédaction des spécifications fonctionnelles et techniques : Élaboration de
spécifications fonctionnelles et techniques détaillées pour guider le développement de
l'application, assurer une communication claire entre les équipes et créer une
documentation de référence pour le projet.
● Création de diagrammes UML : Utilisation de diagrammes UML pour visualiser et
expliquer la structure de l'application, facilitant ainsi la compréhension des relations et
interactions entre différents composants du système.
● Gestion des vues : Supervision de l'interface utilisateur de l'application, y compris la
création, la modification et l'optimisation des vues, pour assurer une expérience
utilisateur agréable et intuitive.
● Migration de la base de données Realm : Gestion de la mise à jour de la base de
données Realm vers les nouvelles versions, garantissant une transition en douceur sans
perte de données.
● Mise en œuvre de tests unitaires : Création et exécution de tests unitaires, veillant à ce
que chaque composant de l'application fonctionne comme prévu, ce qui permet
d'améliorer la qualité du code et de réduire les bugs.
● Rédaction des spécifications sur Confluence : Utilisation de Confluence pour
documenter de manière exhaustive les spécifications fonctionnelles et techniques,
facilitant la collaboration et la communication entre les équipes de projet.
● Développement de pipelines sur Azure : Création et gestion de pipelines sur la
plateforme cloud Azure pour automatiser les processus de déploiement et de mise à
jour de l'application.
● Transition vers des pipelines en YAML : Modification des pipelines existants pour utiliser
le format YAML, qui est plus facile à lire et à gérer, ce qui permet une automatisation
plus efficace.
● Optimisation des performances : Identification et mise en œuvre d'améliorations de
performance pour accélérer l'application, en réduisant le temps de chargement, en
augmentant la réactivité et en améliorant l'efficacité globale.
6
● Gestion des releases du framework : Supervision du processus de release du framework,
de la version Release Candidate (RC) à la version finale, veillant à ce que chaque
version soit stable, testée et prête pour la production.
● Revue de code : Examen régulier du code pour vérifier sa qualité, sa clarté et sa
conformité avec les standards de codage, afin de maintenir un haut niveau de qualité
et d'efficacité du code.
...