X Salão de Iniciação Científica
PUCRS
Engenharia de Domínio baseada na Reengenharia de
Sistemas Legados
Cássia Zottis¹, Profa. Dra. Ana Paula Terra Bacelo1 (orientadora)
1
Faculdade de Informática, PUCRS
Resumo
Sistemas legados existentes num domínio costumam ser uma das fontes de informação essenciais para a análise de domínio de aplicações. Embora seja reconhecida a importância desses sistemas durante a Engenharia de Domínio (ED), os métodos de ED existentes não oferecem suporte a sua análise, ficando a cargo do engenheiro de domínio a condução dessa atividade, que acaba sendo custosa, dado o volume de informação dos sistemas legados. Dessa forma, este projeto de pesquisa visa integrar um processo de Engenharia de Domínio com um processo de análise de sistemas legados, propiciando a reengenharia destes sistemas para uma Arquitetura de Domínio baseada em tecnologia de componentes. Esta integração será desenvolvida com base em processos sistemáticos de avaliação e recuperação de informação dos sistemas legados, guiados por técnicas e ferramental já desenvolvidos, bem como pelo uso da tecnologia de Desenvolvimento Baseado em Componentes (DBC) para construção da Arquitetura de componentes do domínio.
Introdução
A construção de um software resulta num conjunto de artefatos, incluindo modelos, que muitas vezes podem ser utilizados em outra aplicação semelhante. É baseado neste fato que dentro da Engenharia de Software existe uma área denominada reutilização de software.
A reutilização de artefatos também aumenta quando a mesma ocorre no contexto de um domínio de aplicações. Neste sentido, a Engenharia de Domínio (ED) se preocupa com a identificação e modelagem de características comuns e variáveis em aplicações de um dado domínio, gerando como resultado modelos de domínio (e.g. casos de uso de domínio, classes do domínio) que podem ser reutilizados em aplicações específicas (PRIETO-DIAZ & ARANGO, 1991).
O Engenheiro de Domínio é quem constrói modelos de domínio com o apoio oferecido por processos de ED. Processos de ED, geralmente, compreendem as fases de análise, projeto e implementação. Na fase de análise, é feito o levantamento dos requisitos do domínio, normalmente especificados através de modelos de características. Na etapa de projeto, modelos de análise são refinados visando à construção de uma arquitetura do domínio, conhecida como Arquitetura de Software Específica para Domínios ou como DSSA (Domain Specific Software Architecture) (SHAW & GARLAN, 1996). Por último, a fase de implementação visa à geração de código fonte para a arquitetura gerada no projeto do domínio.
Os sistemas legados também representam umas das fontes de informação essenciais para a Engenharia de Domínio (ED) (Kang, 1990). Porém, apesar desse reconhecimento, os métodos de ED existentes (ex: FODA (Kang et al., 1990), FORM (Kang et al., 2002), FeatuRSEB (GRISS et al., 1998), CBD-Arch-DE (Bacelo, 2006)) dão maior apoio à engenharia progressiva durante a ED, não focando na análise desses sistemas existentes. Sistemas existentes há muito tempo nas empresas, i.e. sistemas legados, não costumam apresentar uma documentação atualizada de apoio, requerendo o suporte de uma abordagem de engenharia reversa para guiar a sua análise (Vasconcelos, 2007). No entanto, sistemas legados representam altos esforços e custos já investidos, além de conterem informações essenciais sobre o negócio que muitas vezes não podem ser obtidas de nenhuma outra fonte de informação disponível.
Tendo em vista esta problemática, este projeto de pesquisa visa integrar um processo de engenharia de domínio progressiva com um processo de engenharia reversa, com o objetivo de identificar os artefatos do domínio para a obtenção da DSSA.
Metodologia
Este projeto de pesquisa tem uma parceria com o projeto REUSE II, com a COPPE/UFRJ, o qual é coordenado pela Profa. Dra. Cláudia Werner. No projeto REUSE II são desenvolvidas pesquisas sobre engenharia de domínio e engenharia reversa, os quais apresentam resultados na forma de protótipos construídos dentro do ambiente de reutilização Odyssey. Outro parceiro deste projeto de pesquisa é o CEFET-Campos, mais especificamente o grupo de pesquisa em engenharia reversa.
Pós Graduação em engenharia de sistemas e computação da COPPE/UFRJ. Dentre as pesquisas desenvolvidas estão as teses de doutorado da Profa. da FACIN – Ana Paula Terra Bacelo (Bacelo, 2006) e da Profa. do CEFET CAMPOS – Aline Pires Vieira de Vasconcelos. Na tese de doutorado da Profa. Ana Paula foi desenvolvido um processo de Engenharia de domínio para construção de uma arquitetura do domínio baseada em componentes de software. Na tese da Profa. Aline foi proposto um processo de engenharia reversa com o objetivo de recuperar elementos arquiteturais de sistemas legados para a construção de uma DSSA. Neste contexto, este projeto de iniciação científica visa desenvolver/adaptar funcionalidades dentro do ambiente Odyssey com o intuito de integrar os processos acima mencionados.
As atividades desenvolvidas neste projeto de iniciação científica foram:
- Estudo da literatura a respeito de Engenharia de Domínio: Para a realização deste projeto foi necessário o estudo sobre uma série de termos relacionados à Engenharia de Domínio, como por exemplo:
• Reutilização de software à forma eficiente de aumentar a produtividade de diminuir os custos;
• Arquitetura de Componentes (DSSA) à conjunto de componentes a nível da aplicação, suas relações estruturais e dependências;
• Desenvolvimento Baseado em Componentes à DBC oferecem sistemáticas para o desenvolvimento de componentes reutilizáveis;
• Variabilidade à aspectos configuráveis que devem ser considerados para a realização de um projeto;
• Engenharia Reversa à técnica usada para obter o código fonte do projeto a partir do arquivo já compilado.
- Estudo da Tese de Doutorado da Professora Ana Paula Terra Bacelo onde é descrito o processo de Engenharia de domínio que foi implementado no ambiente Odyssey; Com o estudo da tese (Bacelo, 2006), foi possível a compreensão do processo CBD-Arch-DE e de suas três fases: Análise, projeto e implementação. O processo ainda é composto por cinco elementos:
1. Variabilidades e opcionalidades dos artefatos do domínio: mantém a consistência das variabilidades e opcionalidades dos requisitos funcionais do domínio. Assim, a cada decisão de geração de componentes e distribuição dos
mesmos em elementos arquiteturais, devem ser respeitadas tais propriedades que determinam os diferentes produtos derivados de um domínio;
2. Heurística para auxiliar a geração de artefatos do domínio: indica a necessidade de sistemáticas que auxiliem na criação e especificação de artefatos do domínio;
3. Requisitos não funcionais como critérios para escolha de um estilo arquitetural: a identificação dos estilos arquiteturais a serem utilizados na especificação da AR é baseada nos requisitos funcionais e não funcionais do domínio;
4. Critérios para a organização de componentes do domínio: a organização de componentes do domínio é baseada em elementos arquiteturais;
5. Geração de componentes de implementação: usando a abordagem Odyssey-MDA, é executada a transformação dos componentes lógicos em outros componentes, implementados em uma tecnologia em particular.
- Instalação e análise do ambiente Odyssey; O ambiente Odyssey é um projeto que está fisicamente instalado em um servidor da COPPE, no Rio de Janeiro. Foi implementado por um grupo de alunos de iniciação científica e de pós-graduação. Portanto para ajudar na implementação do mesmo, foi necessária a utilização da ferramenta de CVS (Control Version Systems), a qual permite que se trabalhe com diversas versões de arquivos, mantendo-se as versões antigas e os registros de quando e quem manipulou os arquivos, com as políticas de
check in e check out. Tal ferramenta é útil, pois possibilita o controle das diversas versões que
o projeto assume progressivamente.
- Desenvolvimento de funcionalidades no Odyssey conforme solicitações definidas pela coordenação do projeto: A coordenação do projeto definiu que algumas regras para mapeamentos entre os diferentes artefatos do domínio deveriam ser desenvolvidas, em particular o mapeamento entre casos de uso do domínio e características conceituais deste domínio. Estas regras de mapeamento foram identificadas e posteriormente implementadas dentro do ambiente Odyssey. Neste caso, atualmente, através de um processo de Engenharia Reversa é possível mapear os casos de uso de um determinado domínio para as suas respectivas características funcionais. Esta funcionalidade implementada foi incorporada ao ambiente Odyssey o qual possui outras funcionalidades já implementadas que permitem o desenvolvimento de outras atividades inerentes aos processos de Engenharia de Domínio e
A tabela abaixo mostra as heurísticas implementadas as quais efetuam o mapeamento de casos de uso em características funcionais.
Descrição Imagem
Um caso de uso pode ser mapeado para uma característica funcional
Para cada estereótipos do tipo <<variation point>> e <<variant>> deve existir uma característica funcional com ponto de variação e suas variantes
Para cada relacionamento de <<include>> nos casos de uso deve existir um relacionamento de composição entre as características funcionais
Para casos de uso relacionados por herança, devem existir características funcionais relacionadas da mesma forma
Para cada caso de uso com sua pré-condição, deve existir uma regra de composição do tipo “requer”
envolvendo características funcionais
Para cada estereótipo do tipo << optional >> a opcionalidade é transportada para a característica funcional
Para cada estereótipo do tipo << XOR>> deve existir uma regra de composição do tipo “excluir”
Para cada relacionamento entre ator e caso de uso, deve existir um
relacionamento de
<<Communication Link>> entre as características Funcionais
Tabela 1.1: Mapeamento de Casos de Uso para Características Funcionais
- Desenvolvimento de um protótipo para o domínio de sistemas acadêmicos: para avaliar as novas funcionalidades desenvolvidas neste projeto PIBIC e outras também desenvolvidas simultaneamente na COPPE e no CEFET Campos, foi desenvolvido um protótipo de um sistema acadêmico. O objetivo é que cada parceiro do projeto (PUCRS, COPPE e CEFET Campos), desenvolvesse o seu sistema acadêmico, considerando a realidade local e que, após concluído, fosse feita a Engenharia Reversa (ER) destes sistemas. Como resultado desta ER, é possível identificar as características que são comuns aos três sistemas e suas respectivas variabilidades. A análise destas variabilidades está em desenvolvimento pela equipe de bolsistas do CEFET campos. O protótipo desenvolvido pela equipe de bolsistas da PUCRS foi feito em linguagem Java, com persistência de dados através de arquivos serializados. Foi utilizada uma interface gráfica a qual permite a entrada de alunos/professores/coordenadores. Além disso, permite a inserção de alunos, professores, cursos, disciplinas e turmas. As figuras abaixo mostram as opções de tarefas do sistema acadêmico e interfaces de adicionar de turmas e alunos.
Figura 1.1: Interface para criação de nova turma
Figura 1.2: Interface para inserção de aluno, de consulta e de exclusão
Resultados
Foi desenvolvido algumas funcionalidades na ferramenta Odyssey as quais permitem integrar o processo de Engenharia de domínio CBD-Arch-DE com o processo de engenharia Reversa. O resultado deste trabalho deverá ser a criação de uma nova arquitetura do domínio obtendo, portanto, uma DSSA.
Outro resultado obtido foi um exemplo de sistema acadêmico o qual permite neste estudo a identificação de características comuns e variáveis entre aplicações de um mesmo
domínio. Através desta experiência poderemos verificar se as funcionalidades adicionadas à ferramenta Odyssey permitem de fato a reconstrução de uma arquitetura baseada em componentes a partir de sistemas legados.
Conclusão
Concluímos que foi uma experiência bastante significativa trabalhar em projetos de pesquisa na forma de bolsista, permitindo aprimoramento de conhecimento, de trabalho em equipe, de utilização de recursos até então desconhecidos - como, por exemplo, o CVS - de trabalhar em grandes projetos como o Odyssey e de leitura de material científico, o qual contempla o estudo sobre ED, reutilização de software, arquitetura de domínio, DBC, entre outros.
Acreditamos que até o momento tenham sido desenvolvidas funcionalidades que atendem as especificações do projeto e que possam ser úteis para apoiar o processo de reutilização de sistemas legados.
Referências
BACELO, A. P. T., Uma Abordagem de Projeto Arquitetural Baseado em Componentes no Contexto de Engenharia de Domínio. Porto Alegre: PUCRS, 2006. Tese (Doutorado em Informática), Faculdade de Informática, Pontifícia Universidade Católica do Rio Grande do Sul, 2006.
BACELO, A.P. T., Engenharia de Domínio baseada na Reengenharia de Sistemas Legados. Porto Alegre: PUCRS, 2006.
HORSTMANN
, C., Big Java. Porto Alegre: Bookman. 2006.VASCONCELOS, A., Uma Abordagem de apoio à Criação de Arquitetura de Referência de Domínio baseadas na Análise de Sistemas Legados. Rio de Janeiro: UFRJ, 2007. Tese (Doutorado em Engenharia de Sistemas e Computação), Faculdade de Engenharia de Sistemas, Universidade Federal do Rio de Janeiro, 2007.