Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Tema :
Engenharia de Software Orientada a Aspectos
1.Introdução
Iremos abordar sobre Engenharia de software orientada a aspectos, onde iremos
primeiro fazer uma breve contextualização do tema e descrevermos cada etapa
de implantação do mesmo e as regras que a regem, assim como também
falaremos sobre a sua implantação, também iremos falar das consequências do
seu uso e os possíveis problemas que podemos encarar na sua implantação ou
uso.
2. Engenharia de Software Orientada a Aspectos
2.1. Contextualização
Engenharia de software orientada a aspectos (AOSE, do inglês aspect-oriented
software engineering) é uma abordagem para desenvolvimento de software que
se propõe a resolver esse problema e tornar os programas mais fáceis de manter
e reusar.
3. Características
Segundo Sommerville as principais características da Engenharia de software orientada a aspectos são:
2. Os aspectos encapsulam a funcionalidade que cruza e coexiste com outra funcionalidade que
existe no sistema. Eles são usados junto com outras abstrações, como objetos e métodos.
3. Pode-se especificar que o código transversal deve ser incluído antes ou depois da chamada de
um método específico ou quando um atributo é acessado. Essencialmente, o aspecto é composto
no programa para criar um novo sistema aumentado.
4. E uma característica importante de aspectos é que eles incluem uma definição sobre onde
devem ser incluídos em um programa, assim como o código que implementa o interesse
transversal.
4. Benefícios
Segundo Roger Presman, o principal benefício de uma abordagem orientada a
aspectos é que ela suporta a separação de interesses. Como separar interesses
em elementos diferentes em vez de incluir interesses diferentes na mesma
abstração lógica é uma boa prática de engenharia de software. Ao apresentar
interesses transversais como aspectos, esses interesses podem ser entendidos,
reusados e modificados de forma independente, sem a preocupação de onde o
código é usado no sistema central.
5.Separacao de Interesses
Segundo Roger Presman (1982) ,a separação de interesses é um princípio-chave de
projeto e implementação de software. Isso significa que deve-se organizar seu software de
tal forma que cada elemento do programa (classe, método, procedimento, entre outros.)
faça apenas uma coisa. Assim poderá concentrar-se nesse elemento sem se preocupar com
outros elementos no programa. Poderá entender cada parte do programa conhecendo seus
interesses, sem a necessidade de entender outros elementos. Quando as mudanças forem
necessárias, elas serão feitas em um número pequeno de elementos.
5.1.Tipos de Interesses
Existem vários tipos diferentes de interesses de stakeholder:
1. Interesses funcionais, relacionados com uma funcionalidade específica a ser incluída no sistema. Por exemplo, em um
sistema de controle de trens, um interesse funcional específico seria a frenagem do trem.
2. Interesses de qualidade de serviço, relacionados ao comportamento não funcional de um sistema. Incluem
características como desempenho, confiabilidade e disponibilidade.
3. Interesses de políticas, relacionados com as políticas gerais que governam o uso de um sistema. Interesses de políticas
incluem interesses de segurança e interesses relacionados com regras de negócio.
4. Interesses de sistemas, relacionados com atributos do sistema como um todo, tais como manutenibilidade e
configurabilidade.
5. Interesses organizacionais, relacionados com objetivos e prioridades organizacionais. Incluem a produção de um
sistema dentro do orçamento, fazendo uso de ativos existentes de software e mantendo a reputação da organização.
5.2.INTERESSES TRANSVERSAIS
Isso resulta em problemas quando uma mudança de interesse tem de ser feita – o código a ser
alterado não é localizada, mas é em lugares diferentes em todo o sistema.
Um aspecto é uma abstração que implementa um interesse. Ele inclui informações as quais devem ser
incluídas em um programa.
Um ponto de junção é um lugar em um programa onde um aspecto pode ser incluído (composto).
Um ponto de corte define onde (nos pontos de junção) o aspecto será incluído no programa.
De referir que a capacidade de especificar, com pontos de corte, onde o código deve ser executado, é a
característica que diferencia os aspectos. No entanto, para entender o que significa ponto de corte,
precisamos entender outro conceito— o ponto de junção. Um ponto de junção é um evento que ocorre
durante a execução de um programa.
Segundo Sommeville existem vários tipos possíveis de eventos que podem ocorrer durante a execução de
um programa. Um modelo de ponto de junção define o conjunto de eventos que podem ser referenciados
em um programa orientado a aspectos. Modelos de pontos de junção não são padronizados, e cada
linguagem de programação orientada a aspectos possui seu próprio modelo de pontos de junção. Por
exemplo, em AspectJ, os eventos que fazem parte do modelo de pontos de junção incluem:
Identifica os eventos específicos com os quais cada adendo deve ser associado.
Exemplos de contextos em que o adendo pode ser composto em um programa:
Pré-processamento de código-fonte.
Composição em tempo de ligação.
Composição dinâmica em tempo de execução.
Extensões de políticas
Adicionar capacidades funcionais para apoiar uma política organizacional,
tais como proteção.
Extensões de infraestrutura
Adicionar capacidades funcionais para apoiar a implementação do sistema
em algumas plataformas específicas.
PONTOS IMPORTANTES QUE NÃO PODEMOS IGNORAR :
Por meio da representação dos interesses transversais como aspectos, os interesses individuais podem ser
compreendidos, reusados e modificados sem alterar outras partes do programa.
O entrelaçamento ocorre quando um módulo em um sistema inclui códigos que implementa requisitos de
sistemas diferentes.
O espalhamento ocorre quando a implementação de um interesse está espalhada por vários componentes.
Os aspectos incluem um ponto de corte que define onde o aspecto será composto no programa, e um adendo o
código para implementar o interesse transversal.
Pontos de junção são eventos que podem ser referenciados em um ponto de corte.
Para garantir a separação de interesses, os sistemas podem ser concebidos como um sistema central que
implementa os interesses primários dos stakeholders, e um conjunto de extensões que implementam os interesses
secundários.
ENGENHARIA DE REQUISITOS ORIENTADA A INTERESSES
Uma abordagem de engenharia de requisitos que incide sobre os interesses dos
clientes é consistente com o desenvolvimento de software orientado a aspectos.
Interesses transversais são interesses que são identificados por todos os pontos
de vista.
PONTOS DE VISTA E INTERESSES
Portanto, podemos perceber que os
requisitos funcionais secundários
identificados a partir de qualquer
ponto de vista não necessariamente
cruzam os requisitos dos outros pontos
de vista. Por exemplo, apenas o ponto
de vista de equipamentos está
interessado em completar os registros
de equipamentos. Esses requisitos
refletem a necessidade desse ponto de
vista e esses interesses podem não ser
compartilhados com outros pontos de
vista. No entanto, além dos requisitos
funcionais secundários, existem
interesses transversais que geram
requisitos importantes para alguns ou
todos os pontos de vista.
PROJETO E PROGRAMAÇÃO ORIENTADOS A ASPECTOS
O processo de projetar um sistema que faz uso de aspectos para implementar os interesses transversais e
extensões que são identificados durante o processo de engenharia de requisitos.
2.Identificação e projeto de aspectos – Começando com as extensões identificadas nos requisitos de sistema,
é necessário analisá-las para ver se são aspectos em si ou se devem ser divididos em vários aspectos.
3.Projeto de composição – Nessa fase, você analisa o sistema central e projeta o aspecto para descobrir onde
os aspectos devem ser compostos com o núcleo do sistema.
4.Análise resolução de conflitos. Um problema com aspectos é que eles podem interferir uns com
os outros quando são compostos com o sistema central. Conflitos ocorrem quando há um choque de
ponto de corte com aspectos diferentes especificando que devem ser compostos no mesmo ponto do
programa.
UM PROCESSO GENÉRICO DE PROJETO ORIENTADO A ASPECTOS
Como quaisquer outros sistemas, os sistemas orientados a aspectos podem ser testados
como caixas-pretas usando a especificação para derivar os testes.
Problemas de aspectos:
1. Como o conhecimento sobre o código-fonte pode ser usado para derivar sistematicamente testes do
programa?
2. O que significa exatamente cobertura de teste?
3. Como a interferência do aspecto pode ser testada? Conforme vimos, a interferência do aspecto ocorre
quando dois ou mais aspectos usam a mesma especificação de ponto de corte.
4. Como os testes podem ser projetados para que todos os pontos de junção do programa sejam executados e
testes de aspectos adequados sejam aplicados?
Derivar um fluxograma de programa de um programa com aspectos é impossível.
Portanto, é difícil projetar sistematicamente testes que assegurem que todas as
combinações de códigos bases e aspectos sejam executadas.