Buscar

[07] EngSW - Ambientes de Desenvolvimento

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Teoria de Engenharia de 
Software
Aula 7
Ambientes de Desenvolvimento de Software 
Prof. Rafael Targino
rtargino@unicarioca.edu.br
2
Conteúdo da Aula
• Garantia da Qualidade
– Testes e Inspeções
• Implantação 
– Ambientes de Desenvolvimento
• Manutenção
– Reengenharia
– Terceirização
• Fábricas de Software e Fábricas de Testes
Engenharia de Software
2
3
Garantia de Qualidade em Software
• Por melhores que sejam as técnicas de 
modelagem e especificação de software, por 
mais disciplinada e experiente que seja a 
equipe de desenvolvimento, sempre haverá 
um fator que faz com que o teste de 
software seja necessário: o erro humano.
• Técnicas mais utilizadas para a Garantia da 
Qualidade
– Testes 
– Inspeções
4
Prática ainda não Amplamente 
Adotada nas Organizações
• É uma tarefa considerada chata e difícil
• consome tempo e esforço
• São tratados como causador de aumento dos
custos e prazos dos projetos;
• Elevada quantidade de casos de teste
• É visto como sem valor agregado ao 
negócio.
3
5
Verificação X Validação
• Validação: Refere-se a um conjunto de atividades
que garante que o software construído é
“rastreável” às exigências do cliente. “Estamos
construindo o produto certo??”
– O produto atende aos objetivos do cliente?
– O produto funciona corretamente no seu ambiente de operação?
– Conformidade com os Requisitos
• Verificação: Refere-se ao conjunto de atividades
que garante que o software implemente
corretamente uma função específica. “Estamos
construindo o produto corretamente??”
– O produto atende aos requisitos definidos?
– Os padrões estão sendo atendidos?
– Adequado ao Uso
6
Testes
• Execução do programa em um ambiente 
controlado e verificação da saída produzida
• Atividade realizada para 
– Avaliar a qualidade do produto 
– Melhorar produtos através da identificação dos defeitos e 
correção destes antes do lançamento do software. 
• O teste não pode provar que produto funciona 
mesmo que o utilizarmos para demonstrar que 
partes do software funcionam
4
Curiosidade
• Primeiro bug em computadores – 1947
– Os engenheiros que trabalhavam com a máquina 
Harvard Mark I, encontraram um inseto nos 
circuitos. Este inseto estava causando um erro nos 
cálculos da máquina. Ao ser encontrado, o inseto foi 
retirado e colado no livro de registro com a intenção 
de registrá-lo como o primeiro bug encontrado.
8
Como Testar?
• Verificar o comportamento do programa em um 
conjunto finito de casos de teste selecionados a 
partir do domínio de execução 
Casos de Testes
Resultado 
Esperado
Programa/ 
Software
5
9
Casos de Testes
• É um conjunto de condições usadas para 
teste de software. 
• O caso de teste deve especificar a saída 
esperada e os resultados esperados do 
processamento.
• É composto por valores de entrada, 
restrições para a sua execução e um 
resultado ou comportamento esperado.
• Normalmente o caso de teste é derivado do 
caso de uso ou de especificações de casos 
de uso. 
Engenharia de Software
10
Abordagem de Teste
Teste Caixa-Preta
• É uma metodologia de testes onde as situações de 
teste são, em sua maior parte, derivadas dos 
enunciados de requisitos sem considerar o conteúdo 
real do código.
– O sucesso e falha de um teste é derivado única e 
exclusivamente do resultado do teste exercitando as suas 
diversas possibilidades de entradas e saídas.
6
11
Abordagem de Teste
Teste Caixa-Branca
• É uma metodologia de testes na qual as situações 
de teste são, em sua maior parte, derivadas do 
exame do código e do design detalhado.
– Verifica se o código fonte está adequado e se o algoritmo 
está correto, possivelmente debugando-o passo a passo.
12
Quem Testa?
Usuários/ClienteProgramadores Equipe de Testes
Teste de 
Unidade
Teste de 
Aceitação 
(ou 
Homologação)Testes Não 
Funcionais
Testes Funcionais
Teste de 
Integração
7
13
Tipos de Testes
• Testes de Unidade
– Os testes de unidade são os mais básicos e usualmente consistem em 
verificar se um componente individual do software (unidade) foi 
implementado corretamente. Esse componente pode ser um método ou 
procedimento, uma classe completa ou ainda um pacote de funções ou 
classes de tamanho pequeno a moderado.
• Testes de Integração
– Visam testar o software a partir da junção dos códigos fontes de vários 
desenvolvedores. O objetivo deste teste é garantir que um item testado e 
verificado unitariamente, continue funcionando após a união com novas 
funcionalidades desenvolvidas por outros membros da equipe.
• Testes Funcionais 
– Visam verificar se a versão corrente do sistema permite executar 
processos ou casos de uso completos do ponto de vista do usuário, sendo 
capaz de obter os resultados esperados
• Testes Não Funcionais
– Visam testar o software em relação as características não funcionais como 
Desempenho, Segurança, Confidencialidade, Recuperação a falhas, etc.
• Teste de Aceitação (Homologação)
– O teste de aceitação é usualmente realizado pelo usuário ou cliente, 
usando a interface final do sistema.
Engenharia de Software
14
Inspeções
• Em uma Inspeção, os inspetores examinam o 
produto para identificar defeitos e desvios, com 
o objetivo de:
– Verificar se um produto de trabalho satisfaz as 
especiações do produto de trabalho antecessor, 
tal como documento de requisitos e de projeto
– Identificar quaisquer desvios de padrões
– Sugerir oportunidades de melhoria para o autor
– Promover a troca de experiência entre os 
participantes
• O objetivo não é corrigir problemas e sim 
encontra-los para que o desenvolvedor corrija 
depois
Engenharia de Software
8
15
Inspeções
• Em uma inspeção, tipicamente são 
analisados produtos de trabalho como:
– Especificação de Requisitos
– Projetos e especificações de interface com 
usuário
– Projeto de Arquitetura, Projeto de alto nível e 
Projeto detalhado
– Código fonte
– Planos de Teste e casos de Teste
Engenharia de Software
16
Listas de Verificação (Checklists)
• É uma ferramenta estruturada, geralmente 
específica do artefato que está sendo verificado.
• Contém uma série de itens que deverão ser pontos 
de análise por parte do inspetor.
• Também conhecidas como Checklist
• Muitas organizações têm listas de verificação 
padronizadas disponíveis para garantir a 
consistência em tarefas realizadas com frequência.
– Exemplo: Checklist de especificação de casos de uso
Engenharia de Software
9
17
Conteúdo da Aula
• Garantia da Qualidade
– Testes e Inspeções
• Implantação 
– Ambientes de Desenvolvimento
• Manutenção
– Reengenharia
– Terceirização
• Fábricas de Software e Fábricas de Testes
Engenharia de Software
18
Implantação do Software
• Pôr o Software em operação 
– Entrada de dados
– Conversões de dados
– Treinamento de operadores
– Disponibilização de Manuais
– Suporte à operação
• Help Desk
– Acompanhar
• Também chamado de 
Ambiente de Produção
Engenharia de Software
Software
Software
Dados Conversões
Pronto para operar
10
19
Diversas Versões do Software
• Em uma organização normal de tamanho 
médio é comum existir várias versões ao 
mesmo tempo de um software
• Cada uma dessas versões produzida pela 
equipe de desenvolvimento possui:
– Seu código-fonte
– Seu Controle de Qualidade
– Seu Ambiente de Desenvolvimento
Engenharia de Software
Ambientes de Funcionamento do 
Software
.
.
.
.
Teste unitário
Cópia Local
Teste 
Funcional
Teste de 
Aceitação
Software 
disponível para 
os usuários
Cópia 
centralizada 
para teste de 
integração
Ambiente 
Integrado de 
DesenvolvimentoAmbiente de 
Testes ou QA 
(Quality 
Assurance)
Ambiente Local 
de 
Desenvolvimento
Ambiente de 
Homologação
Ambiente de 
Produção
Desenvolvedor Desenvolvedor Eq. de Testes Usuário Usuário Final
v1.0
v1.0
v1.0
v1.0
11
21
Ambientes de Funcionamento do 
Software
• Ambiente Local – é a própria máquina do 
desenvolvedor que contém um cópia de todo o 
sistema não necessariamente atualizada
– Porque pode estar consertando um bug de versões 
anteriores
• Ambiente Integrado de Desenvolvimento –
contém as últimas versões válidas de todos os 
desenvolvedores
– Utilizada para execução dos testes de integração
• Ambiente de Testes ou QA (Quality Assurance)
– contém uma release fechada que precisa ser 
testada funcionalmente pela equipe de testes para 
que seja liberada para aceitação do usuário
22
Ambientes de Funcionamento do 
Software
• Ambiente de Homologação ou Aceitação –
contém o software que já foi testado e liberado pela 
equipe de testes e está pronto para o aceite final do 
usuário, onde o mesmo testa o sistema para 
confirmar que a sua necessidade foi atendida.
• Ambiente de Produção – ambiente onde está 
rodando a versão oficial do software, a versão mais 
atual disponível para os usuários finais. Esta versão 
de software também é chamada de versão de 
produção.
12
23
Conteúdo da Aula
• Garantia da Qualidade
– Testes e Inspeções
• Implantação 
– Ambientes de Desenvolvimento
• Manutenção
– Reengenharia
– Terceirização
• Fábricas de Software e Fábricas de Testes
Engenharia de Software
24
Manutenção de Software
• Manutenção
– Tipos
• Corretiva
• Evolutiva
• Adaptativa
• Preventiva
– Alto Custo
• Podem requerer 
mudanças nas fases 
iniciais do 
desenvolvimento
Engenharia de Software
Software
Em Operação
Erros
Software
Nova Versão
Requisitos
13
Manutenção de Software
• Manutenção Corretiva
– correção de erros gerados por alguma falha no 
processo de desenvolvimento de software
• Manutenção Adaptativa
– Mudanças obrigatórias que o software deve sofrer 
em decorrência da mudança de leis, 
regulamentos ou ambiente legal do software
• Manutenção Evolutiva
– Evoluções no software em decorrência da 
evolução do modelo de negócio da organização.
• Manutenção Preventiva
– Mudanças para evitar futuros problemas no 
software.Engenharia de Software
26
Manutenção de Software
• Cenário Comum em Sistemas Legados:
– Maioria dos softwares utilizados tem mais de 10 
anos.
– Programas de computador apoiando regras de 
negócio antigas
– Durante o ciclo de vida foi corrigido, adaptado, 
aperfeiçoado.
– Práticas de eng. de software foram deixadas de 
lado por pressões externas.
– Instabilidade funcional.
Engenharia de Software
14
27
Sistemas Legados
• Termo largamente utilizado para designar um 
sistema corporativo que possui uma ou mais dessas 
características
– Sistema antigo (tempo de vida)
– Sistema recebido de terceiros 
– Sistema que não pode ser alterado. 
– Sistema com tecnologia e hardware obsoletos
– Sistema com dificuldade de manutenção
– Sistemas sem documentação.
• Na verdade, não existe uma definição única do que 
é um sistema legado, mas se referem a esses 
conjunto de indicadores.
• Um Sistema Legado ainda está em uso na 
organização.
Engenharia de Software
28
Reengenharia
• “ ...apesar dos elevados investimentos em 
tecnologias de informação, os resultados ficaram 
muito aquém das expectativas ... os fracassos se 
devem ao fato de que as novas tecnologias foram 
utilizadas para mecanizar as formas antigas de 
fazer as coisas.”
• Soluções:
–Modificação ou reconstrução 
(Reengenharia)
–Comprar novos ou terceirizar
Engenharia de Software
15
29
Reengenharia de Software 
(década de 90)
• Surgiu na Administração de Empresas e teve 
seu foco na melhoria dos processos.
• Incluiu também os sistemas de informações das 
organizações.
• É o exame, estudo, captura e modificação de 
mecanismos internos ou funcionalidade de um 
sistema existente ou produto, visando 
reconstituí-lo em uma nova forma e com novas 
características, frequentemente para tomar 
vantagem das novas e emergentes tecnologias, 
mas sem grandes alterações na funcionalidade e 
propósito inerentes ao sistema. 
Engenharia de Software
30
Reengenharia de Software
• Processo de Reengenharia
• “O software construído há alguns anos atrás pode 
não estar adequadamente documentado e seu 
desenvolvimento provavelmente não atentou 
para as técnicas definidas pelos atuais 
paradigmas de programação”
Engenharia de Software
16
31
Reengenharia de Software
• Engenharia Avante
– “ ...aplica princípios de Engenharia de 
Software para recriar uma aplicação já 
existente. ... não cria simplesmente um 
equivalente moderno de um programa 
antigo, novos requisitos são integrados ... 
O programa redesenvolvido amplia a 
capacidade do antigo
Engenharia de Software
32
Reengenharia de Software
• Engenharia Reversa
–Em muitos casos, por falta de 
documentação no software legado, e por 
não existir usuários de negócio com 
conhecimento sobre o sistema ou tempo 
disponível, a especificação de um novo 
sistema pode ser feita a partir do 
entendimento e análise do código fonte do 
sistema antigo.
Engenharia de Software
17
33
Terceirização - Fábrica de Software
• O termo “fábrica de software” nasceu da adoção do 
conceito de fábrica tradicional ao processo de 
desenvolvimento de sistemas e aplicações, ou seja, 
fábrica de software é a estrutura formada pelo 
conjunto de profissionais, recursos materiais, 
processos e metodologias para o desenvolvimento 
de softwares, sistemas e aplicações, englobando 
desde a análise de requisitos até a fase de 
manutenção. 
• A busca pela redução de custo das empresas leva à 
parceria com fábricas de software, que, pela 
diversidade de clientes atendidos eleva sua 
expertise, o que acarreta na redução de custo de 
desenvolvimento, 
Engenharia de Software
34
Fluxo Típico de Desenvolvimento 
com Fábrica de Software
Engenharia de Software
Organização 
Cliente
Fábrica 
de Software
Requisitos
Especificações 
de Software
Verificação das
Especificações
Código Executável
Verificação e Validação (Homologação)
18
35
Terceirização - Fábrica de Testes
• A Fábrica de Testes deve gerenciar todas as 
demandas de testes e inspeções e 
estabelecer modelos que suportem tanto os 
testes manuais quanto os automatizados, 
estabelecendo uma metodologia única de 
testes, independente da tecnologia 
empregada.
• A Fábrica de Testes irá trabalhar verificando 
e validando os artefatos produzidos pela 
Fábrica de Software.
Engenharia de Software
36
Fluxo Típico de Desenvolvimento 
com Fábrica de Software
Engenharia de Software
Organização 
Cliente
Fábrica de Software
Requisitos
Especificações 
de Software
Verificação das
Especificações
Verificação
Fábrica de Testes
Código Executável
Validação (Homologação)
Requisitos

Outros materiais