Reengenharia
SCE 186 – Engenharia de Software
Profa Rosana T. Vaccare Braga
(material adaptado a partir do concedido pela
Profa.: Rosângela Penteado, DC - UFSCar)
Fases Genéricas do Ciclo de Vida
Engenharia
Análise Projeto Codificação Testes Manutenção
Sistemas
•Sistema porque?
•Requisitos o que?
•Desenvolvimento como?
Abstração
• Definição de Abstração: habilidade de se ignorar os aspectos de assuntos não
relevantes para o propósito em questão
• Nível de Abstração: Cada passo no processo de desenvolvimento de software é
um refinamento do nível de abstração do software. Nos estágios iniciais do ciclo
de vida as informações possuem alto nível de abstração e nos estágios finais baixo
nível de abstração
•Grau de Abstração: Está relacionado a uma mesma atividade no ciclo de vida
do software. Informações numa forma mais global possuem alto grau de
abstração, numa forma mais detalhada possuem baixo grau de abstração
alto
Sistema Requisitos Desenvolvimento
Grau de
Abstração
baixo
alto
Sistema Requisitos Desenvolvimento
Eng. Eng.
Grau de Progressiva
Progressiva
Abstração Eng. Reversa Eng. Reversa
baixo
•Quem poderá
me ajudar ????
Engenharia Reversa
Reengenharia
Será possível ????
Na construção civil, ok
E com sistemas de
software?
Engenharia Reversa
ico
Lóg
elo
od
M
Reengenharia
Engenharia Reversa
Reengenharia Reengenharia
(Renovação) (Renovação)
Reestruturação Reestruturação Reestruturação
- código fonte
- informações de usuários e/ou analista
- documentação existente (manual de usuário,
manual de sistema, DFDs, fluxogramas, etc.)
Como começa a engenharia reversa?
Reengenharia
Finalidade: manutenção do sistema
Pseudocódigos
Reestruturação Reestruturação
dos dados de documentos
Reestruturação Engenharia
do código reversa
Finalidade: Reengenharia
Reengenharia:
sem mudança de funcionalidade,
mudança parcial de funcionalidade,
mudança total de funcionalidade
Decisão:
Processo de Reengenharia
Conhecimento
do Usuário
Re-
Documentação
=
Reengenharia
Documentação?
Reengenharia: Sem mudança de funcionalidade,
Mesmo paradigma com Mudança de Linguagem
de Programação
Sistema Existente
Já existia Recuperado do
código legado
Modelo Lógico
Linguagem
Escolhida
Reengenharia com mudança parcial
de funcionalidade
Mesmo Paradigma:
Que haja integração entre as duas partes.
Integrar as duas partes.
Reengenharia com mudança
total de funcionalidade
Engenharia Avante
escolha o seu!
Métodos de
Desenvolvimento
Reengenharia com Mudança de Orientação
FUSION/RE
Orientada a
Procedimentos (Modelos UML)
COREM
Segmentação
Orientada a Objetos (Sneed)
Reengenharia com mudança
parcial de funcionalidade