• Nenhum resultado encontrado

Manutenção e Reengenharia de Software

N/A
N/A
Protected

Academic year: 2021

Share "Manutenção e Reengenharia de Software"

Copied!
27
0
0

Texto

(1)

Engenharia de Software III

5º. Semestre

ADS

Manutenção e Reengenharia de

Software

Profa. Dra. Ana Paula Gonçalves Serra

Agenda

Sistema Legado

Evolução de Software

Manutenção de Software

Modernização

Substituição

(2)

Profa. Dra. Ana Paula G. Serra - p. 3 Engenharia de Software III – Fatec Ipiranga

Isso é Real?

Vídeo EDS:

Building a Dream.mpa

Isso é Real!

Explosão do foguete Arianne V (1996) em 40 segundo após decolagem que

possuía na sua codificação uma rotina do Ariane IV, que não deveria ser

utilizada. A rotina convertia valor flutuante em inteiro e que recebeu como

entrada um valor que estava fora da faixa permitida e fez com que os

computadores principais e de backup dessem “shut-down” ao mesmo tempo.

Projeto da Agência Espacial Européia que

custou:

10 anos

U$ 8 Bilhões

(3)

Profa. Dra. Ana Paula G. Serra - p. 5 Engenharia de Software III – Fatec Ipiranga

Exercício

Em uma empresa fornecedora de equipamentos telefônicos existe um sistema

legado de suporte técnico em mainframe em funcionamento nos últimos 20

anos. Esse sistema (tela verde) é utilizado diariamente em média por 20

usuários (atendentes) simultaneamente no horário das 7:00 h. às 22:00 h.

Atualmente o custo de manutenção desse sistema é altíssimo, o código está

deteriorado (macarrônico) e ninguém mais consegue dar manutenção, qualquer

melhoria no software gera dezenas de erros. Além de problemas de

desempenho, em determinados momentos o acesso aos dados é muito lento e a

transação que está sendo realizada muitas vezes é abortada.

Com tudo isso, pretende-se realizar a reengenharia desse software e criar uma

integração com um software de mercado (COTS) de base de conhecimento.

Esse software de base de conhecimentos tem como objetivo buscar solução de

problemas que já foram selecionadas, ajudando os atendentes a tomarem

decisões na solução do chamado.

Você foi contratado para fazer uma proposta de reengenharia para o

sistema descrito. Para isso, você deve descrever a estratégia de

reengenharia

de

software.

Essa

estratégia

deve

abordar

atividade(s)/técnica(s) de reengenharia que serão utilizadas e arquitetura

proposta.

5

Conceitos Importantes...

Antes de começarmos o conceito de Reengenharia de

Software, alguns conceitos devem ser definidos e

discutidos, como:

Sistemas Legados

(4)

Profa. Dra. Ana Paula G. Serra - p. 7 Engenharia de Software III – Fatec Ipiranga

Sistema Legado

Algumas definições...

Um frase utilizada por Seacord, et al. no livro Modernizing Legancy Systems é “ Um sistema

legado é um sistema que foi escrito ontem”.

Outras definições como a de Sommerville são mais formais, onde sistemas legados são

“sistemas sociotécnicos* baseado em computadores e que foram desenvolvidos no

passado, frequentemente usando tecnologias mais antigas ou obsoletas. Esses sistemas

incluem não apenas hardware e software, mas também processos e procedimentos

legados... As mudanças em uma parte do sistema envolvem inevitavelmente mudanças em

outros componentes”.

* Sociotécnicos incluem mais que sistemas sob o ponto de vista técnico, mas também pessoas, políticas e regras da empresa, leis, normas, etc.

Sistema Legado

Por

que

alguns

sistemas

ainda

utilizam

software

desenvolvidos nas décadas de 60, 70, 80?

(5)

Profa. Dra. Ana Paula G. Serra - p. 9 Engenharia de Software III – Fatec Ipiranga

Componentes de Sistema Legado

Políticas e

regras de

Negócio

Software de

aplicação

Software de

Apoio

Processos de

Negócio

Hardware do

Sistema

Dados de

Aplicação

Executado em Executado em Usa Usa

Software de

aplicação

Incorpora conhecimento de Restringe Usa

Modelos em Camadas do Sistema Legado

Hardware

Software de Apoio

Software de Aplicação

(6)

Profa. Dra. Ana Paula G. Serra - p. 11 Engenharia de Software III – Fatec Ipiranga

Evolução do Software

Qual é a diferença de um

software que está sendo

desenvolvido utilizando um modelo de processo incremental ou

espiral e um software legado que deve ser alterado?

Os dois não utilizam o conceito de evolução de software?

Evolução do Software

Implantação

Desenvolvimento - Novo Software

(7)

Profa. Dra. Ana Paula G. Serra - p. 13 Engenharia de Software III – Fatec Ipiranga

Sistema Legado

Sistema

Legado

Leis e Normas

Sistema Modificado

(Evolução do Software)

Integração de Sistemas

Necessidade do Mercado

Mudança ou inclusão de

novas tecnologias

Políticas, Regras e

Procedimentos da Empresa

Novos Requisitos

Funcionais e Não-Funcionais

..

.

O processo de Evolução do Software, depende:

Software a ser mantido;

Processo de desenvolvimento utilizado;

Pessoas envolvidas no processo.

14

(8)

Profa. Dra. Ana Paula G. Serra - p. 15 Engenharia de Software III – Fatec Ipiranga

Exemplo de um Processo Formal de

Evolução de Software

Solicitação

de Mudança

Análise de

Impacto/Risco

Planejamento

de Versões

Implementação

de Mudanças

Liberação do

Sistema

Mudança

Propostas

Análise de

Requisitos

Atualização

de Requisitos

Desenvolv.

de Software

Fase Composta

Quais são os passos para um processo de evolução de sistemas?

Considere que o sistema já existe e necessita ser alterado.

Solicitação de

Mudança

Análise

Código Fonte

Modificar

Código Fonte

Entrega de

Sistema

Modificado

Toda evolução de software deve seguir um processo formal?

Exemplo de um Processo Formal de

Evolução de Software

(9)

Profa. Dra. Ana Paula G. Serra - p. 17 Engenharia de Software III – Fatec Ipiranga

Evolução do Software

Mudança contínua;

Complexidade crescente;

Evolução de sistemas de grande porte;

Crescimento contínuo;

Qualidade em declínio;

....

Quais são os reflexos (hipóteses) práticos da evolução de software?

Categorias da Evolução de Software

Manutenção de Software

Modernização de Software

Substituição de Software

(10)

Profa. Dra. Ana Paula G. Serra - p. 19 Engenharia de Software III – Fatec Ipiranga

Categorias da Evolução de Software –

Manutenção de Software

É um processo incremental e repetitivo, onde alterações são feitas no

software. Essas alterações envolvem:

Eliminação de erros

Melhorias funcionais

A manutenção é necessária para suportar a evolução de qualquer

software, mas não deve envolver:

Mudanças estruturais, como por exemplo, adoção de novas

tecnologias para implantação de uma arquitetura distribuída.

Categorias da Evolução de Software –

Manutenção de Software

Categorias de Manutenção de Software

Corretiva: Alterações para corrigir erros no software

Melhoria: Alterações para melhorar o software, como por exemplo: novas

funções, melhoria do desempenho, usabilidade

Adaptativas: Alterações para adaptar o software a novos ambientes, tais

como sistemas operacionais, ferramentas, banco de dados, componentes

Preventivas: Alterações para melhorar a manutenibilidade do software. O

(11)

Profa. Dra. Ana Paula G. Serra - p. 21 Engenharia de Software III – Fatec Ipiranga

Categorias da Evolução de Software –

Manutenção de Software

Na década de 80 um estudo estimou:

20% corresponde a manutenção corretiva

50% corresponde a manutenção de melhoria

25% corresponde a manutenção adaptativa

5% corresponde a manutenção preventiva

Hoje em dia observa-se que esses números não alteraram muito.

Categorias da Evolução de Software –

Manutenção de Software

(12)

Profa. Dra. Ana Paula G. Serra - p. 23 Engenharia de Software III – Fatec Ipiranga

Alguns dos Problemas –

Manutenção de Software

Complexidade Crescente, o que leva a estrutura deteriorada

Qualidade em declínio

Custo alto de manutenção, pois:

estabilidade

de

equipe,

contrato

de

manutenção,

falta

de

conhecimento do negócio e do software pelos desenvolvedores que

irão fazer a manutenção, estrutura do programa

Instabilidade do sistema de software

...

Categorias da Evolução de Software –

Modernização de Software

É utilizada quando o sistema legado requer mudanças mais extensas e

significativas do que aquelas realizadas pela manutenção;

Preserva porção significativa do negócio do sistema;

A necessidade da modernização ocorre devido a fragilidade e pouca

consistência do sistema legado, da falta de flexibilidade, isolamento e

pouca capacidade de extensão;

Mudanças de modernização incluem: reestruturação do sistema, novas

funcionalidades ou modificações de atributos de software.

(13)

Profa. Dra. Ana Paula G. Serra - p. 25 Engenharia de Software III – Fatec Ipiranga

Categorias da Evolução de Software –

Modernização de Software

Técnicas de Compreensão do Sistema Legado

Caixa Branca

Caixa Preta

O que isso significa?

Categorias da Evolução de Software –

Modernização de Software - Caixa Branca

Exige conhecimento sobre o código interno do sistema legado. Este processo

envolve:

Modelagem do domínio do sistema;

Extração de informações do código;

Criação de abstrações que descrevem a estrutura do sistema.

Após a análise e compreensão do código, este tipo de modernização inclui

If (a>b) ... else ...

(14)

Profa. Dra. Ana Paula G. Serra - p. 27 Engenharia de Software III – Fatec Ipiranga

Categorias da Evolução de Software –

Modernização de Software - Caixa Preta

Exige conhecimento das interfaces externas do sistema legado. Este

processo envolve:

Examinar as entradas e saídas de um sistema legado.

É uma técnica menos trabalhosa que a técnica de caixa branca;

Muitas vezes é necessário a utilização de técnica de caixa branca

para complementar o entendimento.

Entradas

Saídas

Categorias da Evolução de Software –

Modernização de Software

Segundo uma pesquisa do Standish Group realizada em 2001 muitas

tentativas de modernização de software falham, sendo que:

23% dos projetos são cancelados antes de terminarem

28% terminam no tempo e orçamentos previstos e com o objetivo esperado.

Uma forma de modernização para melhorar a capacidade e manutenibilidade

de um sistema legado, introduzindo tecnologias e práticas modernas, é a

(15)

Profa. Dra. Ana Paula G. Serra - p. 29 Engenharia de Software III – Fatec Ipiranga

Categorias da Evolução de Software –

Substituição de Software

Requer a construção do sistema legado desde o início, e é apropriada quando

o sistema legado não consegue mais atender às necessidades do negócio e

quando a modernização não é possível ou não vale a pena em relação aos

custos.

Quais são os riscos de substituição de software?

(16)

Profa. Dra. Ana Paula G. Serra - p. 31 Engenharia de Software III – Fatec Ipiranga

Exercício

Analise os casos abaixo e classifique em Manutenção (neste caso classifique em

Corretiva, Melhoria, Adaptativas e Preventivas), Modernização de Software ou

Substituição de Software.

Correção de um erro.

Foi solicitada a criação de uma nova função para o sistema.

Em todos os servidores serão instalados sistemas operacionais e gerenciadores

de banco de dados com versões mais recentes.

Criar uma interface gráfica para Internet com integração com o Mainframe.

Uma empresa de venda de produtos, chegou a conclusão que o sistema atual

não atende mais as regras de negócio da empresa, sendo que muitas vezes

algumas informações deixam de ser registradas e automatizada pelo sistema.

31

Reengenharia

“Já é hora de parar de pavimentar trilhas de gado. Em vez de embutir

processos desatualizados em silício e software, deveríamos

descartá-los e começar de novo. Deveríamos “reengenheirar” os nossos

negócios: usar o poder da moderna tecnologia da informação para

reprojetar radicalmente nossos processos de negócio a fim de

conseguir aperfeiçoamentos drásticos em seu desempenho”

Harvard Business Review

(17)

Profa. Dra. Ana Paula G. Serra - p. 33 Engenharia de Software III – Fatec Ipiranga

Reengenharia

Reengenharia de Processo de Negócio

1º. Passo

Reengenharia de Software

2º. Passo

Regras de negócio impactam diretamente no software

A reengenharia de processo de negócios se ocupa de reprojetar processos de

negócio, a fim de reduzir o número de atividades redundantes e melhorar a eficiência

do processo;

Em geral a reengenharia de processo de negócio é apoiada por sistemas de software;

Muitas vezes, a reengenharia de processo de negócio é um fator direcionador da

evolução de software.

Reengenharia de Processo de Negócio

Reengenharia de Processo de Negócio (Business Process

Reengineering - BPR) tem como objetivo apoiar na análise,

na avaliação de processos de negócio e na proposta de um

sistema de negócio.

(18)

Profa. Dra. Ana Paula G. Serra - p. 35 Engenharia de Software III – Fatec Ipiranga

Reengenharia de Processo de Negócio

Definição do

Negócio

Refinamento

& Agilização

Prototipação

Identificação

do

Processo

Especificação e

Projeto do

Processo

Avaliação do

Processo

Motivações:

• Redução de custo • Redução de prazo • Aperfeiçoamento da qualidade • Desenvolvimento pessoal

São identificados processos críticos para alcançar as metas definidas do negócio

• Os processos são analisados e

medidos.

• As tarefas do processo são

identificadas

• Os custos e tempo são analisados • Problemas de qualidade são

identificados Com base nas

informações obtidas nas 3 primeiras fases é realizada a especificação para os processos que serão reprojetados. São realizados “testes” do processo de negócio reprojetado antes de ser integrado ao negócio

Com base no “feedback” do protótipo, o processo de negócio é refinado e então instanciado para um sistema de negócio

Um modelo de

BPR

Reengenharia de Software

Uma aplicação de software serviu às necessidades do negócio de

uma empresa po 10 ou 15 anos. Durante esse tempo foi corrigida,

adaptada e aperfeiçoada por muitas vezes. O pessoal abordou esse

trabalho com a melhor das intenções, mas boas práticas de

engenharia

de

software

foram

sempre

deixadas

de

lado

(pressionada por outros aspectos, como por exemplo prazo). Agora

a aplicação está instável. Ainda funciona, mas todas vez que uma

modificação é tentada, efeitos colaterais inesperados e sérios

ocorrem. No entanto a aplicação de software precisa continuar a

evoluir.

(19)

Profa. Dra. Ana Paula G. Serra - p. 37 Engenharia de Software III – Fatec Ipiranga

A reengenharia de software oferece uma abordagem disciplinada

para migrar

sistemas legados

em sistemas evolutivos;

O processo de reengenharia de software aplica os princípios da

engenharia de software em um sistema de software já existente para

atender requisitos existente e novos requisitos.

Reengenharia de Software

Algumas definições...

Segundo Pressman... “A reengenharia tem como objetivo principal melhorar a qualidade global da

aplicação, mantendo, em geral, as funções da aplicação existente. Mas, ao mesmo tempo, pode-se

adicionar novas funções e melhorar o desempenho”.

Segundo o SEI (Software Engineering Institute) “reengenharia é uma transformação sistemática

de uma aplicação de software existente para uma nova forma, realizando melhorias na operação,

na funcionalidade, no desempenho, na capacidade de evoluir para um novo sistema com menores

custos, prazos e riscos”.

(20)

Profa. Dra. Ana Paula G. Serra - p. 39 Engenharia de Software III – Fatec Ipiranga

Engenharia e Reengenharia de Software

Especificação do

Sistema

Projeto e

Implementação

Sistema

Novo

Sistema Legado

Compreensão e

Transformação

Sistema

Reengenheirado

Engenharia de Software

Reengenharia de Software

Estudo de Caso - Hipotético

Você comprou uma casa em outro Estado. Nunca viu

realmente a propriedade, mas adquiriu por um preço

espantosamente baixo, com a advertência de que talvez ela

tivesse que ser completamente reconstruída. Como você

procederia?

(21)

Profa. Dra. Ana Paula G. Serra - p. 41 Engenharia de Software III – Fatec Ipiranga

Alguns procedimentos seriam

importantes...

Inspeção da casa, para realmente verificar se a casa deve ser

reconstruída.

Verifique se tudo deve ser demolido, se a estrutura está fraca ou

algo pode ser reaproveitado.

Antes de começar a reconstrução, entenda como a casa original foi

construída. Verifique fiação, canalização, estrutura interna, mesmo

que seja para descartar tudo o conhecimento adquirido servirá para

iniciar a construção.

Quando começar a construir realize um projeto, e siga todas as

técnicas e normas da construção civil. Também utilize materiais de

boa qualidade, modernos e duradouros. Isto pode custar um pouco

a mais, mas evitará manutenções desnecessárias no futuro.

Atividades da Reengenharia de Software

Existem seis atividades ou técnicas básicas de reengenharia de

software que podem ser consideradas individualmente ou de forma

cíclica.

Análise de Inventário

Reestruturação de

Documentos

Reestruturação

Engenharia

Avante

(22)

Profa. Dra. Ana Paula G. Serra - p. 43 Engenharia de Software III – Fatec Ipiranga

Atividade: Análise de Inventário

Toda empresa “deve” ter um inventário de todos os sistemas

de software;

Dados

importantes

do

inventário

são:

tamanho,

idade,

importância para o negócio, tecnologias utilizadas, integração

com outros softwares,...;

Esses

dados

são

importantes

para

analisar

riscos

da

modernização do software.

Atividade: Reestruturação de Documentos

Pouca documentação é a marca registrada de muitos sistemas

legados.

Muitas vezes para iniciar a reestruturação de documentos é

necessário passar pela atividade de engenharia reversa para

entender o que está por “trás” do código fonte.

(23)

Profa. Dra. Ana Paula G. Serra - p. 45 Engenharia de Software III – Fatec Ipiranga

Atividade: Engenharia Reversa

Engenharia Progressiva: Processo tradicional de engenharia de software, caracterizado pelas

atividades progressivas do ciclo de vida, que partem de um alto nível de abstração, para um baixo

nível de abstração.

Engenharia Reversa: O processo inverso a Engenharia Progressiva, caracterizado pelas

atividades retroativas do ciclo de vida, que partem de um baixo nível de abstração (código-fonte)

para um alto nível de abstração (modelos).

Engenharia Progressiva

Engenharia Reversa

Requisitos

Projeto

Implementação

Visão Funcional,

Não-Funcional e Domínio Visão Estrutural

Visão de implementação (código)

Atividade: Engenharia Reversa

Muitas pessoas acreditam...

E N G E N H A R I A R E V E R S A

Código fonte desestruturado

e não documentado

(24)

Profa. Dra. Ana Paula G. Serra - p. 47 Engenharia de Software III – Fatec Ipiranga

Atividade: Engenharia Reversa

Processo de Engenharia Reversa

Código

Reestruturado

Extração de

Abstrações

Refinar e

Simplificar

Processamento Interface Base de Dados Código Fonte

Código Fonte “limpo”, somente com a estrutura

Modelo Gerado

Modelo Final

(25)

Profa. Dra. Ana Paula G. Serra - p. 49 Engenharia de Software III – Fatec Ipiranga

Atividade: Reestruturação do Código

Também chamada de Refactoring ou Refabricação, consiste em um

processo de modificação de módulos de software de tal modo que não altere

o comportamento externo do código, mas aperfeiçoe a estrutura interna. É

um modo disciplinado de “limpar” o código que minimiza a introdução de

defeitos.

Em essência quando ocorre a refabricação o projeto está sendo aperfeiçoado

internamente depois que ele já foi escrito.

Geralmente a arquitetura básica é sólida, mas alguns módulos

precisam de modificações internas.

A refabricação pode ocorrer em uma mesma plataforma de

desenvolvimento ou em uma nova.

Atividade: Reestruturação dos Dados

Consiste na reestruturação dos dados, ou seja, melhoria do projeto

de banco de dados, reorganização dos dados e nomenclatura.

Geralmente existe uma mudança física nas estruturas de dados,

contemplando mudança de formato de arquivos ou mudança de

tecnologia de banco de dados.

(26)

Profa. Dra. Ana Paula G. Serra - p. 51 Engenharia de Software III – Fatec Ipiranga

Atividade: Engenharia Avante

Aplica princípios, conceitos e métodos de engenharia de software

para recriar uma aplicação existente, com o objetivo de ampliar a

capacidade da aplicação antiga. Algumas forma de engenharia

avante atuais.

1.

Engenharia Avante para Arquitetura Cliente/Servidor

2.

Engenharia Avante para Arquitetura Orientada a Objetos

3.

Engenharia Avante de Interfaces com o Usuário

Métodos mais comuns de Reengenharia

Migração de sistemas legados para uma nova plataforma

Útil quando há um alto custo de manutenção da plataforma legada.

Alteração da interface humano computador e reestruturação

do código e documentação

Útil quando há necessidade de criação de uma nova interface gráfica

(Wrappers) e de uma revisão no código e documentação, sendo não

(27)

Profa. Dra. Ana Paula G. Serra - p. 53 Engenharia de Software III – Fatec Ipiranga

Copyright © 2012-2017 Profa. Dra. Ana Paula Gonçalves

Serra.

Todos direitos reservados. Reprodução ou divulgação total ou

parcial deste documento é expressamente proíbido sem o

Referências

Documentos relacionados

Esse modelo foi derivado de modelos de atividade de engenharia com o fim de estabelecer ordem no desenvolvimento de grandes produtos de software.. Comparado com outros modelos de

 “Gerência de Requisitos - Os requisitos do sistema são controlados de forma a estabelecer um perfil mínimo a ser utilizado pela engenharia de software e

Já o Ministério do Turismo (2010), divulga não apenas as atribuições gerais que o guia deve cumprir, mas também as atribuições específicas de acordo com a

Observando o perfil de TPR do catalisador RuKL (figura 88), onde as temperaturas da primeira análise de TPR alcançaram valores de 222°C e 262°C e comparando com os

1 — São graduados no posto de comodoro ou bri- gadeiro-general os capitães-de-mar-e-guerra ou coro- néis habilitados com o curso superior naval de guerra, o curso superior de comando

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

A função gerente de obras torna-se cada vez mais necessária na construção civil, pois o setor está cada vez mais desenvolvendo e aprimorando a área de coordenação

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de