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 |