Hyper/JTM: Multi-Dimensional Separation of Concerns for JavaTM - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Hyper/JTM: Multi-Dimensional Separation of Concerns for JavaTM

Description:

Hyper/JTM: Multi-Dimensional Separation of Concerns for JavaTM Peri Tarr, Harold Ossher, Vincent Kruskal, and Matthew Kaplan Por S rgio Soares – PowerPoint PPT presentation

Number of Views:97
Avg rating:3.0/5.0
Slides: 32
Provided by: scb93
Category:

less

Transcript and Presenter's Notes

Title: Hyper/JTM: Multi-Dimensional Separation of Concerns for JavaTM


1
Hyper/JTM Multi-Dimensional Separation of
Concerns for JavaTM
  • Peri Tarr, Harold Ossher, Vincent Kruskal, and
    Matthew Kaplan
  • Por Sérgio Soares

2
Multi-Dimensional Separation of Concerns
  • Separação de Preocupações (objetivos, propósitos,
    conceitos)
  • referência para organizar e decompor software
  • diferentes desenvolvedores com papeis diferentes
    tem preocupações diferentes
  • diferentes preocupações em diferentes fases do
    desenvolvimento de software

3
Exemplos
  • A preocupação que prevalece na orientação a
    objetos é a classe
  • Nas linguagens funcionais é a função
  • Aspectos como persistência ou distribuição

4
Multi-Dimensional Separation of Concerns
  • Decomposição por
  • classe
  • aspectos
  • funcionalidade
  • uma combinação destas ao mesmo tempo
  • sobreposição de preocupações

5
Multi-Dimensional Separation of Concerns
  • Separação, modularização, e integração flexíveis
    e incrementais de artefatos de software baseados
    em um número qualquer de preocupações
    (simultaneamente)
  • O desenvolvedor pode usar mais de uma dimensão de
    preocupações
  • garantir o encapsulamento, procurando limitar o
    impacto com mudanças entre as preocupações

6
Objetivos
  • Mudanças aditivas e não invasivas
  • Melhorar a compreensão e diminuir a complexidade
  • Adaptabilidade, customização e reuso de
    componentes
  • Integração simplificada de componentes
  • Software mais rápido, mais seguro, mais barato e
    melhor

7
Exemplo
  • Um sistema que suporta a especificação de
    expressões
  • avaliar
  • dar a representação textual
  • checar a sintaxe e a semântica

8
(No Transcript)
9
Evolução no sistema
  • Expressões podem ser opcionalmente persistentes
  • Suporte a checagem de estilo
  • múltiplos estilos
  • Combinação de checagens

10
Problemas na evolução
  • Ex. Persistência
  • adicionar os métodos save e retrieve
  • adicionar código extra nos métodos de acesso
    get e set
  • mudanças invasivas
  • código de negócio misturado com código de
    persistência
  • as checagens devem persistir o estado? Quando?

11
Uma solução?
  • Herança
  • grande aumento no número de classe
  • mudanças invasivas nos clientes que criam
    instâncias da classe que fora herdada

12
Problemas
  • Alto impacto das mudanças
  • invasivas
  • herança e padrões de projeto requerem
    pre-planejamento
  • Reuso limitado
  • mistura de código com diferentes propósitos

13
Definindo preocupaçõespara o exemplo de
expressões
  • Definir a preocupação dominante
  • classes
  • Definir demais preocupações
  • construção (kernel)
  • avaliação
  • checagem sintática
  • checagem semântica
  • apresentação

14
Definindo preocupações
  • Descrever conjuntos de módulos que encapsulam uma
    determinada preocupação
  • cada módulo é organizado (decomposto) baseado na
    preocupação dominante
  • Hyperslice

15
Apresentação
Kernel
Checagem Sintática
Checagem Semântica
Avaliação
16
Compondo os módulos
  • Compor hyperslices produzindo artefatos completos
    e consistentes
  • Hypermodules
  • conjunto de hyperslices
  • regras de composição

17
Regras
Hypermodule opcional
18
Compondo os módulos
  • Regra Classes com mesmo nome devem ser unidas
    (merge)

19
Espaço de preocupação (concern space)
  • Conjunto das unidades que fazem parte das
    preocupações do software
  • Organiza as unidades separando as preocupações e
    provê meios para utilizar as preocupações como
    base para a modularização durante o
    desenvolvimento e a evolução

20
Espaço de preocupação (concern space)
  • Em linguagens orientadas a objetos comuns todas
    as preocupação do concern space são relacionadas
    a classe

21
Hyperspace
  • É um concern space que implementa a separação
    multi-dimensional de preocupações
  • Preocupações são agrupadas em dimensões, que são
    preocupações disjuntas (sem unidades em comum)

22
Hyperspace
  • Possui um conjunto de hypermodules, que são
    módulos baseados em preocupações
  • Cada hypermodule especifica um conjunto de
    hyperslices (coleções de unidades especificadas
    em termos das preocupações) e de regras de
    composição que especificam como os hyperslices
    devem ser integrados

23
Hyper/J
  • Ferramenta que implementa a separação de
    preocupações multidimensional para Java
  • Atua nos arquivos .class (Java padrão)
  • Pode ser usado durante o ciclo de vida do
    software
  • desenvolvimento inicial, evolução, extensão ou
    integração

24
Hyper/J
  • O uso da ferramenta durante o desenvolvimento
    inicial pode levar a níveis de reúso e
    extensibilidade, modularidade e manutenibilidade
    muito difíceis ou impossíveis de serem alcançados
    com técnicas comuns de orientação a objetos

25
hypermodule DemoSEE hyperslices
Feature.Kernel, Feature.Check,
Feature.Display, Feature.Eval,
Feature.StyleChecker, Feature.Logging
relationships mergeByName equate
operation Feature.Kernel.process,
Feature.Check.check_process,
Feature.Display.display_process,
Feature.Eval.eval_process
26
bracket "_,lt" with ( before
Feature.Logging.LoggedClass._beforeInvoke
(ClassName, OperationName
), after Feature.Logging.LoggedClass._a
fterInvoke
(ClassName, OperationName ), "" )
set summary function for action
DemoSEE.BinaryOperator.check to
action DemoSEE.Expression.summarizeCheck end
hypermodule
27
hyperspace DemoHyperspace composable class
demo.ObjectDimension. composable class
demo.StyleChecker. composable class
demo.Observer.
28
(No Transcript)
29
Multi-Dimensional Separation of Concerns
  • A técnica parece permitir alcançar níveis
    máximos de reuso e extensibilidade
  • Multi-dimensional separation of concerns is more
    general, and its goals are more ambitious, than
    these approaches

30
Referências
  • Hyper/J multi-dimensional separation of concerns
    for Java Harold Ossher and Peri Tarr
    Proceedings of the 22nd international conference
    on on Software engineering, 2000, Pages 734 - 737
  • www.cin.ufpe.br/scbs/gente/hyperj/HyperJ.ps
  • N Degrees of SeparationMulti-Dimensional
    Separation of Concerns. P. Tarr, H. Ossher, W.
    Harrison and S.M. Sutton, Jr. Proceedings of the
    International Conference on Software Engineering
    (ICSE'99), May, 1999.
  • www.acm.org/pubs/citations/proceedings/soft/302405
    /p107-tarr/

31
Referências
  • www.alphaworks.ibm.com/tech/hyperj
  • www.research.ibm.com/hyperspace/MDSOC.htm
  • www.research.ibm.com/hyperspace/HyperJ/HyperJ.htm
  • www.research.ibm.com/hyperspace/
  • www.alphaworks.ibm.com/reg/hyperj.nsf/evals/result
    swww
  • apps.alphaworks.ibm.com/technologies/hyperj/hyperj
    .zip
Write a Comment
User Comments (0)
About PowerShow.com