1. 2 reuso estratégico com linhas de produtos de sw implementação de linha de produto no sw...
TRANSCRIPT
![Page 2: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/2.jpg)
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]
![Page 3: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/3.jpg)
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
![Page 5: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/5.jpg)
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.
![Page 6: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/6.jpg)
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
![Page 7: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/7.jpg)
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.
![Page 8: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/8.jpg)
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:
![Page 9: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/9.jpg)
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:
![Page 10: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/10.jpg)
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
![Page 11: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/11.jpg)
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
![Page 13: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/13.jpg)
13
Detecção de Clones: CCFinder
• Classes de NegócioEventsManagerNotesListImpl
NotesListImpl
![Page 14: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/14.jpg)
14
Detecção de Clones: CCFinder Código duplicado entre EventsManager.java e
NoteListImpl.java
![Page 15: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/15.jpg)
15
Detecção de Clones: CCFinder Código duplicado dentro da classe NotesListImpl.java
![Page 16: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/16.jpg)
16
Detecção de Clones: CCFinder
• Classes de UI
EventDialogPreferencesDialog
EventsPanelTaskPanel
![Page 17: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/17.jpg)
17
Detecção de Clones: CCFinder Código duplicado entre as classes EventsPanel.java e
TaskPanel.java
![Page 20: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/20.jpg)
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
--
![Page 21: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/21.jpg)
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).
![Page 22: 1. 2 Reuso Estratégico com Linhas de Produtos de SW Implementação de linha de produto no SW Memoranda Carla Ruiz cvrc@cin.ufpe.br Filipe Motta famb@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022062502/5706384b1a28abb8238f594d/html5/thumbnails/22.jpg)
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.