Desenvolvimento de um VeÃculo Aéreo Não-Tripulado - LARA ...
Desenvolvimento de um VeÃculo Aéreo Não-Tripulado - LARA ...
Desenvolvimento de um VeÃculo Aéreo Não-Tripulado - LARA ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
códigos dos sistemas embarcados <strong>de</strong> 8 bits (AVRs) estão <strong>de</strong>scritos nas Seções 4.4, 4.5 e 4.6. O<br />
código do LPC2148 está <strong>de</strong>scrito na Seção 4.7, e do G<strong>um</strong>stix Overo na Seção 4.8. Por último, o<br />
simulador está <strong>de</strong>scrito na Seção 4.9.<br />
4.2 Filosofias e Metodologias <strong>de</strong> Programação<br />
Na maior parte dos cursos <strong>de</strong> graduação <strong>de</strong> engenharia, o que é ensinado como programação<br />
são os fundamentos básicos (função, variáveis, etc.) e a sintaxe <strong>de</strong> <strong>um</strong>a linguagem específica - ou<br />
seja, como que esses fundamentos são implementados. Porém, a experiência mostra que não basta<br />
dominar as nuâncias <strong>de</strong> <strong>um</strong>a <strong>de</strong>terminada linguagem <strong>de</strong> programação, e sim aplicar <strong>um</strong>a filosofia<br />
<strong>de</strong> programação a fim <strong>de</strong> escrever <strong>um</strong> código eficiente e, acima <strong>de</strong> tudo, legível e compreensível.<br />
A existência <strong>de</strong> <strong>um</strong>a filosofia se torna mais importante ainda quando mais <strong>de</strong> <strong>um</strong>a pessoa está<br />
escrevendo código - sem ela, <strong>um</strong>a quantida<strong>de</strong> gran<strong>de</strong> <strong>de</strong> código é duplicada, e a possibilida<strong>de</strong> <strong>de</strong><br />
problemas sérios no código são agravadas <strong>de</strong>vido a incompatibilida<strong>de</strong> da forma <strong>de</strong> programação.<br />
Com isso em mente, alguns princípios foram <strong>de</strong>finidos antes <strong>de</strong> começar o <strong>de</strong>senvolvimento do<br />
software, na tentativa <strong>de</strong> evitar problemas sérios nos programas feitos para esse projeto. Vale lembrar<br />
que quase a totalida<strong>de</strong> do código <strong>de</strong>senvolvido foi em C, logo, essa metodologia foi elaborada<br />
visando o próprio C e <strong>um</strong>a equipe reduzida e qualificada.<br />
4.2.1 Programação Modular<br />
Um dos princípios mais fundamentais que foram adotados foi o uso da programação modular<br />
- ou seja, o código era sempre separado em módulos, com entradas, saídas e funcionalida<strong>de</strong>s bem<br />
<strong>de</strong>finidas. Cada módulo é formado por <strong>um</strong>a série <strong>de</strong> funções, alg<strong>um</strong>as <strong>de</strong> acesso interno ao módulo,<br />
outras <strong>de</strong> acesso externo (acessíveis por outros módulos).<br />
A idéia da programação modular é reaproveitar ao máximo o código entre diferentes programas<br />
- ou seja, se <strong>um</strong> módulo chamado <strong>de</strong> “protocolo <strong>de</strong> comunicação” é <strong>de</strong>senvolvido, ele po<strong>de</strong> ser<br />
utilizado em outro programa modularizado sem nenh<strong>um</strong>a modificação. As atualizações do módulo<br />
se propagam para todos os programas que utilizam esse módulo, adicionando funcionalida<strong>de</strong>s ou<br />
removendo bugs.<br />
Um outro bom motivo para modularizar o código é a legibilida<strong>de</strong> - escolhendo os nomes<br />
dos módulos e das variáveis <strong>de</strong> entrada e saída <strong>de</strong> forma apropriada, o que está efetivamente<br />
acontecendo no código fica muito claro até para quem não está familiarizado com o código. A<br />
modularização também separa claramente o código <strong>de</strong> cada módulo, tornando a manutenção muito<br />
simplificada.<br />
A programação modular também é i<strong>de</strong>al para trabalho em equipe, pois cada membro da equipe<br />
só precisar conhecer as entradas e saídas <strong>de</strong> cada módulo. Cada programador po<strong>de</strong> ser responsável<br />
por <strong>um</strong> ou mais módulos, o que também facilita a gerência do processo <strong>de</strong> <strong>de</strong>senvolvimento.<br />
O fato das entradas e saídas estarem muito bem <strong>de</strong>finidas também facilita o processo <strong>de</strong> teste<br />
68