SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
Linhas de
Produtos
de Software

Jadson Santos
Natal, Outubro de 2013

S
Linhas de Produtos de Software
S  Alguém vê alguma similaridade entre

esses produtos?
Linhas de Produtos de Software
S  Além de você comer e engordar!
Linhas de Produtos de Software
S  E variabilidades?
Linhas de Produtos de Software
S  Por que será que as empresas de fast

food fazem isso?
Linhas de Produtos de Software
S  Por que será que as empresas de fast

food fazem isso?
Linhas de Produtos de Software
S  E parece que essa ideia não é nova
Linhas de Produtos de Software
S  Será que na fabricação de automóveis, eles

precisam refazer o projeto toda vez que algum
cliente escolhe uma opção de motorização ou
o tipo de câmbio?
Linhas de Produtos de Software
S  Cada modelo tem algumas personalizações

que podem ser escolhidas pelo cliente

Câmbio	
  Manual	
  ou	
  
Automá0co	
  

Motor	
  1.0,	
  1.6	
  ou	
  2.0	
  

Pintura:	
  Verde,	
  
Amarela,	
  Roxo,	
  ou	
  Azul	
  
Anil	
  
Linhas de Produtos de Software
S  Eu tenho a ligeira impressão que não. Porque

eles usam a ideia de linha de produtos.
S  Então o que seria Linhas de Produto afinal?

Vamos primeiro olhar o conceito de reuso na
Engenharia do Software.
Linhas de Produtos de Software
S  Engenharia de Software
S  Objetivo central da Engenharia de Software é propor
métodos, técnicas e ferramentas para o
desenvolvimento de software com custo
relativamente baixo, de qualidade e com
produtividade.
S  Um dos caminhos mais promissores para promover
qualidade e produtividade em engenharia de software
é em 1º lugar o Reuso, em 2º lugar o Reuso e em 3º
lugar o Reuso.
Linhas de Produtos de Software
S  Evolução do Reuso em Software
S  Existem vários tipos de reuso do desenvolvimento de
software, por exemplo:
S  Reuso de Código:
S  Spring, Hibernate, JSF, EJB, Bibliotecas, API,
Frameworks, etc...
S  Reuso do de projeto:
S  MVC, DAO, Strategy, etc..
S  Reuso de hardware:
S  Virtualização, etc.
Linhas de Produtos de Software
S  Limitações das Técnicas do Reuso
S  Técnicas de reuso tradicionais de software
promovem reuso horizontal e localizado.
S  O que é reuso horizontal e localizado?
Linhas de Produtos de Software
S  É você chegar para um cliente de dizer: “O

meu software é muito bom porque ele usa EJB na
camada de negócio para fazer transação e não
deixar os dados inconsistentes”.
Linhas de Produtos de Software
S  Reuso horizontal e localizado
Linhas de Produtos de Software
S  Linhas de produto de software permitem o

reuso estratégico em torno do negócio da
empresa e seus clientes.
S  O que é reuso estratégico e em torno do

negócio ?
Linhas de Produtos de Software
S  É você chegar para um cliente e falar: “O meu

software tem cinco tipos diferentes de pagamentos que
contemplam a maioria das regras de negócio de
pagamentos existentes no Brasil, se o da sua empresa
for diferente, um sexto tipo pode ser criado.”
Linhas de Produtos de Software
S  Reuso estratégico e em torno do negócio
Linhas de Produtos de Software
S  Linhas de produtos são o próximo nível de

modularização (reuso) de software.
Linhas de Produtos de Software
S  Mas o que são LPS?
S  Linha de produto de software (Software Product
Line) é uma família de sistemas compartilhando
um conjunto de características (features) comuns e
que mantém outro conjunto características
específicas que variam em cada produto da linha,
satisfazendo um segmento específico de mercado.
Linhas de Produtos de Software
S  Processando ....
Linhas de Produtos de Software
S  O que significa ser uma família de sistema

satisfazendo um segmento específico de
mercado?
S  Significa que não adianta tentar fazer uma linha de

produtos entre um sistema web e o jogo Call of Duty.
Nesse caso mantenha dois softwares separados, acredite é
mais fácil!
Linhas de Produtos de Software
S  O que é essa tal de característica? (Ou como é mais

comum “feature”) ?
S  Feature é uma funcionalidade que é comum ou variável

na linha. As features variáveis são as que distinguem um
produto de outro na linha.
S  Feature pode ser um caso de uso, um conjunto de
classes, apenas uma classe, um método, um trecho de
um método, qualquer coisa que diferencia um produto
de outro na linha.
Linhas de Produtos de Software
S  Mas porque a gente usa esse negócio de LPS

mesmo?
Linhas de Produtos de Software
S  Linhas de Produtos tentam organizar a

mesma coisa de uma forma mais gerenciável.

core	
  

configuration
knowledge	
  

features	
  

Derivação do Produto

produtos	
  
Linhas de Produtos de Software
S  Mas esse negócio de LPS existe na vida

real? Ou é só no mundo do faz de conta?
Linhas de Produtos de Software
S  Eclipse
No caso do
eclipse as
variabilidades da
linha são
realizadas com o
uso de plug-ins.
Linhas de Produtos de Software
S  Android
Uma boa técnica
para se usar com
Android é a
compilação
condicional
Linhas de Produtos de Software
S  Sistemas Web

Podem usar
Parâmetros de
Configuração,
Templates de
estilo e Padrões de
Projeto
Linhas de Produtos de Software

Conceitos
Linhas de Produtos de Software
S  Tipos de Feature :
S  Obrigatórias: Estão em todos os produtos (login)
S  Opcionais: Podem ou não estar em um produto
(reserva de materiais na biblioteca)
S  Alternativas: exatamente uma das features deve
estar no produto (modo de autenticação: banco ou
ldap)
S  Or-features: um subconjunto das features pode estar
no produto (punição por atraso na biblioteca)
Linhas de Produtos de Software
S  Feature Model:

Feature Obrigatória

Feature Alternativa

Feature Opcional

Or-feature
Linhas de Produtos de Software
S  Abordagens na Construção de uma LPS:
S  Proativa
S  Construir desde o começo todos os produtos da

linha (Requer $$$$).
S  Extrativa
S  As variações já existem no produto utilizado, então

elas são apenas extraídas(organizadas) para se criar
a linha
S  Reativa
S  A medida que surge a necessidade, as features são

criadas gerando-se um novo produto na linha
Linhas de Produtos de Software
S  Variation Points
S  Lugares onde a variação ocorre no sistema
S  Configuration knowledge
S  Mapeamento entre features e artefatos do
código
S  Feature Model
S  Modelo em forma de árvore muito usado para
documentar as variabilidades de uma linha.
Linhas de Produtos de Software
S  Derivação do Produto
S  Processo que cria um produto da linha
(normalmente é automatizado)
S  Fases
S  Engenharia de Domínio
S  Os artefatos são preparados da serem reutilizado

como features da linha (identificando as partes
comuns e variáveis)
S  Engenharia de Aplicação
S  Instancia-se um produto reutilizando os artefatos
criados da ED.
Linhas de Produtos de Software

Mais Complexidade
Linhas de Produtos de Software
S  LPS não envolve apenas as equipes de

desenvolvido
S  Como realizar a elicitação de requisitos de uma

LPS?
S  Será que todas as variabilidades existentes estão
sendo testadas?
Linhas de Produtos de Software
S  Vantagens na Adoção de Linhas de Produto:
S  Redução dos custos de desenvolvimento
S  Aumenta da Qualidade
S  Redução do time-to-market (ciclos de
desenvolvimento mais curtos para a implantação
de um sistema em um novo cliente)
S  Redução dos esforços de manutenção.
S  Evolução Organizada
Linhas de Produtos de Software
S  Desvantagens na Adoção de Linhas de

Produto:
S  Grande investimento inicial $$$
S  Requer uma Engenharia Experiente
S  Requer Maior Gerenciamento Técnico e

Organizacional
Linhas de Produtos de Software
S  Quando não é recomendado usar?
S  Domínio não estável
S  Uma quantidade muito grande de variabilidade
entre os produtos da linha (50%, 60%, 70% das
funcionalidades são diferentes)
Linhas de Produtos de Software
S  O mais complicado em LPS é como

implementar as variabilidades existentes na
sua linha de produtos
S  Compilação Condicional
S  Execução Condicional
S  Programação Orientada a Aspectos
S  Orientação a Objetos, Padrões de Projeto

Polimorfismo, Frameworks, etc.
Linhas de Produtos de Software
S  O Padrão “Execução Condicional”
S  Definição bem simples:
S  Padrões de Projetos para isolar as variabilidades +

Parâmetros para decidir qual a variabilidade será
executa no momento.
Linhas de Produtos de Software
S  O Padrão “Execução Condicional”
S  A parametrização do sistema não é usada apenas
para definir valores de negócio variável
S  Padrões de Projetos são usados junto com os
parâmetros para definir variabilidades bem mais
complexas
Linhas de Produtos de Software
S  Exemplo: Feature “Punição” do Módulo de

Bibliotecas do SIGAA
S  Padrões de Projeto Layer Super Type + Factory +

Strategy + Parâmetros de Configuração
S  Todo o sistema só interage com a estratégia
genérica PunicaoAtrasoEmprestimoStrategy e a
inteface PunicaoAtrasoEmprestimoBiblioteca.
Linhas de Produtos de Software
S  Feature “Punição” do Módulo de Bibliotecas do

SIGAA
S  A classe

PunicaoAtrasoEmprestimoStrategyFactory
instancia e retorna a estratégia a ser usada de acordo
com o tipo de variabilidade configurada: Multa ou
Supensão.
S  Todo o cálculo e lógica de négocio de cada
variabilidade estão localizados dentro da estratégia,
sem que as classes clientes precisem conhecer qual
estratégia está sendo utilizanda.
Linhas de Produtos de Software
S  Feature “Punição” do Módulo de Bibliotecas

do SIGAA
S  Hoje qualque novo tipo punição que inventarem,

pode ser facilmente adicionado ao sistema
implementando-se apenas uma nova estratégia, sem
impacto em nenhuma outra parte de sistema
Linhas de Produtos de Software
S  Feature “Punição” do Módulo de Bibliotecas

do SIGAA
S  A feature “Punição” da biblioteca está realicionada,

entre outros, com os Casos de Uso “Realizar
Empréstimo”, “Renovar Empréstimo” e “Devolver
Empréstimo”.
S  E os pontos de váriação estão localizados em
diversos artefatos do sistema, como
ProcessadorRealizaEmprestimo.java e até mesmo
a JSP menu_discente.jsp
Linhas de Produtos de Software
S  Feature “Punição” do Módulo de Bibliotecas

do SIGAA
Linhas de Produtos de Software
S  Quer saber mais ?
S  Conditional Execution: A Pattern for the Implementation

of Fine-Grained Variabilities in Software Product Lines
S  http://www.slideshare.net/jadsonjs/conditional-execution
S  http://jadsonjs.wordpress.com/2013/05/25/conditional-

execution-a-pattern-for-the-implementation-of-fine-grainedvariabilities-in-software-product-lines/
Linhas de Produtos de Software

Desafio
Linhas de Produtos de Software
S  Desafio
S  Alguns sistemas de grande porte possuem certos
módulos nos quais é perfeitamente possível aplicar
técnicas de LPS
S  Contudo, outros módulos do mesmo sistema não
formam uma LPS, seja porque os clientes possuem
regras diferentes ou porque o domínio ainda não está
estável.
S  Esses módulos são dependentes entre si.
Linhas de Produtos de Software
S  Desafio
S  Como garantir que os módulos que usam LPS
possam evoluir de forma organizada sem que os
módulos não LPS, que vão evoluir distintamente
em cada produto da linha, atrapalhem?
S  Como isolar as dependências entre os módulos
“não LPS” e os LPS de tal forma que mudanças
em um módulo não conflitem com os demais
módulos?
Linhas de Produtos de Software
S  Desafio

Módulos LPS

Módulos não LPS
Linhas de Produtos de Software
Linhas de Produtos de Software
S  Desafio
S  Esse isolamento é relativamente fácil de ser
realizado na abordagem proativa, contudo muito
complexo para sistemas em produção
S  A literatura pouco retrata técnicas de isolamento
ou evolução dos artefatos de uma LPS quando o
cenário não é o ideal.
Linhas de Produtos de Software
Linhas de
Produtos de
Software
Imagens retiradas da internet

Jadson Santos
jadsonjs@gmail.com
Linhas de
Produtos
de Software

Jadson Santos
Natal, Outubro de 2013

S

Weitere ähnliche Inhalte

Mehr von Jadson Santos

Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed LockJadson Santos
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...Jadson Santos
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizadaJadson Santos
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFJadson Santos
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 PresentationJadson Santos
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Jadson Santos
 

Mehr von Jadson Santos (13)

Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Java8
Java8Java8
Java8
 
Gradle
GradleGradle
Gradle
 
Git
GitGit
Git
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizada
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSF
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 Presentation
 
Enums
EnumsEnums
Enums
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
 

Apresentação lps para publicar

  • 1. Linhas de Produtos de Software Jadson Santos Natal, Outubro de 2013 S
  • 2. Linhas de Produtos de Software S  Alguém vê alguma similaridade entre esses produtos?
  • 3. Linhas de Produtos de Software S  Além de você comer e engordar!
  • 4. Linhas de Produtos de Software S  E variabilidades?
  • 5. Linhas de Produtos de Software S  Por que será que as empresas de fast food fazem isso?
  • 6. Linhas de Produtos de Software S  Por que será que as empresas de fast food fazem isso?
  • 7. Linhas de Produtos de Software S  E parece que essa ideia não é nova
  • 8. Linhas de Produtos de Software S  Será que na fabricação de automóveis, eles precisam refazer o projeto toda vez que algum cliente escolhe uma opção de motorização ou o tipo de câmbio?
  • 9. Linhas de Produtos de Software S  Cada modelo tem algumas personalizações que podem ser escolhidas pelo cliente Câmbio  Manual  ou   Automá0co   Motor  1.0,  1.6  ou  2.0   Pintura:  Verde,   Amarela,  Roxo,  ou  Azul   Anil  
  • 10. Linhas de Produtos de Software S  Eu tenho a ligeira impressão que não. Porque eles usam a ideia de linha de produtos. S  Então o que seria Linhas de Produto afinal? Vamos primeiro olhar o conceito de reuso na Engenharia do Software.
  • 11. Linhas de Produtos de Software S  Engenharia de Software S  Objetivo central da Engenharia de Software é propor métodos, técnicas e ferramentas para o desenvolvimento de software com custo relativamente baixo, de qualidade e com produtividade. S  Um dos caminhos mais promissores para promover qualidade e produtividade em engenharia de software é em 1º lugar o Reuso, em 2º lugar o Reuso e em 3º lugar o Reuso.
  • 12. Linhas de Produtos de Software S  Evolução do Reuso em Software S  Existem vários tipos de reuso do desenvolvimento de software, por exemplo: S  Reuso de Código: S  Spring, Hibernate, JSF, EJB, Bibliotecas, API, Frameworks, etc... S  Reuso do de projeto: S  MVC, DAO, Strategy, etc.. S  Reuso de hardware: S  Virtualização, etc.
  • 13. Linhas de Produtos de Software S  Limitações das Técnicas do Reuso S  Técnicas de reuso tradicionais de software promovem reuso horizontal e localizado. S  O que é reuso horizontal e localizado?
  • 14. Linhas de Produtos de Software S  É você chegar para um cliente de dizer: “O meu software é muito bom porque ele usa EJB na camada de negócio para fazer transação e não deixar os dados inconsistentes”.
  • 15. Linhas de Produtos de Software S  Reuso horizontal e localizado
  • 16. Linhas de Produtos de Software S  Linhas de produto de software permitem o reuso estratégico em torno do negócio da empresa e seus clientes. S  O que é reuso estratégico e em torno do negócio ?
  • 17. Linhas de Produtos de Software S  É você chegar para um cliente e falar: “O meu software tem cinco tipos diferentes de pagamentos que contemplam a maioria das regras de negócio de pagamentos existentes no Brasil, se o da sua empresa for diferente, um sexto tipo pode ser criado.”
  • 18. Linhas de Produtos de Software S  Reuso estratégico e em torno do negócio
  • 19. Linhas de Produtos de Software S  Linhas de produtos são o próximo nível de modularização (reuso) de software.
  • 20. Linhas de Produtos de Software S  Mas o que são LPS? S  Linha de produto de software (Software Product Line) é uma família de sistemas compartilhando um conjunto de características (features) comuns e que mantém outro conjunto características específicas que variam em cada produto da linha, satisfazendo um segmento específico de mercado.
  • 21. Linhas de Produtos de Software S  Processando ....
  • 22. Linhas de Produtos de Software S  O que significa ser uma família de sistema satisfazendo um segmento específico de mercado? S  Significa que não adianta tentar fazer uma linha de produtos entre um sistema web e o jogo Call of Duty. Nesse caso mantenha dois softwares separados, acredite é mais fácil!
  • 23. Linhas de Produtos de Software S  O que é essa tal de característica? (Ou como é mais comum “feature”) ? S  Feature é uma funcionalidade que é comum ou variável na linha. As features variáveis são as que distinguem um produto de outro na linha. S  Feature pode ser um caso de uso, um conjunto de classes, apenas uma classe, um método, um trecho de um método, qualquer coisa que diferencia um produto de outro na linha.
  • 24. Linhas de Produtos de Software S  Mas porque a gente usa esse negócio de LPS mesmo?
  • 25. Linhas de Produtos de Software S  Linhas de Produtos tentam organizar a mesma coisa de uma forma mais gerenciável. core   configuration knowledge   features   Derivação do Produto produtos  
  • 26. Linhas de Produtos de Software S  Mas esse negócio de LPS existe na vida real? Ou é só no mundo do faz de conta?
  • 27. Linhas de Produtos de Software S  Eclipse No caso do eclipse as variabilidades da linha são realizadas com o uso de plug-ins.
  • 28. Linhas de Produtos de Software S  Android Uma boa técnica para se usar com Android é a compilação condicional
  • 29. Linhas de Produtos de Software S  Sistemas Web Podem usar Parâmetros de Configuração, Templates de estilo e Padrões de Projeto
  • 30. Linhas de Produtos de Software Conceitos
  • 31. Linhas de Produtos de Software S  Tipos de Feature : S  Obrigatórias: Estão em todos os produtos (login) S  Opcionais: Podem ou não estar em um produto (reserva de materiais na biblioteca) S  Alternativas: exatamente uma das features deve estar no produto (modo de autenticação: banco ou ldap) S  Or-features: um subconjunto das features pode estar no produto (punição por atraso na biblioteca)
  • 32. Linhas de Produtos de Software S  Feature Model: Feature Obrigatória Feature Alternativa Feature Opcional Or-feature
  • 33. Linhas de Produtos de Software S  Abordagens na Construção de uma LPS: S  Proativa S  Construir desde o começo todos os produtos da linha (Requer $$$$). S  Extrativa S  As variações já existem no produto utilizado, então elas são apenas extraídas(organizadas) para se criar a linha S  Reativa S  A medida que surge a necessidade, as features são criadas gerando-se um novo produto na linha
  • 34. Linhas de Produtos de Software S  Variation Points S  Lugares onde a variação ocorre no sistema S  Configuration knowledge S  Mapeamento entre features e artefatos do código S  Feature Model S  Modelo em forma de árvore muito usado para documentar as variabilidades de uma linha.
  • 35. Linhas de Produtos de Software S  Derivação do Produto S  Processo que cria um produto da linha (normalmente é automatizado) S  Fases S  Engenharia de Domínio S  Os artefatos são preparados da serem reutilizado como features da linha (identificando as partes comuns e variáveis) S  Engenharia de Aplicação S  Instancia-se um produto reutilizando os artefatos criados da ED.
  • 36. Linhas de Produtos de Software Mais Complexidade
  • 37. Linhas de Produtos de Software S  LPS não envolve apenas as equipes de desenvolvido S  Como realizar a elicitação de requisitos de uma LPS? S  Será que todas as variabilidades existentes estão sendo testadas?
  • 38. Linhas de Produtos de Software S  Vantagens na Adoção de Linhas de Produto: S  Redução dos custos de desenvolvimento S  Aumenta da Qualidade S  Redução do time-to-market (ciclos de desenvolvimento mais curtos para a implantação de um sistema em um novo cliente) S  Redução dos esforços de manutenção. S  Evolução Organizada
  • 39. Linhas de Produtos de Software S  Desvantagens na Adoção de Linhas de Produto: S  Grande investimento inicial $$$ S  Requer uma Engenharia Experiente S  Requer Maior Gerenciamento Técnico e Organizacional
  • 40. Linhas de Produtos de Software S  Quando não é recomendado usar? S  Domínio não estável S  Uma quantidade muito grande de variabilidade entre os produtos da linha (50%, 60%, 70% das funcionalidades são diferentes)
  • 41. Linhas de Produtos de Software S  O mais complicado em LPS é como implementar as variabilidades existentes na sua linha de produtos S  Compilação Condicional S  Execução Condicional S  Programação Orientada a Aspectos S  Orientação a Objetos, Padrões de Projeto Polimorfismo, Frameworks, etc.
  • 42. Linhas de Produtos de Software S  O Padrão “Execução Condicional” S  Definição bem simples: S  Padrões de Projetos para isolar as variabilidades + Parâmetros para decidir qual a variabilidade será executa no momento.
  • 43. Linhas de Produtos de Software S  O Padrão “Execução Condicional” S  A parametrização do sistema não é usada apenas para definir valores de negócio variável S  Padrões de Projetos são usados junto com os parâmetros para definir variabilidades bem mais complexas
  • 44. Linhas de Produtos de Software S  Exemplo: Feature “Punição” do Módulo de Bibliotecas do SIGAA S  Padrões de Projeto Layer Super Type + Factory + Strategy + Parâmetros de Configuração S  Todo o sistema só interage com a estratégia genérica PunicaoAtrasoEmprestimoStrategy e a inteface PunicaoAtrasoEmprestimoBiblioteca.
  • 45. Linhas de Produtos de Software S  Feature “Punição” do Módulo de Bibliotecas do SIGAA S  A classe PunicaoAtrasoEmprestimoStrategyFactory instancia e retorna a estratégia a ser usada de acordo com o tipo de variabilidade configurada: Multa ou Supensão. S  Todo o cálculo e lógica de négocio de cada variabilidade estão localizados dentro da estratégia, sem que as classes clientes precisem conhecer qual estratégia está sendo utilizanda.
  • 46. Linhas de Produtos de Software S  Feature “Punição” do Módulo de Bibliotecas do SIGAA S  Hoje qualque novo tipo punição que inventarem, pode ser facilmente adicionado ao sistema implementando-se apenas uma nova estratégia, sem impacto em nenhuma outra parte de sistema
  • 47. Linhas de Produtos de Software S  Feature “Punição” do Módulo de Bibliotecas do SIGAA S  A feature “Punição” da biblioteca está realicionada, entre outros, com os Casos de Uso “Realizar Empréstimo”, “Renovar Empréstimo” e “Devolver Empréstimo”. S  E os pontos de váriação estão localizados em diversos artefatos do sistema, como ProcessadorRealizaEmprestimo.java e até mesmo a JSP menu_discente.jsp
  • 48. Linhas de Produtos de Software S  Feature “Punição” do Módulo de Bibliotecas do SIGAA
  • 49. Linhas de Produtos de Software S  Quer saber mais ? S  Conditional Execution: A Pattern for the Implementation of Fine-Grained Variabilities in Software Product Lines S  http://www.slideshare.net/jadsonjs/conditional-execution S  http://jadsonjs.wordpress.com/2013/05/25/conditional- execution-a-pattern-for-the-implementation-of-fine-grainedvariabilities-in-software-product-lines/
  • 50. Linhas de Produtos de Software Desafio
  • 51. Linhas de Produtos de Software S  Desafio S  Alguns sistemas de grande porte possuem certos módulos nos quais é perfeitamente possível aplicar técnicas de LPS S  Contudo, outros módulos do mesmo sistema não formam uma LPS, seja porque os clientes possuem regras diferentes ou porque o domínio ainda não está estável. S  Esses módulos são dependentes entre si.
  • 52. Linhas de Produtos de Software S  Desafio S  Como garantir que os módulos que usam LPS possam evoluir de forma organizada sem que os módulos não LPS, que vão evoluir distintamente em cada produto da linha, atrapalhem? S  Como isolar as dependências entre os módulos “não LPS” e os LPS de tal forma que mudanças em um módulo não conflitem com os demais módulos?
  • 53. Linhas de Produtos de Software S  Desafio Módulos LPS Módulos não LPS
  • 54. Linhas de Produtos de Software
  • 55. Linhas de Produtos de Software S  Desafio S  Esse isolamento é relativamente fácil de ser realizado na abordagem proativa, contudo muito complexo para sistemas em produção S  A literatura pouco retrata técnicas de isolamento ou evolução dos artefatos de uma LPS quando o cenário não é o ideal.
  • 56. Linhas de Produtos de Software
  • 57. Linhas de Produtos de Software Imagens retiradas da internet Jadson Santos jadsonjs@gmail.com
  • 58. Linhas de Produtos de Software Jadson Santos Natal, Outubro de 2013 S

Hinweis der Redaktion

  1. Reuniãointerna do SigaaImportanteparaoutrasequipesMaisimportanteaindadepois da video
  2. Fazemissoporcausa do Reuso
  3. Reuniãointerna do SigaaImportanteparaoutrasequipesMaisimportanteaindadepois da video