Quels enjeux technologiques pour le secteur bancaire en 2024 ?

Le Bank Tech Day 2024 est un événement incontournable pour les acteurs du secteur bancaire, réunissant experts, décideurs et innovateurs autour des défis et des opportunités technologiques qui façonnent l’avenir de la finance. Si vous l’avez manqué, voici les principaux enseignements et enjeux technologiques que nous avons retenus : IA !

Bank Tech Day 2024, représentation d'un conseiller bancaire dans un univers fututiste.

L’intelligence artificielle en passe de révolutionner l’expérience client

L’intelligence artificielle (IA) a été au cœur des discussions, notamment pour améliorer l’expérience client. Les banques et les institutions financières investissent en priorité dans l’optimisation des processus KYC (Know Your Customer) et KYB (Know Your Business), ce qui non seulement permet de prévenir les fraudes potentielles mais aussi de se conformer aux lois et réglementations nationales et internationales.

C’est dans ce contexte que des solutions IA sont de plus en plus utilisées pour créer des scénarios prédictifs, et assurer une maintenance continue des données KYC et KYB​ dans le but de mettre en place des dispositifs pour améliorer la satisfaction client

Cependant une grande importance doit être donnée à la qualité des données pour entraîner les différents modèles d’IA afin d’obtenir des résultats pertinents et proposer des services satisfaisants.

Dans une ère où le client peut changer rapidement de banque, intégrer des outils IA permet aussi d’augmenter le conseiller bancaire. Ce n’est pas le futur mais on y est presque :

Traitement et analyse des demandes des clients au téléphone

Au téléphone, une analyse des échanges permettrait de suggérer plus rapidement des solutions en les proposant aux conseillers bancaires. 

Par exemple : suite à la discussion, l’IA propose de noter un RDV dans l’agenda du conseiller bancaire du client, ou il suggère d’envoyer un email au client avec des solutions de financement… 

A la clé : une plus grande efficacité du conseiller, une réduction des temps de formation…

Utilisation de chatbot reposant sur l’IA dans l’espace client

L’IA peut désormais traiter des demandes d’informations très variées tout en proposant une expérience utilisateur d’une grande qualité. Ainsi, le client pourra en une seule question demander une analyse de ses dépenses, poser des questions de facturation où accéder aux informations des produits. Il faut néanmoins rester vigilant sur la fiabilité de l’information et le respect des normes réglementaires. Le chatbot vient ainsi en complément des échanges téléphoniques afin de répondre à une partie des demandes et gagner en efficacité opérationnelle.

Proposer une transcription automatique des réunions

Pour continuer dans la même veine, lors des réunions client, il est possible d’effectuer une retranscription automatique des échanges afin de les synthétiser dans le CRM. Il serait même possible de simplifier les saisies avec les échanges (montant du financement par exemple) voire d’analyser les sentiments des clients pour avoir des indicateurs sur la qualité du service (“big brother is watching you”).

Bank Tech Day 2024 – La DSP3 arrive !

La DSP3, ou Directive sur les services de paiement 3, est un ensemble de nouvelles règles européennes qui visent à rendre les paiements plus sûrs, plus innovants et plus centrés sur le client.

Quels sont les objectifs de la DSP3 ?

  • Sécurité renforcée pour mieux protéger les consommateurs contre la fraude
  • APIs Open banking boosté : L’expérimentation, l’exploitation et l’optimisation des APIs d’Open Bankin pour atteindre la maturité technologique permettant leur ouverture et accessibilité mais aussi leur sécurité.  
  • Lutte contre la fraude optimisée : les acteurs peuvent partager des infos sur les transactions frauduleuses pour mieux les identifier et les bloquer.
  • Protection des consommateurs accrue : plus de contrôle sur leurs données et plus de transparence dans les services de paiement.

Comment s’adapter ? ️

Suite au Bank Tech Day 2024, les acteurs du secteur devront s’appuyer sur des solutions technologiques innovantes telles que l’authentification forte, les plateformes d’open banking sécurisées, les systèmes de détection de fraude basés sur l’IA, et puis surtout des outils de gestion des données robustes. ️

Banking As a Service : les API au coeurs des partenariats entre banque et Fintech

L’ère des APIs permet le développement de nouveaux business models, tels que la Banking-as-a-Service (BaaS) ou Open Banking. Ces modèles favorisent la co-création de valeur avec des partenaires, offrant de nouveaux services aux clients. 

Les APIs facilitent la collaboration entre les grandes banques et les fintechs, permettant une intégration rapide et efficace des nouvelles technologies ou offres. Les API sont aussi la clé de l’utilisation de l’IA à partir des données clients pour proposer des solutions plus pertinentes et adaptées. Évidemment, la mise en œuvre de ces APIs doit respecter les réglementations en vigueur pour garantir la sécurité et la confidentialité des données clients. 

Ce sujet, nous le connaissons bien chez TheCodingMachine. Nous avons eu l’opportunité de mettre en place techniquement de telles solutions notamment en intégrant des solutions comme Bridge ou Ubble au sein des parcours utilisateurs de nos clients.

Quelle banque pour demain ?

Le client est au cœur de la stratégie : l’avenir du secteur se jouera avec les banques qui développent un fort relationnel avec leur client, qui misent sur un accompagnement proactif. Il faut être facilement joignable et offrir un accompagnement à la fois expert et personnalisé à tout moment. Il est estimé que 30% des ventes passeront en 2025 par des leviers digitaux.

Alors, comment faire ? Il faut prioriser la satisfaction client au niveau des innovations et garantir le plus possible une expérience fluide, sécurisée et personnalisée. 

L’avenir de la banque appartiendra certainement à ceux qui sauront placer l’expertise et la confiance au cœur de leur relation client notamment en exploitant à bon escient leurs données à travers les API.

À retenir du Bank Tech Day 2024

Le Bank Tech Day 2024 a mis en lumière les nombreux défis et opportunités technologiques auxquels le secteur bancaire doit faire face : L’IA, la DSP3, la prévention contre la fraude, les business models digitaux, la collaboration avec les fintechs et la confiance client sont les clés pour construire la banque de demain.

Évidemment, si vous souhaitez parler de projets IA, API, relation client et même DSP3, on se tient à votre disposition !

Si ce sujet vous intéresse, lisez également notre article : L’Intelligence Artificielle Générative, quelles applications pour l’entreprise ?

Bonnes pratiques pour documenter son code PHP en utilisant ADR (Architecture Decision Records)

Documenter le code est un aspect clé du développement logiciel. C’est essentiel non seulement pour la maintenance mais aussi pour la compréhension du code par d’autres développeurs. Une des méthodes la plus efficace pour documenter est d’utiliser l’Architecture Decision Records (ADR). Cet article explore comment utiliser les ADR pour documenter le code PHP, garantissant ainsi une compréhension claire des choix architecturaux.

Qu’est-ce qu’un ADR?

Un Architecture Decision Record (ADR) est un document qui détaille une décision architecturale importante, incluant le contexte, les alternatives envisagées et les raisons de la décision finale. L’objectif principal d’un ADR est de fournir une archive des décisions prises, permettant ainsi de comprendre pourquoi les choses ont été faites d’une certaine manière.

Pourquoi utiliser les ADR en PHP ?

L’utilisation des ADR en PHP, comme dans d’autres langages de programmation, aide à :

  • Clarifier les décisions prises : Les ADR aident à expliquer pourquoi certaines décisions architecturales ont été prises, ce qui est crucial lors de la revisite ou de la révision du code.
  • Faciliter l’orientation des nouveaux développeurs : Les nouveaux membres de l’équipe peuvent comprendre plus rapidement le projet en se référant aux ADR.
  • Assurer une cohérence du projet : Les ADR aident à maintenir une ligne directrice claire pour le développement futur et les modifications du projet.

Comment Documenter son Code PHP avec des ADR ?

Choix de la Structure des ADR

Chaque ADR doit suivre une structure claire pour assurer la consistance. Une structure type comprend (bon ca reste simple) :

Titre : Doit clairement refléter la décision prise.
Statut : Par exemple, proposé, accepté, rejeté, déprécié, etc.
Contexte : La description du problème que la décision vise à résoudre.
Décision : La description de la décision architecturale prise.
Conséquences : Les conséquences de la décision, y compris les avantages et les inconvénients.

Intégration des ADR au Workflow de Développement

Les ADR doivent être considérés comme une partie intégrante du processus de développement. Ils doivent être :

  • Créés et mis à jour par les développeurs : Chaque fois qu’une décision significative est prise, un ADR doit être rédigé ou mis à jour.
  • Revus par l’équipe : Les ADR doivent être revus par les pairs pour garantir qu’ils expliquent la décision et son contexte.
  • Accessibles : Les ADR doivent être stockés dans un répertoire accessible à toute l’équipe, souvent à côté du code dans le système de contrôle de version.

Exemple d’un ADR pour un Projet PHP

Titre : Utilisation de Laravel pour le Projet X
Statut : Accepté
Contexte : Nous avons besoin d’un framework robuste qui facilite la rapidité de développement, la maintenance et qui est largement adopté.
Décision : Utiliser Laravel comme framework principal pour le Projet X en raison de son large écosystème, de sa documentation exhaustive, et de sa grande communauté.
Conséquences : Cette décision permet une mise en œuvre rapide des fonctionnalités grâce aux nombreux paquets disponibles. Cependant, cela nous lie à la philosophie et à la structure de Laravel, ce qui peut limiter certaines options d’architecture spécifique.

Conclusion

Documenter les décisions architecturales en utilisant les ADR dans les projets PHP est une pratique qui renforce la transparence et améliore la gouvernance du projet. Cela permet une meilleure compréhension des choix architecturaux, facilitant ainsi la maintenance et l’évolution du système. En intégrant les ADR dans les pratiques de développement quotidien, les équipes peuvent garantir que le contexte et les justifications des décisions prises restent accessibles et compréhensibles pour tous les acteurs du projet.

L’achèvement d’un projet signe-t-il son arrêt de mort ?

Parlons un peu du post-mortem ! 💀

Vous venez de réaliser un super projet, il a été mis en production et la phase de garantie est terminée ! Vous vous en souviendrez longtemps, que de beaux souvenirs partagés tous ensemble autour de ce sujet passionnant… Quel dommage qu’il faille à présent passer à autre chose !
Cela vous paraît absurde ? Ça tombe bien, nous aussi !
Et si on parlait un peu de la réunion de post-mortem ?

achèvement d’un projet

Le terme “post-mortem” est-il le terme adéquat ?

👩‍🏫 Le point scolaire

L’expression “post-mortem” vient du latin “post” qui signifie “après” et “mortem” qui signifie “mort”. Donc la réunion de post-mortem est une réunion censée se tenir “après la mort” du projet.
Mais, dans le contexte du web, lorsqu’un projet est achevé, peut-on vraiment parler de la mort de ce projet ?

A quel moment un projet est-il achevé ?

Déjà, il est important de bien différencier l’achèvement d’un projet et l’interruption d’un projet :

  • Un projet est achevé lorsque toutes les phases sont terminées.
  • Un projet est interrompu lorsqu’on décide de le stopper définitivement au milieu ou à la fin de sa réalisation pour une raison ou une autre.

L’appellation “post-mortem” peut donc avoir du sens après l’interruption d’un projet. Après l’achèvement, en revanche, peut-on réellement parler de la mort du projet ?

De notre point de vue, la vie d’un projet continue bien après sa mise en production ! C’est à ce moment-là que les retours des premiers concernés commenceront à remonter car la solution commencera à être réellement éprouvée et les utilisateurs pourront évaluer sa pertinence dans le contexte de leur problématique métier.
Chez TCM, on préfère parler de rétrospective.

Quel est l’objectif de la rétrospective d’un projet ? 🎯

La rétrospective d’un projet est axée autour de 4 points clés :

  • Évaluer le déroulement du projet
  • Discuter des performances de la solution
  • Explorer les perspectives d’évolution
  • Mettre en lumière les points positifs à reproduire et les erreurs à éviter pour la suite

Qui participe à la rétrospective d’un projet ?

Pour déterminer les personnes qui doivent participer à la rétrospective d’un projet, vous pouvez vous poser les questions suivantes :

  • Quelles sont les différentes parties prenantes du projet ?
  • Qui a travaillé à sa réalisation ?
  • Qui va utiliser le projet ?

Chez TCM, nous avons l’habitude de faire participer au moins l’une des personnes suivantes :

  • Un référent technique : une personne qui a participé au développement du projet et qui connait la technique et les défis qu’ont rencontrés les développeurs
  • Un référent gestion de projet : Une des personnes qui ont planifié, coordonné et supervisé le projet
  • Un référent commercial : La personne qui a été le premier contact entre TCM et l’instigateur du projet
  • Le client : Une personne qui est à l’origine du projet

Qu’aborde-t-on lors d’une rétrospective?

Présentation des participants

La première chose à faire est de prévoir un moment pour que chaque participant à la réunion se présente, il est possible que certains des intervenants ne se connaissent pas entre eux et cette présentation permet à chaque participant de connaître ses interlocuteurs et le rôle de chacun dans cette réunion.

Exposition des objectifs de la réunion

Il faut ensuite rappeler les objectifs de la réunion : Pourquoi est-ce qu’on a réuni tout le monde ? En quoi consiste cette réunion ?

Rappel du contexte du projet

Certains intervenants peuvent travailler sur de nombreux sujets en parallèle, rappeler le sujet permet à tout le monde de savoir précisément de quoi on traite.

Déroulement du projet

Donner un aperçu de la manière dont s’est déroulé le projet :

  • Quelles ont été les différentes phases ?
  • Le planning a-t-il été respecté ? Y-a-t-il eu de l’avance ou du retard ? Pour quelles raisons ?
  • Comment le projet a-t-il été géré ?

Intégrer des statistiques représentant le travail abattu peut également être intéressant.

Performance de la solution

Ce point est très important. Évaluer la performance de la solution apportée va permettre de déterminer si vous avez répondu correctement au besoin. Pour ce faire, on peut suivre les étapes suivantes :

  • Rappeler les besoins définis au départ
  • Montrer la solution technique mise en place pour y répondre
  • Déterminer si la solution répond aux attentes et donner des éléments chiffrés sur l’utilisation du projet

Événements marquants

Essayer de mettre en lumière les différents points forts et challenges que vous avez relevés durant le projet

Choses à reproduire ou à éviter

Et si un jour vous deviez refaire un nouveau projet avec la même équipe ou bien faire évoluer le produit actuel, quels sont les points intéressants que vous aimeriez refaire de la même manière ? Quels sont les points à ne surtout pas reproduire ? Pensez à recueillir le ressenti général des équipes, même si les personnes en question ne participent pas à la réunion.

Perspectives d’évolution

Déterminer les évolutions qui pourraient être ajoutées au projet et solliciter les utilisateurs finaux sur leur utilisation de la plateforme.

Inclusion des points transverses

Y-a-t’il des points transverses que vous aimeriez aborder ?
Par exemple : La maintenance du projet.

Étapes suivantes

Quelles sont les étapes suivantes pour le projet ?

Bilan de la réunion

Rappel des points clés évoqués tout au long de la réunion et liste des actions à mener.

Conclusion

La réunion de rétrospective a pour principal objectif de prendre du recul par rapport au travail effectué de manière à continuer la collaboration de la meilleure façon possible. La rétrospective ne vise pas à clôturer le projet, mais bien à le faire vivre et évoluer en tirant un enseignement bénéfique des expériences passées dans un processus d’amélioration continue.

Déconnecté mais jamais limité : optimiser votre appli avec le mode hors ligne

Imaginez une application mobile révolutionnaire, une sorte de génie numérique qui réalise vos désirs les plus fous : elle vous prépare le café matinal, planifie votre journée, vous maintient connecté•e avec vos proches, effectue vos courses, et même – pourquoi pas – elle pourrait se rendre au travail à votre place lorsque la fatigue se fait trop sentir ! Après plusieurs mois d’utilisation, elle est devenue votre indispensable compagnon numérique.

Pourtant, un jour, sans crier gare, votre connexion internet vous abandonne, le wifi se met en grève et vous vous retrouvez coincé•e avec un réseau EDGE des plus chaotiques. La machine à café refuse d’obéir, votre agenda se perd dans les méandres du cyberespace, les conversations avec vos proches ont disparu et vos courses ne se commandent plus automatiquement. Un écran blanc s’affiche, suivit d’un chargement infini… bref, l’application cesse de répondre… Tout semble s’effondrer à cet instant précis. Une application si merveilleuse, si vitale, devient soudainement inutilisable à cause d’une simple coupure d’internet ?

Découvrons ensemble comment cette application prétendument « géniale » peut réellement le devenir, même lorsque la connexion internet flanche.

L’expérience utilisateur au coeur des applications

Lors de la création d’une application mobile, tout tourne autour de l’expérience vécue par les utilisateurs•rices. C’est ce qui guide chaque étape de réflexion. L’exemple précédemment évoqué est extrême, mais il illustre de manière saisissante les conséquences d’une défaillance du réseau. Cependant, des situations plus concrètes peuvent également mettre en lumière l’importance cruciale du mode hors ligne.

Imaginons une application où des employés•ées doivent badger un QR Code pour débuter des missions à des endroits spécifiques. Si ces QR Codes sont placés dans des zones de réseau instable, comme des zones géographiques mortes ou des bâtiments avec une mauvaise réception, l’utilisateur•rice se retrouvera confronté•e à la frustration de voir l’application, vantée par ses supérieurs, dysfonctionner.

Les connexions internet instables ne se limitent pas uniquement à des situations isolées. Elles peuvent provenir de divers facteurs, tels que des connexions limitées (dans des hôtels ou à l’étranger), des pannes de courant, des conditions météorologiques extrêmes, ou même une mauvaise couverture de la part du fournisseur de services.

Lorsque nous entreprenons la création d’une application mobile, la considération de la perte ou de la mauvaise qualité de connexion doit être au cœur de chaque fonctionnalité développée. Cela garantit une expérience optimale de l’application, même lorsque les conditions de connectivité sont difficiles.

Le mode hors ligne vous dites ?

Implémenter le mode hors ligne dans une application mobile permet à celle-ci de continuer à fonctionner et à offrir certaines fonctionnalités, même lorsque l’appareil n’a pas ou peu d’accès à Internet. Cependant, assurer une utilisation continue de l’application ne relève pas de la magie. Certaines fonctionnalités ne peuvent pas fonctionner sans connexion internet, mais il existe diverses façons de gérer la perte de connexion, comme nous l’illustrerons ci-dessous.

Par exemple, une messagerie en temps réel nécessite une connexion active pour fonctionner pleinement. Si ce sujet vous intéresse, nous avons un article ici : Le temps réel en web, quand chaque seconde compte ! Toutefois, même dans ces cas, des solutions alternatives peuvent être envisagées pour améliorer l’expérience utilisateur•rice malgré l’absence de connexion.

Comment améliorer concrètement l’expérience utilisateur•rice grâce au mode hors ligne ?

Prenons pour exemple une application de messagerie instantanée élémentaire. Dans cette application, le premier écran présente la liste des conversations (1), et dès qu’on sélectionne l’une d’elles, l’ensemble de la conversation s’affiche (2).

Si nous n’avions pas pris en compte les futurs utilisateur•rices, nous aurions supposé que tout fonctionnait parfaitement : le premier écran aurait simplement envoyé une requête via le réseau Internet pour récupérer mes conversations. Une fois la réponse obtenue, elle aurait été affichée dans l’application et voilà, affaire réglée. Cependant, le problème survient si, pour l’une des raisons évoquées précédemment, le réseau venait à disparaître. Dans cette situation, l’application continuerait à charger indéfiniment jusqu’à ce qu’un message d’erreur peu explicite apparaisse du genre “Network error”…

Voyons comment le mode hors ligne peut concrètement enrichir l’expérience utilisateur•rice dans ce contexte spécifique :

La notification visuel

La première étape consiste à informer l’utilisateur•rice que son expérience est altérée et pourquoi. Cela permet d’éviter les frustrations découlant de l’utilisation d’une application dans des conditions où elle ne peut fonctionner pleinement. Nombreuses sont les applications qui ne peuvent pas être utilisées à leur plein potentiel hors connexion. C’est le cas de YouTube, qui bloque la lecture des vidéos, ou de Messenger, qui affiche un bandeau en haut de l’application pour signaler l’absence de connexion. Pour autant, personne n’a l’impression que l’application “bug”.

En ce qui concerne notre application de messagerie, concentrons-nous sur la première interface : les conversations sont stockées dans une base de données, mais je ne peux pas accéder à cette base sans connexion Internet. Ainsi, je pourrais envisager d’afficher une erreur claire et précise, à la manière de YouTube, décrivant explicitement le problème rencontré :

Il est crucial d’employer des termes appropriés, simples et compréhensibles, sans recourir à un langage technique, pour garantir une explication claire, directe et précise.

Ne pas bloquer l’utilisateur

Dans le contexte de notre application, la notification précédente bloque entièrement l’accès aux discussions (sans affecter le reste de l’application). Cependant, une meilleure approche permettrait d’offrir une notification moins intrusive et agressive, tout en donnant à l’utilisateur•rice la possibilité d’accéder à quelques fonctionnalités supplémentaires comme pouvoir visualiser des conversations.

Dans le cas d’une connexion instable, il est préférable d’utiliser une notification visuelle impactante mais non intrusive lorsque la connectivité réseau fluctue plutôt qu’un effet stroboscopique entre l’écran chargé et l’écran d’erreur.

De plus, lors du chargement des données, il est préférable d’éviter les chargements en plein écran qui immobilisent l’utilisateur•rice. À la place, on privilégie les “écrans squelettes” (skeleton loader), qui représentent des espaces (souvent animés) réservés pour les informations en cours de chargement. Un écran squelette imite la structure et l’apparence de la vue complète, donnant ainsi un aperçu visuel du contenu en attente de chargement dans chaque bloc, que ce soit une image, du texte ou tout autre type d’information.

Il est toujours possible d’offrir une façon originale de notifier l’utilisateur que l’application passe en mode hors ligne en offrant un nouveau visuel à l’application. Par exemple passer l’application en noir et blanc :

Le stockage

Pour résoudre la problématique précédente, une solution consisterait à stocker localement  les 10 derniers messages des 10 dernières conversations sur le téléphone. Ainsi, même en cas de connexion faible ou inexistante, l’utilisateur•rice ne serait pas bloqué•e.

Le stockage est une solution efficace pour améliorer l’expérience utilisateur en cas de perte de connexion. Dans notre application, elle permettrait aux utilisateurs•rices de voir les derniers messages d’une conversation comme par exemple ou se situe l’adresse du restaurant où ils ont rendez-vous même si le réseau les a abandonnés.

Cette approche assure une utilisation continue et pratique de l’application, malgré les éventuelles perturbations de la connectivité.

Soumission différée

Une autre façon d’améliorer l’expérience utilisateur est de lui offrir la possibilité d’écrire et d’envoyer un message même en l’absence de connexion. L’utilisateur•rice peut accéder à une conversation, y rédiger un message et l’envoyer. Une notification visuelle claire indiquera que ce message sera transmis dès que le réseau sera rétabli. Cette fonctionnalité garantit une continuité d’utilisation de l’application sans interruption, même lorsque la connexion est instable.

C’est tout ?

Evidemment que non ! En effet, de nombreuses méthodes permettent d’améliorer considérablement une application mobile même lorsque la connexion réseau n’est pas optimale. Nous avons exploré les principaux éléments à prendre en compte lors de la conception d’une application de qualité autour d’un exemple des plus simple. Toutefois, les solutions sont variées et l’innovation persiste à découvrir des techniques avancées pour enrichir davantage l’expérience utilisateur•rice.

Il faut garder en tête que, faire simple et comprendre ce que l’utilisateur•rice va utiliser ou pas est le plus important. Nous pourrions prendre l’exemple d’applications plus complexes comme Google Docs où il est possible de collaborer sur un document en hors connexion et où la logique de fusion des versions à été faite de la plus simple des manières. En effet, le cas d’utilisation reste des moins fréquent, les équipes de Google ont donc opté pour une solution “simple” qui est de fusionner l’ensemble du texte modifié par les auteurs•rices au risque que le texte devienne incompréhensible. Il suffira ensuite de reformuler l’ensemble. Cela évite les pertes de contenu, simplifie le code source et sa compréhension et optimise le temps de développement pour répondre à de vraies problématiques utilisateurs•rices.

Les possibilités sont vastes, mais chaque innovation requiert une exigence, une expertise technique et une connaissance des besoins utilisateur•rice. Chez TheCodingMachine, nous aimons relever ces défis et nous y confrontons avec passion et expertise !

Que peut-on en conclure ?

Le mode hors ligne représente un défi technique avec ses petits challenges si l’on souhaite innover. Cependant, arriver à produire une application de qualité qui répond aux exigences actuelles des consommateurs•rices d’application mobile n’est pas difficile tant que ces derniers•ères sont placés•ées au cœur de la conception.

Auteur: Jérémy Dollé

Révolutionner le développement d’applications mobiles : FlutterFlow

FlutterFlow émerge comme une solution innovante qui promet de transformer la manière dont les développeurs et les concepteurs abordent la création d’applications. Cette plateforme de développement visuel pour Flutter offre une approche simple et rapide, rendant le développement d’applications assez efficace ! Cet article vous propose d’explorer les avantages et les fonctionnalités clés de FlutterFlow, et de découvrir comment il deviendra peut-être un outil incontournable pour les créateurs d’applications mobiles (ou non).

Une interface visuelle intuitive

FlutterFlow présente une interface de conception visuelle drag-and-drop, qui permet aux utilisateurs de construire des interfaces utilisateur (assez élégantes il faut l’avouer) sans écrire une ligne de code ! Cette approche démocratise le développement d’applications en le rendant accessible à quasiement tout le modne, tout en offrant une flexibilité suffisantes pour satisfaire les plus expérimentés. En éliminant les barrières techniques, FlutterFlow ouvre la voie à une créativité sans précédent dans le développement mobile.

Des fonctionnalités riches et extensibles

FlutterFlow n’est pas seulement un outil de conception ; c’est aussi une plateforme complète qui intègre des fonctionnalités avancées telles que l’authentification des utilisateurs, la base de données Firestore, et même l’intégration d’API personnalisées. Les développeurs peuvent ainsi créer des applications assez riches et interactives, allant des simples applications de portfolio aux solutions e-commerce complexes. De plus, FlutterFlow offre la possibilité d’ajouter du code Dart personnalisé, offrant ainsi des outils performants pour étendre les fonctionnalités au-delà de ce qui est possible via l’interface.

Collaboration et productivité

FlutterFlow favorise aussi la collaboration en équipe grâce à ses fonctionnalités de partage et de versionning intégrées. Les équipes peuvent travailler ensemble en temps réel, partageant des projets et des composants d’UI, ce qui accélère le processus de développement et améliore la cohérence de l’application. Cette approche collaborative permet en particulier de prototyper très vite une application.

FlutterFlow : un pont vers le code natif

Ce qui nous plaît peut-être le plus est que FlutterFlow génère du code Flutter natif. Cela signifie que les applications créées avec FlutterFlow peuvent être exportées et améliorées dans un environnement de développement Flutter classique. C’est une vraie nouveauté ! Cette flexibilité en fait un outil extrêmement puissant dans l’arsenal de tout développeur d’applications Flutter.

Bon, il a malgré tout quelques inconvénients, on ne va pas vous mentir …

FlutterFlow : une interface visuelle

Dépendance à la plateforme

La plateforme introduit une couche de dépendance supplémentaire dans le cycle de développement. Les applications développées sont, dans une certaine mesure, dépendantes des fonctionnalités et des limitations de FlutterFlow. Si la plateforme ne prend pas en charge certaines fonctionnalités Flutter récentes ou si elle est lente à se mettre à jour, cela peut retarder ou compliquer l’implémentation de ces fonctionnalités dans votre application.

Gestion des versions et du code source

Bien que la plateforme propose des options de versionning, les développeurs habitués à des systèmes de gestion de versions comme Github peuvent trouver ces fonctionnalités limitées. La gestion fine des branches, des merges, et des rollbacks pourrait être plus compliquée, surtout dans les grosses équipes de développement ou pour des projets avec un cycle de vie long et complexe.

Conclusion

Alors, on pense que c’est une vraie avancée dans le développement d’applications mobiles, offrant une plateforme puissante qui allie simplicité, flexibilité et collaboration. Que vous soyez un concepteur d’UI aspirant à donner vie à vos créations, un développeur cherchant à accélérer le processus de développement, ou une équipe désireuse de travailler de manière plus intégrée, la plateforme offre les outils nécessaires pour transformer vos idées en applications fonctionnelles et esthétique. Avec FlutterFlow, l’avenir du développement d’applications mobiles semble non seulement plus accessible, mais aussi plus prometteur en termes d’efficacité.

Qu’est-ce que l’Inversion des Dépendances ?

L’Inversion de Dépendance (IoD) est un concept fondamental en développement qui contribue à la flexibilité et à la modularité du code. C’est l’un des cinq principes SOLID, qui guident les développeurs vers une architecture plus compréhensible, flexible et maintenable. Pour résumer ce principe : les modules de haut niveau ne doivent pas dépendre des modules de bas niveau, mais tous deux doivent dépendre d’abstractions. Mais, je comprends parfaitement que cela ne soit pas très clair… Alors détaillons un peu !

Qu’est-ce que l’Inversion des Dépendances ?

L’IoD, souvent confondue avec l’injection de dépendances, alors que c’est en réalité un principe plus large. Elle se résume en deux règles majeures :

Les modules de haut niveau ne doivent pas dépendre des modules de bas niveau. Cela signifie que les fonctionnalités majeures dans une application ne doivent pas être influencées par les détails de leur mise en œuvre.

Les abstractions ne doivent pas dépendre des détails; les détails doivent dépendre des abstractions. Cela met en avant la nécessité de définir des interfaces ou des classes abstraites qui dictent ce qu’une fonction ou un module fait, sans s’encombrer de la manière dont les tâches sont exécutées.

Exemples d’Implémentation en PHP avec Symfony

Exemple 1 : Notification System
Dans un système de notification, plutôt que de coder directement contre une classe de notification par e-mail, on définit une interface NotificationInterface avec une méthode send(). Les différentes implémentations de cette interface pourraient inclure EmailNotification, SMSNotification, etc. Ceci permet au code client de rester le même, même si le mécanisme de notification change.

interface NotificationInterface {
    public function send(string $to, string $message): void;
}

class EmailNotification implements NotificationInterface {
    public function send(string $to, string $message): void {
        // Code pour envoyer un email
        mail($to, "Notification", $message);
    }
}

class SmsNotification implements NotificationInterface {
    public function send(string $to, string $message): void {
        // Code pour envoyer un SMS
        // Supposons une fonction sendSms disponible
        sendSms($to, $message);
    }
}

class NotificationService {
    private $notifier;

    public function __construct(NotificationInterface $notifier) {
        $this->notifier = $notifier;
    }

    public function notify(string $to, string $message) {
        $this->notifier->send($to, $message);
    }
}

Exemple 2 : Système de Gestion des Utilisateurs
Lors de l’enregistrement d’un nouvel utilisateur, au lieu de créer une dépendance directe avec une classe de gestion des données utilisateur, utilisez une interface UserRepository. Cela vous permet de changer les méthodes de stockage (base de données, stockage en ligne, etc.) sans modifier le reste de votre code.

interface UserRepositoryInterface {
    public function save(User $user);
}

class MySqlUserRepository implements UserRepositoryInterface {
    public function save(User $user) {
        // Code pour sauvegarder l'utilisateur dans MySQL
    }
}

class UserController {
    private $userRepository;

    public function __construct(UserRepositoryInterface $userRepository) {
        $this->userRepository = $userRepository;
    }

    public function registerUser(string $username, string $password) {
        $user = new User($username, $password);
        $this->userRepository->save($user);
    }
}

Avantages et Inconvénients

Avantages

  • Flexibilité : Les modifications ou extensions du système peuvent être réalisées sans affecter les autres parties de l’architecture.
  • Facilité de test : Les composants peuvent être testés indépendamment en utilisant des mock objects.
  • Réduction du couplage : Le système devient moins dépendant des implémentations spécifiques.

Inconvénients

  • Complexité accrue : L’utilisation d’abstraction quand il n’y a qu’un seul type d’implémentation pour le projet (les notifications ne sont que des e-mails pour reprendre l’exemple précédent) va introduire une complexité supplémentaire inutile (over-architecture)
  • Sur-abstraction : Un excès d’abstractions peut rendre moins lisible les interactions entre les différentes parties de l’application.

Considérations Connexes

En plus des avantages et des défis directement liés à l’IoD, il est essentiel de prendre en compte d’autres aspects qui peuvent influencer son application efficace dans les projets de développement logiciel.

Choix entre Abstract et Interface

Le choix entre utiliser une classe abstraite et une interface est crucial dans l’implémentation de l’IoD :

Abstract : Une classe abstraite permet de définir certaines méthodes qui peuvent être directement implémentées, et d’autres qui doivent être définies par les sous-classes. Cela est utile lorsqu’une partie du comportement doit être partagée entre plusieurs implémentations.

Interface : Une interface ne contient que des déclarations de méthodes sans implémentation. Cela force toutes les sous-classes à fournir leur propre implémentation de chaque méthode, favorisant ainsi un couplage encore plus faible et une plus grande flexibilité.

Utilisation des Traits

Les traits en PHP, par exemple, permettent de réutiliser des ensembles de méthodes dans plusieurs classes indépendantes. L’utilisation des traits doit être réfléchie car, bien qu’ils permettent de réduire la duplication de code, ils peuvent également introduire des dépendances cachées et compliquer la compréhension du flux du programme :

Avantages des traits : permettent la réutilisation du code sans forcer une relation parent-enfant, offrant une flexibilité accrue dans la conception des classes.

Inconvénients des traits : peuvent masquer les dépendances et rendre le code difficile à suivre, surtout lorsqu’ils modifient l’état interne d’une classe ou introduisent des conflits de nommage.

Pratiques de Gestion des Dépendances

L’implémentation effective de l’IoD nécessite souvent un système de gestion des dépendances sophistiqué, tel que ceux fournis par des conteneurs IoC (Inversion of Control) dans des frameworks comme Symfony. Ces outils facilitent l’instanciation et la gestion des dépendances, souvent à travers des annotations, permettant une flexibilité et un découplage maximal du code.

Implications sur les Patterns de Conception

L’adoption de l’IoD favorise également l’utilisation de divers patterns de conception :

  • Factory Pattern : Permet de centraliser la création d’objets, ce qui est particulièrement utile lorsque l’objet doit être créé selon une certaine configuration ou un certain contexte.
  • Strategy Pattern : Utilisé pour sélectionner l’algorithme de comportement d’un objet lors de l’exécution, ce qui est pratique pour les systèmes qui doivent être extensibles par rapport aux types de tâches qu’ils peuvent accomplir.
  • Observer Pattern : Facilite la notification des changements à plusieurs classes, ce qui est souvent nécessaire dans des systèmes complexes où les actions dans une partie du système peuvent nécessiter des réactions dans d’autres parties.
  • Chain of responsibility Pattern : Permet de réduire la complexité d’un processus en traitant unitairement chaque règle métier dans une classe dédiée qui interviendra ou non dans le processus selon sa propre décision.

Conclusion

Pour les développeurs, adopter l’Inversion de Dépendance, c’est utiliser un style de conception qui privilégie la flexibilité et la maintenabilité à long terme au détriment d’une légère complexité initiale accrue. Cela encourage à penser au « comment » seulement après avoir défini le « quoi », permettant ainsi de construire des applications plus robustes et évolutives. 

Selon nous, la maîtrise de ce principe est essentielle pour créer des logiciels solides et facilement extensibles.

Naviguer avec TheCodingMachine : des projets web en toute sécurité

Le monde du développement web n’est pas sans danger ! On ne peut pas nécessaiment éviter les pirates mais on peut chercher à s’en défendre. Naviguer avec TheCodingMachine dans ce monde, on prend le sujet très au sérieux et on vous explique comment.

Cet article détaille toute notre démarche, les différentes étapes et précise ce que nous faisons. Embarquez avec nous dans cette aventure où chaque ligne de code est un pas de plus vers le trésor de la sécurité informatique !

L’ISO 27001, notre boussole

Tout bon navigateur a besoin d’une boussole, et c’est là qu’intervient notre norme ISO 27001. Elle est là pour nous guider sur le bon cap, loin des eaux infestées de pirates informatiques. Le document intitulé « Politique de développement informatique sécurisé » fournit un aperçu détaillé des mesures et procédures mises en place par TheCodingMachine pour garantir la sécurité dans le développement de projets informatiques. La gestion et le suivi de cette politique sont assurés via l’outil de gestion de projet Zoho Projects. Des tâches de sécurité spécifiques, comme les audits de code et le suivi des vulnérabilités, sont intégrées automatiquement dans les modèles de projet.

Préparation de la navigation

Dès le début du projet, un responsable de la sécurité est désigné, souvent le chef de projet, accompagné d’un membre de la direction technique. Les premières analyses des points d’attention de sécurité sont effectuées, incluant le contrôle d’accès, la gestion des sessions, le chiffrement, la journalisation, la supervision, et la sensibilité des données.

Dès les premières interactions avec le client, on prépare le voyage : authentification, protection des données, chiffrement. 

Cela nous permet de définir le cadre de travail technique : architecture, RGPD, contrôles d’accès (quel “protocole”, quels renforcements), niveau de durcissement applicatif ou encore niveau de durcissement infra. On s’assure que chaque membre de l’équipage connaît son rôle sur le navire. Pas question de naviguer à vue !

naviguer avec TheCodingMachine

En Pleine Mer : Le Développement

C’est en haute mer que l’on peut rencontrer des tempêtes : gestion du code source, choix des outils, revues de code… 
La sécurisation du code source est une priorité, avec une sensibilisation régulière aux dix principales vulnérabilités selon l’OWASP.
Le choix des librairies Open-Source prend en compte la sécurité, avec une attention particulière aux mises à jour et à la communauté qui les soutient. Des revues de code systématiques sont effectuées pour garantir la sécurité et la qualité.

On scrute l’horizon pour éviter les récifs cachés des vulnérabilités.

L’atterrissage

Avant la mise en production, on effectue un dernier audit minutieux. On passe au crible les injections SQL, les failles de sécurité… 

Il est temps de surveiller les données de production : il ne doit pas y avoir de données de production en préproduction. Si reproduire le problème n’est pas possible, il faut proposer une reproduction ‘en live’ avec lecture des logs en parallèle dans la mesure du possible. En cas de besoin absolu d’importer les données de production en local, une procédure (incluant une validation du client) doit être suivie et il est nécessaire d’envisager l’anonymisation des données (et détruire les données à la fin du processus). 

Après la mise en ligne, la surveillance des vulnérabilités permet de maintenir la sécurité de l’application. Par exemple, chez TheCodingMachine, nous utilisons un outil pour vérifier les dépendances (CKC).

Conclusion

Naviguer avec TheCodingMachine, c’est garantir une aventure sécurisée dans les tumultueuses mers du développement web. On vous promet un voyage aussi palpitant qu’une chasse au trésor, avec la certitude de trouver un butin sécurisé et fiable. Alors, prêts à embarquer avec nous ?

Note : si vous êtes intéressés par notre outil de gestion des dépendances (CKC), n’hésitez pas à me contacter.

Posted in TCM

Web temps réel : quand chaque milliseconde compte !

Dans un site, un statut “hors ligne” qui passe à “en ligne” sans que vous n’ayez rien fait ? Un commercial qui vous parle dans une messagerie ? Alors, le web temps réel n’est pas loin…

Le web temps réel est un système permettant de répondre à des évènements dans un laps de temps souvent très court (quelques millisecondes). Dans les projets, le temps réel est très souvent utilisé afin de synchroniser les données de plusieurs utilisateurs et ce, de manière quasi instantanée et simultanée. Et, les applications sont multiples : mises à jour en direct des scores dans les jeux en ligne, collaboration en temps réel comme dans un document, notifications, trading … Il s’agit d’informer les utilisateurs des changements dès qu’ils se produisent, sans nécessiter d’action comme par exemple le rafraîchissement de la page.

Le temps réel en web, c’est quoi au juste ?

Quelques exemples

Un bon exemple, pour illustrer le temps réel est celui des systèmes de messageries instantanées sur les réseaux sociaux. Dans l’application Facebook, les messages sont reçus immédiatement après leur envoi, sans nécessité de rafraîchir la page. Cela marque bien la différence avec les anciennes méthodes qu’on pouvait retrouver sur les boîtes e-mails (le bouton ”envoyer/recevoir”) ou sur les forums de discussion.

Un autre exemple parlant est celui d’un système d’enchères. L’enchérisseur doit voir le montant actuel de l’offre se mettre à jour automatiquement. Sans cela, l’expérience utilisateur pourrait être frustrante. Et c’est tout là l’intérêt du web temps réel : améliorer l’expérience utilisateur.

Si vous voulez faire l’expérience du temps réel, n’hésitez pas à vous rendre dans notre métaverse : Workadventu.re !

Poussons l’explication un peu plus loin …

Le temps réel correspond techniquement à la mise en place d’un système automatisé répondant à des événements divers se produisant sur l’application suite à l’action des utilisateurs (mais pas seulement, on peut imaginer des événements déclenchés par des capteurs de données, des machines) et permettant donc de notifier les autres utilisateurs de la réalisation des dits événements. Evidemment, le temps réel n’est pas obligatoire, la majorité des sites peuvent très bien s’en passer. Pourtant, il est devenu peu à peu indispensable car il améliore énormément l’expérience utilisateur.

Panorama des technologies pour faire du web temps réel

Alors quelles sont les technologies qui permettent de faire du temps réel ? Par exemple, NodeJS est très souvent utilisé notamment pour son système asynchrone non bloquant.

Panorama de ces technologies :

WebSocket

Il s’agit de la technologie la plus répandue. Elle permet d’ouvrir une connexion bidirectionnelle entre un client (un navigateur web) et un serveur puis de persister cette connexion afin que le client puisse envoyer des informations au serveur et vice-versa. Vous pouvez comparer cette technologie à une communication par téléphone. 

Des librairies comme Socket.io permettent de “facilement” implémenter les websockets. Des technologies comme Soketi permettent aussi d’installer des serveurs websockets sans trop de configuration de votre part.

Si vous ne souhaitez pas ou pouvez pas développer votre propre serveur de websockets, il existe des services tiers payants comme Pusher ou Ably permettant de vous faciliter le travail.
De plus, chez TheCodingMachine, nous sommes certifiés Laravel et ces derniers viennent justement de sortir une technologie first-party pour l’implémentation des websockets : Laravel Reverb, rendant la chose encore plus facile à implémenter d’un point vue technique et sécurité.

SSE (Server Sent Events)

Il s’agit d’une technologie de communication à sens unique : le serveur envoie des données au client quand il en a besoin.

Vous pouvez utiliser un serveur avec Mercure comme solution gratuite et open source.

Si vous n’avez pas besoin de recevoir des données de la part des utilisateurs, c’est un choix solide face aux websockets.

Polling

Ce n’est pas une technologie en particulier mais plutôt un pattern. Le client (navigateur) fait régulièrement des requêtes HTTP au serveur (par exemple toutes les 5 secondes) afin de mettre à jour les données. C’est du rafraichissement automatique.

Attention à la charge des serveurs avec le nombre de requêtes par seconde que cela peut générer. Il s’agit plus d’une synchronisation que d’un temps réel.

Web temps réel - Webrtc

WebRTC / Peer-to-peer

Une technologie idéale pour le streaming vidéo ou audio. Fonctionne avec une connexion direct en peer-to-peer (entre deux clients). Vous pouvez utiliser les APIs WebRTC natives disponibles dans les navigateurs modernes afin d’implémenter ce système. Vous aurez certainement besoin d’un serveur de signaling. Il s’agit d’un serveur permettant, lorsqu’un nouvel utilisateur se connecte, de donner la liste des autres utilisateurs afin de savoir avec qui établir le lien peer-to-peer.

Technologie efficace et rapide mais qui a des limites si vous souhaitez connecter de trop nombreux utilisateurs entre eux. Des librairies comme simple peer vous aideront à implémenter cette technologie.

Le WebRTC reste tout de même un cas à part dans l’échange de données en temps réel car il est vraiment développé pour l’échange de voix/vidéo et non de données “simples” où on préfèrera utiliser les autres solutions (ou alors passer par le serveur de signaling).

Et encore quelques autres…

Il existe encore bien d’autres moyens de faire du temps réel : 

  • MQTT : Message Queuing Telemetry Transport → utilisé en IoT, protocole de messagerie en pub/sub (publish / subscribe) avec un système de broker intermédiaire aux clients.
  • SignalR : spécifique à l’écosystème .NET → similaire au websocket, connexion bidirectionnelle
  • Long polling : une variante du polling où le serveur retient la réponse à envoyer jusqu’à ce qu’il y ait de nouvelles données.
  • Un serveur push avec HTTP/2 …

TechnologieDescription SimplifiéeBidirectionnelEfficacitéSimplicitéUtilisation Typique
WebSocketLe client (navigateur) et le serveur peuvent s’échanger des informations à tout moment et dans les deux sens.⚡️⚡️⚡️➕➕ (grâce aux nombreuses ressources disponibles)Jeux en ligne, messagerie instantanée, échange de données.
WebRTC Peer-to-PeerDeux clients s’échangent des données entre eux (très bon pour la vidéo ou l’audio).⚡️⚡️⚡️➕➕(grâce aux nombreuses ressources disponibles)Appels vidéo ou audio.
SSE (Server-Sent Events)Le serveur envoie des informations au client quand il a des nouvelles.⚡️⚡️➕➕Notifications en direct, actualités, mises à jour.
PollingLe client fait une requête régulièrement au  serveur.⚡️➕➕➕Vérification régulière de nouvelles données, applications très légères.

Prêt à ajouter du web temps réel dans votre application ?

Si vous n’utilisez pas de services payants et décidez d’implémenter vos propres serveurs pour la gestion du temps réel, quelques questions de sécurité et de scalabilité se posent.

Sécurité

En implémentant un système de temps réel, il faut s’assurer que seules les bonnes personnes envoient et reçoivent les données via cette couche supplémentaire.

Cela demande plus de travail pour mettre en place l’authentification, l’autorisation et la gestion des sessions. Assurez-vous aussi de chiffrer vos données en transit en utilisant des protocoles sécurisés comme WSS (websockets) ou HTTPS (polling, sse).

Les données stockées (comme l’historique de chat) devraient aussi être chiffrées / protégées.

Scalabilité

Les applications en temps réel ne sont pas les plus simples à scaler. Si votre application grandit (et votre nombre d’utilisateurs aussi) il faudra opter pour du scaling horizontal avec un système de load balancing. 

Déployer votre application avec Docker ou Kubernetes pourra aider. On peut facilement imaginer la duplication des containers faisant tourner le système de temps réel.

Pas de connexion internet ?

Une application en temps réel augmente fortement l’expérience utilisateur mais cela nécessite une connexion internet permanente et stable afin de s’assurer que l’expérience n’en soit pas gâchée.

Conclusion

Le web temps réel, c’est un peu comme de la magie : puissant et utile mais nécessitant de la maîtrise. Que ce soit pour discuter avec des amis, jouer en ligne ou faire des transactions rapides, le temps réel est partout, rendant l’expérience utilisateur plus rapide, réactive et efficace que jamais.

Cependant, son implémentation est loin d’être triviale et nécessite de bien réfléchir à vos cas d’utilisation et à la technologie qui sera la mieux adaptée.

Dans beaucoup de cas, choisir les WebSockets avec un serveur NodeJS et Socket.io fera l’affaire et vous permettra aussi d’expérimenter rapidement.

Article de Paulin BAT

La norme ISO 27001 : la mise en place chez TheCodingMachine !

Si vous ne savez pas ce qu’est la norme ISO 27001, voici un article qui décrit succinctement ce qu’elle est, pourquoi nous faisons cette démarche et où nous en sommes. C’est un projet en cours, pas encore un retour d’expérience. Si vous souhaitez échanger avec moi sur le sujet, n’hésitez pas à prendre contact !

Image illustrant la cybersécurité pour la norme ISO 27001

D’abord, quels sont les points clés de la norme ISO 27001 ?

La norme ISO 27001 est une norme internationale de gestion de la sécurité de l’information. Elle est là pour mettre en place, maintenir, surveiller et améliorer un système de gestion de la sécurité de l’information (SMSI) au sein d’une organisation. L’objectif principal de l’ISO 27001 est de garantir la confidentialité, l’intégrité et la disponibilité des informations sensibles et critiques. En quelques points clés : 

  • Elle vise à aider les organisations à établir un cadre pour identifier, évaluer et gérer les risques liés à la sécurité de l’information : la perte de données, la cybercriminalité, les violations de sécurité, les interruptions de service et d’autres menaces liées à l’information.
  • La mise en place d’un SMSI implique l’identification des actifs d’information critiques, l’évaluation des risques, la mise en place de contrôles de sécurité appropriés, la formation des employés et la surveillance continue de la performance du SMSI.
  • Les organisations doivent être auditées par des tiers indépendants pour vérifier leur conformité à la norme ISO 27001. 

Cette norme encourage enfin l’amélioration continue de la gestion de la sécurité de l’information. Les organisations sont incitées à surveiller et à réviser régulièrement leur SMSI pour s’assurer qu’il reste efficace face aux menaces changeantes.

Pourquoi mettre en place cette démarche ?

Nous avons entamé cette démarche, il faut l’avouer, un peu sous la contrainte. Un de nos gros clients l’exigeait de la part de ses partenaires. En y regardant de plus près, nous nous sommes dits que cela pouvait être intéressant pour plusieurs raisons : 

  • Mieux protéger les informations sensibles comme les données des clients, les données financières ou bien les secrets commerciaux.
  • Réduire les menaces et les incidents de sécurité tels que les violations de données, les interruptions de service et les cyberattaques.
  • Se conformer aux exigences légales et réglementaires en matière de sécurité de l’information. 
  • Renforcer la confiance avec nos clients, nos partenaires commerciaux.
  • Mieux gérer la continuité des activités, être préparé à faire face aux interruptions de service, aux catastrophes et aux situations d’urgence.

Et puis nous espérons aussi que cette démarche va nous permettre : 

  • D’améliorer notre efficacité opérationnelle en rationalisant les processus et les opérations liés à la sécurité de l’information.
  • Et éventuellement de réaliser des économies (les incidents de sécurité peuvent entraîner des coûts significatifs).

Ce que nous avons fait et ce qu’il nous reste à faire !

La première chose que nous avons faite est de créer une équipe projet avec des collaborateurs de différents services connaissant nos différents processus : SI, RH, Direction, Commercial, Projets, Direction Technique. Cette équipe accompagnée d’un auditeur externe de France Certification nous a permis de conduire une première évaluation de la situation : l’identification des actifs d’information (les données, les systèmes, les équipements, les documents et les processus), les menaces que nous pourrions rencontrer, les vulnérabilités et les risques associés.

Ensuite, nous avons défini les objectifs de notre SMSI en identifiant les processus, les services, les emplacements et les actifs d’information qui seront inclus dans son périmètre. Nous avons aussi rédigé : notre charte informatique, notre politique de développement sécurisé, notre politique de transfert etc. Nous avons aussi énoncé les engagements de l’organisation en matière de sécurité.

Enfin, nous avons mis en place, les premiers éléments de notre SMSI : 

  • La gestion des actifs d’information comme les données, les systèmes, les équipements et les documents. Par exemple, nous nous sommes rendus compte à cette étape que nos leasings n’étaient pas très bien gérés (nous avions encore des leasings sur des ordinateurs que nous n’avions plus !). 
  • L’analyse des risques de sécurité de l’information en identifiant et en évaluant les risques associés aux actifs d’information. C’est certainement la phase la plus longue, il faut passer sur tous les risques et toutes les vulnérabilités liés à votre organisation.
  • En fonction des risques que nous avions identifiés, nous avons élaboré et mis en place un plan de traitement et des contrôles de sécurité grâce à l’Annexe A de la norme ISO 27001. Ils incluent des contrôles techniques, organisationnels et physiques.
  • Le plan de traitement des risques qui définit comment les risques sont évalués, gérés et surveillés au fil du temps.
  • La structure organisationnelle, y compris les responsabilités et les rôles liés à la sécurité de l’information, a été clairement définie.
  • Les procédures pour gérer les incidents de sécurité, tout doit être enregistré, étayé et stocké.

Par ailleurs, plusieurs réunions ont été conduites avec l’ensemble des collaborateurs pour les sensibiliser à la sécurité de l’information, pour comprendre les risques et les pratiques de sécurité. Pour rendre le sujet un peu ludique, nous avons même réalisé plusieurs quiz et tests aléatoires afin de nous assurer que le message était bien passé et suffisamment intégré.

Les prochaines étapes sont d’effectuer un audit interne pour évaluer la conformité aux exigences de la norme ISO 27001 et pour identifier les éventuels écarts et l’audit de certification qui sera mené par un organisme de certification accrédité.

Conclusion

La mise en place d’une démarche de certification de la norme ISO 27001 demande du temps et de l’engagement, mais nous estimons qu’elle est essentielle pour renforcer la sécurité de l’information et répondre aux exigences de sécurité.

La suite au prochain épisode : date de l’audit externe septembre ! On vous tient au courant…

Un article de Nicolas Peguin

Vous pourriez également être intéressé par notre article sur la gestion de la sécurité web avec OWASP

L’Intelligence Artificielle Générative, quelles applications pour l’entreprise ?

Comme toutes nouvelles technologies, l’intelligence artificielle générative fait couler beaucoup d’encre. Dans cet article, nous essayerons de répondre à la question suivante : Comment tirer parti de l’intelligence artificielle générative dans un contexte d’entreprise ?

Petit rappel de ce qu’est l’intelligence artificielle générative… pour ceux qui n’auraient rien suivi !

L’intelligence artificielle générative (IA générative) vise à développer des applications capables de générer du contenu de manière autonome, en imitant ou en simulant des processus de création humaine. Ces systèmes utilisent des modèles d’apprentissage automatique, en particulier des réseaux de neurones, pour produire des données nouvelles et originales sous forme de texte, d’images, de musique, de vidéos, ou d’autres types de médias.

Illustration d'une image générée par l'Intelligence Artificielle Générative

Quelles applications imaginer pour l’entreprise ?

Sur le marché, nous pouvons distinguer deux types d’entreprises : celles dont le cœur de métier est de proposer de l’IA générative (ChatGPT par exemple) et surtout celles qui s’en servent pour améliorer leur offre et leur positionnement concurrentiel sans altérer leur business model. 

C’est surtout le deuxième type d’entreprises qui nous intéresse. Et, voici quelques idées d’utilisation de l’IA générative dans ce cadre :

  • Génération de documents : si vous produisez des documents pour vos clients comme des rapports et des analyses, l’IA peut vous apporter de vrais gains de productivité.
  • Gestion du service client : les chatbots basés sur l’IA générative peuvent offrir une assistance 24 heures sur 24, 7 jours sur 7, en répondant aux questions des clients, en fournissant des informations sur les produits et en aidant à résoudre des problèmes courants.
  • Personnalisation de l’expérience utilisateur : les IA génératives peuvent analyser les données des clients et créer des recommandations personnalisées pour les produits par exemple.

Autrement, l’IA peut être massivement utilisé en interne pour beaucoup d’usages :

  • pour l’optimisation des opérations : planification de la chaîne d’approvisionnement, gestion des stocks, planification des horaires et prévision de la demande.
  • la génération de développement, en générant automatiquement des parties de code source.
  • la création de contenus de formation
  • ou les analyses prédictives et prévisions : les IA génératives peuvent analyser les données historiques et créer des prévisions pour aider les entreprises à prendre des décisions éclairées en matière de planification et de stratégie.

Qu’est-ce que nous faisons aujourd’hui ?

Evidemment, nous développons des projets qui mettent en œuvre de l’intelligence artificielle. Par exemple, nous avons récemment réalisé une application métier où l’utilisateur charge des documents pour qu’ils soient automatiquement vérifiés et analysés dans le but d’extraire des informations pour éviter de les ressaisir. Dans un relevé de compte, par exemple, l’application vérifie que le titulaire du compte correspond à l’utilisateur puis remonte le numéro de compte automatiquement. 

Un autre exemple d’un projet réalisé pour un client à Hong-Kong, le développement d’une application permettant de générer un audit technique pour des bâtiments de manière automatique à partir des données et des commentaires saisis par l’utilisateur. 

Mais c’est en interne que l’intelligence artificielle est encore plus intéressante. Nous en tirons déjà beaucoup d’avantage :

  • Créer des idées de contenus et écrire ces contenus beaucoup plus rapidement (seriez-vous capable de deviner quelles phrases de cet article ont été générées par l’IA ?). Evidemment, le contenu généré ne sera pas parfait et donc doit être relu et ajusté mais il constitue un socle de départ qui est en général de bonne qualité.
  • Assister nos collaborateurs pendant la phase de conception des applications métiers de nos clients en générant par exemple les compte-rendus des ateliers, en analysant les modèles de données produits etc. 
  • Pour développer, les jeunes embauchés n’utilisent plus Stackoverflow pour chercher des solutions à leurs problèmes techniques. Ils préfèrent à cela ChatGPT ! Ça n’a l’air de rien mais c’est un changement fondamental dans la recherche de l’information.

Et, on espère que les tests unitaires voire les tests fonctionnels pourront bientôt être générés (parce que cela nous changera la vie).

Conclusion

On est encore loin de pouvoir générer une application même si d’énormes progrès ont été accomplis. Le NoCode, sur lequel nous écrivions un article l’année dernière couplé à de l’intelligence artificielle générative pourrait faire le web de demain… à suivre donc !