Buscar

Aula 09 - Testes de Software

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
*
Manutenção de Software
Unidade 4
*
*
*
A manutenção de software existente pode ser responsável por mais de 70% de todo o esforço despendido por um setor de desenvolvi-mento de sistemas.
A porcentagem pode aumentar a medida que mais software é produzido ou de acordo com o contexto organizacional.
A natureza ubíqua da mudança é subjacente a todo o trabalho de software. A mudança é inevitável quando se constroem sistemas baseados em computador, já que os processos empresariais mudam e se renovam cada vez mais rápido levando à um ciclo de vida dos produtos está cada vez menor.
4. Manutenção de Software
*
*
*
	Uma das metas principais da Engenharia de Software é a de facilitar a acomodação das mudanças, reduzir a quantidade de esforço despendido em manutenção e aumentar a qualidade das tarefas associadas à Manutenção de Software.
4. Manutenção de Software
*
*
*
A manutenção de software é, certamente, bem mais do que consertar erros.
Podemos definir a manutenção, através de 4 tipos que podem ocorrer depois que um sistema/programa é liberado para uso:
	
	Manutenção corretiva;
	Manutenção adaptativa;
	Manutenção perfectiva;
	Manutenção preventiva. 
4.1 Definição de Manutenção
*
*
*
Manutenção Corretiva:
	- inclui o diagnóstico e a correção de um ou mais erros não 	descobertos na fase de teste do software;
	- uma grande quantidade desses erros indica que o software 	não foi testado adequadamente;
	- esse tipo de manutenção não deveria ocorrer.
Manutenção Adaptativa:
	- necesária para ajustar o sistema/programa às novas 		tecnologias
		- hardware (processadores, periféricos e etc.)
		- software (linguagens, sistemas operacionais etc.)
4.1 Definição de Manutenção
*
*
*
Manutenção Perfectiva:
	- para atender a solicitações do usuário quanto a melhorias, 	novas funções, mudança de contexto organizacional e etc.
	- é o tipo responsável que mais requer manutenção;
Manutenção Preventiva:
	- modificações para melhorar a confiabilidade, a 		manutenibilidade futura ou para futuras ampliações;
4.1 Definição de Manutenção
*
*
*
Os termos usados para descrever as três primeiras atividades de manutenção foram usadas por Swanson;
- o quarto tipo é comumente usado na manutenção de hardware e outros sistemas físicos;
- alguns profissionais da área de software entendem que o segundo e o terceiro tipo resultam nas mesmas tarefas aplicadas durante a fase de construção do software;
- Peters, em seu livro, Engenharia de Software, adota outros tipos para manutenção de software. 
4.1 Definição de Manutenção
*
*
*
A fase de manutenção tem sido pouco explorada e até mesmo negligenciada no processo de engenharia de software.
Poucas abordagens ou métodos técnicos têm sido propostos.
Qual o motivo deste descaso?
4.2 Características da Manutenção
*
*
*
Para entender as características da manutenção de um software devemos considerar:
	- Manutenção Estruturada versus Não-Estruturada;
	- Custos associados à Manutenção;
	- Problemas associados à manutenção; 
4.2 Características da Manutenção
*
*
*
4.2 Características da Manutenção
Pedido de
Manutenção
Configuração
Avaliar o projeto
Modificar o projeto
Planejar a 
Abordagem
Recodificar
Revisão
Teste e Lançamento
Avaliar o código
Recodificar
Revisão
?
Manutenção Estruturada
Manutenção Não-Estruturada
*
*
*
Manutenção Não-Estruturada
 Se o único elemento disponível do software for o código-fonte, a atividade inicia-se por uma penosa avaliação do código;
 Frequentemente a documentação interna é ruim;
 Diversas características do software, como por exemplo restrições de projeto, são difíceis de ser verificadas e acabam mal interpretadas;
 As mudanças feitas são difíceis de ser avaliadas.
 Testes de Regressão são impossíveis de ser realizados por não existir nenhum registro de teste.
 Esforço perdido e frustração
4.2 Características da Manutenção
*
*
*
Manutenção Estruturada
 Ocorre como resultado de aplicação anterior de uma metodologia de engenharia de software, iniciando-se por uma avaliação do projeto;
 O impacto das modificações ou correções exigidas é avaliada e uma abordagem é planejada;
 Usando-se técnicas adequadas, o projeto é modificado e revisado. Um novo código-fonte é desenvolvido, testes de regressão são levados a efeito.
 Embora a existência de uma metodologia não garanta uma manutenção isenta de problemas, a quantidade de esforço é reduzida e a qualidade da mudança ou correção é aumentada;
4.2 Características da Manutenção
*
*
*
Custos da manutenção:
O Custo da manutenção de software tem aumentado nos últimos anos em proporção aos outros gastos do orçamento do software;
Custos intangíveis da manutenção:
 Oportunidade de desenvolvimento que é postergada ou perdida porque os recursos disponíveis estão na tarefa de manutenção;
 Insatisfação do cliente quanto à demora no atendimento;
 Redução da qualidade devido à introdução de novos erros;
 Descontentamento das pessoas destinadas à tarefa.
O custo final da manutenção de software é uma drástica diminuição de produtividade se comparada à construção 	de um software. 
4.2 Características da Manutenção
*
*
*
Problemas associados à manutenção: 
A maioria dos problemas remete-se a deficiências na maneira segundo o qual o software foi planejado e desenvolvido.
A falta de controle e disciplina nas atividades de desenvolvimento da engenharia de software quase sempre se traduz em problemas durante a manutenção.
 Vamos pagar muito mais agora o que não quisemos gastar anteriormente.
4.2 Características da Manutenção
*
*
*
Problemas associados à manutenção: 
 A documentação do sistema não existe ou é muito ruim;
 As mudanças e correções realizadas no sistema não estão adequada-mente documentadas;
 Freqüentemente é difícil ou impossível rastrear o processo através do qual o software foi criado;
 Muitas vezes é difícil entender o programa “de outra pessoa”;
 A “outra pessoa”, quase sempre, não está por perto para explicar o programa;
 A maioria dos sistemas não é projetada para sofrer mudanças;
 A manutenção não é vista como um trabalho muito glamouroso. 
4.2 Características da Manutenção
*
*
*
Pode ser definida qualitativamente como a facilidade com que um software pode ser entendido, corrigido, adaptado, melhorado e/ou aumentado;
A manutenibilidade é a meta primordial que orienta os passos de um processo de engenharia de software;
Falhas e negligências no projeto, na codificação e no teste tem um impacto negativo óbvio sobre nossa capacidade de manter o software.
Uma configuração ruim pode causar um impacto negativo semelhante, mesmo quando os passos técnicos anteriormente mencionados foram realizados com cuidado.
4.3 Manutenibilidade
*
*
*
Fatores impactantes associados ao ambiente de desenvolvimento: 
 Disponibilidade de pessoal qualificado;
 Estrutura de sistema compreensível;
 Facilidade de manuseio do sistema;
 Uso de linguagens de programação adequadas e padronizadas;
 Uso de sistemas operacionais padronizados;
 Estrutura de documentação padronizada;
 Disponibilidade de casos de teste;
 Facilidades de depuração embutidas;
 Disponibilidade de ambiente computacional adequado para realizar a construção e a manutenção. 
4.3 Manutenibilidade
*
*
*
A manutenibilidade do software, assim como a qualidade e a confiabilidade, é uma atividade dificil de se quantificar;
Podemos avaliar a manutenibilidade indiretamente, ao considerar os atributos da atividade de manutenção que podem ser medidos;
4.3 Manutenibilidade
*
*
*
Gilb propõe uma série de métricas da manutenibilidade que se relaciona ao esforço despendido durante a manutenção:
 Tempo de reconhecimento do problema;
 Tempo de retardo administrativo;
 Tempo de análise do problema;
 Tempo de especificação das mudanças;
 Tempo de correção ou modificação;
 Tempo de testes locais;
 Tempo de testes globais;
 Tempo de revisão de manutenção;
 Tempo de recuperação total.	
4.3 Manutenibilidade
*
*
*
As tarefas
associadas à manutenção de software iniciam-se bem antes que um pedido de manutenção seja feito.
 Uma estrutura, de fato ou formal, voltada à manutenção, deve ser estabelecida.
 Procedimentos de avaliação e relatórios devem ser descritos.
 Uma seqüência de eventos padronizada deve ser definida para cada pedido de manutenção; 
 Um sistema de registro de atividades de manutenção deve ser estabelecido e critérios de avaliação e revisão devem se definidos.
4.4 Tarefas da Manutenção
*
*
*
Estrutura organizacional para manutenção:
	Associada à estrutura de desenvolvimento:
 quando os profissionais da área de sistemas são alocados às áreas de atuação na empresa; 
	Estrutura própria:
 quando os profissionais da área de sistemas são alocados especificamente às tarefas de manutenção;
	Sem estrutura formal:
 quando os profissionais da área de sistemas são agrupados em um pool, sendo alocados em construção de sistemas ou em manutenção de sistemas, conforme a necessidade. 
4.4 Tarefas da Manutenção
*
*
*
Pedidos de manutenção:
Os pedidos de manutenção de software devem ser padronizados e registrados;
O usuário que deseja a manutenção, ou seu preposto, deve preencher requisição de pedido de manutenção (Maintenance Request Form - MRF);
Se um erro for encontrado, uma descrição das circunstâncias que levaram ao erro deve ser incluída à requisição;
4.4 Tarefas da Manutenção
*
*
*
Pedidos de manutenção (cont.):
Para manutenção adaptativa ou perfectiva, uma breve especificação de mudança deve acompanhar a requisição;
A requisição de manutenção deve ser avaliada pelo responsável pela manutenção de software, para indicar sua prioridade;
Em certos casos, um erro pode ser tão grave que os controles normais de manutenção são abandonados temporariamente, sendo seu registro feito a posteriori. Esse modo “apaga incêndio” para manutenção corretiva é reservado somente para situações de crise.
4.4 Tarefas da Manutenção
*
*
*
O registro das ações de manutenção deve ser feito durante, ou logo após, a manutenção de forma a compor o histórico do programa;
Depois que a tarefa de manutenção é concluída, deve-se fazer uma avaliação da situação através das questões:
 Dada a situação atual, quais aspectos de projeto, código ou teste poderiam ter sido feitos, de forma a evitar tal manutenção?
 Quais recursos de manutenção deveriam ter estado à disposição de forma a agilizar a correção/complementação?
 Quais foram os menores/maiores obstáculos?
 A manutenção preventiva é indicada para este tipo de situação?
4.4 Tarefas da Manutenção
*
*
*
Uma avaliação das atividades de manutenção é frequentemente complicada pela falta de dados concretos. Se uma conservação e registros for iniciada, uma série de medidas do desempenho da manutenção pode ser desenvolvida:
 Nº médio de falhas de processamento por execução do programa.
 Total de pessoas/hora utilizadas em cada categoria de manutenção.
 Número médio de mudanças feitas por programa, por linguagem e por tipo de manutenção.
 Média de pessoas/hora empregadas por linguagem.
 Tempo médio de renovação do MRF.
 Porcentagem de pedidos de manutenção por tipo.
4.5 Avaliação
*
*
*
Quando usado no contexto de manutenção de software, o termo “efeitos colaterais” implica em um erro ou outro comportamento indesejável que ocorra como resultado de uma modificação;
Uma simples mudança numa única instrução pode, às vezes, ter resultados desastrosos;
A substituição inadvertida e não detectada, de um a, por um a. teve consequências quase trágicas quando o software de apoio terrestre para uma viagem espacial tripulada falhou;
Na manutenção podemos ter efeitos colaterais na documentação, nos dados ou na codificação.
4.6 Efeitos Colaterais

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais