Você está na página 1de 34

REENGENHARIA

DANIEL GATTAI FRANCISCO RAFAEL LUCAS ALVES

REENGENHARIA
UMA ATIVIDADE DE RECONSTRUO

REENGENHARIA DE PROCESSO DO NEGCIO

Permite a um analista de negcio modelar os processos do negcio existentes do fluxo de trabalho ou problemas funcionais. Uma vez identificados problemas existentes, a BPR permitem ao analista fazer o prottipo e/ou simular os processos de negcio revisados.
Frequentemente resulta em nova funcionalidade de software.

REENGENHARIA DE PROCESSO DO NEGCIO


1.

Processos de Negcio

Um processo de negcio um conjunto de tarefas logicamente relacionadas, realizadas para conseguir um resultado definido do negcio.
Exemplos de processos de negcios incluem projetar um produto novo, adquirir servios e suprimentos, contratar um novo empregado e pagar fornecedores. Trabalha para substituir a funcionalidade do software existente, por um software melhor, mas manutenvel.

REENGENHARIA DE PROCESSO DO NEGCIO

BPR iterativa, um processo evolutivo. definido em seis atividades.


Definio de negcio - As metas de negcio so identificadas dentro do contexto de quatro motivaes importantes: reduo de custo, reduo de prazo, aperfeioamento da qualidade e poder e desenvolvimento pessoal. Identificao do processo - So identificados por processos crticos para alcanar as metas definidas no negcio.

1.

2.

3.

Avaliao do processo - O processo existente rigorosamente analisado e medido. As tarefas do processo so identificadas; os custos e o tempo consumidos pelas tarefas do processo so registrados, e problemas de qualidade/desempenho so isolados.

4.

Especificao e projeto do processo - So preparados casos de usos com base nas informaes obtidas durante as trs primeiras atividades do BPR.
Prototipao - Testa o processo de modo que possam ser feitos refinamentos.

5.

6.

Refinamento e instanciao - O processo de negcio refinado e ento instanciado para um sistema do negcio.

REENGENHARIA DE SOFTWARE
Uma

aplicao serviu s necessidades do negcio de uma empresa por 10 ou 15 anos. Foi corrigida, adaptada e aperfeioada muitas vezes. Agora a aplicao est instvel. Ainda funciona, mas toda vez que uma modificao tentada, efeitos colaterais inesperados e srios ocorrem. No entanto, a aplicao precisa continuar a evoluir. O que fazer?

REENGENHARIA DE SOFTWARE
A

manuteno de software existente pode ser responsvel por mais de 60% de todo o esforo despendido por uma organizao de desenvolvimento.

Desse

60%, apenas 20% gasto consertando erros. Os restantes 80% so gastos adaptando sistemas existentes a modificaes no seu ambiente externo.
do pessoa de Software.

Mobilidade

REENGENHARIA DE SOFTWARE
Manuteno

corretiva Manuteno adaptativa Manuteno perfectiva ou de melhoria

Manuteno preventiva ou reegenharia.

A reengenharia de sistemas de informao pode ser mais bem entendida se considerarmos uma atividade anloga: a reconstruo de uma casa. Considere a seguinte situao.
Comprou uma casa. Nunca viu realmente a propriedade. Antes de comear a reconstruo. Seria razovel inspecionar a casa. Antes de demolir e reconstruir a casa toda. Certifique-se de que a estrutura est fraca. Antes de comear a reconstruo, entenda como o original foi construdo. Se comear a reconstruir, use apenas os materiais mais modernos e duradouros. Se decidir reconstruir, seja disciplinado a respeito. Use prticas que iro resultar em alta qualidade.

REENGENHARIA DE SOFTWARE
Modelo

de Processo de Reengenharia de Software.


O Processo de reegenharia de software inclui analise de inventrio, reestruturao de documentos, engenharia reversa, reestruturao de programas e dados e engenharia avante. O objetivo dessas atividades criar verses dos programas existentes com mais qualidade e melhor manutenibilidade.

MODELO DE PROCESSO DE REENGENHARIA DE SOFTWARE


O processo pode terminar depois de qualquer uma dessas atividades.
1.

2.

3.

Anlise de Inventrio Toda organizao teve ter um inventrio de todas as aplicaes. Reestruturao de documento A criao de documentao consome tempo demais. A documentao precisa ser atualizada, mas temos recursos limitados. O sistema crtico para o negcio e precisa ser totalmente redocumentado. Engenharia Reversa Extraem informaes do projeto de dados, arquitetural e procedimental, para um programa existente.

MODELO DE PROCESSO DE REENGENHARIA DE SOFTWARE


4.

5.

6.

Reestruturao do cdigo O cdigo-fonte analisado usando uma ferramenta de reestruturao. Violaes das construes de programao estruturada so registradas e o cdigo ento reestruturado. Reestruturao de dados Objetos de dados e atributos so identificados e as estruturas de dados so revisadas quanto qualidade. Engenharia avante Tambm chamado de renovao ou recomposio, no apenas recupera informao de projeto de software existente, mas usa essa informao para alterar ou reconstituir o sistema existente em um esforo para aperfeioar sua qualidade global.

ENGENHARIA REVERSA

ENGENHARIA REVERSA
Extrair de um cdigo fonte no documentado em uma documentao completa Ajudar engenheiros de software e entender a estrutura do projeto interno de programas complexos

statement = connection.createStatement(); } catch ( Exception exception ) { exception.printStackTrace(); throw new UnavailableException( exception.getMessage() ); } } protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException

package com.deitel.jhtp6.servlets; import java.io.PrintWriter; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.UnavailableException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

{
response.setContentType( "text/html" ); PrintWriter out = response.getWriter(); out.println( "<?xml version = \"1.0\"?>" ); out.printf( "%s%s%s", "<!DOCTYPE html PUBLIC", " \"-//W3C//DTD XHTML 1.0 Strict//EN\"",

public class SurveyServlet extends HttpServlet { private Connection connection;


private Statement statement;


public void init( ServletConfig config ) throws ServletException { try { Class.forName( config.getInitParameter( "databaseDriver" ) );

" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
);

out.println( "<html xmlns = \"http://www.w3.org/1999/xhtml\">" ); out.println( "<head>" );

connection = DriverManager.getConnection(
config.getInitParameter( "databaseName" ), config.getInitParameter( "username" ), config.getInitParameter( "password" ) );

int value =
Integer.parseInt( request.getParameter( "animal" ) ); String sql;

resultsRS.close();

try {

out.print( "Total responses: " ); out.print( total );

sql = "UPDATE surveyresults SET votes = votes + 1 " + "WHERE id = " + value; statement.executeUpdate( sql );

out.println( "</pre></body></html>" ); out.close(); } catch ( SQLException sqlException ) { sqlException.printStackTrace(); out.println( "<title>Error</title>" ); out.println( "</head>" ); out.println( "<body><p>Database error occurred. " ); out.println( "Try again later.</p></body></html>" ); out.close(); } }

sql = "SELECT sum( votes ) FROM surveyresults"; ResultSet totalRS = statement.executeQuery( sql ); totalRS.next(); int total = totalRS.getInt( 1 );

sql = "SELECT surveyoption, votes, id FROM surveyresults " +


"ORDER BY id"; ResultSet resultsRS = statement.executeQuery( sql ); out.println( "<title>Thank you!</title>" ); out.println( "</head>" );

out.println( "<body>" ); out.println( "<p>Thank you for participating." ); out.println( "<br />Results:</p><pre>" ); int votes; while ( resultsRS.next() ) { out.print( resultsRS.getString( 1 ) ); out.print( ": " ); votes = resultsRS.getInt( 2 ); out.printf( "%.2f", ( double ) votes / total * 100 ); out.print( "% responses: " ); out.println( votes ); }

public void destroy() {

try

{
statement.close(); connection.close(); } catch( SQLException sqlException ) { sqlException.printStackTrace(); } } }

ENGENHARIA REVERSA

Nvel de abstrao

Completeza

Direcionalidade

ENGENHARIA REVERSA

Entender dados
Estruturas de dados internas Estruturas de Bancos de Dados

Entender o Processamento

Sistema, Programa, Componente, padro e declarao

Interface com Usurios


Quais so as aes bsicas que a interface deve processar? Qual descrio compacta da resposta dos sistemas a essas aes? O que quer dizer substituio ou, mais precisamente, que conceito de equivalncia de interfaces e relevantes aqui

REESTRUTURAAO DE SOFTWARE

No modifica arquitetura global do programa Mdulos individuais Estruturas de Dados Locais

REESTRUTURAAO DE SOFTWARE

Reestruturao de Cdigo
Reestruturao de Dados

ENGENHARIA AVANTE

CONCEITO
O processo de engenharia avante aplica conceitos e mtodos de engenharia de software para recriar uma aplicao existente. Em alguns casos, a engenharia avante no cria simplesmente um equivalente moderno de um programa antigo. A idia principal que o programa redesenvolvido amplie a capacidade da aplicao antiga.

COMO ACOMODAR ALTERAES EXIGIDAS PELO USURIO COM MILHARES DE LINHAS DE CDIGO FONTE SEM NENHUMA DOCUMENTAO?

Podemos batalhar modificao por modificao; Podemos tentar entender o funcionamento interno para tornar as modificaes mais eficazes; Podemos reprojetar, recodificar e testar a funcionalidade que exige modificao; Podemos reprojetar, recodificar e testar o software inteiro, afim de facilitar melhorias futuras; Normalmente usada a primeira opo, mas isso no quer dizer que seja a melhor opo;

MANTER VS. REDESENVOLVER


Custo para manter o cdigo-fonte atual pode ser de 20 a 40 vezes o custo de desenvolver um novo cdigo; Reprojetar a arquitetura do software pode facilitar manutenes futuras; O fato de existir um prottipo do software, pode aumentar a produtividade do desenvolvimento; Usurio tem mais experincia, e pode sugerir melhorias em funcionalidades; Ferramentas automatizadas podem facilitar o processo; Uma documentao passar a existir;

ENGENHARIA AVANTE ARQUITETURA CLIENTE / SERVIDOR


importante notar que a migrao de um computador de grande porte para cliente/servidor exige reengenharia, tanto do negcio quanto de software. Em alguns casos, a migrao para uma arquitetura cliente/servidor deve ser abordada no como reengenharia, mas como um esforo de desenvolvimento novo. A reengenharia entra em cena apenas quando a funcionalidade especfica do sistema antigo precisa ser integrada na nova arquitetura.

CARACTERSTICAS DA ARQUITETURA CLIENTE / SERVIDOR


Engenharia reversa; Preparao/Adaptao da infra-estrutura; Migrao do Banco de Dados para o servidor; Adaptao do software para rodar no cliente;

ENGENHARIA AVANTE ARQUITETURA ORIENTADA A OBJETOS


Podemos afirmar que uma das arquiteturas mais utilizadas atualmente. Na maioria dos casos, migrar para essa arquitetura ocasiona a reescrita de muito cdigo, quando no todo.

CARACTERSTICAS DA ARQUITETURA ORIENTADA A OBJETOS


Engenharia reversa; Criao de modelos de dados, funcionais e comportamentais; Criao de casos de uso; Modelagem de Classes;

ENGENHARIA AVANTE INTERFACES COM O USURIO


Entender as tarefas realizadas e os dados importantes apresentados; Remodelar o comportamento, sem ser radical; Aplicar melhorias;

CUSTO X BENEFCIO
Anlise custo/benefcio proposta por Sneed: P1 = custo de manuteno anual corrente de uma aplicao P2 = custo de operao anual corrente para uma aplicao P3 = valor de negcio anual corrente de uma aplicao P4 = custo de manuteno anual previsto aps reengenharia P5 = custo de operao anual previsto aps reengenharia P6 = valor de negcio anual previsto aps reengenharia P7 = custo estimado de reengenharia P8 = perodo estimado para reengenharia P9 = fator de risco de reengenharia ( P9 = 1,0 nominal) L = esperana de vida do sistema

CLCULOS DO CUSTO/BENEFICIO
Custo com aplicao atual: Cmanut = [P3 (P1 + P2)] * L Custo com reengenharia: Creeng = [P6 (P4 + P5) * (L P8) (P7 x P9)]

Custo/Benefcio = Creeng - Cmanut

REENGENHARIA
DANIEL GATTAI FRANCISCO RAFAEL LUCAS ALVES

Você também pode gostar