UltraFluid Modeler BETA2, le logiciel de modélisation Open-Source.

UltraFluid Modeler (UFM) est cours de développement mais il est disponible en daily build au téléchargement ent BETA 2 sur www.buildonthemetal.com.

Le code est disponible comme en Open-Source mais non compilable pour des raisons commerciales suite à sa finalisation. Les fichiers volontairement manquants sont les ressources graphiques (forms, icons, bitmap, menu, etc). L’accès au code source est sur Github.

Le logiciel permet de faire des diagrammes et de la visualisation. Par défaut, il est possible de faire des diagrammes simples avec des gabarits simples ou bien des diagrammes d’Infrastructure ou bien des diagrammes de Développement.

Le logiciel est le compagnon idéal des Architectes IT. Dans sa version BETA2, le logiciel est limité à 50 gabarits par application. Cela vous permet de tester et vous enregistrer pour la future date de lancement. Le produit sera disponible en plusieurs versions.

Exemple de modélisation de classes comme en UML

Le logiciel est un mix de Visio et PowerPoint et aussi simple à utiliser.

Exemple de diagramme plus visuel avec des gabarits

Si vous voulez faire partie du programme BETA User et Insider, inscrivez vous sur www.buildonthemetal.com.

UltraFluid Modeler BETA 2

UltraFluid Modeler est en BETA 2. Le soft est fait en C++ 64 bit Release et utilise le C++ Rest SDK de Microsoft pour le support JSON.

Vous pouvez le downloader ici: www.buildonthemetal.com

Rappel des diverses fonctionnalités:

  • Copy, Cut, Paste
  • Sélection simple, intuitive, de la première ligne, que les lignes, que des éléments
  • Ajout d’une image
  • Ajout d’un shape générique (rectangle, ellipse, étoire, flèche diverse, etc)
  • Ajout d’une zone de texte
  • Ajout d’un gabarit de Infrastructure (server AD, server Database, server Web, desktop, etc)
  • Ajout d’un gabarit de Dev (class, interface, enum, component, comment, package, etc)
  • Ajout d’un gabarit Diagram
  • Ajout d’un élément PLnning Task, Month ou Text
  • Modification des propriétés texte (police, taille, taille +, taille -, bold, italic, underline, strikethrough, fill, color)
  • Affichage des panneaux Solution, Class, Properties
  • Suppression d’un élément
  • Import de code C++ est dessin d’un gabarit par fichier
  • Dump des objets dans le panneau Debug
  • Module File Explorer : liste les fichiers et répertoires sous forme de gabarits
  • Ajoute un connecteur (flèche) entre deux gabarits
  • Déconnect un connecteur
  • Sélectionne un élément à partir d’une combo (nom de l’élément)
  • Augmente/Diminue la taille d’un élément par deux
  • Modifie la couleur de remplissage
  • Modifie la couleur de ligne
  • Modifie la largeur de ligne
  • Modifie la couleur de page
  • Zoom In/out
  • Sélection d’un zoom custom
  • Alignement du text gauche, centré, droite
  • Alignement des gabarits à gauche, à droie, au dessus, en dessous en fonction du premier sélectionné
  • Déplacement devant top, derrière -, devant +, derrière au fond
  • Sélection d’un élement pour le déplacer
  • Redimentionnement d’un élément
  • Group/Ungroup des éléments
  • Modification des propriétés dans la Property Grid
  • Load/Save de documents
  • Import/Export des documents au format JSON
  • Export des documents au format PNG

UltraFluid Modeler – Introduction

En 2011, j’étais en mission à la Banque de France dans un service d’Architecture Technique nommé SATIS. Nous faisions des dossiers d’Architecture pour les nouvelles applications pour qu’elles passent en commission pour obtenir ou ou non une ligne budgétaire dans la banque.

Nous faisons des diagrammes dans Visio et c’était moche. Il y avait des carrés, des gabarits serveurs, des images, des traits partout et c’était horrible. Chacun faisiat à sa sauce. Moi j’ai opté pour PowerPoint des fois pour faire, via les Office Shared Components, du dessin de carrés (items) avec du texte reliés à d’autre éléments. Il y avait du texte pour les flux, les numéros de port et les protocoles. Mes diagrammes n’étaient pas les plus moche.

En 2012, le service se donne l’ambition d’être pilote sur un logiciel d’Architecture d’Entreprise : ARIS IT Designer. Ce logiciel propose de faire de la modélisation et de stocker les diagrammes en base de données et possède un module de requétage pour savoir quels sont les diagrammes qui possèdent tel ou tel gabarit avec des propriétés. Exemple: je veux connaitre toutes les application qui ont de l’Oracle 8 ou du Windows Server 2003 R2 pour les mettre à jour. Je suis moteur pour faire pilote du programme. Je rencontre les gens du projet (code interne MATUR – modèle d’architecture technique et d’urbanisation de mémoire…). On me donne accès à l’outil. C’est visuellement dégueulasse : du Java… Par contre, il y a des modèles de gabarit, des modèles et des processus précablés, de la méthodologie. cela se sent et se voit. Tout est customsable et finalement en l’analysant, c’est un logiciel graphique sur lequel chaque élément peut se voir affecté des propriétés customs.

Mon collègue de l’époque, Jean-Nöel me dit: “Pic, tu me ferais ça en C++, fast & Fluid et on le propose à la BdF ?”

J’ai commencé par dessiner des gabarits simples (ligne, carré, ellipse, flèche, etc) puis des images. Ensuite, j’y ai introduit descgabarits images prédéfinies comme ceux des documents Microsoft Visio avec leur gabarits serveurs, database, web server, desktop, laptop, etc. Pui j’ai ajouté des gabarits comme en UML comme les classes, interfaces, enumérations, components, packages, comments… La, ça prend forme. J’ai ensuite ajouté la possibilité de modifier la couleurs de remplissage ou non, la couleur de contour ou non. Ensuite, j’ai ajouté la possibilité de modifier le texte des éléments (taille, police, bold, italic, underline, align left, center, right). Tout cela, ce sont des propriétés par défaut d’un gabarit. Un gabarit peut être déssiné, retaillé, déplacé, groupé, supprimé et connecté via une flèche avec un autre gabarit. Il peut passer devant, derrière, ou un cran en avant, un cran en arrière. Tout est accessible depuis un Ribbon au look Office 2020.

Une fonctionnalité est aussi utile. Elle permet de stocker du texte (comme dans Notepad) derrière un gabarit (Propriété Code) via l’onglet (Excel like en bas de la page). C’est une propriété d’un gabarit. J’ai un module qui importe des fichiers sur disk qet qui dump le contenu des fichiers dans la propriété Code. C’est bien pour aspirer les fichiers de code et faire un audit.

Une autre fonctionnalité et la posibilité de visualiser les fichiers et répertoires sur dique et de les explorer. C’est la fonctionnalité Folders.

Voilà, je suis prêt. Ou presque. OK, on est en 2020.

http://www.netazurerangers-fr.com/

Le produit est disponible en version limitée sur le site.

Comment devenir un Expert Windows ?

Cet article est la suite de Comment devenir un Expert Microsoft ?(http://netazurerangers.com/blog/comment-devenir-un-expert-microsoft/)

Windows est le fleuron technologique de Microsoft depuis 25 ans. Vous allez me dire, oui mais maintenant il y a Azure. OK mais Azure c’est quoi ? C’est ; si je fais abstraction de la partie Linux; Windows Server et Service Fabric… et ça, c’est Windows. C’est du C/C++. Et oui, encore ! Y a pas de secret. ça doit marcher vite et bien. Cela doit être fiable, robuste rapide et sécurisé.

Dans un de mes derniers post “C++ unsafe et unsecure ?” (http://netazurerangers.com/blog/c-unsafe-et-unsecure/), j’explique pourquoi C/C++ est le meilleur et pourquoi Microsoft fait 95% de ses produits avec. Microsoft est la société n°1 de l’industrie logicielle. Ce n’est pas une régie publicitaire comme Google ou Facebook, c’est de la Tech pure jus. Microsoft vend des produits et du Services. Bref passons…

Comment devenir un expert Windows ? La question est posée. Premièrement, on se renseigne sur les principes du système d’exploitation via Microsoft Docs (ex: MSDN LIbrary) sur https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/overview-of-windows-components

Ensuite, on lit le passage sur le mode User et le mode Kernel via https://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode

A partir de là, on connait l’architecture de base de Windows. maintenant, on attaque les éléments sur système d’exploitation à savoir le kernel et le Scheduler de threads. Windows ordonnance des threads, Linux ordonnace des processus. Ces deux systèmes ne fonctionnent pas de la même façon. La doc sur les Processes & Threads est ici : https://docs.microsoft.com/en-us/windows/win32/procthread/about-processes-and-threads

Ensuite on passe à la pratique, comment créer un thread, un processus, atteindre la fin, etc. la doc des API appelée aussi doc de référence est ici: https://docs.microsoft.com/en-us/windows/win32/procthread/process-and-thread-reference

Les exemples les plus faciles sont visualisables via https://docs.microsoft.com/en-us/windows/win32/procthread/process-and-thread-functions#process-and-thread-functions et plus particulièrement la fonction CreateThread: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createthread?redirectedfrom=MSDN et son exemple: https://docs.microsoft.com/en-us/windows/win32/procthread/creating-threads

Pour tester cela, il faut installer Visual C++ disponible dans Visual Studio 2019 par exemple, Community Edition ou Pro 30 day trial. Si vous avez touché de l’argent de Papa Noël, achetez les livres suivants:

  • Windows via C/C++ de Jeffrey Richter et Christophe Nasarre

Moi j’ai acheté Inside Windows NT en 1992 et j’ai eu le virus.

Windows c’est énorme. C’est puissant. Vous lisez le livre Windows Internals et vous aurez la vision ; vous comprendrez comment marche l’OS. C’est très intéressant et vous n’aurez aucun mal à comprendre les nouvelles technologies Microsoft avec ça. Microsoft NET, le CLR, la BCL, c’est fait avec un peu de C++ et du C#/PInvoke sur l’API Windows alias Win32. Regardez le code sur GitHub du CoreCLR (https://github.com/dotnet/runtime) et du CoreFX.

Il y a des légendes urbaines selon lesquelles Microsoft réécrit Windows from scratch; ça c’est pour les managers et le 01 Informatique. Pour les techniciens, la vérité c’est que Windows est assis sur le même code et évolue depuis 25 ans. Le code est amélioré et régulièrement remanié en C++ Moderne. Je peux vous le certifier car j’ai le code source de Windows NT 4, Windows 2000 et accès au dernier code source de Windows 190x. Le code est fait en :

  • C pour le kernel et les drivers
  • en C/C++ pour le reste.

Le C++ Moderne c’est quoi ?

  • de la libération automatique de la mémoire avec les points intelligents (smart pointers)
  • utilisation de la bibliothèque standard STL (Standard Template Library)
  • utilisation du C++11/14/17 avec auto, les lambdas, etc.

Windows utilise beaucoup la technologie COM. Un composant COM est enregistré dans la base de registres et est invoqué via des API ( https://docs.microsoft.com/en-us/windows/win32/api/_com/)

Un composant COM est une classe avec AddRef, Release, QueryInterface et des méthodes:

La création du composant COM est faite via CoCreateObject et la factory COM:

Pour plus d’informations sur les composants COM, j’ai réalisé en 200x une traduction de certains éléments de “Inside COM+ Base Services”: Apartments | Threads | Apartments types | Threading for In-Proc components | Apartment and languages

Pour plus d’informations sur COM, mettre la main sur Inside COM+ Base Services ( http://www.windowscpp.com/Books/MSPress-InsideCOMBaseServices.zip ) ou sur docs mais sur docs, la doc est spartiate.

Les années 201x ont vu Microsoft se tourner vers l’open-source donc vous pouvez trouver des composants Windows en open-source:

Faites comme moi, étudiez ces deux modules et essayez de contribuer dans GitHub. Et qui sait, un jour, vous travaillerez peut-être pour Microsoft !

Chiche !

Christophe | www.christophepichaud.com

Le code source de Windows (C++)

Windows est fait en C/C++.

A partir de là, on peut rentrer dans le détail. Les plus jeunes pourraient penser que Windows utilise NET mais il n’en ai rien. La lutte entre l’ancienne Windows Division et la Developer Division n’est pas terminée. Pour ceux qui veulent des détails, voici l’article qu’il faut lire:

https://arstechnica.com/information-technology/2011/06/windows-8-for-software-developers-the-longhorn-dream-reborn/

Windows est entièrement fait en C/C++ avec une légère précision:

  • le kernel est fait en C
  • le reste est fait en C++

Pourquoi ?

Pour Microsoft et ce depuis 25 ans, le C++ c’est naturel, c’est l’électricité. On veut faire un logiciel, un produit, on utilise C++. Microsoft fait 95% de ses produits en C++ car c’est fiable, robuste, puissant et rapide.

En tant que MVP, j’ai signé avec Microsoft un NDA pour avoir accès au code source de Windows 10 et Windows Server 2019. le code est clean, truffé de C++ Moderne et ce n’est pas près de s’arrêter.

C++ renaissance dixit Channel 9. https://channel9.msdn.com/Shows/Going+Deep/Craig-Symonds-and-Mohsen-Agsen-C-Renaissance

Avec l’avènement des technologies dites productives comme NET ou Java, les légendes urbaines se multiplient. Windows fait en NET, Linux en Java… Des foutaises ! Linux est faite en C/C++. Windows est fait en C/C++. Le reste c’est de la littérature.

Les grands logiciels sont faits en C++ ! Vive C++ !

J’étudie le code de Windows depuis 2001 date à laquelle j’ai mis la main sur le leak de Windows NT4 puis en 2003 sur le leak de Windows 2000. 2GB de source code, la mine d’or. Puis j’ai eu accès au Windows Research Kernel XP et Windows Server 2003. j’ai rebuildé le kernel et monté une VM Windows Server 2003. Génial!

Windows Research Kernel était une initiative pour les universités qui faisaient des cours sur les systèmes d’exploitation. Fabuleux. Et livré avec Windows Internals, la bible.

Le job de mes rêves : Développeur Windows chez Corp. Mais bon je suis français, faut pas rêver ! 🙂