1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW...

Preview:

Citation preview

2

Reuso Estratégico com Linhas de Produtos de SW

Implementação de linha de produto no

SW Memoranda

Carla Ruizcvrc@cin.ufpe.brFilipe Mottafamb@cin.ufpe.brJosé Antôniomanso@nti.ufrpe.br

3

Resumo Parte 1

• Memoranda: ferramenta, “open-source” e multi-plataforma que tem o objetivo de gerenciar a programação de projetos pessoais.

• Variação identificada: Funcionalidade de Notas

• Técnicas usadas: Conditional Compilation Properties file Aspects Subtype Polymorphism

4

Modelo de Features

5

Features mais importantes

• Notes Mecanismo:

• Compilação Condicional e Aspectos.

• Event Creation Mecanismo:

• Compilação Condicional. Nova variação:

• Criação de Full Event.

• Idioma Mecanismo:

• Arquivo de Propriedades. Nova variação:

• Idioma português.

6

Extrações: FLIP

• Primeira abordagem Projeto com a técnica de compilação condicional. Extrair aspectos com o FLIP. Funcionalidade Add FLIP Nature não funcionou corretamente.

• Segunda abordagem Criar novo projeto de tipo FLIP. Extraír a feature da interface gráfica:

WorkPanel.java AppFrame.java PreferencesDialog.java

7

Restruturação

• Refactorings: Nas aplicações que trabalham com Swing, em muitos

casos a ordem não é importante e essa característica foi aproveitada para fazer alguns refactorings.• Exemplo:

• O código não podía ser removido com aspectos então foi colocado no final do método para usar o extractor After Execution.

8

Restruturação

• Refactorings: Foram acrescentados/alterados vários métodos para

darem suporte a novas variações implementadas em novos pontos de variações. Segue abaixo alguns exemplos de codigos acrescentados e alterados:

9

Dificuldades

• Ferramenta FLIP: Instalação do plug-in Trechos de código que não podiam ser removidos com aspectos e

não podia ser feito um refactoring porque a ordem era importante.• Exemplos:

10

Dificuldades

• Ferramenta FLIP (cont): Foi determinado que a ordem de extração dos elementos é

importante.• Ex: o seguinte trecho de código não podia ser extraído:

porque a propriedade JMenuEdit já tinha sido removida ao aspecto:

• Mudando a ordem de extração o código foi extraído sem problemas. Dificuldade em extrair os aspectos a partir de um projeto já criado e

alterado, mesmo utilizando a opção Add/Remove Feature Nature

• Ferramenta CCFinder: Instalação da ferramenta

11

Detecção de Clones: CCFinder

• Abordagem: Divisão das classes do projeto em grupos:

• Classes de Negócio

• Classes de UI

• Classes de UTIL

Default minimum code length: 60Default minimum TKS (size of token set): 14

Default minimum code length: 70Default minimum TKS (size of token set): 14

Default minimum code length: 50Default minimum TKS (size of token set): 12

12

Detecção de Clones: CCFinder

• Projeto completo

13

Detecção de Clones: CCFinder

• Classes de NegócioEventsManagerNotesListImpl

NotesListImpl

14

Detecção de Clones: CCFinder Código duplicado entre EventsManager.java e

NoteListImpl.java

15

Detecção de Clones: CCFinder Código duplicado dentro da classe NotesListImpl.java

16

Detecção de Clones: CCFinder

• Classes de UI

EventDialogPreferencesDialog

EventsPanelTaskPanel

17

Detecção de Clones: CCFinder Código duplicado entre as classes EventsPanel.java e

TaskPanel.java

18

Detecção de Clones: CCFinder

• Classes de UTIL

AppList

19

Detecção de Clones: CCFinder Código duplicado dentro da classe AppList.java

20

Atividades: Tempo

Atividade Técnica Tempo

Identificação de features 3 horas

Desenho do modelo de features

1 hora

Identificação de clones e análise

4 horas

Extração da feature Notas FLiP 6 horas

Inclusão do ponto de variação (Novo idioma)

Manualmente ½ hora

Adição da variação Events CC 4 horas

Reestruturação dos pontos de variação

--

Montagem do configuration knowledge

--

21

Conclusões

• O FLIP é mais útil quando a variação é mais homogênea. A variação de Notas está espalhada pelo código.

• Foi complicado usar a ferramenta FLIP e podemos

concluir que neste caso não é recomendável seu uso.

• Foi menos complicado extrair os aspectos manualmente (como foi feito na primeira parte do projeto).

22

Conclusões

• Acrescentar novos pontos de variações e suas consequentes variações exige bem mais trabalho que acrescentar uma nova variação em um ponto já existente.

Recommended