SóProvas


ID
1306489
Banca
CESPE / CEBRASPE
Órgão
ANATEL
Ano
2014
Provas
Disciplina
Programação
Assuntos

No que se refere à arquitetura e à programação Java, julgue o item que se segue.


A programação orientada a aspectos constitui-se como um paradigma de programação para a construção de programas em que os interesses transversais (crosscutting concerns) ficam separados dos interesses básicos, e não espalhados pelo sistema.

Alternativas
Comentários
  • qual o erro?

  • Também não achei. :-)

  • Caros colegas o conceito está todo correto com exceção do NÃO na última linha, este NÃO torna a questão errada, pois, Todo o programa escrito no paradigma orientado a objetos possui código que é alheio a implementação do comportamento do objeto. Este código é todo aquele utilizado para implementar funcionalidades secundárias e que encontra-se espalhado por toda a aplicação (crosscutting concern). A POA permite que esse código seja encapsulado e modularizado.

    fonte: http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_orientada_a_aspecto

  • Eu também não achei nenhum erro na questão, pra mim CORRETA.


    ·  Conceitos Básicos:

    o  Um Concern é um requisito específico de um sistema. Existem dois tipos de Concern, são eles:

    o  Core Concerns (interesses Básicos/Primários) – são os requisitos das funcionalidades centrais de um módulo (núcleo) 

    o  Crosscutting Concerns (Interesses Transversais) – são os requistos das funcionalidades periférias do sistemas, onde, são usados em diversos módulos do sistema


    ·  Problemas da POO: 

    o  Implementações OO acoplam Concerns com os Crosscutting Concerns 

    o  Quando são adicionadas ou removidas funcionalidades, na maior parte dos casos, é modificado o núcleo do sistema 

    o  Muitas propriedades importantes espalham-se por vários módulos e misturam-se com outras propriedades de maneira intrusiva


    ·  A programação Orientada a Aspectos (POA) é uma nova metodologia que: 

    Separa os interesses, responsabilidades e requisistos (Concerns) de um sistema

    o  A modularização dos Aspectos (encapsulação do interesses transversais) produz uma arquitetura fácil de projetar, implementar e manter, evitando o problema do Espalhamento (scattering) e o Entrelaçamento (tangling) por vários módulos



    Fonte: 

    ·  http://homepages.dcc.ufmg.br/~figueiredo/disciplinas/aulas/aspectos-review_v01.pdf

    ·  http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_orientada_a_aspecto

    ·  http://pt.slideshare.net/dyegoitallo/egenharia-de-software-orientado-a-aspectos


  • "s interesses transversais (crosscutting concerns) ficam separados dos interesses básicos" correto até um certo ponto. os aspectos ficam sim separados dos interesses basicos (core concerns) isso na sua definição, agora na hora de projetar e programar os aspectos possui em sua definição os pointcuts que vai dizer para o sistema de weaving onde inserir o codigo do aspecto junto com o codigo dos interesses basicos, o que cria um certo acoplamento entre esses dois interesses. Podemos forçar a barra e dizer que está correto



    "não espalhados pelo sistema"  Ai está errado pois os aspectos se espalham por todo o sistema, cortando os core concerns em diversos join points.  Nao confundir com a capacidade de os aspectos evitar o Scattering(Espalhamento), que é a capacidade de evitar com que  a implementaçao de um concern se espalhe em diversos componentes do programa.  o Aspecto faz com que a implementaçao de  um concern que afeta diversos componentes do programa seja centralizada.




  • A questão versa sobre o paradigma de programação orientada a aspectos. No âmbito da linguagem JAVA, cita-se o AspectJ como exemplo de uma extensão orientada a aspectos.

    Em breve síntese, pode-se dizer que a Orientação a Aspectos visa a modularização dos interesses transversais (crosscutting concerns), os quais, no bojo da Orientação a Objetos, tendem  a  ficar  entrelaçados e  espalhados com  os interesses básicos do sistema, impactando negativamente, por conseguinte, na manutenibilidade do sistema (SANTOS, 2008) [1].

    Como exemplo de interesses transversais, citam-se a verificação e tratamento de erros, sincronização, comportamento sensível ao contexto, otimizações de desempenho, monitoramento e registro, suporte a depuração e protocolos multi-objeto [2]. Nesse contexto, um Aspecto é uma unidade modular que encapsula um interesse transversal [3].

    Conforme exposto acima, verifica-se que o primeiro trecho do enunciado da questão, "A programação orientada a aspectos constitui-se como um paradigma de programação para a construção de programas em que os interesses transversais (crosscutting concerns) ficam separados dos interesses básicos" está correto.

    O problema, todavia, reside no último trecho "e não espalhados pelo sistema". Pessoal, de início, confesso que tive que ler várias vezes o enunciado e revisar vários documentos sobre Orientação a Aspectos para entender o porquê da incorreção da questão. 

    Assim, retomando o que foi exposto anteriormente, ressalta-se que o problema que a Orientação a Aspectos visa a resolver é o entrelaçamento e espalhamento dos interesses transversais pelo CÓDIGO do sistema. Ou seja, poderíamos ter um mesmo interesse transversal implementado em diferentes classes, espalhados pelo código do sistema, o que prejudicaria a reusabilidade e dificultaria a manutenção. Desse modo, na Orientação a Aspectos, seria necessário identificar esse interesse transversal e encapsulá-lo como um Aspecto.

    Por outro lado, os interesses transversais podem afetar diversas classes espalhadas pelo sistema. Além disso, por outra ótica, dado que um sistema geralmente consiste em diversos módulos agrupados em pacotes (bibliotecas), os interesses transversais também podem estar encapsulados em diferentes pacotes.

    Nesse sentido, entende-se que é normal que os interesses transversais encapsulados em Aspectos estejam espalhados PELO SISTEMA, mas NÃO PELO CÓDIGO DO SISTEMA. Perceberam a nuance?

    Logo, em que pese, na minha visão, a infeliz pegadinha introduzida pela banca, a questão está INCORRETA.


    Referências:

    [1] SANTOS, Isanio Lopes Araújo. Uma abordagem baseada em Aspectos e Composição Dinâmica para a construção de Aplicações Adaptativas Cientes ao Contexto. 2008. Dissertação (Mestrado em Sistemas e Computação) – Programa de Pós-Graduação em Sistemas e Computação do Departamento de Informática e Matemática Aplicada da Universidade do Rio Grande do Norte, Natal, 2008.

    [2] ECLIPSE FOUNDATIONASPECTJ. Disponível em: site oficial do projeto AspectJ. Acesso em: 8/6/2021.

    [3] CENTRO DE INFORMÁTICA DA UFPE. Aspect Semantics: Chapter 1. Getting Started with AspectJDisponível em: página do Cin UFPE. Acesso em: 8/6/2021.


    Gabarito do Professor: ERRADO.