Início / MRM / Projeto do Produto / Projeto do Software de Alto Nível

Projeto do Software de Alto Nível

Trata-se do desenvolvimento de programas em linguagem de alto nível projetados para implementar as características funcionais e de controle do equipamento.

Uma vez que os requisitos de software foram desenvolvidos na fase anterior, o trabalho de projeto do sistema em linguagem de alto nível se inicia com a escolha da linguagem a ser utilizada. Nesse sentido, há diversas opções no mercado e a bibliografia não considera haver uma melhor para qualquer tipo de aplicação. Aplicações com muito processamento matemático podem utilizar FORTRAN, caso o sistema seja desenvolvido para manter interface próxima ao WINDOWS é interessante o uso de linguagens visuais como VISUAL C++ e VISUAL BASIC, se o projeto implicar no uso funções executadas em MS OFFICE, pode-se utilizar VBA etc. Como regra, utilizar uma linguagem conhecida pelos desenvolvedores encurta o tempo necessário ao projeto. FONTE: HYPERLINK “http://www.inf.puc-rio.br/~roberto/icc/obj.html” http://www.inf.puc-rio.br/~roberto/icc/obj.html A definição do sistema operacional a ser utilizado no projeto é um aspecto importante.
Fonte: HYPERLINK “http://www.training.com.br/lpmaia/pub_controle_processos.htm” http://www.training.com.br/lpmaia/pub_controle_processos.htm
O projeto de software do equipamento mecatrônico é dividido em funcionalidades implementadas em sistemas de alto nível e funcionalidades implementadas em software assembly. As funcionalidades implementadas em software assembly estão contidas na atividade de “projeto de sistema microprocessado”. O projeto do software de alto nível deve ser realizado utilizando “linguagens de alto nível”, ou seja, linguagens de programação que mascaram o conjunto de instruções e de registradores disponíveis para programar o microprocessador utilizado. Essas linguagens, tais como C++, VISUAL BASIC, DELPHI, VBA etc., são projetadas para serem independentes do hardware sobre o qual o programa é desenvolvido.
As principais vantagens de utilizar linguagens de alto nível em projetos de produtos mecatrônicos são: (1) aumenta a produtividade do programador porque cada linha de alto nível produz diversas em código de máquina; (2) reduz a possibilidade de haver erros de programação; e (3) permite a manipulação de dados complexos ser mais facilmente implementada. Por outro lado, essas linguagens geram mais códigos do que um programa equivalente em assembly e o aplicativo resultante é mais lento que seria se o projeto fosse realizado em assembly.
Em linhas gerais a utilização de linguagens de alto nível é mais adequada que o uso de assembly quando o produto demanda manipulação de banco de dados, forte processamento de imagens e requisitos de interface homem-máquina implementados através de micro-computadores.
A atividade de “projeto do software de alto nível” é baseada em BRADLEY (1991) e PAULA (2001) sendo que este último detalha a sistemática necessária para o desenho detalhado e codificação do software.
Para alguns tipos de software, em especial os que realizam processamento de imagens manipulando câmeras CCD, ou software que fazem interface com hardware de controle já existente no ambiente de aplicação, é importante que se definam as interfaces entre o sistema e esses módulos ou componentes. Por exemplo, câmeras CCD são comercializadas com placas de aquisição e processamento de imagens que contém funções pré-programadas que podem ser manipuladas via C++. Portanto, a definição das placas de aquisição a serem utilizadas implica nas funções a serem exploradas para a captura e o processamento da imagem digital. Outra decisão importante do projeto de software consiste na escolha do banco de dados a ser utilizado no programa. Como os bancos de dados utilizados em produtos mecatrônicos permitem basicamente a captura de dados do ambiente de aplicação e sua retenção no sistema, pode-se utilizar soluções simples como o ACCESS, o que, entretanto, implica na necessidade de adquirir pacotes OFFICE do tipo PROFESSIONAL. Uma opção alternativa é utilizar o próprio HD do microcomputador utilizado para salvar os arquivos de dados e introduzir memórias secundárias, tais como drivers gravadores de CD-ROM para arquivar dados antigos e manter espaço disponível para novas aquisições de dados. Para aplicações de controle de funcionalidades realizadas em tempo real é interessante o uso de sistemas mais robustos que o WINDOWS sendo uma boa opção o VMS. Projetos em LINUX também devem ser considerados uma vez que permitem manter o produto independente de variações de desempenho e acesso a funções de controle de hardware existentes entre diferentes versões de WINDOWS. Fonte: HYPERLINK “http://www.training.com.br/lpmaia/pub_controle_processos.htm” http://www.training.com.br/lpmaia/pub_controle_processos.htm
Para alguns tipos de software, em especial os que realizam processamento de imagens manipulando câmeras CCD, ou software que fazem interface com hardware de controle já existente no ambiente de aplicação, é importante que se definam as interfaces entre o sistema e esses módulos ou componentes. Por exemplo, câmeras CCD são comercializadas com placas de aquisição e processamento de imagens que contém funções pré-programadas que podem ser manipuladas via C++. Portanto, a definição das placas de aquisição a serem utilizadas implica nas funções a serem exploradas para a captura e o processamento da imagem digital.
Outra decisão importante do projeto de software consiste na escolha do banco de dados a ser utilizado no programa. Como os bancos de dados utilizados em produtos mecatrônicos permitem basicamente a captura de dados do ambiente de aplicação e sua retenção no sistema, pode-se utilizar soluções simples como o ACCESS, o que, entretanto, implica na necessidade de adquirir pacotes OFFICE do tipo PROFESSIONAL. Uma opção alternativa é utilizar o próprio HD do microcomputador utilizado para salvar os arquivos de dados e introduzir memórias secundárias, tais como drivers gravadores de CD-ROM para arquivar dados antigos e manter espaço disponível para novas aquisições de dados.
Passa-se então a especificar e detalhar o desenho do software. A partir do modelo consolidado na análise de requisitos realizada na fase 6, deve-se especificar o conjunto de classes necessárias à implementação do produto. Enquanto na análise de requisitos discute-se as classes que cumprem funções pré-definidas no projeto, no modelo de desenho podem surgir novas classes por: (1) necessidade de implementar atributos não-previstos na linguagem; (2) encapsular componentes externos ou sistemas legados. De maneira geral, o modelo de desenho de software mostra como cada caso de uso deve ser implementado em termos de elementos reais da linguagem de programação utilizada. O detalhamento do desenho do software pode permitir ainda planejar as liberações do produto nos protótipos ALFA e BETA a serem desenvolvidos. Esse plano é usado para mitigar os maiores riscos, obter uma realimentação crítica dos usuários e dividir o trabalho de implementação entre o pessoal de projeto. As primeiras liberações devem estar relacionadas com os requisitos funcionais mais importantes, as interfaces gráficas de usuário e novos equipamentos/sistemas/ serviços com os quais a equipe não está familiarizada. É importante a geração de diagramas de interação de demonstrem como as funções a serem implementadas operacionalizam os casos de uso identificados quando da análise de requisitos. Como os softwares de programação em alto nível comumente são orientados a objetos, é necessário alocar as funções identificadas nas entidades previstas no MER. Para que sejam implementadas em C++, Visual Basic, DELPHI etc., é importante converter as entidades em objetos, detalhar os atributos de cada uma de acordo com os tipos de dados existentes na linguagem utilizada e encapsular as operações identificadas nos diagramas de fluxo de dados nos objetos que lhe estão relacionados. Uma outra questão importante no projeto do software é a tradução do modelo entidade- relacionamento em modelos relacionais que possam ser implementados em bases de dados disponíveis comercialmente. Esse processo é denominado “desmontagem de objetos”e parte do mapeamento dos objetos em tabelas com especial atenção para a representação de relacionamentos e heranças. Na implementação propriamente dita, é importante observar o aspecto de modularização do software. Isso implica na definição dos módulos e das rotinas necessárias em cada um. Sugere-se que para cada módulo haja um ARQUIVO ou uma PASTA específica. É importante manter uma correlação entre as estruturas lógicas e físicas. Quanto às rotinas, é importante manter um critério consistente para sua criação, nomeação e para as interfaces necessárias ao seu acesso. Adicionalmente, é interessante o uso de comentários baseados nos roteiros dos casos de uso para identificar as rotinas do código. Em linhas gerais a codificação deve facilitar a manutenção do código e mantê-lo legível. Sugere-se atenção especial para: (1) a estrutura relacionada com a seqüência de operações; (2) o layout do programa com relação a alinhamento, endentação etc; (3) a utilização de comentários e ; (4) a nomeação de variáveis, rotinas etc. Elaborado o código para as liberações relacionadas com o protótipo ALFA deve-se então realizar “testes de unidade” que são testes do tipo caixa branca nos quais são executadas detalhadamente as unidades de código. Basicamente, deve realizar testes de: (1) caminho básico; (2) de condicionais; e (3) de laços. Como nem todo o software precisa estar desenvolvido até esse momento, pode ser necessário utilizar “controladores” ou “cotos” e a partir deles acompanhar o fluxo resultante dos comandos testados.
A atividade de projeto do software de alto nível tem como insumos o plano técnico do projeto, as especificações do produto e, eventualmente, o esboço da aplicação das novas tecnologias desenvolvidas. As saídas são os códigos-fonte acompanhados de fluxogramas lógicos de operação do software e os registros dos testes de unidade realizados. A atividade pode ser retomada caso o protótipo ALFA não cumpra as métricas estabelecidas na matriz de verificação do produto ou caso a análise realizada no gate da fase considere os resultados insatisfatórios. Há loops entre o projeto do software de alto nível e as atividades de projeto do sistema microprocessado, projeto eletrônico, projeto do sistema de comunicação e projeto do sistema de controle.
Para o projeto eletrônico o sistema do software de alto nível gera demandas para os drivers de interface entre o computador utilizado e os sensores e atuadores. Para o projeto do sistema de controle e para o projeto do sistema de comunicação, a atividade em tela gera demandas no sentido de modificação de arquitetura e protocolo, respectivamente, para funcionalidades acerca das quais haja restrições de hardware para sua implementação. Para o projeto do sistema microprocessado, o projeto do software de alto nível implica em necessidade de definição de portas de I/O para a comunicação do estado de operação do microprocessador e para o envio de comandos a serem repassados para o hardware de sensoriamente e atuação.
Há loops entre o projeto do sistema microprocessado e as atividades de projeto eletrônico, projeto do sistema de comunicação e projeto do sistema de controle. Para o projeto eletrônico o sistema microprocessado gera demandas para os drivers de interface entre o dispositivo e os sensores e atuadores utilizados, para o projeto do sistema de controle e para o projeto do sistema de comunicação, a atividade em tela gera demandas no sentido de modificação de arquitetura e protocolo, respectivamente, para funcionalidades acerca das quais haja restrições de hardware para sua implementação. Há uma importante interface entre o projeto do sistema microprocessado e o projeto da interface homem-máquina uma vez que para a operação do software desenvolvido devem ser previstas soluções de interfaceamente tais como botões, painéis, chaves sintonizadoras etc. Essas soluções devem estar minimamente pensadas na fase de projeto técnico, embora devam ser detalhadas apenas na fase de otimização do projeto. De maneira geral, da forma como foram divididas as atividades de projeto da eletrônica do equipamento, as atividades de teste do sistema microprocessado apenas podem ser realizadas quando a parte do projeto eletrônico a ele relacionado esteja desenvolvida. Há uma importante interface entre o projeto do software de alto nível e o projeto da interface homem-máquina uma vez que para a operação do software desenvolvido devem ser previstas soluções de interfaceamente tais como operações via teclado e mouse do computador, monitoramento da imagem na tela do micro etc. Essas soluções devem estar minimamente pensadas na fase de projeto técnico, embora devam ser detalhadas apenas na fase de otimização do projeto.

Loading

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *