Posts com Tag ‘Projetos de desenvolvimento’

Easy-Code-660x92

.

Introdução

 Neste artigo vou apresentar uma ferramenta de software que utilizo há muitos anos, o EASYCODE. Garimpei essa ferramenta para melhorar minha produtividade no desenvolvimento de software embarcado para microcontroladores e DSPs. Eu sempre utilizei o método gráfico para planejamento e projeto de software conhecido como diagramas Nassi-Shneiderman e a abordagem Top-Down para o refinamento dos blocos do software. Essa ferramenta de software utiliza esses mesmos diagramas Nassi-Shneiderman para planejar e gerar o software.

  .

Diagramas Nassi-Shneiderman

 Os diagramas N-S, como são chamados na forma curta,  permitem  representar e desenvolver programas de computador ou algoritmos graficamente. Esses diagramas nos permitem visualizar melhor o sistema como um todo e facilitam o desenvolvimento do projeto e a detecção de eventuais falhas no nosso raciocínio. Na Figura 1 está ilustrado um exemplo de como realizar o cálculo de uma média de notas de um aluno. É muito simples, não? Bem mais fácil de ler ou entender do que o código de programação correspondente.

Media de notas

 Figura 1: Diagrama N-S para cálculo da nota média de um aluno

 .

Os diagramas N-S são associados diretamente aos comandos de programação, tais  como IF-THEN-ELSE, FOR, DO-WHILE, etc. A tradução é direta, quando o programa estiver totalmente detalhado. Para complementar a introdução, faltou explicar que a abordagem Top-Down é a maneira de se desenvolver um projeto, sistema, algoritmo, etc, partindo do plano mais geral (Top) e descendo aos poucos para os detalhes, (Down) até que esteja tudo definido nos mínimos detalhes. Para conhecer um pouco mais sobre a técnica Top-Down, sugiro que você leia o artigo técnico Técnicas: Top-Down, Mocks e TDD.

 .

A ferramenta de desenvolvimento de software

Voltando ao tema da ferramenta de software, eu identifiquei uma que além de facilitar a geração dos diagramas N-S também traduz esses diagramas para uma linguagem de programação, no meu caso optei pela linguagem C/C++. Essa ferramenta também tem o recurso de realizar a engenharia reversa de programas. Você consegue montar os diagramas e escrever os comentários em cima do programa sem documentação. Os diagramas podem ser desenvolvidos de forma hierárquica. Essa ferramenta, originalmente desenvolvido pela Siemens da Áustria, chamava-se EASYCASE, depois foi rebatizada de EASYCODE.

 .

Não é uma ferramenta gratuita. Ela custa caro, mas vale muito a pena. Se você possui uma empresa, ou trabalha numa instituição que pode investir nesse tipo de ferramenta, vale muito a pena adquirí-la. Você pode fazer um test drive gratuito, se quiser no link[1] abaixo. Se observarmos a Figura 2, podemos notar que a ferramenta vai muito além de facilitar a programação em diagramas estruturados. Ela permite planejar e desenvolver todo um projeto.

easycode

Figura 2: Módulos do EASYCODE

 .

Exemplo

Para exemplificar a utilidade e o quanto essa ferramenta é poderosa, vou usar um programa pequeno, que foi apresentado no artigo técnico Sistemas Operacionais de Tempo Real – Teclados Matriciais, como um programa completo para a simulação da operação de timers, displays de 7 segmentos e um teclado matricial em ambientes de tempo real. Esse programa tem apenas em torno de 700 linhas de código. Se impresso em papel, seriam gastos mais de 12 páginas para essa impressão. Veja a seguir.

  Exemplo1Exemplo2Exemplo3Exemplo4Exemplo5Exemplo6Exemplo7Exemplo8Exemplo9Exemplo10Exemplo11Exemplo12

Ficou enorme, não? Já pensou o trabalho que vai dar, se for necessário realizar alterações ou manutenção nesse programa? E se esse programa tivesse mais de 9.000 linhas, como um que desenvolvi para outro projeto?  Dá para notar a dificuldade claramente. Agora veja a Figura 3, onde podemos observar o mesmo programa organizado no EASYCODE.

Principal

Figura 3: Programa exemplo organizado no EASYCODE

A diferença é gritante!!! Pode-se observar claramente as diversas partes do programa, agora organizado em blocos. Esses diagramas têm estrutura hierárquica, que nos permite avançar para o interior do bloco, apenas “clickando” em cima dele. Veja no Figura 4 os detalhes da rotina de interrupção do Timer 0.

Interrupcao

Figura 4: Detalhes do bloco do Timer 0

Na Figura 5, descendo mais um estágio dentro dessa rotina, podemos ver o detalhamento do bloco referente aos displays de 7 segmentos.

Interrupcao_1

Figura 5: Trecho de código ref. aos displays de 7 segmentos inserido na interrupção do Timer 0

Para finalizar, veja na Figura 6 o detalhe do programa principal.

Main

Figura 6: Detalhes do bloco do programa principal

O software EASYCODE também permite copiar, arrastar, mover e deletar um bloco inteiro, se você quiser. Pode-se fazer engenharia reversa de algum código, especialmente naqueles mais antigos, em que você não se lembra mais o que foi feito. Recomendo que você baixe o programa de avaliação e dê uma “voltinha” nele. Você vai ficar com água na boca.

 .

Resumo

Neste artigo técnico foi apresentada uma ferramenta comercial para desenvolvimento de software e mostradas algumas características e vantagens de se utilizá-la.

Licença Creative Commons
Esta obra, “Desenvolvimento de Software – Ferramentas de Produtividade“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

Caro(a)  Colega,

Consulte as Normas Técnicas!  é o terceiro artigo, de quatro no total, da série Projetos de Desenvolvimento – Antes de começar. No final deste artigo, você encontrará os links para os demais artigos dessa série.

Boa Leitura! Abraço,

Henrique

consulte sempre um engenheiro eletrônico

=======================================================

ID-100100048

Introdução

Quando se inicia um novo projeto, é necessário que se tenha muito bem definido o local físico onde o equipamento irá operar ou o tipo de aplicação para a qual esse equipamento será projetado. Dependendo do caso poderá ser obrigatório o atendimento a requisitos definidos em normas técnicas específicas para essa aplicação. Nesse artigo falaremos um pouco sobre esse assunto. É sempre recomendável que, mesmo que não haja essa obrigatoriedade, o projetista tenha um conhecimento de especificações técnicas de caráter mais geral, para que os projetos dos seus equipamentos se tornem mais confiáveis e de melhor qualidade. É o que se conhece por boas práticas de projeto. Uma maneira de se adquirir esse conhecimento é a consulta às diversas normas técnicas que abordam circuitos elétricos, circuitos impressos, etc.

Porque devemos utilizar normas técnicas?

As normas técnicas têm algumas funções importantes. Uma delas é a de estabelecer critérios e especificações técnicas que garantam a segurança das pessoas que estarão em contato com o equipamento, do ambiente ao seu redor e do próprio equipamento em si. Outra função é a de garantir a qualidade e confiabilidade do equipamento.

A exigência de conformidade com normas técnicas, para quem compra equipamentos, é uma garantia de interoperabilidade desses equipamentos.

O motivo mais forte para você observar no seu projeto o atendimento a especificações de normas técnicas obrigatórias, é que se você não o fizer, você pode perder todo o seu projeto e o tempo investido nele. É o caso dos equipamentos que necessitam de certificação. Se esses equipamentos não a tiverem, não poderão ser comercializados em hipótese alguma e dificilmente poderão ser exportados. Na melhor das hipóteses será necessário realizar diversas correções posteriores nele. Numa pior hipótese, se acaso o equipamento depois de instalado causar danos a pessoas ou instalações por conta disso, o prejuízo para todos os envolvidos é enorme.

Exemplos

Suponhamos hipoteticamente que o seu projeto é um equipamento para utilização na área médica. Para essa aplicação, os equipamentos têm que atender obrigatoriamente às normas NBR IEC 60601, que colocam requisitos que garantem a segurança principalmente do paciente. Você pode pesquisar essas normas técnicas no catálogo da ABNT (Associação Brasileira de Normas Técnicas) ou no webstore da IEC (International Electrotechnical Commission):

ABNT_60601

  • webstore da IEC (“clicke” na figura abaixo para abrir a pesquisa completa)

IEC_60601

Um outro exemplo é o caso em que o equipamento será instalado em locais onde há risco de explosão ou incêndio, como por exemplo uma planta petroquímica, ou um posto de combustíveis. Nesse caso, os equipamentos devem atender às normas de segurança para áreas classificadas (Equipamentos que operam em atmosferas explosivas). As normas técnicas específicas para esses casos são as NBR IEC 60079.

Para pesquisar essas normas técnicas:

Onde conseguir essas normas?

As normas técnicas brasileiras estão disponíveis para compra na ABNT. A ABNT também vende diversas normas internacionais. Outras normas poderão ser adquiridas diretamente nas organizações de normas ou através de revendedores.

Para quem é projetista autônomo ou freelancer, comprar normas técnicas acaba sendo um bocado oneroso. A título de referência,  o preço médio de uma norma técnica gira em torno de R$ 1.000,00 e raramente é necessário comprar apenas uma. Deve-se ter o cuidado de incluir esse custo quando for realizado o orçamento do projeto. Num caso de emergência, é possível encontrar drafts de algumas normas na Internet.

Resumindo, é necessário estar sempre atento quanto à necessidade do seu projeto estar em conformidade com determinadas normas técnicas. Esse fato pode impactar em muito no custo e no sucesso do seu projeto.

Projetos de desenvolvimento – Antes de começar

  • O que o Cliente quer? – A arte de extrair do cliente o que ele realmente quer e necessita;
  • Pesquise Patentes! – A vantagem de se pesquisar os sistemas de patentes para adquirir conhecimento nos assuntos específicos e de conhecer as soluções dadas pelos concorrentes;
  • Estude mais um pouco! – Outras fontes para se adquirir o conhecimento necessário e extrair as informações que são necessárias para o desenvolvimento do seu projeto.

Licença Creative Commons
Esta obra, “Consulte as Normas Técnicas!“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada. É a terceira parte de uma sequência de quatro obras da série Projetos de Desenvolvimento – Antes de começar.

Caro(a)  Colega,

O que o Cliente quer?  é o primeiro artigo, de quatro no total, da série Projetos de Desenvolvimento – Antes de começar. No final deste artigo, você encontrará os links para os demais artigos dessa série.

Boa Leitura! Abraço,

Henrique

consulte sempre um engenheiro eletrônico

=======================================================

ID-10036921 (1)

Introdução

Todo começo é difícil e cheio de obstáculos. Com projetos novos isso não é diferente! Entender o que seu cliente realmente quer que você realize, é uma das tarefas mais difíceis e delicadas. Acredite: vocês não falam a mesma linguagem! Tem um quadrinho clássico que ilustra isso de forma divertida e bem humorada, mostrando o que cada membro de uma equipe hipotética de projeto entendeu do que foi pedido pelo cliente. É o quadrinho do balanço…

projetow

fonte: The Project Cartoon.

Vou expor aqui uma abordagem que frequentemente uso para tentar extrair o desejo do nosso cliente e chegar a um consenso do que ele realmente quer e precisa que seja feito.

A primeira ação é realizar uma entrevista minuciosa com o cliente para melhor entendimento do projeto, questionando pontos que se mostram relevantes, pedir esclarecimentos, verificar se há concorrência com projetos semelhantes e anotar os pontos principais das especificações desejadas. Todos os detalhes são importantes, mesmo os que nós técnicos rotulamos como perfumaria, como por exemplo, pontos estéticos e de design ou então particularidades de uso.

Coisas a se considerar e refletir a respeito durante a entrevista, que normalmente o cliente nem tem noção da necessidade, ou então acredita que sejam óbvias ou implícitas e por isso nem as menciona:

  • Como configurar, personalizar e calibrar o projeto;
  • Há a necessidade de conectar o projeto com outros equipamentos? Como? (Wi-fi, Ethernet, USB, RS-232, RS-485, etc.);
  • De que maneira o projeto interage com um operador ou técnico de manutenção? (Display, botões, teclado, conexões externas, LEDs, etc.);
  • Que sistema operacional usar? (Windows, Linux, sistema próprio, nenhum);
  • Outras questões que possam se mostrar relevantes  no contexto do projeto.

A partir dessa entrevista, deve-se elaborar um documento formal contendo a especificação detalhada do projeto, o registro das informações adicionais colhidas, todas as suas ideias e principalmente uma especificação funcional completa, na forma de proposta, detalhando ao máximo as funções e sequências de operação, de calibração, etc. Nesse documento ficará registrado o seu entendimento profissional, baseado na sua experiência, de como as especificações deverão ser viabilizadas e qual a melhor solução para o projeto do ponto de vista técnico-econômico.

A seguir deve-se submeter esse documento formal ao cliente para que ele possa analisar, criticar, formular sugestões e levantar dúvidas com relação aos detalhes. O cliente em geral tem a experiência do negócio dele, conhece o ambiente onde o projeto vai operar e o comportamento das pessoas que vão interagir com o projeto. Ele pode enxergar falhas e inconsistências ou sugerir alterações importantes.

Após a revisão do cliente, deve-se gerar um documento “final”, que servirá de guia tanto para você sobre o que deverá ser realizado de fato e entregue para o cliente, quanto para o cliente  sobre o que deve e pode ser cobrado de você. É um tipo de contrato. Essas especificações poderão ser revisadas, sempre que necessário e de comum acordo com o cliente. Elas porém definem com “exatidão” o projeto,  deverão portanto ser preservadas e respeitadas na medida do possível.

A vantagem dessa abordagem é que aumenta-se muito as chances de acerto no resultado do projeto, e reduz-se muito o tempo desperdiçado com situações constrangedoras e revisões dispendiosas no final. Vale a pena investir algum tempo nessa parte inicial de um novo projeto.

Tenho usado essa abordagem para todo tipo de cliente, mesmo que o cliente seja eu mesmo, com algumas adaptações. Você tem outra experiência? Trabalha de outra forma? Compartilhe aqui a sua!

Projetos de desenvolvimento – Antes de começar

Confira os demais artigos dessa série sobre como iniciar um projeto de desenvolvimento:

  • Pesquise Patentes! – A vantagem de se pesquisar os sistemas de patentes para adquirir conhecimento nos assuntos específicos e de conhecer as soluções dadas pelos concorrentes;
  • Consulte as Normas Técnicas! – Os cuidados que se deve ter na elaboração de um novo projeto, se acaso houver a exigência de serem  atendidos requisitos de normas técnicas específicas;
  • Estude mais um pouco! – Outras fontes para se adquirir o conhecimento necessário e extrair as informações que são necessárias para o desenvolvimento do seu projeto.

 

Licença Creative Commons
Esta obra, “O que o Cliente quer?“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada. É a primeira parte de uma sequência de quatro obras da série Projetos de Desenvolvimento – Antes de começar.