SOP – Componente Cadastro Augusto César Melo de Oliveira Sabrina Bet
Estrutura Original ComunidadeAlunoFuncionárioProfessor FuncionárioProfessor AlunoProfessor BIBLIOTECA RH SECRETARIA Usuário
Componente Biblioteca
Componente RH
Componente Secretaria Acadêmica
Arquivo de Composição -hyperspace hyperspace CadastroHYperSpace composable class uniplac.biblioteca.*; composable class uniplac.rh.*; composable class uniplac.secretaria.*; -concerns package uniplac.rh : Setor.RH package uniplac.secretaria : Setor.Secretaria package uniplac.biblioteca : Setor.Biblioteca -hypermodules hypermodule cadastroUniplac hyperslices: Setor.RH, Setor.Biblioteca, Setor.Secretaria; relationships: mergeByName; rename class cadastroUniplac.Usuario to Pessoa; merge class Setor.RH.Professor, Setor.Biblioteca.Professor, Setor.Secretaria.Professor into Professor; merge class Setor.Biblioteca.Funcionario, Setor.RH.Funcionario into Funcionario; merge class Setor.Biblioteca.Aluno, Setor.Secretaria.Aluno into Aluno; end hypermodule;
Resultado Esperado UNIVERSIDADE ComunidadeAlunoFuncionárioProfessor PESSOA
Entretanto... O merge não funcionou corretamente, aplicando o override. A opção into no manual não está disponível no release. Sem a opção into ele recriou a mesma estrutura de pacotes.
Alguns Problemas Proposto / Soluções Nomes iguais para funções diferentes Ideal: NoMerge [desabilitados] Opção: Rename Nomes diferentes para funções iguais Ideal: Override
Problemas Documentação diferente do release apresentado Relacionamentos : noMerge, funciona apenas para operações merge,override, desabilitados Bracket, funciona só pra operações e métodos e não podem ser static E estratégias de composição nonCorrespondingMerge, não funciona Operações de Conjuntos não suportados União, Interseção,etc. Summary function deve ser static Wildcard (*) não funciona em sub-pacotes e classes static
Conclusão HyperJ como ferramenta para Separação Multi-Dimensional de Concerns, que inclui SOP, apresenta os meios para solução de SOP em Java. Entretanto, suas opções para compor regras ainda estão incompletas no release atual.