Melhores práticas para desenvolvimento de software e gerenciamento de código Osvaldo Santos Engenheiro de Sistemas Ilton Pereira Gerente de Engenharia de Aplicações
Agenda Gestão de documentos Requisitos de rastreabilidade Padrões e estilos de codificação Testes e Debugging Análise de código dinâmico /largeapps 2
3
4
Exemplos de falhas de engenharia de software (somente alguns dos erros mais comuns no desenvolvimento com LabVIEW) Falta de controle do código (ou projeto) Hierarquia de arquivo plana A função Stop não é testada regularmente Esperar até o fim de um projeto para criar uma aplicação Poucas especificações, documentação ou requisitos Falta de acompanhamento ou revisões de código Planejamento deficiente (falta de consideração por SMoRES) Falta de planos de teste Manipulação de erros deficiente Estilo não consistente Acoplamento forte ou fraca coesão 5
O custo de uma imperfeição de software Fase de desenvolvimento Relação de custo Requisitos 1 Projeto 3-6x Implementação 10x Testes de desenvolvimento 15-40x Testes de aceitação 30-70x Pós-lançamento 40-1000x Baseado na análise de 63 projetos de desenvolvimento de software em empresas incluindo IBM, GTE, e TRW 6
Gestão de documentos Coleta de Requisitos Arquitetura da Aplicação Desenvolvimento Validação Implementação Gestão de documentos do projeto Fornece repositórios de códigos Ajuda a gerenciar o código e controlar alterações Crucial para o desenvolvimento em equipe Importante para todo o processo de desenvolvimento 8
9
Opções de SCC para integração com LabVIEW Integração nativa com LabVIEW Perforce Integração através de APIs padrão Microsoft Visual SourceSafe Microsoft Team System Rational ClearCase PCVS (Serena) Version Manager MKS Source Integrity Seapine Surround SCM Borland StarTeam Telelogic Synergy ionforge Evolution Suporte através de Add-Ons adicionais Subversion Mecurial 13
O processo de engenharia de software Coleta de Requisitos Arquitetura da Aplicação Desenvolvimento Testes e Validação Implementação NI Requirements Gateway LabVIEW Statechart Orientação a objeto NI TestStand Fluxo de dados MathScript Modelo de estados Simulação LabVIEW Unit Test Framework LabVIEW VI Analyzer LabVIEW Desktop Execution Trace Application Builder Real Time FPGA Embedded Experimente. Provê qualidade. Reduz riscos. Economiza tempo. 14 Testes de Interface de Usuário
O processo de engenharia de software Coleta de Requisitos Arquitetura da Aplicação Desenvolvimento Testes e Validação Implementação NI Requirements Gateway LabVIEW Statechart Orientação a objeto NI TestStand Fluxo de dados MathScript Modelo de estados Simulação LabVIEW Unit Test Framework LabVIEW VI Analyzer LabVIEW Desktop Execution Trace Application Builder Real Time FPGA Embedded Experimente. Provê qualidade. Reduz riscos. Economiza tempo. 15 Testes de Interface de Usuário
Solução para requisitos de rastreabilidade da NI 16
Coleta de Requisitos Arquitetura da Aplicação Desenvolvimento Testes & Debbuging Implementação Cobertura de requisitos e acompanhamento de projeto Rastreabilidade e geração de documentação 17
Documentação Objetos rotulados Comentários Ícones distintos Descrição e dicas Gerar arquivo HTML Cobertura de requisitos 18
Simples Complexidade da aplicação Avançado Ferramentas de Debugging e testes Testes & Debugging Unit Test Framework Validação funcional do código Desktop Execution Trace Real Time Execution Trace Análise de código dinâmico VI Analyzer Toolkit Análise de código estático Baixo Risco Alto Risco Criticidade da aplicação 20
Estabelecer ou adotar diretrizes de desenvolvimento Diretrizes de desenvolvimento: Estilo do painel frontal Lista de verificação de estilo Estilo do diagrama de bloco Estilo do ícone e do conector Revisão de Código com VI Analyzer: Automatiza a análise de código com mais de 80 testes configuráveis o Execução o Estilo o Complexidade NI Style Guideline: /largeapps 21
Objetivos da análise de código dinâmico Qual é a memória do sistema consumida? Estou capturando todos os erros da minha aplicação? Qual foi o último evento que ocorreu antes de? Qual foi a cadeia de chamadas que nós levou a? Qual segmento está em execução? Estou realmente entrando em um específico event-case? O que aconteceu dentro de um estrutura? Qual é a ordem que esses eventos ocorreram? Algum processo daemon está rodando em background? O código se comporta diferente em um executável? 22
Desktop Execution Trace Toolkit Rastreie durante o tempo de execução: Estruturas de evento Alocação de memória Queues/Notifiers Perdas de referência Thread ID Erros não tratados Dynamic/Static SubVIs Custom User Strings 23
Rastreie sistemas de produção remotamente LabVIEW Desktop Execution Trace Toolkit Rede Informação de execução em Run-Time VIs e executáveis depuráveis LabVIEW Real-Time Execution Trace Toolkit Network Informação de execução em Run-Time Aplicações em tempo real 24
Demonstração ANÁLISE DE CÓDIGO DINÂMICO 25
O Processo de Engenharia de Software Coleta de Requisitos Arquitetura da Aplicação Desenvolvimento Testes e Validação Implementação NI Requirements Gateway LabVIEW Statechart Orientação à Objeto NI TestStand Fluxo de Dados MathScript Modelo de Estados Simulação LabVIEW Unit Test Framework LabVIEW VI Analyzer LabVIEW Desktop Execution Trace Application Builder Real Time FPGA Embedded Experimente. Provê qualidade. Reduz riscos. Economiza tempo. 26
Download de exemplos e slides /largeapps Ferramentas de Engenharia de Software Práticas de Desenvolvimento Comunidade LargeApp 27