1. 2 reuso estratégico com linhas de produtos de sw implementação de linha de produto no sw...
TRANSCRIPT
2
Reuso Estratégico com Linhas de Produtos de SW
Implementação de linha de produto no
SW Memoranda
Carla [email protected] [email protected]é Antô[email protected]
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
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
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
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.