– 3º bimestre ciência da computação pg Critérios de Avaliação : confiabilidade 1 CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO LIMEIRA Fevereiro de 2005 GRUPO FORMADO POR : Daiane Rosa Joaze de Oliveira Luis H. Gallicchio Vladimir Mauro Jr Trabalho apresentado como requisito à disciplina de Paradigmas do curso de Ciência da Computação da UNIP. Professor Willan ============================================================ : Confiabilidade Um programa é confiável se ele se comporta de acordo com suas especificação sob todas as condições e para serem avaliados [SEBESTA]: Confiabilidade na linguagem de programação : e o conjunto de atributos que evidencia a capacidade do software manter seu nível de desempenho sob condição estabelecidas durante um período de tempo . tem como características : maturidade , tolerância as falhas recuperabilidade. Existe procedimentos e critérios para a confiabilidade, estabelecida em norma (- ISO.9126 - versão Brasileira NBR 13596 ) que estão dividida em categorias: 1. 2. 3. 4. Verificação de tipos Manipulação de exceções Aliasing Legibilidade e Capacidade de Escrita Page 1 of 5 – 3º bimestre ciência da computação pg Critérios de Avaliação : confiabilidade 2 1. Verificação de tipos Verificar tipos é testar se existem erros de tipo em determinado programa, ou por meio do compilador ou durante a execução do programa. [SEBESTA]: O fundamental para que o software exista como um produto que funcione em máquinas reais e resolva problemas dos usuários. A validade de um software é o fator que considera que o software está de acordo com os requisitos funcionais e não-funcionais que foram determinados durante a etapa de análise e especificação de requisitos. Um software correto não é necessariamente um software válido, mas a validação requer que ele esteja correto.[McCall] As verificações de qualidade são classifica em três categorias: Verificação operacional - aspectos relacionados com o funcionamento e utilização do software Verificação de revisão - relacionados com a manutenção, evolução e avaliação do software Verificação de transição - relacionados com a instalação, reutilização e interação com outros produtos Formas de verificação de programas Existem diversas formas de verificar se o funcionamento de um programa está correto ou não. inspeção de programas A inspeção é uma forma analítica de verificação da correção na qual o código fonte do programa é analisado diretamente. Ela pode ser : Estática : é feita mentalmente, num processo no qual o inspetor (que pode ser o próprio programador) percorre o código executando mentalmente cada uma das instruções. Dinâmica : é realizada com o auxílio de uma ferramenta de depuração (debugger). testes de funcionamento Os testes de funcionamento têm por objetivo a detectar o maior número possível de erros. Deve-se executar o programa de maneira a forçar certos limites para os erros possam ser encontrados. Os testes não podem garantir que não existam erros num software, É necessário definir os casos de teste de maneira que seja possível a serem testados. prova formal Para que seja aplicado o método de prova é necessário recorrer às notações matemáticas e requer condições que devem ser expressas numa notação matemática e regras de prova que podem ser aplicadas de acordo com as instruções de um programas Page 2 of 5 – 3º bimestre ciência da computação pg Critérios de Avaliação : confiabilidade 3 2. Manipulação de exceções A capacidade de um programa de interceptar erros em tempo de execução, pôr em prática medidas corretivas e, depois, prosseguir é um grande auxílio para a confiabilidade. Tal facilidade da linguagem é chamada de manipulação de exceções (também chamada de tratamento de exceções). [SEBESTA]: Entendendo a manipulação de exceções: denominada Manipulação Estruturada de Exceções (ou SEH Structured Exception Handling), é a de codificar uma ou várias rotinas callback no aplicativo. Rotinas são denominadas genericamente como manipuladores de exceção (exception handlers). Ao invés de delegar ao sistema a função de monitorar exceções, podemos gerenciá-las por conta própria, tornando os aplicativos mais robustos. Se ocorrer uma exceção, o sistema, ao invés de tratá-la, chamará a rotina callback e a responsabilidade de tratá-la ficará por conta do aplicativo. O que se espera é que o manipulador de exceções seja capaz de resolver e corrigir a exceção, mantendo a execução do aplicativo na mesma área de código onde a exceção ocorreu ou numa "área segura". Em resumo, deve dar a impressão de que nenhuma anomalia tenha ocorrido - nada de caixa de mensagens.Caso não seja possível realizar um tratamento adequado, o manipulador de exceções ainda pode fechar o aplicativo de forma mais elegante que a famigerada "janelinha de erro" após realizar o máximo de faxina, preservar o máximo de dados e, caso você queira, pedindo as devidas desculpas pelo transtorno. Alguns erros são tão graves que o sistema nem consegue redirecionar o tratamento da exceção para o manipulador. Neste caso, ou aparece a "janelinha de erro" ou... a tela azul do GPF mostrando um "erro fatal". Neste caso de desastre total, na maioria das vezes, o único remédio é fazer um reboot. Exceções : Exceções são "pecados" que os programas cometem. O código "mal comportado" que gera uma exceção pode comprometer o funcionamento do sistema operacional o qual, para se precaver, geralmente interrompe o programa faltoso e apresenta uma mensagem de erro do tipo abaixo. Page 3 of 5 – 3º bimestre ciência da computação pg Critérios de Avaliação : confiabilidade 4 3. Aliasing ou Apelidos Aliasing é ter dois ou mais métodos, ou nomes, distintos para fazer referência à mesma célula da memória. A maioria das LPs permite algum tipo de aliasing — por exemplo, membros de união e ponteiros definidos para apontar para a mesma variável em C. Em ambos os casos, duas diferentes variáveis de programa podem referir-se à mesma célula da memória. [SEBESTA]: Este tipo de recurso é considerável em linguagem de programação altamente perigoso (conforme mencionado na pagina 31, Capitulo 1.3.3), porque compartilha a mesma célula de memória. Neste tipo de recurso você trabalha diretamente com os dados contido em uma célula, e se durante o processo dessa execução podem trazer erros ao resultado esperado do programa trazendo dificuldades em identificar o erro. Exemplos de Apelidos: - Utilizando variáveis com nomes diferentes, mas com o mesmo endereço de memória, em um programa tendo duas variáveis sendo A e B apontando para um mesmo endereço de memória, ao trabalhar com a variável B, no momento em que for alterado o valor automaticamente a variável a passa a ter o mesmo valor, simplesmente por estar usando o mesmo endereço da memória, isso ocorre muito na passagem de parâmetros, onde se trabalha com passagem de referência (Pagina 340, Capitulo 9.5.2). 4. Legibilidade e Capacidade de Escrita Tanto a legibilidade como a capacidade de escrita influencia a confiabilidade. Quanto mais fácil é escrever um programa, mais probabilidade ele tem de ser correto. . [SEBESTA]: Legibilidade: é a facilidade de leitura e entendimento de programas escritos em uma determinada linguagem. Quanto maior a legibilidade de programas, mais fácil é a manipulação dos mesmos para correção, extensão e melhoramento Se o programa , não possui a legibilidade, fica difícil de escrever ou de modificar, as causas que compromete a confiabilidade.... Até 1970 era baseado na escrita de código (implementação). ). Com o conceito de ciclo de vida de software, foram reservado fases de desenvolvimento (análise, projeto, implementação, manutenção, ...), A codificação foi colocada em um plano menor, dando-se maior ênfase à manutenção, que envolve correção, extensão e melhoramento de software. Page 4 of 5 – 3º bimestre ciência da computação pg Critérios de Avaliação : confiabilidade 5 As formas das palavras reservadas de uma linguagem afetam a aparência e, portanto, a legibilidade de programas. Principalmente declarações de grupo de instruções, como por exemplo begin, end e for. C usa chaves para delimitar blocos. Outras linguagens descriminam o tipo de terminador de bloco, como END IF e END LOOP (Ada, FORTRAN 77, CLIPPER). Outro ponto importante é a limitação do uso de palavras reservadas para a criação de identificadores. A forma de uma declaração deve pelo menos parcialmente indicar seu propósito e significado, melhorando a legibilidade. A semântica (significado) deve derivar diretamente da sintaxe(forma). Em C, por exemplo, static tem dois significados diferentes. Dentro de uma função, uma variável static é criada em tempo de compilação. Fora de funções, em um módulo (arquivo), uma variável static é uma variável global a todos as funções de um módulo. Bibliografia : 1- Notas de aula de Engenharia de Software - Jair C Leite, 2000 Fonte:http://www.ulbra.tche.br/~lgerber/Paradigmas/Paradigmas_3aAula_23032000.pdf 2- Dialética de Linguagem - Victor Hugo Fonte:http://www usp.br / medicina / departamneto / patologia /informed / prodcien / test 3 - Conceitos de Linguagens de Programação, Robert W. Sebesta 5ª Edição Page 5 of 5