Buscar

698429_artigo_padroes

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 6 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 6 páginas

Prévia do material em texto

Um Mapeamento Sistemático sobre Padrões de 
Software para Reengenharia de Sistemas
Erivan de Sena Ramos 
Universidade Estadual do Ceará (UECE) 
Fortaleza, CE, Brasil 
Marcia Maria Albuquerque Brasil 
Universidade Estadual do Ceará (UECE) 
Fortaleza, CE, Brasil 
 
Resumo— Este trabalho teve como objetivo investigar, 
catalogar e classificar os padrões para reengenharia de sistemas 
publicados em conferências e workshops PLoP (Pattern 
Languages of Programs), por meio de um estudo de mapeamento 
sistemático. Além da catalogação bibliográfica, o estudo apresenta 
a totalização dos padrões quanto ao tipo de processo de 
reengenharia; o levantamento das linguagens de programação 
abordadas, as Conferências e Workshops onde os padrões foram 
publicados, bem como a evolução das publicações por ano. 
Quanto à classificação, os padrões de reengenharia foram 
categorizados de acordo com as disciplinas do RUP (Rational 
Unified Process). 
Palavras-chave— Sistemas Legados. Reengenharia. Padrões de 
Software. PLoP. RUP. Mapeamento Sistemático. 
Abstract— Through a systematic mapping studies, this 
work aimed to investigate, catalog and classify the patterns 
for systems reengineering published in conferences and 
workshops PLoP (Pattern Languages of Programs). In addition to 
cataloging literature, the study presents the aggregation of 
standards regarding the type of process reengineering, 
the survey of programming languages discussed, as well as 
conferences and workshops and the development of publications 
per year. Regarding classification, patterns of reengineering were 
categorized according to the disciplines of the RUP (Rational 
Unified Process). 
Keywords— Legacy Systems. Reengineering. Software 
Patterns. PLoP. RUP. Systematic Mapping Studies. 
I. INTRODUCÃO 
As organizações têm um custo alto de dinheiro quando 
investem em um software e, para que haja um retorno 
financeiro satisfatório, este software é utilizado por muitos 
anos [1]. Em contrapartida, o software é um produto que deve 
estar em constante evolução de acordo com mudanças nas 
regras de negócio das organizações, necessidade de melhoria 
do processo produtivo ou adequação do produto ou serviço que 
utiliza tecnologia da informação [2]. A esses softwares 
utilizados ao longo do tempo pelas organizações dá-se o nome 
de sistemas legados. Tais sistemas normalmente não possuem 
documentação, ou possuem documentação desatualizada. 
Esses, dentre outros fatores, dificultam e aumentam o custo da 
manutenção dos mesmos; incentivando os pesquisadores a 
buscarem soluções que facilitem a redução dos custos com 
manutenção [3]. Quando um importante sistema legado não 
tem mais capacidade de suportar as mudanças em seus 
requisitos, comumente, é submetido ao processo de 
reengenharia [4], que consiste em um processo de análise de 
sistemas legados que identifica e representa seus componentes 
em um nível mais alto de abstração [5]. A reengenharia de 
sistemas apresenta-se como um dos maiores desafios para os 
engenheiros de software, pois, embora trate um problema 
comum e persistente nas organizações, seus resultados 
interferem diretamente na continuidade dos negócios das 
mesmas [6]. 
Diante desse contexto, padrões de software podem surgir 
como uma ferramenta capaz de auxiliar o engenheiro de 
software em um processo de reengenharia. Padrões de software 
são descrições que aconselham soluções práticas para 
determinado problema; podendo ser aplicados durante a 
modelagem e codificação de um software, de acordo com o 
contexto e as circunstâncias apresentadas [7]. Os padrões de 
software aplicados na reengenharia visam registrar o 
conhecimento sobre como modificar softwares legados, ajudam 
a diagnosticar problemas, e identificam as soluções mais 
apropriadas aos novos requisitos [8]. Nesse sentido, uma 
catalogação bibliográfica e uma classificação desses padrões 
podem ajudar o engenheiro de software na localização e 
identificação de padrões a serem utilizados em projetos de 
reengenharia de software. 
II. MAPEAMENTO SISTEMÁTICO 
O mapeamento sistemático é um tipo de revisão 
sistemática, onde se realiza uma revisão mais ampla dos 
estudos primários, em busca de identificar quais evidências 
estão disponíveis, bem como identificar lacunas no conjunto 
dos estudos primários onde seja direcionado o foco de revisões 
sistemáticas futuras e identificar áreas onde mais estudos 
primários precisam ser conduzidos [9]. O estudo de 
mapeamento sistemático fornece uma visão geral de uma área 
de pesquisa, identificando a quantidade, os tipos de pesquisas 
realizadas, os resultados disponíveis, além das freqüências de 
publicações ao longo do tempo para identificar tendências [10]. 
A catalogação bibliográfica e a classificação dos padrões de 
software para reengenharia de sistemas propostas neste 
trabalho foram realizadas através de um mapeamento 
sistemático [11]. O mapeamento sistemático mostrou ser a 
forma mais adequada aos objetivos do estudo e se utilizou da 
mesma metodologia de base da Revisão Sistemática, com a 
intenção de ser uma revisão formal, rigorosa, confiável e 
passível de auditoria. A seção a seguir apresenta o mapeamento 
sistemático sobre os padrões para reengenharia, conduzido 
neste trabalho. O processo de planejamento do estudo é 
discutido em detalhes por meio de um protocolo; a condução 
do trabalho também é descrita; assim como os resultados 
obtidos são apresentados, analisados e discutidos. Por fim, a 
seção IV apresenta as considerações finais deste trabalho. 
III. MAPEAMENTO SITEMÁTICO SOBRE PADRÕES DE 
SOFTWARE PARA REENGENHARIA DE SISTEMAS 
A. Planejamento – Definição do Protocolo 
 
 
1) Descrição do Problema 
Para que os sistemas legados se mantenham alinhados às 
expectativas dos negócios das organizações, é necessário que 
haja constantemente manutenção e evolução dos mesmos. 
Devido à criticidade existente em projetos que prevêem a 
manutenção ou evolução de um sistema legado, a utilização de 
Padrões de Software apresenta-se como uma alternativa viável 
no sentido de minimizar os riscos, o consumo de tempo e de 
esforço, melhorar a qualidade do produto final e, por 
conseguinte, reduzir os custos financeiros do projeto à 
organização. Para diminuir a dificuldade de entendimento e 
utilização, se faz necessário um esquema de organização dos 
padrões existentes, que tratam processos de reengenharia em 
sistemas legados. 
2) Objetivo 
O foco deste mapeamento sistemático é identificar, 
catalogar, e classificar os padrões de software documentados 
para reengenharia, com o intuito de contribuir de forma 
substancial no entendimento dos mesmos e torná-los de fácil 
consulta e utilização pelo engenheiro de software. Pretende 
realizar ainda um levantamento dos padrões publicados por 
tipo de processo, linguagem de programação, 
conferências/workshops e ano de publicação. 
3) Questões de Pesquisa 
As questões a serem respondidas ao final da pesquisa são: 
Questão 1. Quais os padrões para reengenharia de sistemas 
publicados em Conferências e Workshops especializados em 
padrões de software? 
Questão 2. Como se classificam os padrões de reengenharia, 
quanto às disciplinas do processo de engenharia de software 
RUP? 
Questão 3. Os padrões publicados apresentados abordam qual 
tipo de processo de reengenharia: Engenharia Reversa, 
Engenharia Avante ou Reestruturação? 
Questão 4. Os usos conhecidos dos padrões publicados 
incluem quais linguagens de programação? 
Questão 5. Quais Conferências e Workshops têm apresentado 
em seus anais padrões para reengenharia de sistemas? Em 
quais anos? Quais se destacam em números de estudos e 
padrões publicados? 
 
População: Publicações contendo Padrões de Software. 
Intervenção: Padrões de Software para Reengenharia. 
Resultados: Catalogação bibliográfica dospadrões de 
reengenharia; classificação dos padrões de reengenharia quanto 
às disciplinas do RUP; totalização dos padrões quanto ao tipo 
de processo de reengenharia; levantamento das linguagens de 
programação utilizadas; levantamento da evolução das 
publicações que envolvem padrões de reengenharia. 
4) Palavras-Chave 
As palavras-chave utilizadas como strings de busca são as 
seguintes: sistema legado; software legado; aplicação legada; 
padrão de reengenharia; engenharia reversa; engenharia avante; 
reestruturação; reengenharia; legacy system; reengineering 
pattern; reverse engineering; forward engineering; 
restructuring; e reengineering. 
5) Método utilizado para pesquisa de Fontes Primárias 
O método utilizado para o levantamento de fontes primárias 
compreendeu a realização de buscas em anais das conferências 
PLoP (Pattern Languages of Programs), grupo de conferências 
anuais apoiadas pelo The Hillside Group1, com o objetivo de 
desenvolver e aperfeiçoar a arte de padrões de projeto de 
software: PLoP – Conference On Pattern Languages Of 
Programs; Sugarloaf PLoP – Conferência Latino-Americana 
em Linguagens de Padrões para Programação; EuroPLoP - 
European Conference On Pattern Languages Of Programs; 
Meta EuroPLoP; Asian PLoP - Asian Conference On Pattern 
Languages Of Program; ParaPLoP - Workshop on Parallel 
Programming Patterns; Scrum PLoP; Viking PLoP - Nordic 
Conference On Pattern Languages Of Programs; PEAM - 
European Workshop on Patterns for Enterprise Architecture 
Management; ChiliPloP; KoalaPLoP e MensorePLoP. 
6) Critérios para inclusão dos Estudos 
Os critérios definidos para inclusão dos estudos são 
apresentados a seguir na Tabela I. Os estudos que não 
atenderam aos critérios abaixo descritos foram 
desconsiderados. 
TABELA I. CRITÉRIOS DE INCLUSÃO 
1 Os estudos devem ter sido publicados nas Conferências e Workshops 
listados no item III.A.5. 
2 Os estudos devem estar escritos em inglês ou português; 
3 Os estudos devem estar disponíveis na web; 
4 Os estudos devem apresentar alguma das strings de busca em seu título, 
resumo/abstract ou palavras-chave; 
5 Os estudos devem apresentar a proposta de um ou mais padrões, ou 
ainda de uma linguagem de padrões para reengenharia em sistemas. 
 
7) Critério de Qualidade dos Estudos 
O critério apresentado a seguir na tabela II define a 
qualidade dos estudos previamente selecionados. Após a 
seleção dos estudos, somente são considerados os padrões que 
apresentam uma descrição completa do mesmo, garantindo 
dessa forma a integridade do resultado da revisão. 
TABELA II. CRITÉRIO DE QUALIDADE 
1 Os estudos apresentam padrões de reengenharia documentados em um 
formato de escrita de padrões, descritos de forma explícita e 
organizada. 
 
8) Método de Avaliação dos Estudos 
Cada estudo, analisado de acordo com o método 
estabelecido para a pesquisa de fontes primárias, é avaliado de 
acordo com os critérios para inclusão. Os estudos que se 
enquadram nesses critérios são utilizados para a finalidade da 
revisão sistemática. 
9) Método de Extração dos Dados 
A extração dos dados é realizada como descrito abaixo: 
a) O pesquisador aplica a estratégia de pesquisa para 
identificar os potenciais estudos primários. A identificação 
dos estudos primários é realizada por meio da leitura do 
título, do resumo/abstract e das palavras–chave em busca 
das strings de busca. A busca é registrada por meio de um 
Formulário de Condução da Revisão; 
b) Um conjunto de estudos é selecionado a partir da 
1
 O The Hillside Group (http://hillside.net/) promove o uso, registro, análise e 
suporte às novas práticas de linguagens de padrões de software. 
 
 
verificação dos critérios de inclusão e de qualidade. A 
seleção (inclusão) dos estudos é feita por meio de uma 
leitura superficial dos estudos primários, tendo como foco 
identificar os critérios estabelecidos. A etapa de seleção é 
documentada em um Formulário de Seleção dos Estudos. 
c) Todos os estudos incluídos como resultados da pesquisa 
inicial são revisados, inteira e minuciosamente, por outro 
pesquisador. 
d) Os resultados são revisados por todos os pesquisadores 
envolvidos e quaisquer desacordos são discutidos e 
resolvidos. 
e) Os resultados da revisão, que conta com os detalhes das 
pesquisas realizadas nos estudos primários selecionados, 
são registrados em um Formulário de Extração dos Dados. 
10) Método de Síntese dos Dados 
Uma meta-análise sobre os dados quantitativos dos estudos 
é realizada. Os dados dos estudos selecionados são 
comparados, com a finalidade de realçar as similaridades e 
diferenças entre os estudos de acordo com as questões da 
pesquisa. 
B. Condução da Revisão 
Dentre as fontes definidas inicialmente no protocolo 
somente não foi possível obter acesso aos anais das 
Conferências ChiliPloP; KoalaPLoP; e MensorePLoP. Desta 
forma, a busca foi realizada em 57 Anais de 9 tipos de 
Conferências e Workshops especializados em Padrões de 
Software, conforme detalhado a seguir: 
• PLoP: 17 edições, entre 1994 e 2004; 
• Sugarloaf PLoP: 08 edições, entre 2001 e 2010; 
• EuroPLoP: 16 edições, entre 1996 e 2011; 
• Meta EuroPLoP: 01 edição em 2011; 
• Asian PLoP: 01 edição em 2010; 
• ParaPLoP: 03 edições, entre 2009 e 2011 
• Scrum PLoP: 02 edições, entre 2010 e 2011; 
• Viking PLoP: 07 edições, entre 2002 e 2008; e 
• PEAM: 02 edições, entre 2009 e 2010. 
 
O processo de busca foi executado utilizando as palavras-
chave definidas (subseção III.A.4) e seguindo o método de 
pesquisa de fontes primárias do protocolo (subseção III.A.5). 
A consulta obteve êxito somente nas seguintes fontes: 
• PLoP: 3 estudos encontrados e pré-selecionados. 
• Sugar Loaf PLoP : 6 estudos encontrados e pré-
selecionados. 
• EuroPLoP: 7 estudos encontrados e pré-selecionados. 
 
Desta forma, 16 estudos foram contabilizados, os quais 
foram lidos e verificados através dos critérios de inclusão 
estabelecidos. Dos 16 artigos pré-selecionados, 12 estavam de 
acordo com o critério de qualidade previsto no protocolo de 
revisão e tiveram seus dados extraídos e analisados. Os 4 
estudos excluídos não atendiam ao critério de inclusão e 
qualidade. 
C. Apresentação, Análise e Discussão dos Resultados 
Aqui são respondidas as questões de pesquisa delineadas no 
planejamento da revisão. Nos 12 estudos selecionados, 67 
padrões para reengenharia foram identificados. 
1) Resultados obtidos para a Questão 1 
TABELA III. CATALOGAÇÃO DOS PADRÕES DE REENGENHARIA 
 
Id Título Referência 
1 Preparar o Processo de Reengenharia [12] 
2 Planejar o Processo de Reengenharia 
3 Acompanhar o Progresso de Reengenharia 
4 Realizar Inspeção de Garantia de Qualidade 
5 Controlar a Configuração 
6 Elaborar Lista de Procedimentos e Funções 
7 Elaborar Lista de "Chama/Chamado Por" 
8 Modelar Dados do Software Legado 
9 Criar Lista de Anomalias 
10 Criar Visão OO de Dados 
11 Criar Diagramas de Caso de Uso do MASA 
12 Descrever Casos de Uso do MASA 
13 Abstrair Diagrama de Pseudo-Classes 
14 Criar Diagramas de Caso de Uso do MAS 
15 Descrever Casos de Uso do MAS 
16 Elaborar Diagrama de Classes de Projeto 
17 Construir Diagramas de Sequência 
18 Implementar as Classes 
19 Implementar a Lógica de Armazenamento 
20 Implementar a Lógica de Apresentação 
21 Speculate about Domain Objects [13] 
22 Reconstruct the Persistent Data 
23 Identify the Largest 
24 Recover the Refactorings 
25 Tie Code and Questions [14] 
26 Transform Self Conditional to Subclassing [15] 
27 Transform Client Conditional to Polymorphism 
28 Apply State 
29 Apply Null Object 
30 Type Check Elimination in a Provider Hierarchy [4] 
31 Type Check Elimination in Clients 
32 The Bridge to the New Town [16] 
33 Reengineering for Parallelism [17] 
34 Mile-Wide, Inch Deep [18] 
35Keeper of the Flame 
36 Archetype 
37 Iniciar Análise dos Dados [5] 
38 Definir Chaves 
39 Identificar Relacionamentos 
40 Criar Visão OO dos Dados 
41 Obter Cenários 
42 Construir Diagramas de Use Cases 
43 Elaborar a Descrição de Use Cases 
44 Tratar Anomalias 
45 Definir as Classes 
46 Definir Atributos 
47 Analisar Hierarquias 
48 Definir Métodos 
49 Construir Diagramas de Seqüência 
50 Definir hierarquia Chama/Chamado [3] 
51 Identificar Casos de Uso 
52 Identificar Supostas Classes e Supostos Atributos 
53 Identificar Supostos Métodos 
54 Identificar Relacionamentos 
55 Identificar Cardinalidades 
56 Criar Supostas Classes e Supostos Atributos 
57 Alocar Supostos Métodos nas Supostas Classes 
58 Criar Especificações das Classes e dos Atributos 
59 Criar Especificações dos Métodos 
60 Criar Casos de Uso 
61 Criar Diagrama de Seqüência 
62 Criar Especificações dos Relacionamentos e 
Cardinalidades 
63 Definir Plataforma [6] 
64 Converter o Banco de Dados 
65 Implementar Métodos 
66 Realizar Melhorias de Interface 
67 Reverse Variability Engineering [19] 
 
 
Foi realizada a catalogação bibliográfica dos 67 padrões 
selecionados no mapeamento sistemático, a qual é apresentada 
na Tabela III. Alguns estudos, [13] e [18], ainda citavam 
padrões com suas descrições incompletas, os quais foram 
desconsiderados para não afetarem as questões de pesquisa do 
mapeamento sistemático. 
2) Resultados obtidos para a Questão 2 
Os padrões foram classificados de acordo com as nove 
disciplinas do RUP, observando-se as características e 
propostas de cada padrão apresentado, e relacionado-os com os 
propósitos e atividades realizadas em cada disciplina. Não 
foram levadas em consideração as linguagens ou grupos dos 
padrões, somente suas características individuais. A Figura 1 
mostra graficamente a distribuição dos padrões. 
 
Figura 1. Porcentagem de Padrões por Disciplina do RUP 
Observa-se que a disciplina Análise e Projeto, com o 
percentual de 66%, abrange o maior número dos padrões de 
reengenharia, seguida da disciplina Requisitos com 13%. Já as 
disciplinas Testes e Implantação não são apresentadas no 
gráfico porque não envolvem nenhum padrão de reengenharia 
selecionado durante o mapeamento sistemático. A 
classificação dos padrões por disciplina do RUP é apresentada 
na Tabela IV. O número identificador (Id) corresponde a 
seqüência definida na Tabela 3. 
TABELA IV. CLASSIFICAÇÃO DOS PADRÕES DE REENGENHARIA POR 
DISCIPLINA DO RUP 
3) Resultados obtidos para a Questão 3. 
 
Na reengenharia de sistemas, podem ser aplicados os 
seguintes processos [20]: 
• Engenharia Reversa: Processo de análise que tem por 
finalidade criar a representação do sistema em um 
nível mais alto de abstração. Identifica os componentes 
do sistema e suas relações e cria a representação lógica 
do sistema. 
• Engenharia Avante: Processo de desenvolvimento de 
software que visa partir de um nível de abstração alto e 
chegar ao nível mais baixo. Realiza a implementação 
física a partir dos modelos lógicos e projeto do sistema. 
• Reestruturação: Transformação de uma forma de 
representação para outra no mesmo nível de abstração, 
preservando a funcionalidade e semântica do sistema. 
 
Os padrões identificados no mapeamento sistemático 
apresentam o seguinte panorama no que se refere ao processo 
Análise e Projeto 6 Elaborar Lista de Procedimentos e Funções 
7 Elaborar Lista de "Chama/Chamado Por" 
8 Modelar Dados do Software Legado 
9 Criar Lista de Anomalias 
10 Criar Visão OO de Dados 
13 Abstrair Diagrama de Pseudo-Classes 
16 Elaborar Diagrama de Classe do Projeto 
17 Construir Diagramas de Sequência 
21 Speculate about Domain Objects 
22 Reconstruct the Persistent Data 
23 Identify the Largest 
24 Recover the Refactorings 
26 Transform Self Conditional to Subclassing 
27 Transform Client Conditional to Polymorphism 
28 Apply State 
29 Apply Null Object 
30 Type Check Elimination in a Provider 
Hierarchy 
31 Type Check Elimination in Clients 
33 Reengineering for Parallelism 
34 Mile-Wide, Inch Deep 
35 Keeper of the Flame 
36 Archetype 
37 Iniciar Análise dos Dados 
38 Definir Chaves 
39 Identificar Relacionamentos 
40 Criar Visão OO dos Dados 
41 Obter Cenários 
44 Tratar Anomalias 
45 Definir as Classes 
46 Definir Atributos 
47 Analisar Hierarquias 
48 Definir Métodos 
49 Construir Diagramas de Seqüência 
50 Definir hierarquia Chama/Chamado 
52 Identificar Supostas Classes e Supostos 
Atributos 
53 Identificar Supostos Métodos 
54 Identificar Relacionamentos 
55 Identificar Cardinalidades 
56 Criar Supostas Classes e Supostos Atributos 
57 Alocar Supostos Métodos nas Supostas Classes 
58 Criar Especificações das Classes e dos 
Atributos 
59 Criar Especificações dos Métodos 
61 Criar Diagrama de Seqüência 
62 Criar Especificações dos Relacionamentos e 
Cardinalidades 
67 Reverse Variability Engineering 
Disciplina Id Padrão 
Modelagem de Negócios 1 Preparar o Processo de Reengenharia 
Requisitos 11 Criar Diagramas de Caso de Uso do MASA 
12 Descrever Casos de Uso do MASA 
14 Criar Diagramas de Caso de Uso do MAS 
15 Descrever Casos de Uso do MAS 
41 Obter Cenários 
42 Construir Diagramas de Use Cases 
43 Elaborar a Descrição de Use Cases 
51 Identificar Casos de Uso 
60 Criar Casos de Uso 
Gerência de Projeto 2 Planejar o Processo de Reengenharia 
3 Acompanhar o Progresso de Reengenharia 
4 Realizar Inspeção de Garantia de Qualidade 
Implementação 18 Implementar as Classes 
19 Implementar a Lógica de Armazenamento 
20 Implementar a Lógica de Apresentação 
25 Tie Code and Questions 
64 Converter o Banco de Dados 
65 Implementar Métodos 
66 Realizar Melhorias de Interface 
Ambiente 63 Definir Plataforma 
Configuração e Gerência 
de Mudança 
5 Controlar a Configuração 
32 The Bridge to the New Town 
 
 
de reengenharia: 
• Total de Padrões de Engenharia Reversa: 49; 
• Total de Padrões de Engenharia Avante: 10; 
• Total de Padrões de Reestruturação: 3. 
 
A Figura 2 representa de forma clara o quanto a Engenharia 
Reversa é o processo predominante abordado nas publicações, 
representando 73% dos padrões apresentados e incluídos na 
pesquisa, enquanto a Engenharia Avante representa 13% e a 
Reestruturação apenas 5% dos padrões de reengenharia. 
Em [12], são apresentados ainda 05 padrões que não se 
enquadram nos três processos indicados, pois os mesmos 
tratam da aplicação de diretrizes de qualidade durante o 
projeto. 
 
 
Figura 2. Percentual de Padrões por Processo de Reengenharia 
 
4) Resultados obtidos para a Questão 4. 
 
Foram analisadas nos estudos quais as linguagens de 
programação que podem se utilizar dos padrões de 
reengenharia. 
Dos 67 padrões selecionados durante o mapeamento 
sistemático, 28% não citam ou não especificam uma linguagem 
de programação nos usos conhecidos do padrão. Nos demais 
verificou-se então que as linguagens de programação 
abordadas nos estudos, de usos conhecidos na aplicabilidade 
dos padrões de reengenharia, foram: Java (02 padrões); 
SmallTalk (07 padrões); C/C++ (11 padrões); Ada (11 
padrões); Clipper (17 padrões); COBOL (17 padrões); RPGII 
(17 padrões); e Delphi (20 padrões) 
A Figura 3 apresenta a quantidade de padrões que podem 
ser empregados por cada linguagem de programação. Enquanto 
a linguagem de programação Delphi abrange uma maior 
quantidade de padrões de reengenharia, totalizando 20 padrões, 
a linguagem Java apresenta a menor abrangência com apenas 2 
padrões. Em geral, nota-se uma predominância de linguagens 
de programação procedurais. 
Vale ressaltar que, embora alguns padrões apresentem 
como uso conhecido uma linguagem de programação 
específica, nada impede que o mesmo padrão seja adaptado 
para ser utilizado por outra linguagem. 
O estudo de[12] apresenta um bom exemplo disso, no qual 
os 20 padrões de reengenharia apresentados foram 
originalmente desenvolvidos para serem usados em um sistema 
desenvolvido na linguagem Clipper e depois foram 
instanciados para softwares implementados em Delphi. 
 
 
Figura 3. Quantidade de Padrões por Linguagem de Programação 
 
5) Resultados obtidos para a Questão 5. 
 
De acordo com os estudos selecionados, foi verificada a 
periodicidade das publicações sobre o tema analisado, bem 
como, o ranking dos padrões publicados, levando em 
consideração a Conferência e o ano em que o trabalho foi 
publicado e o ano de sua publicação. Na Figura 4, pode-se 
verificar a evolução do número de publicações com padrões de 
reengenharia. Pode-se inferir que o número de publicações tem 
sido pequena, com exceção do ano de 2000 (um único trabalho 
foi o responsável, pois apresentou uma linguagem de padrões) 
e 2003. Também é importante ressaltar que a EuroPLoP 
apresenta um maior número publicações relacionadas ao tema 
pesquisado. 
 
 
Figura 4. Estudos publicados por ano. 
 
Quando se refere à quantidade de padrões apresentados nos 
artigos selecionados, a Fig. 5 mostra que o ano de 2003 
apresentou maior número. Conclui-se ainda que em se tratando 
de quantidade de padrões de reengenharia apresentados, o 
 
 
SugarLoafPLoP se destaca com o maior número de 
publicações. 
 
Figura 5. Padrões apresentados por ano 
 
Totalizando os anos de 2002 e 2003, o SugarLoafPLoP 
apresentou 50 padrões de reengenharia em 4 publicações; 
enquanto o EuroPLoP apresentou 16 padrões em 7 publicações 
(1998, 2000 e 2009) e o PLoP apresentou apenas 1 padrão 
(2005) sobre o tema. 
IV. CONCLUSÃO 
Este trabalho teve por objetivo avaliar os padrões de 
software para reengenharia de sistemas através de um processo 
de mapeamento sistemático, um modo mais amplo de se aplicar 
uma revisão sistemática. 
O mapeamento sistemático foi conduzido por meio de um 
protocolo de revisão que especificou os métodos utilizados 
durante a condução do trabalho. Os critérios definidos no 
protocolo foram necessários e suficientes para se obter os 
estudos primários necessários à realização da pesquisa. O 
mapeamento sistemático se mostrou uma metodologia eficaz, 
embora dispendiosa de tempo, que envolveu um trabalho árduo 
de leitura e análise dos estudos primários a fim de se obter 
respostas às questões levantadas para a pesquisa. 
A partir dos resultados obtidos, foi possível responder às 
questões levantadas. Desta forma, foi possível realizar a 
catalogação bibliográfica de 67 padrões relacionados à 
reengenharia de sistemas, bem como o levantamento dos 
processos de reengenharia envolvidos e as linguagens de 
programação abordadas, além da classificação dos padrões 
selecionados de acordo com as disciplinas do processo de 
engenharia de software RUP. Assim, acredita-se que esta 
pesquisa apresenta benefícios tanto no seguimento acadêmico 
como profissional. 
No que diz respeito ao benefício acadêmico, os 
levantamentos quanto à linguagem de programação e ao 
processo de reengenharia apontam quais as áreas necessitam de 
mais pesquisas. No que se refere à linguagem de programação 
(levando em consideração os padrões que identificaram as 
linguagens de programação abordadas), verificou-se que há um 
menor número de padrões que atendem à reengenharia de 
linguagens de programação orientadas a objetos. Quanto ao 
processo de reengenharia, padrões para a Engenharia Avante e 
para a Reestruturação estão em menor número (necessitando 
talvez de uma maior atenção por parte dos pesquisadores), 
enquanto que padrões que tratam de Engenharia Reversa são a 
maioria. No que diz respeito ao benefício profissional, a 
catalogação bibliográfica, bem como a classificação realizada, 
beneficiam o engenheiro de software no momento da seleção 
dos padrões a serem utilizados em um projeto de reengenharia. 
Deste modo, este trabalho apresenta-se como uma fonte de 
consulta a padrões de reengenharia de sistemas, onde é possível 
eleger os padrões mais adequados e de acordo com a disciplina 
do processo RUP de engenharia de software. 
REFERÊNCIAS 
[1] I. Sommerville, “Engenharia de Software”, 8ª. ed., São Paulo: Addison-
Wesley, 2007. 
[2] E. P. Zanlorenci, R. C. Burnett, “Abordagem da Engenharia de 
Requisitos para Software Legado”, in: VI Workshop em Engenharia de 
Requisitos, Piracicaba- SP, 2003. 
[3] D. R. Peres, A. Alvaro, V. Fontanette, V. C. Garcia, A. F. Prado, R. T. 
V. Braga, “TB-REPP - Padrões de Processo para a Engenharia Reversa 
baseado em Transformações”, in: Sugar Loaf PLoP 2003, Porto de 
Galinhas- PE, 2003. 
[4] S. Ducasse, R. Nebbe, T. Richner, “Type-Check Elimination: Two 
Reengineering Patterns”, in: EuroPLoP 1998, Irsee, Germany, 1998. 
[5] E. L. Recchia, R. Penteado, “FaPRE/OO: Uma Família de Padrões para 
Reengenharia Orientada a Objetos de Sistemas Legados 
Procedimentais”, in: Sugar Loaf PLoP, Rio de Janeiro, 2002. 
[6] E. L. Recchia, G. S. Lemos, R. Penteado, R. T. V. Braga, “Padrões para 
o Processo de Engenharia Avante na Reengenharia Orientada a Objetos 
de Sistemas Legados Procedimentais”, in: Sugar Loaf PLoP 2003, 
Porto de Galinhas-PE, 2003. 
[7] C. Larman, “Utilizando UML e Padrões”, 3ª ed., São Paulo: Bookman, 
2005. 
[8] G. S. Lemos, “PRE/OO – Um Processo de Reengenahria Orientada a 
Objetos com Ênfase na Garantia da Qualidade”, 171f. Dissertação 
(Mestre em Ciência da Computação) – Universidade Federal de São 
Carlos, São Carlos, 2002. 
[9] B. Kitchenham, “Procedures for Performing Systematic Reviews”, 
Technical Report Software Engineering Group, Keele University, 
Australia, 2004. 
[10] K. Petersen, R. Feldt, S. Mujtaba, M. Mattsson, “Systematic Mapping 
Studies in Software Engineering”, in: 12th International Conference on 
Evaluation and Assessment in Software Engineering, Australia, 2008. 
[11] E. S. Ramos, M. M. A. Brasil, “Um Mapeamento Sistemático sobre 
Padrões de Software para Reengenharia de Sistemas”, 80f. Monografia 
(Especialização em Engenharia de Software com Ênfase em Padrões de 
Software) – Universidade Estadual do Ceará, Fortaleza-CE, 2011. 
[12] G. S. Lemos, E. Recchia, R. Penteado. R. Braga, “Padrões de 
Reengenharia auxiliados por Diretrizes de Qualidade de Software”, in: 
SugarLoafPLoP 2003, Porto de Galinhas- PE, 2003. 
[13] S. Demeyer. S. Ducasse, O. Nierstrasz, “A Pattern Language for 
Reverse Engineering”, in: EuroPLoP 2000, Irsee – Germany, 2000. 
[14] S. Demeyer, S. Ducasse, O. Nierstrasz, “Tie Code And Questions: a 
Reengineering Pattern”, in: EuroPLoP 2000, Irsee – Germany, 2000. 
[15] S. Demeyer, S. Ducasse, O. Nierstrasz, “Transform Conditionals: a 
Reengineering Pattern Language”, in: EuroPLoP 2000, Irsee – 
Germany, 2000. 
[16] W. Keller, “The Bridge to the New Town - A Legacy System Migration 
Pattern”, in: EuroPLoP 2000, Irsee-Germany, 2000. 
[17] B. Massingill, T. Mattson, B. Sanders, “Reengineering for Parallelism: 
An Entry Point into PLPP (Pattern Language for Parallel Programming) 
for Legacy Applications”, in: PLoP 2005, Monticello, Illinois, USA, 
2005. 
[18] A. O’Callaghan, “Patterns for Architectural Praxis”, in: EuroPLoP 
2000, Irsee, NYrmany, 2000. 
[19] Schütz, “Reverse Variability Engineering”, in: EuroPLoP 2009, 
Bavaria-Germany, 2009 
[20] E. Chikofsky, J. Cross II. Reverse Engineering and Design Recovery: A 
Taxonomy. IEEE Software, v. 7, n. 1, 1990.

Outros materiais