TRATAMENTO DE DEAD CODES EM SOFTWARE DE USO AERONÁUTICO

Tamanho: px
Começar a partir da página:

Download "TRATAMENTO DE DEAD CODES EM SOFTWARE DE USO AERONÁUTICO"

Transcrição

1 TRATAMENTO DE DEAD CODES EM SOFTWARE DE USO AERONÁUTICO Renner Costa Martins 1, Sergio Roberto Matiello Pellegrino 2, Jony Santellano 3 1 ITA, Praça Marechal Eduardo Gomes, 50, São José dos Campos, São Paulo, Brasil, martins.renner@gmail.com 2 ITA, Praça Marechal Eduardo Gomes, 50, São José dos Campos, São Paulo, Brasil, pell@ita.br 3 ITA, Praça Marechal Eduardo Gomes, 50, São José dos Campos, São Paulo, Brasil, jony@ita.br Abstract: The objective of this paper is to propose a process for treatment of Dead Codes in software used on aircraft systems, attending the requirements of the aeronautical standard RTCA/DO-178B. Keywords: Dead Code, RTCA/DO-178B, Software embarcado de uso aeronáutico. 1. INTRODUÇÃO O tópico de interesse deste trabalho é a existência de Dead Codes, que é código fonte que não é percorrido pela execução normal do software e que não está associado a nenhum requisito da especificação. O padrão RTCA/DO- 178B, utilizado para desenvolvimento de software de uso aeronáutico, estabelece que a existência de Dead Codes em software aeronáutico não é permitida, devendo ser tratada apropriadamente [1]. A preocupação da RTCA/DO-178B é justificada pela falta de rastreabilidade inerente à existência de Dead Codes, que significa que pode haver problemas na especificação. Outra incerteza associada à Dead Codes é a existência de código fonte que não foi testado. Por esses e outros problemas associados, Dead Codes é o principal motivador deste trabalho. O objetivo deste trabalho é apresentar um processo para tratamento de Dead Codes em software aeronáutico, que tem como premissa atender os critérios do padrão RTCA/DO- 178B. A finalidade desse processo é dar maior base para que o desenvolvedor de software aeronáutico se assegure que as ocorrências de Dead Codes foram identificadas e tratadas adequadamente, dando maior confiança quanto ao cumprimento dos requisitos de aeronavegabilidade de um sistema aeronáutico onde o software é embarcado 2. O PADRÃO RTCA/DO-178B Criado na década de oitenta pela Radio Technical Commission for Aeronautics, Inc.(RTCA), o padrão RTCA/DO-178B estabelece os procedimentos necessários para que o fabricante de software embarcado de uso aeronáutico demonstre que seu produto foi construído atendendo aos critérios de aeronavegabilidade. A importância da RTCA/DO-178B no ambiente de certificação aeronáutica é atestada pela emissão da AC- 115B pelo FAA, que indica o padrão como meio aceito para a análise de software embarcado de uso aeronáutico dentro do processo de certificação [2]. Por ser uma autoridade de certificação de referência mundial, a diretriz do FAA foi seguida por diversas autoridades, como a EASA e a ANAC. Por sua importância na indústria de aviação, esse trabalho seguirá os critérios definidos pela RTCA/DO-178B para software embarcado de uso aeronáutico. A RTCA/DO-178B é a terceira versão do padrão, e se diferenciou das demais ao dar grande ênfase aos testes baseados em requisitos, que verificam se as funcionalidades previstas na especificação são atendidas. Em complemento aos testes baseados em requisitos, prevê-se também o uso dos testes de cobertura estrutural de código para verificar se todo o código foi percorrido durante a realização dos testes. Com isso ficou evidente a importância do processo de verificação de software dentro do ciclo de vida do produto, definido pela RTCA/DO-178B Processo de Verificação de Software O processo de Verificação de Software é a atividade responsável pela detecção e registro de erros, cuja remoção fica a cargo do processo de desenvolvimento de software. O cumprimento dessa etapa é realizado por revisões, análises, desenvolvimento e execução de casos de teste e seus procedimentos. Nas tarefas de revisão e análise, o software em questão terá seus requisitos, arquitetura e código fonte avaliados, principalmente quanto a sua precisão, completeza e reverificabilidade, isto é, sua capacidade de ser novamente analisado e produzir os mesmos resultados verificados anteriormente. Complementar à análise feita, o desenvolvimento dos casos de testes fornecem uma avaliação adicional da consistência e completeza dos requisitos de software previstos. Por fim, a execução dos procedimentos de testes demonstra que o software verificado cumpre com os requisitos necessários. O processo de verificação de software é composto essencialmente por atividades de revisão, análise e testes. Nesse contexto, pode-se afirmar que as atividades de testes têm dois objetivos principais: demonstrar que os requisitos foram funcionalmente atendidos pelo software desenvolvido; tratar do grau de confiança com que os erros, que poderiam resultar em condições de falha, foram detectados e removidos. Nota-se, desses dois objetivos, que 1 Serra Negra, SP - ISSN

2 Tratamento de Dead Codes em Software de uso Aeronáutico Renner Costa Martins, Sergio Roberto Matiello Pellegrino, Jony Santellano eles são complementares e que para se atender a um deles, deve-se também atender o outro. A Figura 1 mostra uma visão geral do processo de teste de software, que abrange três tipos de testes, cujos objetivos são: 1. Hardware/Software Integration Tests: verificar a correta operação do software em seu ambiente real de execução; 2. Software Integration Tests: verificar as relações entre os requisitos de software e sua implementação, dentro da arquitetura de software estabelecida; 3. Low-Level Tests: verificar a implementação dos requisitos funcionais de software, considerados de baixo nível, ou seja, aqueles que são mais detalhados quanto à funcionalidade desejada. A região identificada por Unimplemented Function indica que existem requisitos que não foram cobertos pelo código criado. Esse caso é normalmente identificado pela execução dos testes baseados em requisitos, e não pela análise de cobertura estrutural do código. Por sua vez, a região do código que não é sobreposta pela região dos requisitos, identificada na figura por Unspecified Function, trata dos trechos de código que não têm correspondência nos requisitos testados, que são identificados por uma análise estrutural do código [3]. Figura 2 Sobreposição de requisitos e implementação [3] Figura 1 Processo de Teste de Software [1] Além dos objetivos de cada tipo de teste mencionado, podemos verificar na Fig. 1 que o processo de testes de software envolve também a análise de cobertura dos testes realizados. Essa análise é representada na figura pelos itens Software Requirements Coverage Analysis e Software Structure Coverage Analysis, sendo esse último, que trata da cobertura estrutural de código, de grande relevância para esse trabalho Cobertura Estrutural de Código Dentro do processo de verificação de código a cobertura estrutural mede quanto da estrutura do software foi testada. Com essa medida, é possível saber se a execução dos testes de cobertura dos requisitos exercitou toda a estrutura do código e, assim, determinar o nível de qualidade do software analisado[1]. Na Figura 2 é exibido um esquema que ilustra o significado de cobertura estrutural de código e a sua relação com os requisitos de software. A área de sobreposição representa a identificação do código fonte exercitado pelos requisitos, sendo que esse código pode estar correto, representado na figura por Correct Function, ou não, representado na figura por Incorrect Function, caso não atenda aos requisitos testados nos casos de testes. A cobertura estrutural de código possibilita determinar se existem estruturas do código que não foram exercitadas pelos procedimentos de testes baseados nos requisitos. Essas estruturas identificadas podem ser resultado dos seguintes casos [1]: 1. Fornecer evidência que a estrutura de código foi verificada no grau requerido; 2. Fornecer meios para suportar a ausência de Dead Codes; 3. Estabelecer a robustez dos testes de cobertura de requisitos. Quanto à detecção de Dead Codes, a cobertura estrutural de código permite indicar com que extensão os casos de testes baseados em requisitos executaram o código e, por consequência, revelam os trechos de código que não foram executados. 3. DEAD CODES Em termos gerais, define-se Dead Code como qualquer parte do código fonte cuja existência não afeta a execução normal do programa. Há dois casos principais de Dead Code: 1. Código inútil: Código cuja execução não afeta o restante do programa; 2. Código não alcançável: código que nunca é alcançado pela execução do programa e, portanto, também nunca a afeta. Abaixo, segue a definição de Dead Code dada pela norma RTCA/DO-178B: Dead code - Executable object code (or data) which, as a result of a design error cannot be executed (code) or used (data) in an operational configuration of the target 2 Serra Negra, SP - ISSN

3 computer environment and is not traceable to a system or software requirement. An exception is embedded identifiers.[1] A partir do texto, observa-se que a definição de Dead Code, segundo a RTCA/DO-178B, se atém à definição de Código Não Alcançável e é com essa premissa que esse trabalho foi construído. Portanto, doravante, será referenciada por Dead Code qualquer ocorrência de código não alcançável em um programa Ocorrências de Dead Codes As ocorrências típicas de Dead Code encontram-se relacionadas ao uso das seguintes práticas: 1. Desvio incondicional; 2. Instrução de retorno; 3. Expressões de controle de fluxo; 4. Expressões de controle de fluxo com curto-circuito Desvio incondicional Dá-se o nome de desvio incondicional a qualquer instrução que tenha o objeto de direcionar o fluxo de execução do programa para um ponto não subseqüente à instrução. Expressões como goto, break, continue possuem essa característica e são fontes de possíveis Dead Codes. O exemplo ilustrado na Tabela 1 exibe uma ocorrência de Dead Code em um trecho de código em C que utiliza um desvio incondicional com o uso de uma instrução goto. No trecho, percebe-se que a linha 4 nunca será executada, já que na linha 2 há um desvio para a linha 6. Tabela 1 Dead Code com o uso de desvio incondicional goto rotulo;... printf("não passou por aqui\n");... rotulo: printf("a linha 3 não foi executada"); Instruções de retorno Uma instrução de retorno é utilizada em uma subrotina para retornar a execução de um programa para o ponto onde a subrotina foi chamada. Em linguagens como Ada, C, C++, C# e Java essa instrução é representada pela palavra reservada return. O mal uso de return pode resultar em Dead Codes, caso ele esteja colocado imediatamente antes de alguma outra expressão dentro de uma subrotina. A Tabela 2 exibe um exemplo de um trecho de código em C, onde a localização da expressão return resulta em uma ocorrência de Dead Code. Nesse exemplo, nota-se que a linha 6 nunca será executada, já que a cláusula return direciona a execução do programa para o ponto onde a subrotina soma foi chamada. Tabela 2 Dead Code com o uso de uma expressão return int soma(int x, int y) { int z; z=x+y; return z; printf("não passou por aqui\n"); } Expressões de Controle de Fluxo Expressões de controle de fluxo também são fontes de Dead Code, pois o uso incorreto das condições a serem avaliadas pode causar a execução de apenas algum, ou alguns, dos caminhos possíveis. O caso mais simples dessa ocorrência de Dead Codes é resultado do mal uso de expressões if. A Tabela 3 ilustra um código em Matlab que contém um Dead Code causado pelo uso inadequado da expressão if, graças a uma variável imutável estabelecida antes da execução do if. No caso citado, o if da linha 5 só é avaliado de uma maneira, true, já que a variável utilizar_vento foi definida com o valor 1. Tabela 3 Dead Code com o uso de expressões de controle de fluxo % utilizar_vento determina o uso do vento % caso utilizar_vento==0 -> Sem vento % caso utilizar_vento==1 -> Com vento utilizar_vento=1; if(utilizar_vento~=0) utilizar_vento=1; disp('>>> Dinamica Com Vento'); else disp('>>> Dinamica Sem Vento'); end; A ocorrência do caso descrito na Tabela 3 também se aplica ao uso de outras expressões de controle de fluxo, tais como while, for, switch, etc Expressões de Controle de Fluxo com Curto- Circuito O uso de múltiplas condições em expressões de controle de fluxo podem acarretar na avaliação de apenas uma delas, caso essa condição seja suficiente para a tomada de decisão em uma cláusula if, while, for, switch, etc. A esses casos dáse o nome de curto-circuito. A existência de curto-circuitos também é fonte de Dead Codes, porém de natureza um pouco diferente daquela apresentada na seção Nesses casos, a ocorrência de Dead Codes se dá em uma das condições da expressão de controle de fluxo, que não é avaliada. 3 Serra Negra, SP - ISSN

4 Tratamento de Dead Codes em Software de uso Aeronáutico Renner Costa Martins, Sergio Roberto Matiello Pellegrino, Jony Santellano A Tabela 4 apresenta um exemplo do Matlab de Dead Code com o uso de curto-circuito. Na linha 4, a expressão (a/b > 18.5) nunca será avaliada, pois na linha 3 a variável b é definida como 0, o que resolve a expressão (b ~= 0) && (a/b > 18.5) apenas com o primeiro termo, (b ~= 0). Tabela 4 Dead Code com o uso de expressões de controle de fluxo com curto-circuito %It doesn't make sense to evaluate the % relation on the right if the divisor, b, is zero. b=0; x = (b ~= 0) && (a/b > 18.5); 3.2. Ocorrências de Dead Codes Relacionadas à Execução do Software Uma observação importante deve ser feita a respeito das ocorrências de Dead Codes relacionadas ao uso de expressões de controle de fluxo, com ou sem curto-circuito: ambas foram demonstradas como dependentes da existência de algum trecho de código mal construído. Porém, essas ocorrências apresentadas também podem existir sem o trecho de código mal construído, pois podem surgir durante a execução do programa. Essa condição está relacionada principalmente ao conjunto dos requisitos do software, que podem possuir casos de testes que não percorrem algum trecho de código fonte, indicando-o como Dead Code. A detecção e eliminação de Dead Codes também devem levar em conta as ocorrências de código não executado, devido a falhas na especificação e em seus casos de testes resultantes. Essa situação será abordada mais adiante Problemas Relacionados A existência de Dead Code pode causar uma série de efeitos indesejáveis que diminuem a confiabilidade da qualidade do software quanto à sua aderência ao processo de desenvolvimento. Entre os problemas causados por Dead Codes, encontram-se: Recursos de disco rígido ocupados desnecessariamente: a existência de Dead Codes implica em códigos maiores do que o necessário. Esse aspecto, caso não seja realizado algum tipo de otimização do código, resulta em maior espaço ocupado pelo código objeto executável. Em alguns ambientes esse fator pode ser crítico e afetar o desempenho de algumas funcionalidades do programa. Recursos de memória ocupados desnecessariamente: da mesma forma que há a ocupação desnecessária de espaço em disco, há a ocupação desnecessária de recursos de memória. Já que Dead Codes resultam em código objeto executável de tamanho maior do que o necessário, o espaço ocupado pelo programa na memória também será maior. Novamente, essa situação é aplicável aos casos onde não foi feita nenhuma melhoria no código fonte durante a compilação e geração do programa executável. Comprometimento da legibilidade do código: boa legibilidade do código depende extremamente de boas práticas de codificação. Ou seja, é uma tarefa árdua e trabalhosa que exige muito tempo das pessoas envolvidas. Quanto mais complexo um programa, maior é a dificuldade que alguém terá para entender o código analisado. Especificamente, Dead Codes tornam essa tarefa ainda mais complicada, pois, além de aumentarem desnecessariamente a complexidade de algum software, não possuem ligação com o restante do código analisado. Manutenção do código é dificultada: no contexto de manutenção de software, Dead Codes adicionam trabalho desnecessário ao processo. Tempo e esforço serão gastos na análise e manutenção de código que não está ligado a nenhuma funcionalidade do programa e que, portanto, é inútil para sua execução. Possível fonte de erros na execução do software: Dead Codes traz também a condição de trechos de código que não foram testados. Dependendo das condições de execução e de possíveis alterações no projeto, Dead Codes podem passar à condição de Live Codes não testados, que são, na verdade, fonte de possíveis erros não identificados e tratados na fase correta do ciclo de desenvolvimento do software. Requisitos não rastreáveis: a existência de Dead Codes significa também a existência de código fonte que não tem ligação com nenhum requisito do software. Isso implica na possibilidade de requisitos não atendidos completamente, pois alguma funcionalidade do software deixou de ser executada devido à existência de uma condição de Dead Code. Devido a esses, e possíveis outros problemas, condições de existência de Dead Codes devem ser detectadas, analisadas e, finalmente, eliminadas Detecção Em essência, a detecção de Dead Code é um processo ligado à verificação de código. Esse processo envolve a análise crítica do código fonte do software para identificar trechos de código que não são executados em qualquer condição. Graças à grande variedade de casos de Dead Code, sua detecção pode envolver atividades de análise estática de código e de análise de cobertura estrutural de código. Isso é necessário porque alguns tipos de Dead Code têm sua existência dependente da execução do software. Isso significa que esses tipos de Dead Codes estão relacionados a um conjunto de requisitos, seus respectivos casos de testes e da forma como eles são atendidos durante a execução normal do software. Assim, parte da tarefa de detecção de Dead Codes, está relacionada ao campo de análise estática de código. Esse campo realiza a análise do software sem a necessidade de executá-lo, fornecendo informações úteis para a verificação da qualidade do software analisado. Normalmente, esse processo pode ser feito por inspeção, ou revisão, de código, porém, outra abordagem de análise estática correntemente utilizada é o uso de gráficos de controle de fluxo do software. Com essa abordagem, basta verificar os blocos de código que não possuem nenhuma ligação na estrutura 4 Serra Negra, SP - ISSN

5 montada para o programa para identificar os trechos que não são alcançáveis. Na seção 3.2, foram discutidos alguns casos de Dead Codes que podem ser detectados apenas pela análise do comportamento do software durante a sua execução. Essa tarefa pode ser realizada por instrumentação de código, que aponta os trechos de código que foram executados a partir do uso de algumas funcionalidades. A escolha dessas funcionalidades está ligada ao conjunto de requisitos do software e pela definição dos casos de testes que devem ser utilizados para verificá-los. Com isso, a detecção desses Dead Codes se torna um problema de análise de cobertura estrutural de código. Com a análise estrutural de código, são identificados todos os trechos de códigos percorridos pela execução dos casos de testes referentes aos requisitos do programa. Assim, identificam-se também os trechos de código que não foram executados pelos testes Eliminação A realização das análises estática e dinâmica do código fonte terão como resultado a identificação dos casos de Dead Codes existentes em um programa. Esses resultados possibilitam a eliminação desses casos sem danos à execução esperada do software, de acordo com a sua especificação. Entende-se por eliminação de Dead Codes o processo que pode tomar as seguintes abordagens: 1. Remoção do trecho de código identificado: o Dead Code identificado é removido do programa, deixando de existir. 2. Transformar o caso de Dead Code em um trecho de código executável: por meio de ajustes no código fonte, ou em algum processo do ciclo de desenvolvimento, o Dead Code passa a ser um trecho de código executável. A escolha da abordagem do processo de eliminação de Dead Codes está sujeito às características de cada caso, identificadas pela sua detecção. Não há uma única solução para todos os tipos de Dead Codes, e, por isso, deve ser feita uma análise mais profunda de cada caso para determinar como será feita a eliminação do Dead Code. 4. PROCESSO PARA TRATAMENTO DE DEAD CODES Nessa seção este trabalho propõe um processo para ser utilizado no tratamento de Dead Codes em software embarcado de uso aeronáutico. Para dar o tratamento adequado a Dead Codes, são abordadas as atividades necessárias para classificação, detecção, eliminação e registro de Dead Codes, que serão descritas nas próximas seções. Com isso pretende-se atender ao objetivo do trabalho que é propor um processo para tratamento de Dead Codes em software embarcado de uso aeronáutico Classificação A definição de Dead Codes tem como itens chaves a não rastreabilidade de uma funcionalidade a, pelo menos, um dos requisitos do software e a não execução dessa mesma funcionalidade, durante o funcionamento normal do programa. O primeiro item é de fácil análise e entendimento já que é coberto pela análise de rastreabilidade dos requisitos do software e é resultado de uma falha no processo de garantia dessa rastreabilidade. Porém, o segundo item gera algumas nuances quanto à sua definição, pois o fato de uma função não ser executada pode depender de dois fatores: a geração do software em si e a cobertura do código quanto a um requisito. A existência desses dois fatores motivou a criação, pelo autor deste trabalho, de uma classificação de Dead Codes, baseada na maneira em que ocorrem. A intenção deste trabalho, ao criar essa classificação, é direcionar as atividades de eliminação de Dead Codes de acordo com suas características. Com isso, as ocorrências de Dead Codes são classificadas em Dead Codes Estáticos ou Dinâmicos. A criação do software pode incorporar erros de programação, que façam surgir funções que não são executadas em nenhuma condição, independente dos requisitos exercitados. Mesmo que não haja nenhum erro no levantamento de requisitos, nas funcionalidades previstas e nas condições de uso do programa, a função analisada não será executada. Aos casos de Dead Codes surgidos nessas condições será dada a classificação de Dead Codes Estáticos, graças a sua natureza independente da execução do software. Em contrapartida, Dead Codes Dinâmicos são as ocorrências geradas pela falta de cobertura de uma função, seja por erro no levantamento de requisitos, ou na abordagem utilizada para cobertura estrutural de código aplicada. Essa classificação é dependente da execução do software, pois apenas dessa maneira é possível identificar a existência desses casos de Dead Codes. Apesar de suas naturezas divergentes, ambas as classificações são bastante interligadas, pois a existência de um caso de Dead Code Dinâmico pode estar ligada a existência de um caso de Dead Code Estático, e vice-versa Detecção Considerando o processo de detecção de Dead Codes Estáticos, é observado que a tarefa de inspeção do software, para realizar a sua análise estática, é bastante árdua. Essa dificuldade existe, pois quanto mais complexo e maior um programa, maior será a quantidade de elementos para serem analisados. Por esse motivo, a análise estática do software pode ser precedida por técnicas de análise de cobertura estrutural que analisa código fonte. Com isso pode-se dividir a tarefa de detecção de Dead Codes Estáticos em duas fases: Análise de cobertura estrutural de software: nessa etapa são detectados os casos de Dead Codes Dinâmicos, que, eventualmente, poderão ser classificados como Dead Codes Estáticos. 5 Serra Negra, SP - ISSN

6 Tratamento de Dead Codes em Software de uso Aeronáutico Renner Costa Martins, Sergio Roberto Matiello Pellegrino, Jony Santellano Análise estática do software: consiste em uma análise estática das funcionalidades identificadas durante a análise de cobertura estrutural, para verificar quais deles são Dead Codes Estáticos. Na segunda etapa, as funcionalidades que são candidatas à classificação de Dead Code recebem uma análise mais específica, por inspeção do código do software. Com essa análise, pretende-se checar os blocos de funcionalidades não percorridos pelos testes, identificados na primeira etapa, classificando-os definitivamente como Dead Code Estáticos. Como mencionado, o processo de detecção de Dead Codes Dinâmicos pode ser realizado pela análise do programa durante sua execução. As técnicas de análise de cobertura estrutural do software têm como objetivo detectar esses casos e podem ser implementadas por simples instrumentação de software, ou pelo uso de ferramentas adequadas para isso. Mesmo com a detecção de Dead Codes Dinâmicos, é importante realizar também a análise estática das funcionalidades identificadas para verificar se não se tratam de Dead Codes Estáticos. Novamente, a natureza diferenciada de cada um dos dois tipos de Dead Codes torna essa tarefa necessária. Ao se detectar um caso de Dead Code Dinâmico, foram identificadas apenas as características específicas surgidas pela execução do programa. Porém, essa identificação não remove a possibilidade do Dead Code detectado ser um caso de Dead Code Estático, e não Dinâmico. Portanto é necessário que seja feito uma inspeção mais específica para classificar o Dead Code detectado em Estático ou Dinâmico Eliminação Após a detecção e classificação de Dead Codes, é necessário tratar as ocorrências identificadas. O tratamento de Dead Codes implica na sua eliminação, seja por meio de remoção do trecho de código onde ele se encontra, ou por meio de ajustes no software que torne a funcionalidade alcançável pela sua execução. A eliminação de Dead Codes Estáticos é feita pelo desenvolvedor do software, de forma manual, por meio de uma reestruturação do programa afetado, ou pelo uso de alguma ferramenta de desenvolvimento de software, que permite tanto a sua identificação, quanto à sua eliminação automática. Para decidir se deve remover uma funcionalidade não executável, detectada estaticamente, o desenvolvedor deve fazer uma análise do software e verificar se a funcionalidade identificada é requerida por algum requisito. Caso exista algum requisito que é rastreável à ocorrência de Dead Code analisada, o software deve ser reestruturado para corrigir os erros que impedem que a funcionalidade identificada seja executada. Em caso contrário, o Dead Code Estático encontrado deve ser removido do programa. Como ocorre com Dead Codes Estáticas, a eliminação de Dead Codes Dinâmicos depende essencialmente de sua rastreabilidade a algum requisito do software. Porém, isso não basta para definir como eliminar a funcionalidade não executada. Caso o Dead Code Dinâmico esteja associado a algum requisito, é necessário averiguar se os testes de cobertura foram feitos de maneira correta, ou seja, se foram previstos todos os casos de testes necessários para a correta verificação do software quanto a sua cobertura estrutural. O resultado dessa averiguação é a correção dos testes de cobertura, se eles estiverem incorretos, ou a remoção do trecho de Dead Code Dinâmico identificada, se os casos de testes não precisarem de correções. Nos casos em que o Dead Code Dinâmico não possuir relação com os requisitos já estabelecidos, deve-se fazer uma avaliação para identificar possíveis requisitos faltantes. Nesse caso, para eliminar a funcionalidade não executável, adicionam-se os requisitos necessários, que não haviam sido previamente identificados e refaz-se o processo de verificação de software. É claro que a funcionalidade não executada deve ser eliminada, se não forem descobertos requisitos faltantes Processo Integrado O fluxo completo e integrado do processo de tratamento de Dead Codes encontra-se na Figura 3. Por esse fluxo, percebe-se para o tratamento de Dead Codes são seguidos quatro passos: detecção, classificação, eliminação e registro; sendo que ao final da etapa de registro, deve-se retornar às atividades de detecção de Dead Codes até que não seja detectado mais nenhum caso. O primeiro passo, que é o de detecção, identifica de modo preliminar Dead Codes, por meio da análise estrutural do software. Essa etapa é responsável por identificar a existência de algum tipo de Dead Code, seja ele estático ou dinâmico, pois a análise estrutural de software identifica a existência de ambos os tipos. Pode ser visto que, além da etapa de detecção, no fluxo apresentado são indicados o início e fim do processo de tratamento de Dead Codes. Fica claro que o processo de tratamento de Dead Codes é iterativo e sua finalização só ocorre quando a análise de cobertura estrutural do software não detectar mais nenhum trecho não executado do programa, indicando que não foi identificada mais nenhuma ocorrência de Dead Codes. Caso a etapa de detecção indique a existência de algum trecho não percorrido do software, o processo de tratamento de Dead Codes passa para a etapa de classificação. Essa etapa envolve necessariamente a inspeção da ocorrência de Dead Codes identificada para classificá-la em estática ou dinâmica. A etapa seguinte, que é a de eliminação do Dead Code, possui dois caminhos distintos seguidos de acordo com a classificação da ocorrência identificada. Em essência, a eliminação de Dead Codes Estáticos analisa a rastreabilidade do trecho identificado com relação aos requisitos do software. Observa-se que a diferença conceitual para a eliminação de Dead Codes Estáticos é que o processo de eliminação de Dead Codes Dinâmicos põe em cheque a análise de cobertura estrutural do software realizada. Além das atividades de classificação, detecção e eliminação, foi adicionada a etapa de registro da ocorrência de Dead Code identificada. Esse registro é importante, pois representa a evidência de que o processo de verificação de software foi seguido e que contemplou as ações necessárias para a identificação e tratamento de Dead Codes. É importante ressaltar que ao fim da etapa de registro da ocorrência e tratamento do Dead Code identificado, deve-se passar novamente pela etapa de detecção. Primeiramente, 6 Serra Negra, SP - ISSN

7 isso deve ser feito para garantir que todos os casos de Dead Codes foram tratados. Além disso, é importante retomar a atividade de detecção de Dead Codes para assegurar que o seu tratamento realmente o eliminou e não resultou em outras ocorrências inesperadas. 5. CONCLUSÃO O objetivo deste trabalho é propor um processo para tratamento de Dead Codes em software embarcado de uso aeronáutico. Para isso foi feito inicialmente um estudo sobre a ocorrência de Dead Codes em software embarcado de uso aeronáutico, que identificou suas principais características, ocorrências e problemas resultantes. Além disso, foi analisada a definição de Dead Codes pela RTCA/DO-178B e a exigência que esse padrão faz a respeito da eliminação de Dead Codes em software aeronáutico. A partir do conceito de Dead Codes, tem-se, como resultado prático deste trabalho, a construção de um processo de tratamento de funcionalidades não alcançáveis. Figura 3 Processo de Tratamento de Dead Codes Esse processo abrange a detecção, classificação, eliminação e registro de código não alcançável, com o intuito de guiar o processo de verificação de software quanto ao tema deste trabalho. É importante ressaltar que a classificação citada, foi criada nesse trabalho, com o objetivo de facilitar o tratamento dos Dead Codes identificados. Ao seguir esse fluxo proposto, o desenvolvedor de software terá executado todas as atividades necessárias para o completo tratamento de Dead Codes. Pelo que é exigido pela RTCA/DO-178B, pode ser visto que essa proposta pode ser utilizada dentro do processo de verificação de software, cujos registros apresentarão as evidências necessárias para que seja demonstrado que os Dead Codes existentes foram detectados, eliminados e registrados devidamente. Por último, a construção desse processo se baseou 7 Serra Negra, SP - ISSN

8 principalmente nas ocorrências de Dead Codes citadas anteriormente, suas características e em seus problemas relacionados. Com esse processo de tratamento de Dead Codes, atendeu-se ao objetivo do trabalho que é a construção de um processo para tratamento de Dead Codes em software embarcado de uso aeronáutico. REFERENCES [1] RTCA INC. Software considerations in Airborne Systems and equipment certification, RTCA/DO-178B. Washington, D.C., p. [2] FEDERAL AVIATION ADMINISTRATION Department of Transportation. Advisory Circular B: Radio Technical Commission for Aeronautic, Inc. Document RTCA/DO-178B. Washington, D.C., p. [3] CHILENSKI, J. J.; KURTZ, J. L. Object-Oriented Technology Verification Phase 3 Report: Structural Coverage at the Source-Code and Object-Code Levels. Final p. Disponível em: < >. Acesso em: 15 mai Tratamento de Dead Codes em Software de uso Aeronáutico Renner Costa Martins, Sergio Roberto Matiello Pellegrino, Jony Santellano 8 Serra Negra, SP - ISSN

definido por um documento de padronização. A Fig. 1 representa a organização dos Grupos de Processos juntamente com os documentos exigidos.

definido por um documento de padronização. A Fig. 1 representa a organização dos Grupos de Processos juntamente com os documentos exigidos. A GESTÃO DE PROJETOS EXISTENTE NA NORMA DO-178B Matheus da Silva Souza, matheusdasilvasouza@gmail.com Prof. Dr. Luiz Alberto Vieira Dias, vdias@ita.br Instituto Tecnológico de Aeronáutica Praça Marechal

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:

Leia mais

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

ENQUALAB 2013 QUALIDADE & CONFIABILIDADE NA METROLOGIA AUTOMOTIVA. Elaboração em planos de Calibração Interna na Indústria Automotiva

ENQUALAB 2013 QUALIDADE & CONFIABILIDADE NA METROLOGIA AUTOMOTIVA. Elaboração em planos de Calibração Interna na Indústria Automotiva ENQUALAB 2013 QUALIDADE & CONFIABILIDADE NA METROLOGIA AUTOMOTIVA Elaboração em planos de Calibração Interna na Indústria Automotiva Joel Alves da Silva, Diretor Técnico JAS-METRO Soluções e Treinamentos

Leia mais

Verificação é um processo para se determinar se os produtos, (executáveis ou

Verificação é um processo para se determinar se os produtos, (executáveis ou ATIVIDADES VV&T E A NORMA IEEE 1012 A qualidade do software está diretamente relacionada à satisfação do cliente, sendo assim, as empresas estão percebendo a importância em produzir software com qualidade.

Leia mais

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste Unidade VI Validação e Verificação de Software Teste de Software Profa. Dra. Sandra Fabbri Conteúdo Técnicas de Teste Funcional Estrutural Baseada em Erros Estratégias de Teste Teste de Unidade Teste de

Leia mais

FMEA - Análise do Tipo e Efeito de Falha. José Carlos de Toledo Daniel Capaldo Amaral GEPEQ Grupo de Estudos e Pesquisa em Qualidade DEP - UFSCar

FMEA - Análise do Tipo e Efeito de Falha. José Carlos de Toledo Daniel Capaldo Amaral GEPEQ Grupo de Estudos e Pesquisa em Qualidade DEP - UFSCar FMEA - Análise do Tipo e Efeito de Falha José Carlos de Toledo Daniel Capaldo Amaral GEPEQ Grupo de Estudos e Pesquisa em Qualidade DEP - UFSCar FMEA - Análise do Tipo e Efeito de Falha 1 1 Introdução

Leia mais

Projeto de Sistemas I

Projeto de Sistemas I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o

Leia mais

CHECK - LIST - ISO 9001:2000

CHECK - LIST - ISO 9001:2000 REQUISITOS ISO 9001: 2000 SIM NÃO 1.2 APLICAÇÃO A organização identificou as exclusões de itens da norma no seu manual da qualidade? As exclusões são relacionadas somente aos requisitos da sessão 7 da

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Teste de Software. Profa. Cátia dos Reis Machado catia@ifc-camboriu.edu.br

Teste de Software. Profa. Cátia dos Reis Machado catia@ifc-camboriu.edu.br Teste de Software Profa. Cátia dos Reis Machado catia@ifc-camboriu.edu.br Qualidade Garantia de Qualidade Qualidade do processo Qualidade do produto Testes Estáticos Testes Dinâmicos Teste de software

Leia mais

TÍTULO: UM ESTUDO CONCEITUAL SOBRE CERTIFICAÇÃO DE SOFTWARE EMBARCADO AERONÁUTICO

TÍTULO: UM ESTUDO CONCEITUAL SOBRE CERTIFICAÇÃO DE SOFTWARE EMBARCADO AERONÁUTICO TÍTULO: UM ESTUDO CONCEITUAL SOBRE CERTIFICAÇÃO DE SOFTWARE EMBARCADO AERONÁUTICO CATEGORIA: EM ANDAMENTO ÁREA: CIÊNCIAS EXATAS E DA TERRA SUBÁREA: COMPUTAÇÃO E INFORMÁTICA INSTITUIÇÃO: FACULDADE ANHANGUERA

Leia mais

3 Classificação. 3.1. Resumo do algoritmo proposto

3 Classificação. 3.1. Resumo do algoritmo proposto 3 Classificação Este capítulo apresenta primeiramente o algoritmo proposto para a classificação de áudio codificado em MPEG-1 Layer 2 em detalhes. Em seguida, são analisadas as inovações apresentadas.

Leia mais

4 Segmentação. 4.1. Algoritmo proposto

4 Segmentação. 4.1. Algoritmo proposto 4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Processo de Implementação de um Sistema de Gestão da Qualidade

Processo de Implementação de um Sistema de Gestão da Qualidade 3 Processo de Implementação de um Sistema de Gestão da Qualidade Não existe um jeito único de se implementar um sistema da qualidade ISO 9001: 2000. No entanto, independentemente da maneira escolhida,

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Universidade Paulista

Universidade Paulista Universidade Paulista Ciência da Computação Sistemas de Informação Gestão da Qualidade Principais pontos da NBR ISO/IEC 12207 - Tecnologia da Informação Processos de ciclo de vida de software Sergio Petersen

Leia mais

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Pós-Graduação em Gerenciamento de Projetos práticas do PMI Pós-Graduação em Gerenciamento de Projetos práticas do PMI Planejamento do Gerenciamento das Comunicações (10) e das Partes Interessadas (13) PLANEJAMENTO 2 PLANEJAMENTO Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 ABRIL

Leia mais

Técnicas de Caixa Preta de Teste de Software

Técnicas de Caixa Preta de Teste de Software Técnicas de Caixa Preta de Teste de Software Na maioria de projetos de teste, o tempo para a realização dos mesmos sempre é curto e os números de testes a serem realizados nas aplicações são inúmeros.

Leia mais

Guia Site Empresarial

Guia Site Empresarial Guia Site Empresarial Índice 1 - Fazer Fatura... 2 1.1 - Fazer uma nova fatura por valores de crédito... 2 1.2 - Fazer fatura alterando limites dos cartões... 6 1.3 - Fazer fatura repetindo última solicitação

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Definição Geral: Disciplina de Compiladores Prof. Jorge Bidarra (UNIOESTE) A especificação de requisitos tem como objetivo

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

CONCURSO PÚBLICO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI ANALISTA DE GESTÃO RESPOSTAS ESPERADAS PRELIMINARES

CONCURSO PÚBLICO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI ANALISTA DE GESTÃO RESPOSTAS ESPERADAS PRELIMINARES CELG DISTRIBUIÇÃO S.A EDITAL N. 1/2014 CONCURSO PÚBLICO ANALISTA DE GESTÃO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI RESPOSTAS ESPERADAS PRELIMINARES O Centro de Seleção da Universidade Federal de Goiás

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

6. Pronunciamento Técnico CPC 23 Políticas Contábeis, Mudança de Estimativa e Retificação de Erro

6. Pronunciamento Técnico CPC 23 Políticas Contábeis, Mudança de Estimativa e Retificação de Erro TÍTULO : PLANO CONTÁBIL DAS INSTITUIÇÕES DO SISTEMA FINANCEIRO NACIONAL - COSIF 1 6. Pronunciamento Técnico CPC 23 Políticas Contábeis, Mudança de Estimativa e Retificação de Erro 1. Aplicação 1- As instituições

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 3 Planejamento e Aula 8 do Projeto Aula 08 do Projeto SUMÁRIO INTRODUÇÃO... 3 ACOMPANHAMENTO DO PROJETO... 3 1. do Progresso...

Leia mais

CHECK LIST DE AVALIAÇÃO DE FORNECEDORES Divisão:

CHECK LIST DE AVALIAÇÃO DE FORNECEDORES Divisão: 4.2.2 Manual da Qualidade Está estabelecido um Manual da Qualidade que inclui o escopo do SGQ, justificativas para exclusões, os procedimentos documentados e a descrição da interação entre os processos

Leia mais

Resumo das Interpretações Oficiais do TC 176 / ISO

Resumo das Interpretações Oficiais do TC 176 / ISO Resumo das Interpretações Oficiais do TC 176 / ISO Referência RFI 011 Pergunta NBR ISO 9001:2000 cláusula: 2 Apenas os termos e definições da NBR ISO 9000:2000 constituem prescrições da NBR ISO 9001:2000,

Leia mais

Disciplina: Introdução à Informática Profª Érica Barcelos

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

Leia mais

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Roteiro Inspeção Defeitos dos Software Classificação dos Erros Técnica de Leitura Ad-hoc Checklist Exercício Inspeção Inspeção de Software Definição É um método de análise estática

Leia mais

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE Questionamento a alta direção: 1. Quais os objetivos e metas da organização? 2. quais os principais Produtos e/ou serviços da organização? 3. Qual o escopo da certificação? 4. qual é a Visão e Missão?

Leia mais

Gestão da Qualidade Políticas. Elementos chaves da Qualidade 19/04/2009

Gestão da Qualidade Políticas. Elementos chaves da Qualidade 19/04/2009 Gestão da Qualidade Políticas Manutenção (corretiva, preventiva, preditiva). Elementos chaves da Qualidade Total satisfação do cliente Priorizar a qualidade Melhoria contínua Participação e comprometimento

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

Manual de digitação de contas Portal AFPERGS

Manual de digitação de contas Portal AFPERGS Manual de digitação de contas Portal AFPERGS 1 Sumário Acesso à função digitação de contas... 3 O que é a Função digitação de contas (DC)... 4 Como proceder na função digitação de conta médica (DC)...

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação Ministério das Finanças Instituto de Informática Departamento de Sistemas de Informação Assiduidade para Calendários Específicos Junho 2010 Versão 6.0-2010 SUMÁRIO 1 OBJECTIVO 4 2 ECRÃ ELIMINADO 4 3 NOVOS

Leia mais

Banco de Interpretação ISO 9001:2008. Gestão de recursos seção 6

Banco de Interpretação ISO 9001:2008. Gestão de recursos seção 6 6 RSI 028 Pode ser interpretadado no item 6.0 da norma ABNT NBR ISO 9001 que o conceito de habilidade pode ser definido como Habilidades Técnicas e Comportamentais e que estas podem ser planejadas e registradas

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos Microsoft Access: Criar consultas para um novo banco de Vitor Valerio de Souza Campos Conteúdo do curso Visão geral: consultas são essenciais Lição: inclui sete seções Tarefas práticas sugeridas Teste.

Leia mais

Calibração de Equipamentos

Calibração de Equipamentos Vídeo Conferência Calibração de Equipamentos Instituto de Pesos e Medidas do Estado do Paraná Junho/2014 Diferença entre calibração e a verificação metrológica Calibração Estabelece o erro de medição e

Leia mais

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015. Programação Funcional Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2015.1 1/13 1 Paradigmas de programação 2 Programação funcional 3 A Crise

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Diretrizes para determinação de intervalos de comprovação para equipamentos de medição.

Diretrizes para determinação de intervalos de comprovação para equipamentos de medição. Diretrizes para determinação de intervalos de comprovação para equipamentos de medição. De acordo com a Norma NBR 1001, um grande número de fatores influência a freqüência de calibração. Os mais importantes,

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Software. LMP Wizard. Manual do usuário MAN-PT-DE-LMPWizard-01.01_12

Software. LMP Wizard. Manual do usuário MAN-PT-DE-LMPWizard-01.01_12 Software LMP Wizard LMP Wizard Manual do usuário MAN-PT-DE-LMPWizard-01.01_12 Introdução Obrigado por ter escolhido o software LMP Wizard. Para garantir o uso correto e eficiente, é imprescindível a leitura

Leia mais

Análise de Ponto de Função

Análise de Ponto de Função Complemento para o Curso Análise de Ponto de Função FUNÇÕES DO TIPO DADO O termo Arquivo não significa um arquivo do sistema operacional, como é comum na área de processamento de dados. Se refere a um

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Programa de Capacitação em Gestão do PPA Curso PPA: Elaboração e Gestão Ciclo Básico. Elaboração de Planos Gerenciais dos Programas do PPA

Programa de Capacitação em Gestão do PPA Curso PPA: Elaboração e Gestão Ciclo Básico. Elaboração de Planos Gerenciais dos Programas do PPA Programa de Capacitação em Gestão do PPA Curso PPA: Elaboração e Gestão Ciclo Básico Elaboração de Planos Gerenciais dos Programas do PPA Brasília, abril/2006 APRESENTAÇÃO O presente manual tem por objetivo

Leia mais

Manual Geral do OASIS

Manual Geral do OASIS Manual Geral do OASIS SISTEMA DE GESTÃO DE DEMANDA, PROJETO E SERVIÇO DE TECNOLOGIA DA INFORMAÇÃO OASIS Introdução Esse manual tem como objetivo auxiliar aos usuários nos procedimentos de execução do sistema

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

QUALIDADE DE SOFTWARE. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 27 Slide 1

QUALIDADE DE SOFTWARE. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 27 Slide 1 QUALIDADE DE SOFTWARE Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 27 Slide 1 Objetivos Apresentar o processo de gerenciamento de qualidade e as atividades centrais da garantia de

Leia mais

Gerenciamento de Problemas

Gerenciamento de Problemas Gerenciamento de Problemas O processo de Gerenciamento de Problemas se concentra em encontrar os erros conhecidos da infra-estrutura de TI. Tudo que é realizado neste processo está voltado a: Encontrar

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 3 Teste Estático SUMÁRIO INTRODUÇÃO... 3 1. Definição... 3 2. Custo Versus Benefício...

Leia mais

Requisitos. Sistemas de Informações

Requisitos. Sistemas de Informações Requisitos Sistemas de Informações Definindo o Sucesso do Software Clientes satisfeitos Eles estão satisfeitos quando você: Atende às expectativas Entrega no prazo Entrega no orçamento O Sucesso começa

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação 36 5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS 5.1 - Os Programas de Avaliação Programas de avaliação convencionais foram utilizados para análise de diversas configurações da arquitetura. Estes programas

Leia mais

CES-32 e CE-230 Qualidade, Confiabilidade e Segurança de Software. Conceitos de Qualidade. CURSO DE GRADUAÇÃO e DE PÓS-GRADUAÇÃO DO ITA

CES-32 e CE-230 Qualidade, Confiabilidade e Segurança de Software. Conceitos de Qualidade. CURSO DE GRADUAÇÃO e DE PÓS-GRADUAÇÃO DO ITA CURSO DE GRADUAÇÃO e DE PÓS-GRADUAÇÃO DO ITA 2º SEMESTRE 2002 CES-32 e CE-230 Qualidade, Confiabilidade e Segurança de Software Prof. Dr. Adilson Marques da Cunha Conceitos de Qualidade CES-32 / CE-230

Leia mais

Tópico: Plano e Estratégia. Controle interno e risco de auditoria

Tópico: Plano e Estratégia. Controle interno e risco de auditoria Tópico: Plano e Estratégia. Controle interno e risco de auditoria i Professor Marcelo Aragão Trabalhos de outros auditores ou especialistas Complexidade das transações Volume das transações Áreas importantes

Leia mais

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Engenharia de Software Parte I Introdução Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Mitos do Desenvolvimento de Software A declaração de objetivos é suficiente para se construir um software.

Leia mais

ANÁLISE DOS REQUISITOS NORMATIVOS PARA A GESTÃO DE MEDIÇÃO EM ORGANIZAÇÕES

ANÁLISE DOS REQUISITOS NORMATIVOS PARA A GESTÃO DE MEDIÇÃO EM ORGANIZAÇÕES V CONGRESSO BRASILEIRO DE METROLOGIA Metrologia para a competitividade em áreas estratégicas 9 a 13 de novembro de 2009. Salvador, Bahia Brasil. ANÁLISE DOS REQUISITOS NORMATIVOS PARA A GESTÃO DE MEDIÇÃO

Leia mais

O Acordo de Haia Relativo ao Registro. Internacional de Desenhos Industriais: Principais características e vantagens

O Acordo de Haia Relativo ao Registro. Internacional de Desenhos Industriais: Principais características e vantagens O Acordo de Haia Relativo ao Registro Internacional de Desenhos Industriais: Principais características e vantagens Publicação OMPI N 911(P) ISBN 92-805-1317-X 2 Índice Página Introdução 4 Quem pode usufruir

Leia mais

1 - Considerações gerais 03 A - Introdução 03 A1 - Direitos 03 A2 - Garantia 04 A3 - Uso apropriado 04. 2 - Início de trabalho 05 A - Testes 05

1 - Considerações gerais 03 A - Introdução 03 A1 - Direitos 03 A2 - Garantia 04 A3 - Uso apropriado 04. 2 - Início de trabalho 05 A - Testes 05 Sumário 1 - Considerações gerais 03 A - Introdução 03 A1 - Direitos 03 A2 - Garantia 04 A3 - Uso apropriado 04 2 - Início de trabalho 05 A - Testes 05 3 - Características do produto 06 4 - Funcionamento

Leia mais

Metodologia de Gerenciamento de Projetos da Justiça Federal

Metodologia de Gerenciamento de Projetos da Justiça Federal Metodologia de Gerenciamento de Projetos da Justiça Federal Histórico de Revisões Data Versão Descrição 30/04/2010 1.0 Versão Inicial 2 Sumário 1. Introdução... 5 2. Público-alvo... 5 3. Conceitos básicos...

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

a) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema

a) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema Simulado CTFL- BSTQB Tempo de duração: 60 minutos 1. Considerando as seguintes afirmações: I. 100% de cobertura de sentença (comando) garante 100% de cobertura de desvio II. 100% de cobertura de desvio

Leia mais

PROFESSOR: CRISTIANO MARIOTTI

PROFESSOR: CRISTIANO MARIOTTI PROFESSOR: CRISTIANO MARIOTTI Conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto de software; Considerado um dos principais mecanismos para se obter software de qualidade

Leia mais

APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2

APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2 APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2 Renan J. Borges 1, Késsia R. C. Marchi 1 1 Universidade Paranaense (UNIPAR) Paranavaí, PR Brasil renanjborges@gmail.com, kessia@unipar.br

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

c. Técnica de Estrutura de Controle Teste do Caminho Básico

c. Técnica de Estrutura de Controle Teste do Caminho Básico 1) Defina: a. Fluxo de controle A análise de fluxo de controle é a técnica estática em que o fluxo de controle através de um programa é analisado, quer com um gráfico, quer com uma ferramenta de fluxo

Leia mais

DEMONSTRAÇÕES FINANCEIRAS COMBINADAS

DEMONSTRAÇÕES FINANCEIRAS COMBINADAS 24 DEMONSTRAÇÕES FINANCEIRAS COMBINADAS Os mercados de capitais na Europa e no mundo exigem informações financeiras significativas, confiáveis, relevantes e comparáveis sobre os emitentes de valores mobiliários.

Leia mais

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Cruzeiro SP 2008 FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Projeto de trabalho de formatura como requisito

Leia mais

Levantamento, Análise e Gestão Requisitos. Aula 12

Levantamento, Análise e Gestão Requisitos. Aula 12 Levantamento, Análise e Gestão Requisitos Aula 12 Agenda Miscelâneas (Parte 3): Gerenciamento dos Requisitos Mutáveis Rastreabilidade de Requisitos Processo de Gestão de Mudanças Requisitos Estáveis e

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 Capítulo 2 Processos de Software slide 1 Tópicos apresentados Modelos de processo de software. Atividades de processo. Lidando com mudanças. Rational Unified Process (RUP). Um exemplo de um processo de

Leia mais

ORIENTAÇÕES SOBRE O CONTEÚDO DO PROJETO

ORIENTAÇÕES SOBRE O CONTEÚDO DO PROJETO ORIENTAÇÕES SOBRE O CONTEÚDO DO PROJETO ESCOLHA DO TEMA - Seja cauteloso na escolha do tema a ser investigado. Opte por um tema inserido no conteúdo programático da disciplina pela qual teve a maior aptidão

Leia mais

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006 TUTORIAL Servo-motor Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br

Leia mais

DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação

DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES Trabalho de Graduação Orientando: Vinicius Stein Dani vsdani@inf.ufsm.br Orientadora: Giliane

Leia mais

Verificação e Validação

Verificação e Validação Verificação e Validação Patrícia Macedo Joaquim Filipe João Ascenso 2005/2006 EST, Setúbal Verificação e Validação Verificação Garante que o software cumpre as especificações Consistência interna Estamos

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

Leia mais

TOTVS BA Guia de Customização Linha Logix

TOTVS BA Guia de Customização Linha Logix TOTVS BA Guia de Customização Linha Logix Guia de Customização Sumário Título do documento 1. Objetivo... 3 2. Introdução... 3 3. Customização... 3 2 TOTVS BA Linha Logix Guia de Customização Projeto/Versão:

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 19: Visão geral sobre otimização de programas 06 de julho de 2010 1 2 3 Características esperadas dos programas O primeiro objetivo ao escrever programas de computador

Leia mais

Como agregar valor durante o processo de auditoria

Como agregar valor durante o processo de auditoria QSP Informe Reservado Nº 55 Fevereiro/2006 Como agregar valor durante o processo de auditoria Tradução para o português especialmente preparada para os Associados ao QSP. Este guindance paper foi elaborado

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais