Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

6
ResumoEste 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-chaveSistemas Legados. Reengenharia. Padrões de Software. PLoP. RUP. Mapeamento Sistemático. AbstractThrough 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 alto custo 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 a 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, os padrões de software surgem como uma ferramenta capaz de auxiliar o engenheiro de software em um processo de reengenharia. Conforme [7] os 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. 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, bem como uma classificação desses padrões, pode ajudar o engenheiro de software a localizar e identificar rapidamente o melhor padrão a ser utilizado em seu projeto 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, tipo de pesquisas, resultados disponíveis, além de freqüências de publicações ao longo do tempo para identificar tendências [10]. O presente artigo apresenta a pesquisa de [11], na qual foi realizado um mapeamento sistemático, por ser mais adequado ao escopo da mesma, utilizando-se da mesma metodologia de base da revisão sistemática com a intenção de se obter uma revisão rigorosa, confiável e passível de auditoria. O capítulo a seguir apresenta o processo do mapeamento sobre os padrões de reengenharia de sistemas conduzido neste trabalho, bem como analisa os resultados de acordo com as questões de pesquisa previamente definidas. 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 a 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 o consumo de tempo e de esforço, melhorar a qualidade do produto final e, por conseguinte, diminuir 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 de reengenharia em sistemas legados. 2) Objetivo O foco deste mapeamento sistemático foi identificar, Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas E. S. Ramos e M. M. A. Brasil

description

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.

Transcript of Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

Page 1: Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

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 alto custo 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 a 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, os padrões de software surgem como uma ferramenta capaz de auxiliar o engenheiro de software em um processo de reengenharia. Conforme [7] os 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. 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, bem como uma classificação desses padrões, pode ajudar o engenheiro de software a localizar e identificar rapidamente o melhor padrão a ser utilizado em seu projeto 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, tipo de pesquisas, resultados disponíveis, além de freqüências de publicações ao longo do tempo para identificar tendências [10].

O presente artigo apresenta a pesquisa de [11], na qual foi realizado um mapeamento sistemático, por ser mais adequado ao escopo da mesma, utilizando-se da mesma metodologia de base da revisão sistemática com a intenção de se obter uma revisão rigorosa, confiável e passível de auditoria. O capítulo a seguir apresenta o processo do mapeamento sobre os padrões de reengenharia de sistemas conduzido neste trabalho, bem como analisa os resultados de acordo com as questões de pesquisa previamente definidas.

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 a 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 o consumo de tempo e de esforço, melhorar a qualidade do produto final e, por conseguinte, diminuir 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 de reengenharia em sistemas legados.

2) Objetivo

O foco deste mapeamento sistemático foi identificar,

Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

E. S. Ramos e M. M. A. Brasil

Page 2: Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

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 para o engenheiro de software. Pretendendo 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:

Q1. Quais os padrões de reengenharia publicados nas Conferências e Workshops especializados em padrões de software? Q2. Como se classificam os padrões de reengenharia, publicados nas Conferências e Workshops especializados em padrões de software, quanto às disciplinas do processo de engenharia de software RUP? Q3. Os padrões publicados apresentados abordam qual tipo de processo de reengenharia: Engenharia Reversa, Engenharia Avante ou Reestruturação? Q4. Os usos conhecidos dos padrões publicados abordam quais linguagens de programação? Q5. Quais Conferências e Workshops têm apresentado em seus anais padrões para reengenharia de sistemas? Em quais anos? Quem se destaca 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 dos padrões de reengenharia; classificação dos padrões de reengenharia; totalização dos padrões quanto ao tipo de processo de reengenharia; levantamento das linguagens de programação abordadas em padrões de reengenharia; levantamento da evolução das publicações de padrões de reengenharia.

4) Palavras-Chave

As palavras-chave utilizadas como strings de busca foram 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 a pesquisa de fontes primárias foi realizar buscas nos 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

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.

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 e Exclusão dos Estudos

Os critérios definidos para inclusão e exclusã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 E EXCLUSÃO

1 Os estudos devem ter sido publicados nas Conferências e Workshops listados no item 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 que apresentem alguma das strings de busca em seu título,

resumo/abstract ou palavras-chaves; 5 Os estudos devem apresentar a proposta de um ou mais padrões de

reengenharia em sistemas.

7) Critério de Qualidade dos Estudos

A única questão considerada para a qualidade dos estudos é apresentada a seguir na Tabela II. Após a seleção dos estudos, somente foram considerados os padrões que apresentaram a 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, realizado de acordo com o método estabelecido para a pesquisa de fontes primárias, foi avaliado de acordo com os critérios para inclusão e exclusão. Os estudos que se enquadraram nesses critérios foram utilizados para a finalidade do mapeamento sistemático.

9) Método de Extração dos Dados

A extração dos dados foi realizada como descrito abaixo:

a) 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, resumo/abstract e palavras–chave em busca das strings de busca. A busca é registrada por meio de um Formulário de Condução da Revisão;

b) O conjunto de estudos é selecionado a partir da verificação dos critérios de inclusão e exclusão. A seleção (inclusão/exclusã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.

Page 3: Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

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 da Síntese dos Dados

Foi realizada uma meta-análise sobre os dados quantitativos dos estudos. Os dados dos estudos selecionados foram 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 especializadas 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, em 2009 e 2010.

O processo de busca foi executado utilizando as palavras-

chave definidas (subseção 3.4) e seguindo o método de pesquisa de fontes primárias do protocolo (subseção 3.5).

A consulta obteve êxito somente nas seguintes fontes:

• PLoP: 3 estudos encontrados e pré-selecionados. • Sugar Loaf PLoP : 6 encontrados e pré-selecionados. • EuroPLoP: 7 encontrados e pré-selecionados.

Desta forma, 16 estudos foram contabilizados, os quais

foram lidos e verificados através dos critérios de inclusão e exclusão estabelecidos. Dos 16 artigos pré-selecionados, 12 estavam de acordo com todos os critérios previstos 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 exclusão.

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 (Q1 - Quais os padrões de reengenharia publicados nas Conferências e Workshops especializados em padrões de software?) 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] [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.

TABELA III. CATALOGAÇÃO DOS PADRÕES DE REENGENHARIA DE SISTEMAS

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] 35 Keeper 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]

Page 4: Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

2) Resultados obtidos para a questão 2 (Q2- Como se

classificam os padrões de reengenharia, publicados nas Conferências e Workshops especializados em padrões de software, quanto às disciplinas do processo de engenharia de software RUP?) Os padrões foram classificados de acordo com as 9

disciplinas do RUP, observando as características e propostas de cada padrão apresentado, 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 Fig. 1 mostra graficamente a distribuição dos padrões após a classificação realizada.

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 (Q3 - Os padrões

publicados apresentados abordam qual tipo de processo de reengenharia?)

No que se refere ao processo de reengenharia, os padrões

apresentados apresentam o seguinte panorama:

• 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 Fig. 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 que a Engenharia Avante representa 13% e a Reestruturação apenas 5% dos padrões de reengenharia. A publicação de [12] apresenta ainda 05 padrões que não se enquadram nos três processos indicados. Os mesmos tratam da aplicação de diretrizes de qualidade durante o projeto.

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

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

Page 5: Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

Figura 2. Percentual de Padrões por Processo de Reengenharia

4) Resultados obtidos para a questão 4 (Q4 - Os usos conhecidos dos padrões publicados abordam qual tipo de linguagem de programação?)

Foram analisadas nos estudos quais as linguagens de

programação que podem utilizar-se 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. Verificou-se então que as linguagens de programação abordadas nos estudos, de usos conhecidos na aplicabilidade dos padrões de reengenharia, são: Java (02 padrões); Stalmak (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 Fig. 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.

Figura 3. Quantidade de Padrões por Linguagem de Programação

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.

5) Resultados obtidos para a questão 5 (Q5 - Quais Conferências e Workshops têm apresentado publicações com padrões de reengenharia de sistemas? Em quais anos? Quem se destaca em números de estudos e padrões publicados?)

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 conta a Conferência no qual o trabalho foi defendido e o ano de sua publicação. Na Fig. 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 por meio do

Page 6: Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia de Sistemas

processo de mapeamento sistemático, um modo mais amplo de se aplicar uma revisão sistemática.

O mapeamento sistemático foi conduzido por 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 para a realização da pesquisa. A realização de um mapeamento sistemático se mostra uma metodologia eficaz, embora dispendiosa de tempo, que envolve um trabalho árduo de leitura e análise dos estudos primários para se obter respostas às questões levantadas para a pesquisa.

A partir dos resultados obtidos na pesquisa, foi possível responder às questões levantadas. Assim, foi possível realizar a catalogação bibliográfica de 67 padrões relacionados à reengenharia de sistemas, bem como o levantamento dos processos e 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. Acredita-se que a presente pesquisa apresenta benefícios nos seguimentos: acadêmico e 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 as disciplinas do processo 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

Erivan de Sena Ramos é Especialista em Engenharia de Software com Ênfase em Padrões de Software pela UECE - Universidade Estadual do Ceará. Bacharel em Sistemas de Informação pela Universidade Estácio de Sá - Faculdade Integrada do Ceará. Atualmente é Analista de Sistemas na Politec Global IT Services, uma empresa da Indra Company, prestando serviços para o Banco do Nordeste do Brasil. Atua na área de Ciência da Computação, com ênfase em Engenharia de Software, desempenhando atividades relacionadas à análise de requisitos e reengenharia de sistemas.

Marcia Maria Albuquerque Brasil é Mestre em Ciência da Computação da UECE e integrante do Grupo de Otimização em Engenharia de Software da UECE (GOES.UECE). Bacharel em Ciências da Computação pela Universidade Estadual do Ceará UECE, com Especialização em Tecnologias de Banco de Dados pela Universidade de Fortaleza UNIFOR, é Analista de Sistemas do Serviço Federal de Processamento de Dados SERPRO. Atua na área de Ciência da Computação, com ênfase em Engenharia de Software, onde desempenha atividades relacionadas ao desenvolvimento de software nas fases de requisitos e implementação.