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.

Tuesday, March 19, 2019

Votre ami, la console


À l'ère des interfaces graphiques et des périphériques à écran tactile, il semble un peu ridicule de devoir recourir à un outil tel que la console, lorsque tout est à portée de clic.

Mais la vérité est que chaque fois que vous retirez votre main droite du clavier (ou du gauche, si vous êtes gaucher) pour saisir votre souris et déplacer le curseur à l'endroit où vous souhaitez cliquer, vous perdez du temps. . Faire quelque chose avec la console augmente la productivité et la vitesse, même quand avec la souris l'action est  intuitive. Je sais, sur ce coût vous devez me faire confiance à ce sujet.

La vitesse et la productivité sont importantes et, personnellement, je n'ai rien contre la souris, mais il existe d'autres très bonnes raisons pour laquelle vous voudrez peut-être vous familiariser avec la console: lorsque vous développez du code qui aboutit sur un serveur, la console pourrait être le seul outil disponible. Si vous en faites des amis, je vous le promets, vous ne vous perdrez jamais. Il est de la plus haute importance, dans le contexte des hébergement et le déploiement dans le cloud et les machines virtuelle, que vous ne l'ignoriez pas (généralement, lorsque vos "serveurs" sont en panne et que vous devez enquêter très rapidement sur ce qui se passe).

Finalement, c'est vraiment à vous de décider. Si vous êtes indécis, accordez-moi le bénéfice du doute et essayez-le. C'est plus facile que vous ne le pensez et vous ne le regretterez jamais. Il n’y a rien de plus pitoyable qu’un bon développeur qui se perd dans une connexion SSH en accédant à un serveur parce qu’il n'est habitué qu'à son propre ensemble d’outils personnalisés, et seulement à cela!

Friday, June 1, 2018

Le Travail collaboratif : un modèle économique pour la production

Avec l'avènement des logiciels libres et de l'"Open Source", mes auditeurs se demandent comment ou d'où provient ce mode de production? et comment pourrait-il être rentable?

Voici un extrait de wikipedia qui me semble être une bonne définition:

"Il ne faut pas confondre « travail collaboratif » et « travail coopératif » :
  • le travail coopératif est une coopération entre plusieurs personnes qui interagissent dans un but commun mais se partagent les tâches,
  • le travail collaboratif se fait en collaboration du début à la fin sans division fixe des tâches. Il associe trois modalités d'organisation :
  • il propose à tous et chacun, dans le projet, de s'inscrire dans un principe d'amélioration continue de chaque tâche et de l'ensemble du projet,
  • il organise le travail en séquences de tâches parallèles (permettant un travail plus asynchrone),
  • il fournit aux acteurs de chacune des tâches une information utile et facilement exploitable sur les autres tâches parallèles et sur l'environnement de la réalisation.
Le travail collaboratif, comme le travail collectif (dont il est une des variantes) n'est pas nécessairement synonyme d'efficacité, d'efficience, ni de rapidité. Son résultat dépend de la motivation de ses acteurs à collaborer, du nombre de ces acteurs, du temps qu'ils peuvent consacrer à ce travail et de leurs compétences. Il présente l'intérêt majeur d'associer les capacités de création et de potentiellement obtenir ce qu'il y a de mieux avec les ressources disponibles dans un groupe, si les éléments de ce groupe sont motivés."

"Le travail collaboratif et non financièrement rémunéré n'est pas nouveau en soi. Il est commun dans toutes les sociétés dites « primitives ». Les sociétés savantes l'ont abondamment pratiqué depuis le siècle des Lumières, mais il a pris une dimension nouvelle avec les possibilités ouvertes par l'informatique puis par l'Internet, les moteurs de recherche et les outils de traduction en ligne. Il est basé sur une logique de don facilitée par l'Internet3 ou d'intérêt mutuel.
Dans le domaine logiciel, il a par exemple accéléré et amélioré l'efficience de nombreux outils4, en partie grâce au « passage du Copyright au Copyleft »5.
L'expression « travail collaboratif » aurait été introduite par Yochai Benkler, professeur de droit à l’université Yale, dans un essai intitulé Coase's Penguin6 écrit pour « ceux qui étudient les organisations et font la politique de la propriété intellectuelle » afin de mettre en lumière la propriété intellectuelle avec ce nouveau modèle de production.
Dans les années 1990, des premiers outils de travail collaboratifs ont été mis à disposition de tous avec par exemple les « Yahoo! Groups (en) » (si on ne tient pas compte des BBS de la fin des années 1970)."

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...