45
Apresentação dos Resultados Obtidos Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Embed Size (px)

Citation preview

Page 1: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Apresentação dos Resultados Obtidos

Reuso Estratégico de Linhas de Produtos de Software

Rodrigo Cardoso (rcaa2)

Page 2: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Sistema desenvolvidoSituação Inicial

Page 3: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Sistema para gerenciamento de pesquisas e grupo científico.◦ Cadastrar membro◦ Editar publicação◦ Remover linha de pesquisa◦ ...

Desenvolvido integralmente para a disciplina de Reuso Estratégico com Linhas de Produtos de Software

Projeto Escolhido

Page 4: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Existência de um produto Todas as features eram obrigatórias

Situação inicial

Existência de uma linha de produtos Features essenciais são obrigatórias, as

demais são opcionais ou alternativas

Situação final

Page 5: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Sistema funcionando

Page 6: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Feature Model

Page 7: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Modelo inicial

Page 8: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Modelo final

Page 9: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Modelo final

Page 10: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Configuration Knowledge

Page 11: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Feature Arquivos

Linha de Pesquisa

BuscarLinhaPesquisaServlet.javaCadastrarLinhaPesquisaServlet.javaControleLinhaPesquisa.javaEditarLinhaPesquisaServlet.javaLinhaPesquisa.javaLinhaPesquisaAspect.ajLinhaPesquisaDAO.javaRemoverLinhaPesquisaServlet.javacadastrar_linhapesquisa.jspbuscar_linhapesquisa.jspeditar_linhapesquisa.jsplinha_detalhada.jsplinhas_pesquisa.jsp

Configuration Knowledge (1)

Page 12: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Feature ArquivosGerar PDF de publicação AspectPDF.ajAssociar projeto de pesquisa AssociarProjetoAux.aj

Associar projeto de pesquisa || Projeto de pesquisa

ControleProjetoPesquisa.javaProjetoPesquisa.javaProjetoPesquisaAspect.ajProjetoPesquisaDAO.javaProjetoPesquisaServlet.java

Projeto de pesquisa cadastrar_projetopesquisa.jspIdioma = Português Flag ‘lang_pt’ ativada

Messages_pt_BR.propertiesIdioma = Inglês Flag ‘lang_pt’ desativada

Messages_en_US.properties

Configuration Knowledge (2)

Page 13: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Feature ArquivosRemover publicação AspectPublicacao.ajGerar lista de publicações = PDF

Flag ‘lista_pdf’ ativada

Gerar lista de publicações = BibTeX

Flag ‘lista_pdf’ desativada

Configuration Knowledge (3)

Page 14: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Casos de uso

Page 15: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)
Page 16: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Implementação

Page 17: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Java◦ Servlets◦ Java Server Pages◦ JDBC◦ Biblioteca fileupload 1.2◦ Biblioteca iText 1.0.2

Banco de dados◦ MySql

Container◦ Tomcat 6.0

Tecnologias

Page 18: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Visão geral do projeto

Page 19: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Linha de Produto de Software

Apresentação das técnicas utilizadas

Page 20: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação

Page 21: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação (Situação Inicial) (1)

Page 22: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação Análise (1)

◦ Textos e mensagens da aplicação definidos dentro do jsp.

◦ Em caso de alguma mudança, identificação do local correto era custoso

◦ Técnica aplicada: Criação de um arquivo de propriedades

Contendo todos os textos da aplicação

Page 23: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação Implementação da Solução (1)

Page 24: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação Análise (2)

◦ Uma nova variação foi proposta: a aplicação também teria que ser em inglês.

◦ Como a aplicação já foi refatorada com arquivo de propriedades, fica tudo mais simples

◦ Técnica aplicada: Criação de outro arquivo de propriedades

Possui as mesmas propriedades, mas com valores escritos em inglês.

Compilação condicional para seleção do idioma desejado

Page 25: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação Implementação da Solução (2)

Page 26: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação Implementação da Solução (3)

Page 27: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Idioma padrão da aplicação Implementação da Solução (4)

Page 28: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Linha de pesquisa

Page 29: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Linha de pesquisa Análise (1)

◦ Modularização do código da feature opcional◦ Como?

◦ Técnica aplicada: Criação de um aspecto Uso de compilação condicional

Page 30: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Linha de pesquisa Implementação da Solução (1)

Page 31: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Linha de pesquisa Implementação da Solução (2)

Page 32: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Linha de pesquisa Implementação da Solução (3)

Page 33: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Observações Análise (2)

◦ A mesma técnica (aspectos) foi utilizada para implementar outras features opcionais: Gerar PDF da publicação Associar projeto de pesquisa Remover publicação

◦ Compilação condicional foi usada para implementar features alternativas: Gerar lista de publicações: PDF e BibTeX

Page 34: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Features extraídas

Page 35: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Análise ◦ Features que eram obrigatórias tornam-se

opcionais◦ Necessária a extração◦ Uso da ferramenta FLIP

Técnica aplicada: Aspectos

Remover publicação

Page 36: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Implementação da Solução (1)

Remover publicação

Page 37: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Implementação da Solução (2)

Remover publicação

Page 38: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Implementação da Solução (1)

Gerar PDF da publicação

Page 39: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Implementação da Solução (2)

Gerar PDF da publicação

Page 40: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Geração de build

Page 41: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Solução Encontrada

Page 42: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Análise Crítica

Page 43: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Muito tempo investido na implementação da aplicação

Difícil lidar com o Hephaestus◦ Não há documentação sobre padrão dos

documentos de entrada◦ Difícil encontrar os erros

A legibilidade do código diminuiu significativamente, principalmente para iniciantes

Observações importantes (1)

Page 44: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

AspectJ e Compilação Condicional com o Antenna têm limitações importantes para desenvolvimento web

Como resultado, poucas coisas precisam ser alteradas para adaptar o produto de acordo com a demanda

Observações importantes (2)

Page 45: Reuso Estratégico de Linhas de Produtos de Software Rodrigo Cardoso (rcaa2)

Apresentação dos Resultados Obtidos

Reuso Estratégico de Linhas de Produtos de Software