Instituto Tecnológico de Aeronáutica

Divisão de Ciência da Computação

 

 

 

 

 

 

CE-230

Qualidade, Confiabilidade e Segurança de Software

Prof. Dr.  Adilson M. Cunha

 

 

 

 

 

 

 

Exame

Projeto Final – Protótipo de Veículo Autônomo - PVA

 

 

 

 

 

 

 

 

 

 

Aluno: Walter Abrahão dos Santos

walter@dss.inpe.br

 

30 de Novembro-2004


I . Introdução

1.1 Motivação

Visando proporcionar uma experiência hands-on na disciplina CE-230 (Qualidade, Confiabilidade e Segurança de Software) busca-se aplicar os conceitos e as metodologias fundamentais adquiridos para o caso de estudo do veículo autônomo - PVA (Protótipo de Veículo Autônomo) - capaz de realizar missões pré-programadas dentro de um ambiente pré-definido, vide [Martins04] para detalhes do PVA.

A importância dos conceitos Qualidade, Confiabilidade e Segurança de Software é evidente quando hoje se nota que sistemas embarcados possuem CPUs que em número superam a população humana e exercem um papel crescente nas vidas de cada ser humano. [Storey96].

Com este objetivo em mente, motiva-se a familiarização e utilização dos seguintes dispositivos:

A principal necessidade apresentada é a familiarização com a utilização de ferramentas I-CASE-E (Rose RT [Rose03], Together [Together04], etc) que são ambientes de desenvolvimento de software com funcionalidades diversas, dentre elas para Qualidade de Software.

 

1.2 Contexto

O texto, a seguir, foi o mesmo utilizado em CE-235 (Sistemas Embarcados de Tempo Real) para a prospecção de entidades, classes, ou objetos de interesse do sistema de software uma vez que, para fins de testes, as mesmas variáveis estarão em jogo.

“ O PVA irá receber uma missão via interface wireless ao MCM (Módulo Central de Monitoramento) através de um protocolo pré-definido. Missões podem ser carregadas e enfileiradas numa fila de missões para serem tratadas posteriormente.

O PVA possui como atuadores dois motores (direito e esquerdo) para se locomover e dispõe de um sensor de proximidade para acusar obstáculos, um sensor de Way-point para detectar pontos chaves na missão (carga, descarga) e de dois sensores de rota (direito e esquerdo) para auxílio à navegação e correção de rota.

Ao receber uma missão, o PVA se dirige a ponto de carga onde um dispositivo carregador realiza a carga de um objeto que deverá ser entregue a um ponto único de descarga.

Regularmente, o PVA envia status para o MCM informando dados referentes a seu estado interno, obstáculos e missão. Na presença de um obstáculo, o PVA notifica o MCM e aguarda sinalização do mesmo para a remoção do obstáculo e retomada da missão. ”

 

1.3 Objetivação do Protótipo de Sistemas de Software com Qualidade

O objetivo primordial do protótipo de sistema de software com Qualidade do PVA é garantir a qualidade, a confiabilidade e a segurança (safety) no funcionamento do PVA de forma a diminuir custos de desenvolvimento e manutenção do software. Para tal são implementados testes de forma a cobrir todos cenários possíveis de operação do PVA, vide detalhes na seção 1.5.

 

1.4 Redução do Escopo

Da disciplina CE-235, para fins de praticidade serão assumidas as seguintes simplificações:

 

1.5 Especificação de Requisitos

A seguir é descrita e refinada a especificação de requisitos do PSVA (Protótipo de Sistema de Veículo Autônomo) com ênfase a aspectos de Qualidade, Segurança e Confiabilidade.

O PSVA deverá ser submetido a testes de forma a propiciar:

1.5.1 A recepção de sinais de localização do tipo lat/long via um GPS embarcado.

1.5.2 A transmissão para o MCM, em Tempo Real (t <= 3´´), de sinais de status (localização, estado interno de sensores e atuadores, informações sobre a missão, etc).

1.5.3 A recepção de informações do MCM sobre missões atribuídas ao PVA, tipicamente ponto de carga em termos de lat/long.

1.5.4 O controle de navegação do PVA em Tempo Real (t <= 1´´).

1.5.5 O cumprimento da missão de localizar, identificar, transportar e entregar cargas.

1.5.6 A leitura de sensores e o comando de atuadores.

1.5.7 A simulação das condições de falha e verificação dos processos de recuperação (manuais e automatizados) para restaurar o estado conhecido e desejado do sistema.

Os seguintes tipos de condições estão incluídos no teste para observar e registrar o comportamento-alvo após a recuperação:

·          Interrupção da energia para o CPU;

·          Interrupção da comunicação com sensores e atuadores;

·          Sensores e atuadores com problemas;

·          Perda/interferência na comunicação com o módulo MCM;

·          Ciclos incompletos (dados interrompidos, processos de sincronização de dados interrompidos) e

·          Elementos de dados inválidos ou corrompidos entre as interfaces.

1.5.8 Verificação da instalação de firmware no hardware do PVA nas condições a seguir pra observar e registrar o comportamento da instalação:

·        Nova instalação: um novo PVA, em que nunca foi instalado anteriormente o SPVA.

·        Atualização: um PVA em que foi instalado anteriormente o SPVA, na mesma versão.

·        Atualização: um PVA em que foi instalado anteriormente o SPVA, em uma versão mais antiga.

 

1.6 Ordem de Apresentação do Projeto Final

1.6.1 Na  Seção 1 (Introdução), apresenta-se a Motivação, o Contexto, Objetivação do Protótipo de Sistemas de Software com Qualidade, a Redução do Escopo e a Especificação de Requisitos deste Projeto Final.

1.6.2 Na Seção 2 (Desenvolvimento) descreve-se a Linha Base Funcional e a Linha Base Alocada e a Linha Base de Produto de Qualidade dentro de cada fase do RUP (Rational Unified Process).

1.6.3 Na Seção 3 (Conclusões e Recomendações), são sintetizadas as principais conclusões, recomendações e sugestões para aperfeiçoamento deste Protótipo e para a melhoria dessa disciplina.

1.6.4 Finalmente, são inclusas as referências bibliográficas e anexos.

 

II. Desenvolvimento

Para cada Fase do RUP, será reportada a consolidação do material que foi produzido, na Linha Base Funcional e na Linha Base Alocada. Para detalhes sobre os artefatos produzidos vide os portais de documentação do projeto [Dos-Santos04] e [Itami04].

 

2.1  Linha Base Funcional

A Linha Base Funcional enfoca a 1ª Fase de Iniciação (Inception) do RUP onde foi gerada uma série de artefatos abordando aspectos de Qualidade, Confiabilidade e Segurança do Protótipo de Software do Grupo, a saber: Plano de Testes, Casos de Teste e Estimativa de Esforços por Pontos de Casos de Uso.

O Plano de Testes tem por finalidade reunir todas as informações necessárias ao planejamento e ao controle do esforço de teste referente ao PSVA (Protótipo de Sistema de Veículo Autônomo). O Plano de Teste visa atender aos seguintes objetivos:

·        Apresentar as técnicas, tipos e estratégias de teste a serem utilizadas;

·        Identificar os itens-alvo que devem ser testados;

·        Descrever o fluxo de trabalho dos testes e respectivos critérios de entrada e saída;

·        Identificar os recursos necessários e fornecer uma estimativa dos esforços de teste necessários e

·        Listar os produtos liberados do Projeto de Teste.

O Plano de Testes abrange diversos níveis de testes: Unidade, Integração e Sistema. Também aborda os vários tipos de testes: funcionalidade, usabilidade, confiabilidade e desempenho. Como alvo dos testes, são citadas as seguintes interfaces:

·        Interface de Comunicação RF

·        Interface dos Motores

·        Interface dos Sensores

·        Memória dos Dados da Missão

·        Processamento de Missões

Os seguintes testes são abordados no Plano de Testes: (a) Teste de Função do PSVA, (b) Teste de Interface com MCM, (c) Teste de Interface com o Hardware do PSVA, (d) Determinação do Perfil de Desempenho, (e) Teste de Tolerância a Falhas e de Recuperação e (f) Teste de Instalação.

Os Casos de Testes tem por finalidade identificar e comunicar formalmente as condições específicas detalhadas que serão validadas para permitir a avaliação de determinados aspectos dos Itens de Teste-alvo. Os Casos de Teste podem ser motivados por vários fatores, mas normalmente incluem um subconjunto dos Requisitos (Casos de Uso, características de desempenho etc.) e dos riscos envolvidos no projeto.

Um dos Casos de Testes é referente ao teste unitário que é implementado com base no menor elemento testável (unidades) do software e implica em testar a estrutura interna (como fluxo lógico e de dados), a função da unidade e os comportamentos observáveis. O design e a implementação de testes com ênfase na estrutura interna de uma unidade se baseiam no conhecimento da implementação da unidade (abordagem caixa branca). No entanto, o design e a implementação de testes com a finalidade de verificar os comportamentos observáveis e as funções da unidade não se baseiam no conhecimento da implementação; por isso, são conhecidas como abordagem caixa preta. Os Casos de Testes Unitários são definidos quando estiverem fechados e aprovados os documentos que definem os elementos de software (classes e objetos) que serão desenvolvidos e implementados. Para detalhes referir-se a [Itami04].

Finalmente, a Estimativa de Esforços por Pontos de Casos de Uso fornece, em Homem x horas (Hxh), os esforços necessários para o desenvolvimento do PSVA. A estimativa foi realizada através da metodologia de Pontos de Caso de Uso, tendo por base o artefato de Casos de Uso produzido pela Equipe de Desenvolvimento (Disciplina CE235).

Para apoiar a elaboração das estimativas, foi implementada uma planilha, baseada nos passos vistos em aula para determinação do esforço e em artigos disponibilizados no portal em [Cunha04]. Para apresentação das partes mais significativas da planilha com os cálculos necessários para as estimativas e o resultado final referir-se a [Itami04].

 

2.2  Linha Base Alocada

A Linha Base Alocada enfoca a 2ª Fase – Elaboração (Elaboration) e 3ª Fase - Construção (Construction) do RUP onde foram desenvolvidos artefatos das diversas visões do projeto do PSVA, da visão de Casos de Uso até a visão de Deployment. A abordagem é voltada para aspectos de Qualidade, Confiabilidade e Segurança do Protótipo de Software.

Para esta fase será dado maior enfoque ao Caso de Uso “VerificarObstáculo” e seus diagramas detalhados, a saber:

·        Um Caso de Teste Estendido;

·        Um Diagrama de Seqüência (focando Testes);

·        Um Diagrama de Classe integrado com os Diagramas de Classes dos demais do  Grupo, focando Testes;

·        Um Diagrama de Transição de Estado focando Testes;

·        A partir de Fragmentos de Códigos-Fonte gerados, deverá ser utilizado 03 (três) Métricas para medir Qualidade, Confiabilidade e / ou Segurança de Software e

·        Uma Análise de Sensitividade de Software e uma Análise de Traçabilidade de Requisitos.

Os diagramas citados anteriormente são ilustrados, um a um, a seguir.


 

1. DESCRIÇÃO

Este Caso de Uso ocorre durante a execução de missões no qual o PVA necessita constantemente verificar a existência de obstáculos a sua frente. Caso seja detectado, via o Sensor de Proximidade, a presença de algum objeto na frente do PVA, é enviado um comando de parada ao PVA seguido de um comunicado do incidente ao MCM. O veículo só retomará a missão com a desobstrução de seu caminho que é percebida pelo mesmo sensor. Para fins de testes foram inclusos procedimentos de autoteste tanto do leitor de status (VerificarObstaculo) quanto do sensor de proximidade e os possíveis cenários discutidos a seguir.

 

2.     FLUXO DE EVENTOS

   2.1        FLUXO BÁSICO PARA TESTE

        Cenário: Sensor de proximidade e cápsula operacionais

        2.1.1        PVA pede inicialização da cápsula

        2.1.2        Cápsula autotesta e esta retorna OK

2.1.3        Capsula testa sensor de proximidade e este retorna OK

        2.1.4        O sensor de proximidade detecta um obstáculo

        2.1.5        PVA lê sensor e acusa obstáculo

        2.1.6        PVA informa presença de obstáculo ao MCM

        2.1.7        MCM remove obstáculo e sinaliza desobstrução

        2.1.8        Sensor de proximidade detecta desobstrução

        2.1.9        PVA retoma missão

 

2.2   FLUXOS ALTERNATIVOS PARA TESTE

 

        Cenário 1: Cápsula com erro de execução  e sensor de proximidade operacional

                2.2.1.1     PVA pede inicialização

                2.2.1.2     Cápsula autotesta e retorna NOK

                2.2.1.3     Missão do PVA é abortada

       

        Cenário 2: Cápsula com erro de execução e sensor de proximidade não-operacional

                2.2.2.1     PVA pede inicialização

                2.2.2.2     Cápsula autotesta e retorna NOK

                2.2.2.3     Cápsula testa sensor de proximidade que retorna NOK

                2.2.2.4     Missão do PVA é abortada

 

        Cenário 3: Cápsula operacional mas sensor de proximidade não-operacional

                2.2.1.1     PVA pede inicialização

                2.2.1.2     Cápsula autotesta e retorna OK

                2.2.1.3     Missão do PVA é abortada

 

3.     REQUISITOS ESPECIAIS

        Sensor de proximidade operacional (não defeituoso)

        Cápsula operacional (sem bugs)

 

4.     PRÉ-CONDIÇÕES

        4.1   PVA possui uma missão em execução.

        4.2   Autoteste de sensor e de leitor concluidos

        4.3   Leitor inicializado

        4.4   Sensor de proximidade detecta obstáculo.

 

5.     PÓS-CONDIÇÕES

        Sensor de proximidade acusa desobstrução.

        PVA retoma missão.

 

6.     PONTOS DE EXTENSÃO

        Nenhum.

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Figura 1 – Descrição textual do Caso de Teste Estendido para PSVA.


Figura 2 – Diagrama de Classes com ênfase à cápsula “VerificarObstaculo”.


Figura 3 – Diagrama de Seqüência para cápsula “VerificarObstaculo”.

 


Figura 4 - Diagrama de Transição de Estados para cápsula “VerificarObstaculo”.

 

Para a aplicação de métricas foi escolhido o software gerado para o Protótipo do Veículo Experimental TRIPHIBIUS da disciplina de Sistemas Embarcados e de Tempo Real (CE235/2003).

O módulo de interesse a ser analisado é o protótipo da Central de Alarmes (CEAL) do veículo que foi posteriormente integrado com os subsistemas Elétrico (ELET) e Barramento de Dados (BADA). Estes três subsistemas juntos formam Supervisão (SUP).

Os diagramas e código fonte gerados para o subsistema CEAL foram agora submetidos à ferramenta Together da Borland para medições quanto à sua qualidade e confiabilidade. Para detalhes de projeto, com os diagramas e o código fonte reporte-se a [Pegas03].

Para análise do código do CEAL foram adotadas as seguintes métricas:

·        CR - Comment Ratio

·        LOCOM2 - Lack Of Cohesion Of Methods 2

·        NOO - Number Of Operations

Detalhes com relação à descrição das métricas podem ser obtidos em [Dos-Santos04].

Para fins de ilustração, a Fig. 5 mostra o gráfico de Kiviat do código CEAL para todas as métricas disponíveis no Together.

 

 

 

 

 

Figura 5 - Gráfico de Kiviat para todas as métricas aplicadas ao código do CEAL.

 

 

 

Na Fig. 6 mostra o gráfico de Kiviat do código CEAL somente para as métricas escolhidas para análise no Together. Para a análise foram adotados os seguintes limites:

NOO – de 0 à 50                    CR – de 5 à 101                     LOCOM2 – de 30 à 101

 

 

Figura 6 - Gráfico de Kiviat do código CEAL para métricas CR, NOO e LOCOM2.

 

 

Para a análise de sensitividade foi feita a introdução de um novo método Mess_up( ) no código da classe Alarme conforme mostrado na Fig. 7. Este novo método interfere no código original fazendo acesso à atributos privados da classe Alarme o que prejudica a métrica LOCOM2 conforme a definição apresentada anteriormente.

 

De acordo com mostrado na Fig. 8, nota-se que a métrica LOCOM2 passa de 100% originalmente para 75% o que empobrece o código.

 

 

 

 

/* Generated by Together */

import java.*;

 

public class Alarme {

    public void Ativa_Alarme() {

    }

 

    public void Desativa_Alarme() {

    }

 

    public void Alarme() {

    }

 

// Código intruso

 

    private void Mess_up(){

        Id_Sensor = 1;

        Id_Falha = 1;

        Id_Nivel = 1;

    }

 

    private int Id_Sensor;

    private int Id_Falha;

    private int Id_Nivel;

}

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Fig. 7 – Introdução de código intruso na definição da classe Alarme.

 


 


 


Fig. 8 – Efeito na métrica LOCOM2 antes e depois da introdução de método Mess_up( ), código intruso na definição da classe Alarme

A análise de traçabilidade de requisitos não foi realizada por desconhecimento de detalhes do projeto CEAL.

Finalmente, será abordado o item mais crítico em termos de exeqüibilidade deste trabalho, qual seja, a aplicação de métricas de segurança e de confiabilidade.

Confiabilidade é a “probabilidade de um componente, ou sistema, funcionar corretamente sobre um dado período de tempo sob um dado conjunto de condições” [Storey96]. Nestes termos como não foi obtido o funcionamento do PSVA propriamente dito a aplicação de métricas como MTBF, por exemplo, é desconhecida.

Semelhantemente, Segurança é definida como “uma propriedade que um sistema possui de que ele não colocará em risco vidas humanas ou ao ambiente” [Storey96]. Aqui sistema envolve o hardware e o software do PVA, logo também uma métrica de segurança aqui é desconhecida devido ao estágio preliminar do projeto.

III. Conclusões e Recomendações

3.1 Conclusões

Conceitos de Qualidade, Confiabilidade e Segurança de Software são extremamente importantes atualmente devido ao crescente estágio de inclusão de sistemas embarcados que  nos rodeiam.

A metodologia hands-on adotada pela disciplina CE-230 (Qualidade, Confiabilidade e Segurança de Software) foi efetiva com relação aos seus propósitos, pois motivou os estudantes a aplicar os conceitos e as metodologias fundamentais adquiridos para o caso do PVA, o estudo de caso considerado neste trabalho.

Para tanto foram atingidos os objetivos de exposição, familiarização e utilização de: Artefatos e metodologia do RUP – Rational Unified Process, Ferramentas I-CASE-E (Integrated CASE Environment), Métricas para Qualidade, Confiabilidade e Segurança de Software e Modelagem UML para RT  empregado pelo grupo de estudantes.

A exposição aos I-CASE-E´s da Rose RT e Together, ambos empregados neste trabalho,  foi valiosa, pois conduz o estudante, a partir da modelagem UML em Tempo Real, até a geração de código, compilação, debug, avaliação de métricas de qualidade, análise de sensitividade e análise de traçabilidade de requisitos.

Apesar da aplicabilidade de métricas de Segurança e Confiabilidade serem importantes, houve dificuldade em implementá-las no código gerado pelas ferramentas I-CASE-E, pois isto requer maturidade no código e este, infelizmente, não era o caso do estágio atual obtido na disciplina CE235.


3.2 Recomendações

Para fins de continuidade e aperfeiçoamento da disciplina CE-230, são recomendados os seguintes pontos:

·       A maturação do código gerado para o PVA permitirá a exeqüibilidade dos conceitos desenvolvidos nos documentos Plano de Testes e Casos de Teste.

·        A aceleração na geração do código do PVA irá facilitar a aplicação das métricas de Qualidade, Confiabilidade e Segurança de Software.

·       O aprofundamento na modelagem UML do sistema de software de tempo real – a referência [Lee01] cita o exemplo de modelagem de um simples forno de microondas a partir de três soluções incrementais que refletem indiretamente a experiência do time de desenvolvedores com relação à modelagem do problema. O conhecimento de uma boa metodologia de modelagem também será um fator a ser considerado e irá refletir na Qualidade do código gerado.

·       A identificação de ferramentas suportes para análise de Confiabilidade e Segurança irá facilitar o cumprimento de metas da disciplina.


Referências Bibliográficas

[Cunha04] http://www.comp.ita.cta.br/~cunha/ - visitada em Agosto/2004

[Dos-Santos04] http://geocities.yahoo.com.br/walterabrahao2004/ - visitada em Novembro/2004.

[Itami04] http://geocities.yahoo.com.br/seritami/ - visitada em Novembro/2004.

[Lee01] Lee, R.C. & Tepfenhardt, W.M – UML and C++ - A Practical Guide to Object-Oriented Development , 2nd Edition, Prentice Hall, Upper Saddle River, 2001.

[Martins04] http://www.comp.ita.br/~osvandre/atividades/ce235/ce235.html - visitada em Agosto /2004.

[Pegas03] http://cdt.br/sites/daniel.pegas/sup-t.htm. - visitada em Novembro/2004.

[Rose03] Rational Software Corporation – Modeling Language Guide, Version 2003.06.00

[Storey96] Storey, Neil – Safety-Critical Computer Systems – Addison-Wesley, Harlow, UK, 1996.

[Together04] http://www.togethersoft.com/ visitada em Novembro/2004.

 


Anexo A

 

Código-fonte obtido através da geração automática de código, seguindo a implementação dos métodos gerados e da compilação das classes.


Código-fonte para VerificarObstaculo.cpp

 

//