Escolar Documentos
Profissional Documentos
Cultura Documentos
REENGENHARIA
UMA ATIVIDADE DE RECONSTRUO
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.
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.
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
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
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.
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\"",
" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
);
connection = DriverManager.getConnection(
config.getInitParameter( "databaseName" ), config.getInitParameter( "username" ), config.getInitParameter( "password" ) );
int value =
Integer.parseInt( request.getParameter( "animal" ) ); String sql;
resultsRS.close();
try {
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 );
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 ); }
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
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
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;
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)]
REENGENHARIA
DANIEL GATTAI FRANCISCO RAFAEL LUCAS ALVES