A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Hyper/J TM : Multi-Dimensional Separation of Concerns for Java TM Peri Tarr, Harold Ossher, Vincent Kruskal, and Matthew Kaplan Por Sérgio Soares.

Apresentações semelhantes


Apresentação em tema: "Hyper/J TM : Multi-Dimensional Separation of Concerns for Java TM Peri Tarr, Harold Ossher, Vincent Kruskal, and Matthew Kaplan Por Sérgio Soares."— Transcrição da apresentação:

1 Hyper/J TM : Multi-Dimensional Separation of Concerns for Java TM Peri Tarr, Harold Ossher, Vincent Kruskal, and Matthew Kaplan Por Sérgio Soares

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

3 Exemplos zA preocupação que prevalece na orientação a objetos é a classe zNas linguagens funcionais é a função z“Aspectos” como persistência ou distribuição

4 zDecomposição por yclasse y“aspectos” yfuncionalidade yuma combinação destas ao mesmo tempo xsobreposição de preocupações Multi-Dimensional Separation of Concerns

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

6 Objetivos zMudanças aditivas e não invasivas zMelhorar a compreensão e diminuir a complexidade zAdaptabilidade, customização e reuso de componentes zIntegração simplificada de componentes zSoftware mais rápido, mais seguro, mais barato e melhor

7 Exemplo zUm sistema que suporta a especificação de expressões yavaliar ydar a representação textual ychecar a sintaxe e a semântica

8

9 Evolução no sistema zExpressões podem ser opcionalmente persistentes zSuporte a checagem de estilo ymúltiplos estilos zCombinação de checagens

10 Problemas na evolução zEx.: Persistência yadicionar os métodos “save” e “retrieve” yadicionar código extra nos métodos de acesso “get” e “set” ymudanças “invasivas” ycódigo de negócio misturado com código de persistência yas checagens devem persistir o estado? Quando?

11 Uma solução? zHerança ygrande aumento no número de classe ymudanças “invasivas” nos clientes que criam instâncias da classe que fora herdada

12 Problemas zAlto impacto das mudanças yinvasivas yherança e padrões de projeto requerem pre- planejamento zReuso limitado ymistura de código com diferentes propósitos

13 Definindo preocupações para o exemplo de expressões zDefinir a preocupação dominante yclasses zDefinir demais preocupações yconstrução (kernel) yavaliação ychecagem sintática ychecagem semântica yapresentação

14 zDescrever conjuntos de módulos que encapsulam uma determinada preocupação ycada módulo é organizado (decomposto) baseado na preocupação dominante zHyperslice Definindo preocupações

15 Kernel Apresentação Avaliação Checagem Sintática Checagem Semântica

16 Compondo os módulos zCompor hyperslices produzindo artefatos completos e consistentes zHypermodules yconjunto de hyperslices yregras de composição

17 Regras Hypermodule opcional

18 zRegra: “Classes com mesmo nome devem ser unidas (merge)” Compondo os módulos

19 Espaço de preocupação (concern space) zConjunto das unidades que fazem parte das preocupações do software zOrganiza 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 zEm linguagens orientadas a objetos comuns todas as preocupação do concern space são relacionadas a classe Espaço de preocupação (concern space)

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

22 zPossui um conjunto de hypermodules, que são módulos baseados em preocupações zCada 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 Hyperspace

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

24 “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” Hyper/J

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 "{~_,~<}*" with ( before Feature.Logging.LoggedClass._beforeInvoke ($ClassName, $OperationName ), after Feature.Logging.LoggedClass._afterInvoke ($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

29 “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” Multi-Dimensional Separation of Concerns

30 Referências zHyper/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 ywww.cin.ufpe.br/~scbs/gente/hyperj/HyperJ.ps zN Degrees of Separation:Multi-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, ywww.acm.org/pubs/citations/proceedings/soft/302405/p107-tarr/

31 zwww.alphaworks.ibm.com/tech/hyperj zwww.research.ibm.com/hyperspace/MDSOC.htm zwww.research.ibm.com/hyperspace/HyperJ/HyperJ.htm zwww.research.ibm.com/hyperspace/ zwww.alphaworks.ibm.com/reg/hyperj.nsf/evals/resultswww zapps.alphaworks.ibm.com/technologies/hyperj/hyperj.zip Referências


Carregar ppt "Hyper/J TM : Multi-Dimensional Separation of Concerns for Java TM Peri Tarr, Harold Ossher, Vincent Kruskal, and Matthew Kaplan Por Sérgio Soares."

Apresentações semelhantes


Anúncios Google