Gentoo Archives: gentoo-user-fr

From: Laurent Steffan <gentoo@××××××××××××××.com>
To: gentoo-user-fr@l.g.o
Subject: Re: [gentoo-user-fr] [HS] Gérer un projet en C
Date: Thu, 08 Dec 2005 12:01:57
Message-Id: 4398205C.7080903@laurentsteffan.com
In Reply to: [gentoo-user-fr] [HS] Gérer un projet en C by grillot sebastien
1 Salut,
2
3 Le 07.12.2005 07:06, grillot sebastien a écrit :
4 > (re)bonjour,
5 > Voila enfin un vrai HS de chez HS ;)
6
7 Ahhhh! ça nous manquait
8
9 > Comme je l'ai deja dis, notre association va participer à la coupe de
10 > france de robotique. Pour ce faire nous allons coder notre bestiolle
11 > en C. C'est une grande premiere pour moi de travailler en C sur un
12 > projet aussi "important" et sur de l'electronique (enfin un truc
13 > different d'une gestion_de_je_sais_pas_quoi comme nous pouvons faire
14 > en BTS IG par exemple :).
15 >
16 > Alors voila, j'ai pas mal de question :
17 > - Comment peut-on analyser le code que nous aurons à produire? Par
18
19 Avant même de commencer à "analyser", il faut faire une liste de ce que
20 vous voulez faire, en terme de fonctions (les besoins étant supposés
21 connus...).
22
23 Est-ce que l'architecture matérielle du robot (au sens électronique) est
24 déjà décidée ? parce que dans les systèmes embarqués il y a souvent des
25 compromis entre matériel et logiciel, et si on fige le matériel on
26 écarte implicitement certaines solutions. D'un autre côté, la conception
27 est beaucoup plus simple.
28
29 > quoi devons nous commencer. Je suis un habitué du systeme MERISE pour
30 > analyser les besoins. Dans notre ecole on nous parle tout le temps
31 > d'UML. Mais ne devrais-je pas simplement decouper mon projet en
32 > fonction des differents PIC que je vais avoir sur ma bestiolle ? De
33 > plus, nous allons avoir un GNU/Linux qui fera tourner un ARM (Gumstix
34 > ou routeur asus) pour le traitement de l'image et "l'inteligence" du
35 > robot.
36
37 UML est quand même très orienté objet, je ne sais pas si c'est vraiment
38 utile pour faire du C. D'autant qu'un gros intérêt d'UML est la
39 génération automatique de code, et je ne suis pas sûr que ça génère du
40 C... Ceci dit, tu peux au moins exploiter les "use cases" pour exprimer
41 les besoins.
42
43 Merise en général est plutôt utilisé pour décrire les données, je ne
44 l'ai jamais vu utilisé pour des systèmes temps réel ou embarqués (bien
45 sûr ça veut pas forcément dire grand chose).
46
47 > De plus, je decouvre tout les outils (lclint, gprof...) pour analyser
48 > le code. Comment dois-je travailler avec ce genre d'outils, à chaque
49 > fois que j'ai terminé d'ecrire une fonction, à chaque fois que je
50 > viens de coder un "mouvement" dans mon robot, à la fin de chez la fin?
51 > Je presume que si c'est à la fin il faut absoluement se prevoir un
52 > "délais" pour ne faire que ca. L'audit du code doit se faire par la
53 > personne qui à codé, par quelqu'un d'autre ? Est-ce reelement une
54 > etape utile, sachant que je penses que oui car le systeme se
55 > retrouvera embarqué donc dans des limites importantes...
56
57 De façon plus générale, il faut choisir une méthode de développement
58 avant tout, et choisir ensuite les outils adaptés. Un exemple : est-ce
59 que vous serez plusieurs à coder ? si c'est le cas, il est presque
60 certain qu'il vous faudra un système genre CVS.
61
62 C'est le test qui est la partie la plus importante pour un système temps
63 réel ou embarqué (au fait, tu situes votre robot dans quelle catégorie?
64 juste pour avoir une idée des contraintes). A ce sujet, je recommande
65 chaudement l'optique "Test Driven Development" (TDD) de Kent Beck, qui
66 fait partie des techniques popularisées (enfin, plus ou moins ;-) ) par
67 le Agile Programming (notamment Extreme Programming). Il faut pour tirer
68 parti des tests les écrire dès que possible (certains disent, avant même
69 d'écrire le code, et j'applique moi-même cette règle) et les faire
70 passer avec un système adapté. Pour les tests unitaires je recommande
71 CUnit (http://cunit.sourceforge.net). Au passage, je signale que TDD est
72 une méthode de développement, pas seulement de test.
73
74 Les outils comme lclint, splint, doivent généralement être utilisés du
75 début à la fin. Le mot-clé étant "début". Pour le "profiling", mon point
76 de vue c'est que pour du temps réel si on n'a pas des performances
77 suffisantes *avant* le profiling on n'a aucune chance d'y arriver : le
78 plus critique pour les performances en effet c'est souvent
79 l'architecture globale (communication inter-tâches, etc.)
80
81 Quant à l'audit du code, il est recommandé de le faire, mais là encore
82 les méthodes sont différentes selon les gens. Dans tous les cas, l'audit
83 doit être fait par une personne qui n'a pas codé. Il peut être plus ou
84 moins formalisé (réunions de revue de code, discussions avec le
85 partenaire dans le cas du "peer programming", etc.).
86
87 Bon j'arrête, sinon je sens que je vais soûler tout le monde. Mais enfin
88 aussi quelle idée de poser des questions sur des sujets intéressants! :-D
89
90 > Si vous avez des remarques, des questions, des idées... je vous en
91 > pris, lachez vous ;)
92
93 Je crois que c'est fait.
94
95 Amitiés,
96 Laurent
97
98
99
100 --
101 gentoo-user-fr@g.o mailing list