Avant tout bonjour tout le monde,
Je pense que je faire ici le post de ma vie .
Physicien de formation (donc non informaticien), je prenais, il y a quelques mois, en charge dans ma startup le développement informatique d’une application d’imagerie […], le tout en c++ avec une surcouche Qt sous MS Visual.
Jusqu’à là tout allait bien : j’ai bien programmé mes classes (une bonne cinquantaine !), avec les héritages qui vont bien, les gestions d’erreurs et des exceptions, la parallélisation de certaines tâches, puis est venu la documentation du code (doxygene), le versionning (avec git), la création de programme de test (avec le framework de msvisual) puis le déploiement avec succès du programme chez le client.
Unitairement parlant, je n’ai pas trop de mal à réaliser ces tâches. Il est très facile de trouver sur internet comment versionner un programme par exemple ou effectuer un test unitaire sur une classe ou créer une DLLs. Là où j’ai un peu plus de mal à me documenter c’est sur comment articuler toutes ces tâches les unes avec les autres, comment organiser son projet (dossiers et DLLs) etc etc...
Aujourd’hui, j’ai un dossier rempli de .h et de .cpp que j’ajoute à un projet (j’y joins éventuellement les bibliothèques tiereses dont j’ai besoin) et que je compile. J’obtiens alors un exe qui donne satisfaction à mon client. Cependant, moi je ne suis pas convaincu. J’aimerais vraiment automatiser ma façon de travailler et mon cycle en V (je vais le simplifier ici : création d’une nouvelle fonction, conversion cpp vers DLLs, test unitaire puis si test validé intégration et test d’intégration et enfin déploiement).
Plusieurs questions se posent alors à moi :
En ce qui concerne les DLLs :
Mon instrument d’imagerie est composé de plusieurs périphériques, lesquels sont liés par des relations d’héritages et de sororité (ça se dit ça ?). Dois-je créer une DLL par famille de périphérique (ce que j’ai cru comprendre) ou par périphérique ou une DLL globale?
Dans le cas où il faudrait créer une DLL par famille de périphérique : il est dit que dans git, il faut ignorer les DLLs. Cela veut dire que lorsque j’intègre une DLL dans mon programme final (lequel utilise l’ensemble des DLLs générées dans la question 1), si je versionne mon programme final, alors lui ne verra pas de changement. C’est un peu embêtant non ? Que faut-il alors versionner ? Comment faut-il s’y prendre ?
Dans la stratégie, un espace nom doit-il englober une seule classe ou un ensemble de classe ayant la même fonction ?
Versionning :
Pourquoi, on utilise un numéro de version type 1.01.1 au lieu d’utiliser directement le numéro de commit que git donne ? Est-ce non recommandé ? Dans le cas où ça ne serait pas non recommandé, est-il possible de récupérer ce numéro ?
Organisation des DLLs :
Est-il possible de placer les dll ailleurs que dans le répertoire qui contient le .exe et dans ce cas, quel est selon vous la meilleure stratégie d’organisation ?
Logs:
Il manque un fichier log dans mon programme principal, j’ai lu les tutoriels concernant la programmation de ces logs ici et là. Je n’arrive cependant pas à saisir l’utilité et la puissance de ces objets : pourquoi utiliser des logs au lieu d’écrire directement dans un journal lorsqu’une exception est déclenché ? Quel est l’apport en plus ?
Metadonnées :
Est-il possible qu’une DLL ou un .exe indique l’heure à laquelle il a été compilé ?
Alors il y a beaucoup de question, je le sais mais j'aimerais qu'il serve de base pour ceux qui aimeraient commencer un projet, qui n'ont pas de difficulté en code mais qui aimerait avoir une petite checkliste de chose à verifier.
Bonne après midi et bon match de foot pour ceux qui aiment ça
Partager