Saturday, July 10, 2021

Pourquoi l'architecture logicielle est plus importante que jamais (réf: Continuous Architecture in practice)

L'amélioration continue vaut mieux que la perfection différée. -Mark Twain



L'objectif de l'architecture reste d'offrir une valeur ajouté commerciale, la vitesse de livraison croissante attendue des informaticiens (TIC) au sein des entreprises présente de nouveaux défis. Dans le même temps, la facilité d'utilisation et les attentes 24h/24 et 7j/7 des utilisateurs finaux sont dictées par l'expansion écrasante de la technologie dans la vie quotidienne : nous sommes passés des PC aux tablettes, aux smartphones et à la technologie portable. Les ordinateurs sont maintenant dans nos poches. Ils sont presque toujours connectés les uns aux autres et leurs capacités dépassent nos besoins! Les équipes de livraison de logiciels d'aujourd'hui doivent désormais fonctionner à l'heure et à l'échelle d'Internet et du cloud. Cela a considérablement accru les exigences des parties prenantes de l'entreprise et a entraîné l'adoption croissante de pratiques agiles, de livraison continue, de DevOps et même de DevSecOps.

Pour relever ces défis et atteindre l'objectif de création de valeur commerciale dans cet environnement en évolution rapide, il est plus important que jamais pour les activités d'architecture de permettre une livraison précoce et continue de valeur et de s'assurer que ce qu'elles font appuie cet objectif.
ON PEUT, PEUT-ÊTRE, SE POSER LA QUESTION, MAIS C'EST QUOI UNE ARCHITECTURE AU JUSTE?
Quand on parle d'architecture, on s'intéresse à l'architecture logicielle. Mais comment définir l'architecture logicielle ? Voyons quelques définitions courantes.
D'APRÈS INTERNATIONAL FEDERATION FOR INFORMATION PROCESSING (IFIP):
L'architecture logicielle fait référence aux structures fondamentales d'un système logiciel et à la discipline de création de ces structures et systèmes. Chaque structure comprend des éléments logiciels, des relations entre eux et des propriétés à la fois des éléments et des relations. L'architecture d'un système logiciel est une métaphore, analogue à l'architecture d'un bâtiment. Il fonctionne comme un modèle pour le système et le projet en développement, définissant les tâches nécessaires à exécuter par les équipes de conception.
L'architecture logicielle consiste à faire des choix structurels fondamentaux qui sont coûteux à modifier une fois mis en œuvre. Les choix d'architecture logicielle incluent des options structurelles spécifiques à partir des possibilités de conception du logiciel. . . .

La documentation de l'architecture logicielle facilite la communication entre les parties prenantes, capture les premières décisions concernant la conception de haut niveau et permet la réutilisation des composants de conception entre les projets
D'APRÈS INTERNATIONAL STANDARDS ORGANIZATION AND INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS (IEEE)
Architecture : Concepts ou propriétés fondamentaux d'un système dans son environnement incorporés dans ses éléments, leurs relations et dans les principes de sa conception et de son évolution.
AIE TOUJOURS PAS CLAIRE, VOYONS POURQUOI RÉALISER DES ARCHITECTURES
Au moins 4 raisons..
  1. Atteindre les exigences d'attributs de qualité pour un système logiciel. L'architecture concerne la mise en œuvre d'exigences d'attributs de qualité importantes, telles que la sécurité, l'évolutivité, les performances et la résilience.
  2. Définir les principes directeurs et les normes d'un projet ou d'un produit et développer des plans directeurs. L'architecture est une vision du futur et des outils de support pour aider à communiquer la vision. Les Blueprints permettent d'abstraire l'architecture à un niveau approprié pour prendre des décisions commerciales et techniques. Ils facilitent également l'analyse des propriétés et la comparaison des options.
  3. Créez des services utilisables (et peut-être même réutilisables). Un aspect clé de l'architecture logicielle consiste à définir de bonnes interfaces pour les services.
  4. Créez une feuille de route vers un état futur de l'informatique. L'architecture traite des activités de planification de la transition qui mènent à la mise en œuvre réussie d'un plan informatique.
Maintenant que nous avons une définition de travail de l'architecture logicielle, on peut aborder avec sérénité le parcours d'architecte logiciel 😉😇

Tuesday, July 6, 2021

Mentor, coach, tuteur, parrain quelles différences


Mentorat


Le mentoring, ou mentorat consiste à soutenir et à encourager les personnes à gérer leur propre apprentissage afin qu'elles puissent maximiser leur potentiel, développer leurs compétences, améliorer leurs performances et devenir la personne qu'elles veulent être. La relation 'mentorale' conjugue transferts et/ou partage de savoirs (savoir-faire et savoir être), bienveillance et confiance entre le mentor et le mentoré. Le mentor offre un soutien au mentoré en lui transmettant des connaissances et lui prodiguant des conseils dans le but de l’aider à progresser dans sa carrière, faire aboutir un projet, gagner en compétence… Le mentorat peut être formel ou informel. Dans un environnement informel, les mentorés se fixent des objectifs, mais ils ne sont généralement pas mesurables et les relations ne sont pas structurées. Dans une relation de mentorat formelle, il existe des objectifs réalisables et mesurables définis et fixés avec des exigences déterminées.

Pourquoi le mentorat est-il important ?

Un bon mentor peut aider le mentoré à devenir plus efficace au travail, à acquérir de nouvelles compétences, à développer une plus grande confiance en soi et à prendre de meilleures décisions pour la croissance globale de sa carrière.
Les mentors aussi acquièrent de nombreux avantages, notamment la satisfaction de voir les autres se développer ; perspectives générationnelles et culturelles élargies; renforcement des compétences techniques, de leadership et interpersonnelles; et continuer à expérimenter de nouvelles idées et perspectives

Comparons le mentorat au autres modes d'accompagnement:

 Le coaching a pour but d’aider un « coaché » à trouver ses propres réponses dans le cadre d’une démarche personnelle ou professionnelle grâce à un « coach » formé aux techniques de l’accompagnement. Le coach ne connaît à priori rien du métier du « coaché ». Alors que le mentorat vise avant tout la transmission de savoirs, le coaching est une relation qui permet d’atteindre un ou des objectifs de développement définis dans le temps.

Dans le tutorat, le « tuteur » transmet sa connaissance d’une tâche, d’un savoir, savoir faire ou savoir-être et accompagne le « tutoré » dans l’apprentissage d’un nouveau métier ou d’une nouvelle tâche. Il s’assure que les savoirs sont acquis à la fin de la mission. Il y a généralement évaluation du tutoré par son tuteur alors que cette notion n’existe jamais dans le mentoring.

Le « parrain » prend en charge les premiers pas de son « filleul » qu’il guide pour lui éviter des difficultés de parcours. Il répond aux questions mais il n’y a dans la plupart des cas pas d’objectif précis, de fin dans la relation, ni de contractualisation.


Si vous souhaitez être mentoré ou implémenter le mentoring dans votre institution ou votre entreprise, contacter mentor@pascal-fares.fr (micro-entreprise enregistré à Paris -900 438 227-) 




Monday, July 5, 2021

Architecture d'applications

Une architecture d'application est une modélissation de la manière dont les applications logicielles d'une organisation sont assemblées dans le cadre de son architecture d'entreprise globale et de la manière dont ces applications interagissent les unes avec les autres pour répondre aux besoins de l'entreprise ou des utilisateurs. Une architecture d'application permet de garantir que les applications sont évolutives et fiables, et aide les entreprises à identifier les lacunes dans les fonctionnalités.


En général, l'architecture d'applications définit la manière dont les applications interagissent avec les middleware, les bases de données et d'autres applications. Les architectures d'applications suivent généralement des principes de conception de logiciels qui sont généralement acceptés par le groupe, mais peuvent manquer de normes industrielles formelles.

Saturday, July 3, 2021

Le TOGAF Domaines d'architectures (partie 1): La norme TOGAF est un cadre pour l’architecture d’entreprise.

La série d'articles concernant le TOGAF est issue de l'opengroupe Réf: le TOGAF https://www.opengroup.org/togaf

Il peut être utilisé librement par toute organisation qui souhaite développer une architecture d’entreprise pour une utilisation au sein de cette organisation.

Domaines d’architecture

Il existe quatre domaines d’architecture :

L’architecture opérationnelle ou métier– définit la stratégie opérationnelle, la gouvernance, l’organisation et les processus opérationnels clés;

L’architecture des données - décrit la structure du patrimoine de données logiques et physiques d’une organisation et comprend une description des ressources de gestion des données; Une description de la structure et de l’interaction des principaux types et sources de données de l’entreprise, aux niveaux logique et physique et des dispositifs pour gérer ces données.

L’architecture des applications - fournit un plan directeur pour les applications individuelles à déployer et décrit leurs interactions et leurs relations; description de la structure et des interactions des applications qui concrétise les dispositifs fournissant des fonctions business clés et gèrent les données.

L’architecture technologique - décrit les capacités logicielles et matérielles logiques; Une description de la structure et de l’interaction des services technologiques et des composants technologiques.


Saturday, June 26, 2021

Architecture d'entreprise (Partie 0), TOGAF. l'importance de l'architecture d'entreprise

Afin de se faire une idée de l'importance de l'architecture d'entreprise en tant que discipline, considérons la complexité des tâches managériales modernes

Imaginez que vous deviez mettre en œuvre un nombre de changements dans la structure de l'entreprise. Normalement, le point de départ serait un processus technologique. Vous devez changer la base des processus de l'entreprise. Ce sera suivi d'une réingénierie des processus métier, ce qui signifie changer la façon dont les processus sont exécutés, changeant parfois le propriétaire et les ressources clés. 

La réingénierie des processus métier est normalement liée à la refonte de la structure organisationnelle de l'entreprise, la fonctionnalité des départements et les flux d'informations.
 
La performance des processus est en principe digitalisé avec mise en place ou évolution de systèmes d'informations. Nous devrons peut-être mettre en œuvre de nouveaux logiciels ou modifier l'existant. Les modifications logicielles peuvent également entraîner un changement de base de données des systèmes de gestion ou encore des changements d'infrastructure en termes de matériel. Cette "chaîne" conduit à deux questions principales : 
  1. quoi d'autre 
  2. et comment contrôler la complexité?

C'est pour répondre à ces questions et présenter l'architecture d'entreprise qu'une série d'articles est prévue sur mon blog (https://www.cofares.net)

Le facteur interne clé pour utiliser l'architecture d'entreprise est le besoin d'alignement métier et informatique. Ceux qui sont expérimentés dans les projets logiciels admettront probablement que parfois le logiciel est implémenté juste pour être implémenté. L'alignement est crucial pour une numérisation réussie. L'informatique doit résoudre des tâches métier. La stratégie informatique doit s'adapter à la stratégie de l'entreprise. La direction doit soutenir cette idée au niveau stratégique et au niveau de l'exécution. La structure organisationnelle et les processus métier doivent être intégrés à l'infrastructure informatique pour créer un entreprise numérisé réussi.



Quelques hypothèses pour la suite


Nous utiliserons l'approche systémique.  L’analyse systémique envisage l’entreprise dans sa complexité (elle est composée de sous-systèmes et d’un environnement), sa globalité (tout est plus grand que la somme des parties qui la compose), son organisation (avec des niveaux hiérarchiques structurels et des processus fonctionnels), et l’interaction ( le changement d’une condition économique influence les autres conditions économiques du système).
L’entreprise échange avec son environnement et ses sous-systèmes des flux entrants et sortants :
– d’activité, logistiques (matières 1ères, produits finis, en-cours…) et monétaires
– de structure, des équipements d’actifs (matériels, mobilier, locaux…) et de personnel
– d’information composés d’éléments informels (culture, pressions politiques, sociales…) et formels (R&D, brevets, demandes de prix, devis, commandes, livraisons, factures…)

D'une manière concrète et du point de vue  des systèmes d'informations, un « système » est un assemblage cohérent et structuré d’éléments technologiques, en particulier des composants logiciels, destiné à contribuer à une finalité donnée, en rendant à des usagers un certain service avec en lige de mire la stratégie d'entreprise.

Thursday, May 27, 2021

Une introduction paradigme fonctionnel avec Python UDEMY

 Apprenez à programmer en Python en utilisant le paradigme fonctionnelle. λ

https://www.udemy.com/course/introduction-paradigme-fonction-python/?referralCode=AF7D86D681B278FA1D37

L'objectif, si vous êtes débutant:

  • D'aprendre rapidement un nouveaux language, en minimisant les notions à connaitre.

  • Vous former à décrire un algorithme au moyen d'un raisonnement récursif et logique

L'objectif, si vous programmer déjà

  • Vous former à décrire un algorithme au moyen d'un raisonnement récursif, qui vous permettra d'écrire de meilleures itérations. En particulier pour trouver l'invariant de boucle et la condition de sortie de boucle

  • Différencier instructions et expressions, données mutable et immutable

  • Souligner les avantages de la programmation fonctionnelle pour les applications concurrente et répartis


Après une présentation rapide de l'environnement que nous utiliserons et une première approche intuitive de la programmation fonctionnelle. Nous approfondirons les notions de fonctions avec une introduction au lambda calcul et ses applications possible dans un language tel que Python


Quand on aborde la programmation fonctionnelle, vous entendrez souvent parler d'un nombre étourdissant de caractéristiques « fonctionnelles » : les données immuables, les fonctions de première classe et l'optimisation de la récursion terminale. Ces fonctionnalités ne sont que des caractéristiques de langage qui facilitent la programmation fonctionnelle. On parle aussi de mappage, de réduction, de pipeline, de récursion, de curryfication et d'utilisation des fonctions d'ordre supérieur. Ce sont des techniques de programmation employées pour écrire du code fonctionnel. Il est enfin question de parallélisation, d'évaluation paresseuse et de déterminisme. Ce ne sont que des propriétés avantageuses des programmes fonctionnels.


Un programme écrit en style fonctionnel se caractérise essentiellement par une chose essentielle: l'absence d'effets de bord, ou plus précisément l'abscence de changement d'états. Le code ne dépend pas de données se trouvant à l'extérieur de la fonction courante et il ne modifie pas des données à l'extérieur de cette fonction. Il transforme une donnée en entrée (sans la modifié) en donnée de sortie qu'elle crée.

La plupart des autres caractéristiques de la programmation fonctionnelle peuvent se déduire de cette propriété. Utilisez-la comme un fil conducteur.


Saturday, February 13, 2021

Pourquoi des microservices?


Imaginez que vous travaillez dans une grande entreprise, un site de commerce électronique populaire qui vend des produits en ligne. L'entreprise compte plusieurs centaines de développeurs. Chaque développeur écrit du code pour un produit ou une fonctionnalité principale, comme la gestion du panier de l'utilisateur, la génération de recommandations, la gestion des transactions de paiement ou la gestion de l'inventaire de l'entrepôt.

Maintenant, demandez-vous, voudriez-vous tout ce code dans une seule application géante? Cela serait-il difficile à comprendre? Combien de temps faudrait-il pour tester? Comment garderiez-vous le code et les schémas de base de données sains? Ce serait certainement difficile, d'autant plus que l'entreprise essaie d'avancer rapidement.


Ne préférez-vous pas que le code correspondant aux fonctionnalités du produit modulaire soit, enfin, modulaire? Un microservice de panier pour gérer les paniers. Un microservice d'inventaire pour gérer l'inventaire. Un microservice pour la comptabilité. etc...

Pour rester à l'affut des nouveautés en informatique, des présentations rapides de technologies plus anciennes, organisées en petites vidéos. Ces présentations sont issues de certains de mes cours au Cnam Liban, qu'en j'estime qu'elles ont un intérêt pour une plus vaste publique. Abonnez-vous à ma chaine YouTube: "informatique et société" et rester en contact....

JSON Rest ou Protocol Buffer


Battre les performances JSON avec Protobuf ?

Protobuf, le format binaire conçu par Google, surpasse les performances JSON même sur les environnements JavaScript tels que Node.js / V8 et les navigateurs Web.

Les protocole 'Buffer' (tampon), ou Protobuf, est un format binaire créé par Google pour sérialiser les données entre différents services. Google a rendu ce protocole open source et il fournit désormais une prise en charge, prête à l'emploi, des langages les plus courants, tels que JavaScript, Java, C #, Ruby, et autres. Dans les tests mené par https://auth0.com/, il a été démontré que ce protocole fonctionnait jusqu'à 6 fois plus vite que JSON.

Voici un article complet en anglais  : https://auth0.com/blog/beating-json-performance-with-protobuf

Pour rester à l'affut des nouveautés technologique, des présentations rapides de technologie plus ancienne, organisées en petites vidéos. Ces présentations sont issues de certains de mes cours au Cnam Liban, qu'en j'estime qu'elles ont un intérêt pour une plus vaste publique. Abonnez-vous à ma chaine YouTube: "informatique et société" et rester en contact....

Tuesday, January 26, 2021

Consommation, modèle et numérique

À la suite de la pandémie de COVID-19, les tendances de consommation ont radicalement changé à travers le monde. En l'espace de quelques mois, la pandémie a incité les gens à dépenser davantage en produits et services essentiels. Surtout, ceux qui étaient facilement disponibles en ligne. Les défis physiques et économiques découlant de la crise ont conduit à de nouveaux modèles de comportement des consommateurs en ligne. Qui sont les plus susceptibles de continuer après la pandémie. Plus que jamais, la pertinence est la clé.

Cependant, ces nouveaux modèles placent les banques de consommation et les commerçants dans une situation difficile. Ils doivent désormais rester pertinents pour leurs clients afin de favoriser le partage de portefeuille et d'offrir une expérience client supérieure. Et ils doivent le faire rapidement, sinon ils risquent d'être dépassés par les concurrents numériques.

Domptez l'IA : Mon guide personnel pour mieux parler à Gemini

On a tous vécu ce moment. Vous ouvrez Gemini, vous tapez une question rapide... et la réponse est "mouais". Pas fausse, mais pas t...