Sunteți pe pagina 1din 19

14/11/2013

1
Evoluo de software
Engenharia de software
Reviso: Testes de software
Podem os testes mostrar a ausncia de erros?
Qual a diferena entre validao e verificao?
Compare inspees, testes de software e testes de usabilidade.
Descreva o modelo do processo de teste de software.
Descreva a diferena entre os testes de desenvolvimento, de
release e de usurios.
Descreva a diferena entre os testes de partio e testes
baseados em diretrizes.
Mencione algumas diretrizes gerais utilizadas para testes.
Descreva como deve ser feitos os testes de componentes.
Descreva como testar os diferentes tipos de interfaces entre
componentes.
14/11/2013
2
Reviso: Testes de software
Descreva os diferentes tipos de erros de interface.
Qual a diferencia entre testes de sistema e de
componentes?
Descreva o desenvolvimento dirigido a testes.
O que um teste de regresso?
Qual a diferencia entre teste de sistema e teste de
release?
O que um teste de desempenho?
Explique a diferencia entre os trs tipos de testes de
usurios.
Qual a diferencia entre testes de release e testes de
aceitao?
Tpicos
Processo de evoluo
Dinmica de evoluo de programas
Manuteno de software
Gerenciamento de sistemas legados
14/11/2013
3
Mudana de software
Mudana de software inevitvel
Novos requisitos surgem quando o software usado
O ambiente de negcios muda
Erros encontrados devem ser corrigidos
Novos computadores e equipamento adicionado ao sistema;
O desempenho e a confiabilidade do sistema pode ter que ser
melhorado.
Um problema-chave de todas as organizaes
implementar e gerenciar mudanas de seus sistemas de
software existentes.
Importncia da evoluo de software
Organizaes investem grandes quantias de dinheiro em
seus softwares so ativos crticos de negcios.
Os organizaes devem investir nas mudanas de
sistemas para manter o valor desses ativos.
A maioria das grandes empresas gasta mais na
manuteno de sistemas existentes do que no
desenvolvimento de novos sistemas.
14/11/2013
4
Um modelo em espiral de desenvolvimento e
evoluo
Evoluo e em servio
Evoluo
a fase em que mudanas significativas na arquitetura e
funcionalidade do software podem ser feitas.
Servio
O software ainda til e usado, mas apenas pequenas
mudanas so feitas para manter o software operacional.
Interrupo gradual
O software ainda pode ser usado, mas no so implementadas
novas mudanas.
14/11/2013
5
O processo de evoluo
O processo de evoluo de software pode variar
dependendo:
do tipo de software que esteja sendo mantido
dos processo de desenvolvimento usado
das habilidades das pessoas envolvidas
As propostas de mudana so os acionadores para a
evoluo.
Os processo de identificao de mudanas e de evoluo
de sistema so cclicos e continuam durante toda a vida
de um sistema.
O processo de evoluo de software
Solicitao de mudana
Analise de impacto
Planejamento de release
Correo de defeitos
Adaptao de plataforma
Aperfeioamento do sistema
Implementao de mudana
Liberao do sistema
14/11/2013
6
Implementao de mudanas
Iterao do desenvolvimento, em que as revises do
sistema so projetadas, implementadas e testadas.
O primeiro estgio da implementao da mudana pode
envolver a compreenso do programa, especialmente se
os desenvolvedores do sistema original no forem
responsveis pela implementao de mudanas.
Durante esse estgio de compreenso do programa,
necessrio que se entenda como o programas est
estruturado, como implementa a funcionalidade e como a
mudana proposta pode afet-lo
Correo de emergncia
A necessidade de fazer a mudana rapidamente significa
que voc pode no ser capaz de acompanhar o processo
de anlise formal de mudana.
Se ocorrer um defeito grave no sistema que precisa ser
corrigido para permitir a continuidade do funcionamento
normal.
Se as alteraes no ambiente operacional dos sistemas tiverem
efeitos inesperados que interrompam o funcionamento normal
Se houver mudanas inesperadas no funcionamento do
negcio que executa o sistema, como o surgimento de novos
concorrentes ou a introduo de nova legislao que afete os
sistema.
14/11/2013
7
O processo de correo de emergncia
Solicitaes de mudana
Analisar o cdigo-fonte
Modificar cdigo-fonte
Liberar sistema modificado
Mtodos geis e evoluo
Os mtodos geis so baseados no desenvolvimento
incremental, por tanto a transio de desenvolvimento
gil para evoluo ps-entrega deveria ser imperceptvel.
Testes de regresso automatizados so teis quando so
feitas alteraes no sistema.
As alteraes podem ser expressas como histrias de
usurio adicionais.
14/11/2013
8
Problemas de transferncia da equipe de
desenvolvimento para outro de evoluo.
Quando a equipe de desenvolvimento usou uma
abordagem gil, mas a equipe de evoluo no est
familiarizada com os mtodos geis e prefere uma
abordagem baseada em planos.
A equipe de evoluo pode esperar uma documentao
detalhada.
Quando uma abordagem baseada em planos for usada
para o desenvolvimento, mas a equipe de evoluo
preferir usar mtodos geis.
Os cdigos do sistema podem no ser refatorados e
simplificados como se prev no desenvolvimento gil.
Manuteno de software
o processo geral de mudana em um sistema depois
que ele liberado para uso.
O termo geralmente se aplica ao software customizado.
Manuteno no envolve geralmente maiores mudanas
arquitetura do sistema.
Mudanas so implementadas modificando componentes
existentes e acrescentado novos componentes ao
sistema.
14/11/2013
9
Tipos de manuteno de software:
Correo de defeitos.
Erros de codificao so relativamente baratos para serem
corrigidos
Erros de requisitos soa os mais caros para se corrigir.
Adaptao ambiental.
Quando algum aspecto do ambiente do sistema, como o
hardware, o sistema operacional ou outro software de apoio
sofre uma mudana
Adio de funcionalidade.
Quando os requisitos de sistema mudam em resposta s
mudanas organizacionais ou de negcios.
Fatores do custo de manuteno
Estabilidade da equipe
Custos de manuteno podem-se reduzir se a equipe de
manuteno no varia com o tempo.
Ms prticas de desenvolvimento
Em alguns casos no h incentivo para a equipe de
desenvolvimento escrever um software manutenvel.
Qualificaes de pessoal
A equipe de manuteno pode ser relativamente inexperiente
e no familiarizada com o domnio de aplicao.
Idade do programa e estrutura
Com as alteraes feitas no programa, sua estrutura tende a
degradar.
14/11/2013
10
Previso de manuteno
Gerentes odeiam surpresas, por tanto voc deve tentar
de prever quais mudanas no sistema podem ser
propostas e que partes do sistema so as mais difceis de
serem mantidas.
Mtricas de complexidade
Medidas de complexidade so particularmente teis na
identificao de componentes de programa suscetveis a
altos custos de manuteno.
Pesquisas mostram que o esforo de manuteno tende a
se centrar em um pequeno nmero de componentes
complexos.
Para reduzir os custos de manuteno se deve tentar
substituir componentes complexos de sistema com
alternativas mais simples.
14/11/2013
11
Mtricas de processo para avaliao de
manutenibilidade
Nmero de solicitaes de manuteno corretiva
O tempo mdio necessrio para a anlise de impacto
O tempo mdio gasto para implementar uma solicitao
de mudana
Nmero de solicitaes de mudana pendentes.
Reengenharia de software
Para fazer com que os sistemas legados de software
sejam mais fceis de serem mantidos, preciso aplicar
reengenharia nesses sistemas visando a melhoria de suas
estrutura e inteligibilidade.
Pode envolver a redocumentao de sistema, refatorao
da arquitetura de sistema, a mudana de linguagem de
programao moderna e modificaes e atualizaes da
estrutura e dados de sistema.
14/11/2013
12
Benefcios da reengenharia em vez de
substituio
Risco reduzido
Existe um alto risco em desenvolver novamente um software.
Custo reduzido
O custo de reengenharia pode ser significativamente menor do
que o desenvolvimento de um novo software
Atividades do processo de reengenharia
Traduo de cdigo-fonte.
Converter o programa a uma lngua mais moderna
Engenharia reversa
O programa analisado e as informaes so extradas a partir
dele.
Melhoria de estrutura de programa
A estrutura de controle do programa analisada e modificada
para que se torne mais fcil de ler e entender.
Modularizao de programa
Partes relacionadas do programa so agrupadas, e onde houver
redundncia, se apropriados, esta removida.
Reengenharia de dados
14/11/2013
13
Fatores que determinam o custo de
Reengenharia
A qualidade do software a ser redesenhado.
As ferramentas disponveis para a reengenharia.
A extenso da converso de dados que necessria.
A disponibilidade de pessoal especializado para a
reengenharia.
Isto pode ser um problema com sistemas antigos com base em
tecnologia que j no amplamente usado.
Manuteno preventiva por refatorao
A refatorao o processo de fazer melhorias em um
programa para diminuir a degradao gradual resultante
das mudanas.
Voc pode pensar em refatorao como uma
manuteno preventiva, que reduz os problemas de
mudana no futuro.
Envolve modificar um programa para melhorar sua
estrutura para reduzir sua complexidade ou para torn-la
mais compreensvel.
Quando voc refatorar um programa, no deve adicionar
funcionalidade.
14/11/2013
14
Refatorao e Reengenharia
A reengenharia ocorre depois que um sistema foi
mantidos por algum tempo e com o aumento dos custos
de manuteno.
A refatorao um processo contnuo de melhoria ao
longo do processo de desenvolvimento e evoluo, com
intuito de evitar a degradao do cdigo, que aumenta os
custos e as dificuldades de manuteno de um sistema.
Maus cheiros no cdigo
Cdigo duplicado
Deve ser removido e implementado com um nico mtodo ou funo
que usamos quando necessrio.
Mtodos longos
Deve ser reprojetadocom uma srie de mtodos mais curtos.
Declaraes switch (case)
Geralmente, envolvem a duplicao em situaes em situaes em que o
switch depende do tipo de algum valor. Em linguagens orientadas a
objetos, muitas vezes voc pode usar o polimorfismo para conseguir os
mesmos resultados.
Aglutinao de dados
Ocorre quando um mesmo grupo de itens de dados reincide em vrios
lugares de um programa.
Generalidade especulativa
Ocorre quando os desenvolvedores incluem generalidades em um
programas, pois estas podem ser necessrias no futuro. Muitas vezes, elas
podem ser removidas.
14/11/2013
15
Gerenciamento de sistemas legados
As organizaes que dependem de sistemas legados
devem escolher uma estratgia para a evoluo destes
sistemas
Descartar completamente o sistema
Deixar o sistema inalterado e continuar com a manuteno
regular
Reestruturar os sistema para melhorar usa manutenibildade
Substituir a totalidade ou parte do sistema por um novo
A estratgia escolhida deve depender da qualidade do
sistema e seu valor comercial.
Grupos de sistemas legados
Baixa qualidade, baixo valor de negcio
Esses sistemas deve ser descartados
Baixa qualidade, alto valor de negcio
Esses sistemas devem ser reestruturados ou substitudos, caso
um sistema de prateleira esteja disponvel
Alta qualidade, baixo valor de negcio
Se as mudanas necessrias ficarem caras, o software deve ser
descartado.
Alta qualidade, alto valor de negcio
A manuteno normal do sistema dever ser mantida
14/11/2013
16
Avaliao do valor de negcio
Para avaliar o valor de negcio de um sistema, voc
precisa identificar os stakeholders do sistema, como os
usurios finais do sistema e seus gerentes, e fazer uma
srie de perguntas sobre eles.
Questes bsicas para avaliar o valor de
negcio
O uso do sistema
Se os sistemas so usados apenas ocasionalmente ou por um
pequeno nmero de pessoas, eles podem ter um valor de negcio
baixo.
Os processo de negcios que so apoiados
Um sistema pode ter um valor de negcio baixo, porque obriga o
uso de processo de negcios ineficientes.
Confiana do sistema
Se um sistema no for confivel e os problemas afetarem
diretamente os clientes do negcios, o sistema ter um valor de
negcio baixo.
As sadas do sistema
Se o negcio depender das sadas do sistema, o sistema ter um alto
valor de negcios
14/11/2013
17
Avaliao da qualidade do sistema
Avaliao de processos de negcios
Que to bem o processo de negcio apoia os objetivos atuais
da empresa?
Avaliao de ambientes
Quo eficaz o ambiente do sistema e quo caro para
manter?
Avaliao da aplicaes
Qual a qualidade da aplicao?
Fatores usados na avaliao de ambientes
Fator Questes
Estabilidade do
fornecedor
O fornecedor ainda existe? O fornecedor financeiramente estvel e
deve continuar existindo? Se o fornecedor no est mais no negcio,
existe algum que mantm os sistemas?
Taxa de falhas O hardware tem uma grande taxa de falhas reportadas? O software
de apoio trava e fora o reincio do sistema?
Idade Quantos anos tem o hardware e o software? Quanto mais velho o
hardware e o software de apoio, mais obsoletos sero. Ainda podem
funcionar corretamente, mas poderia haver significativos benefcios
econmicos e empresariais se migrassem para um sistema mais
moderno.
Desempenho O desempenho do sistema adequado? Os problemas de
desempenho tem um efeito significativo sobre os usurios do
sistema?
14/11/2013
18
Fatores usados na avaliao de ambientes (II)
Fator Questes
Requisitos de apoio Qual apoio local requisitado pelo hardware e pelo
software? Se houver altos custos associados a esse apoio,
pode valer a pena considerar a substituio do sistema.
Custos de manuteno Quais so os custos de manuteno de hardware e de
licenas de software de apoio? Os hardware mais antigos
podem ter custos de manuteno mais elevados do que os
sistemas modernos. Os software de apoio podem ter altos
custos de licenciamento anual.
Interoperabilidade Existem problemas de interfaces do sistema com outros
sistemas? Compiladores podem, por exemplo, ser usados
com as verses atuais do sistema operacional?
necessria a emulao do hardware?
Fatores usados na avaliao de aplicaes
Fator Questes
Inteligibilidade Quo difcil compreender o cdigo-fonte do sistema atual?
Quo complexas so as estruturas de controle usadas? As
variveis tm nomes significativos que refletem sua funo?
Documentao Qual documentao do sistema est disponvel? A documentao
completa, consistente e atual?
Dados Existe um modelo de dados explcitos para o sistema? At que
ponto os dados nos arquivos esto duplicados? Os dados usados
pelo sistema so atuais e consistentes?
Desempenho O desempenho da aplicao adequado? Os problemas de
desempenho tm um efeito significativo sobre os usuarios do
sistema?
14/11/2013
19
Fatores usados na avaliao de aplicaes
Fator Questes
Linguagem de
programao
Compiladores modernos esto disponveis para a linguagem de
programao usada para desenvolver o sistema? A linguagem de
programao anda usada para o desenvolvimento do novo
sistema?
Gerenciamento de
configurao
Todas as verses de todas as partes do sistema so gerenciadas
por umsistema de gerenciamento de configurao? Existe uma
descrio explcita das verses de componentes usados no
sistema atual?
Dados de teste Existem dados de teste para o sistema? Existem registro dos
testes de regresso feitos quando novos recursos forem
adicionados ao sistema?
Habilidades de
pessoal
Existem pessoas disponveis com as habilidades necessrias
para manter a aplicao? Existem pessoas disponveis que
tenham experincia no sistema?

S-ar putea să vă placă și