ressources sur l'architecture logiciel

a marqué ce sujet comme résolu.

Bonjours à tous,

j'ai eu il y a quelques jours une idée de projet à coder et j'ai donc essayé de m'y lancer mais c'est mon premier "gros" projet et je suis perdu sur l'organisation et l'architecture de mon code, je me suis donc dit que je devais essayer de lire des docs sur l'architecture logiciel mais j'ai peur de tomber sur des docs mauvais ou pas à jour. Du coup j'aimerais savoir si vous connaissez de bonnes ressources sur ce sujet qui me permettrait de m'introduire puis d’approfondir par la suite (sans sous sens).

+0 -0

Salut ! Il faudrait que tu nous en dise plus sur ton projet et surtout avec quel langage tu vas coder.

Sinon est ce que tu sais utiliser Git, qui est un outil de versionnement de fichiers/projet ? Il te permet de garder différentes sauvegarde de l'avancée de ton projet pour pouvoir revenir en arrière, tester des choses sans risques et même de sauvegarder en ligne ou de collaborer avec d'autres personnes.

Si c'est ton premier gros projet ça peut être utile d'en profiter pour apprendre les bases de git.

+0 -2

Salut ! Il faudrait que tu nous en dise plus sur ton projet et surtout avec quel langage tu vas coder.

Demandred

Oui c'est un bonne idée :). Alors le but c'est de faire une app en C++ qui permettrait de générer des menus sur une période donnée à partir de plats donnés par l'utilisateur. Normalement la GUI seras faite avec Qt et pour le stockage des plats j'en ai aucune idée.

Sinon est ce que tu sais utiliser Git, qui est un outil de versionnement de fichiers/projet ? Il te permet de garder différentes sauvegarde de l'avancée de ton projet pour pouvoir revenir en arrière, tester des choses sans risques et même de sauvegarder en ligne ou de collaborer avec d'autres personnes.

Si c'est ton premier gros projet ça peut être utile d'en profiter pour apprendre les bases de git.

Demandred

Pour git c'est bon je sais l'utiliser de manière basique.

+0 -0

Je ne connais pas les bonnes pratiques d'architecture logicielle en C++/Qt (même si je soupçonne que comme partout, ça consiste déjà à séparer données, présentation et logique).

Par contre, la problématique du versionnement du code (avec Git ou autre) n'a aucun rapport avec l'architecture logicielle, qui elle ne concerne que l'organisation interne du code.

Par architecture logicielle tu entends conception/design orienté objet, par exemple ?

Si oui, j'ai une mauvaise et une bonne nouvelle :

  • C'est un truc qui ne s'apprend réellement que par expérience, par trial & error, en analysant tes programmes pour identifier les points de frottements et faire mieux la prochaine fois.
  • En orienté objet, tu peux accélérer le processus en consultant plus ou moins n'importe quel ouvrage de design patterns. Vu que tu bosses en C++, à peu près n'importe quel ouvrage conviendra (sans demander trop d'adaptation, même de ceux qui viennent du monde Java). Perso quand j'ai mis le pied à l'étrier, c'était avec "Le Design Orienté Objet pour les Nuls", et "Modern C++ Design" de Andrei Alexandrescu. Par contre le second ouvrage a dû pas mal vieillir, vu qu'il a été écrit avant C++11, mais il reste assez magique et ses explications sont franchement passionnantes.
+1 -0

Par architecture logicielle tu entends conception/design orienté objet, par exemple ?

Si oui, j'ai une mauvaise et une bonne nouvelle :

  • C'est un truc qui ne s'apprend réellement que par expérience, par trial & error, en analysant tes programmes pour identifier les points de frottements et faire mieux la prochaine fois.
  • En orienté objet, tu peux accélérer le processus en consultant plus ou moins n'importe quel ouvrage de design patterns. Vu que tu bosses en C++, à peu près n'importe quel ouvrage conviendra (sans demander trop d'adaptation, même de ceux qui viennent du monde Java). Perso quand j'ai mis le pied à l'étrier, c'était avec "Le Design Orienté Objet pour les Nuls", et "Modern C++ Design" de Andrei Alexandrescu. Par contre le second ouvrage a dû pas mal vieillir, vu qu'il a été écrit avant C++11, mais il reste assez magique et ses explications sont franchement passionnantes.

nohar

J'ai lu vite fait le début de "Modern C++ Design", il a l'air pas mal. Il a l’avantage d'être en anglais (je préfère l'anglais pour ce qui concerne le code). Sinon je vais essayer de faire bien sur mon projet. :)

+0 -0

Avec Qt, ca sera plus du MVC pattern que du beau design comme dans "Modern C++ Design". Je conseille plutot la lecture des Summerfield : "C++ GUI Programming with Qt 4" (en particulier le chapitre sur les bases de donnees) et "Advanced Qt Programming" (les chapitres sur les modeles et vues).

Interessant aussi a lire : le blog d'Emmanuel Deloget sur l'architecture orientee objet, en particulier les principes SOLID et autres. Cf http://blog.emmanueldeloget.com/index.php?category/Ood (a lire dans l'ordre chronologique)

A priori, ton projet n'est pas de probleme particulier de design, comme l'a dit SpaceFox,il suffit de respecter la separation logique/interface.

+0 -0

Je n'ai jamais été un "architecte", mais en lisant quelques ressources sur les principes SOLID, en factorisant au maximum et en faisant des composants (j'entends par là des classes, ou des fonctions, ou autre brique fondamentale du langage que tu utilises) les plus petits possibles en vue de les composer au maximum, je pense m'en sortir plutôt bien. Disons que quand le patron veut un changement de dernière minute, le code est assez souple pour que je n'ai pas à tout re-coder ou presque.

Je dois avouer, cependant, que j'ai acquis cela avec de la pratique : à force de me manger les dents à chaque fois qu'un changement ou qu'une extension devait être implémentée, j'étais parti pour une semaine de boulot en plus.

Donc mon conseil, LudoBike, ça serait de lire deux ou trois petits trucs sur SOLID et compagnie histoire d'avoir eu une sensibilisation, mais surtout de te lancer dans ton gros projet, de te manger les dents, et ça devrait le faire dans quelques mois. Quand tu te planteras, tu te diras dans ta tête "Ah, ok je vois, c'était en fait ça l'intérêt du principe ouvert/fermé" par exemple.

De mon point de vue, quand tu créer un projet, il faut garder le schéma suivant en tête : Image qui illustre la construction d'un logiciel

Concrètement il ne faut pas essayer de créer une grosse architecture incompréhensible dès le départ. Tu travaille par itérations et tu fait des refactorisations régulièrement. Cela va avoir pour effet (non négligeable) d'entretenir ta motivation tout au long du projet. Car tu obtient des résultats au fur et à mesure et pas à la fin du projet. L'architecture de ton application se construit donc au au fur et à mesure des refactorisations.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte