critérios de testabilidade para avaliação do modelo de ... · a atividade de teste de software...

10
 Critérios de Testabilidade para Avaliação do Modelo de Projeto de Software Orientado a Aspectos Paulo Afonso Parreira Júnior 1 , Heitor Augustus Xavier Costa 2 Antônio Maria Pereira de Resende 3 , Fábio Fagundes Silveira 4 1, 2, 3  PqES – Grupo de Pesquisa em Engenharia de Software – Departamento de Ciência da Computação (DCC) – Universidade Federal de Lavras (UFLA) Caixa Postal 3037 – CEP 37.200-000 – Lavras – MG – Brasil 4  Departamento de Ciência e Tecnologia (DCT) – Universidade Federal de São Paulo (UNIFESP) – CEP 12231-280 – São José dos Campos – SP – Brasil 1 [email protected]2 [email protected]3 [email protected]4 [email protected]  Abstract. Software testing aims to ensure the best possible software quality. Despite being impossible to prove that software has no faults, testing supplies evidence of the conformity with the specified functionality. However, testing activities need to have their planning started at the beginning of the development cycle, contributing to avoid faults and their propagation throughout the development phases. This paper proposes an evaluation of the aspect-oriented software Design Model, considering testability characteristics. To achieve it, we have defined a set of testability criteria to be used in such an evaluation. These criteria were used in an application in order to evaluate their effectiveness. Keywords: Software Quality, Software Test, Aspect-Oriented Resumo. A atividade de teste de software é realizada visando assegurar a maior qualidade possível do software. Apesar de ser impossível provar que um software é livre de defeitos, a aplicação de testes fornece evidências da conformidade com a funcionalidade especificada. Entretanto, sabe-se que as atividades relacionadas com os testes precisam ter o seu planejamento iniciado logo no princípio do ciclo de desenvolvimento, contribuindo para evitar defeitos e sua propagação nas demais fases do desenvolvimento. Desta forma, este trabalho propõe a avaliação do Modelo de Projeto de software orientado a aspecto, considerando as características de testabilidade. Para isso, foi definido um conjunto de critérios de testabilidade para ser usado na avaliação. Estes critérios foram utilizados numa aplicação para verificar a sua usabilidade. Palavras Chave: Qualidade de Software, Teste de Software, Orientação a Aspectos 1. Introdução O processo de verificação e de validação compreende as atividades e as análises que asseguram que o software atende às especificações e às necessidades para as quais ele foi desenvolvido [Sommerville 2001]. A atividade de teste é uma das técnicas mais II Latin American Workshop on Aspect-Oriented Software Development 50

Upload: vudiep

Post on 24-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

  

Critérios de Testabilidade para Avaliação do Modelo de Projeto de Software Orientado a Aspectos 

Paulo Afonso Parreira Júnior1, Heitor Augustus Xavier Costa2, Antônio Maria Pereira de Resende3, Fábio Fagundes Silveira4

1, 2, 3 PqES – Grupo de Pesquisa em Engenharia de Software – Departamento de Ciência da Computação (DCC) – Universidade Federal de Lavras (UFLA) 

Caixa Postal 3037 – CEP 37.200-000 – Lavras – MG – Brasil 

4 Departamento de Ciência e Tecnologia (DCT) – Universidade Federal de São Paulo (UNIFESP) – CEP 12231-280 – São José dos Campos – SP – Brasil

[email protected][email protected][email protected][email protected] 

Abstract.  Software  testing  aims  to  ensure  the best  possible  software quality. Despite being impossible to prove that software has no faults, testing supplies evidence  of  the  conformity with  the  specified  functionality. However,  testing activities  need  to  have  their  planning  started  at  the  beginning  of  the development  cycle,  contributing  to  avoid  faults  and  their  propagation throughout the development phases. This paper proposes an evaluation of the aspect-oriented  software  Design  Model,  considering  testability characteristics. To achieve it, we have defined a set of testability criteria to be used in such an evaluation. These criteria were used in an application in order to evaluate their effectiveness. 

Keywords: Software Quality, Software Test, Aspect-Oriented 

Resumo.  A  atividade  de  teste  de  software  é  realizada  visando  assegurar  a maior  qualidade  possível  do  software.  Apesar  de  ser  impossível  provar  que um  software  é  livre  de  defeitos,  a  aplicação de  testes  fornece  evidências  da conformidade com a  funcionalidade especificada. Entretanto, sabe-se que as atividades  relacionadas  com  os  testes  precisam  ter  o  seu  planejamento iniciado  logo  no  princípio  do  ciclo  de  desenvolvimento,  contribuindo  para evitar defeitos e sua propagação nas demais fases do desenvolvimento. Desta forma,  este  trabalho  propõe  a  avaliação  do Modelo  de Projeto  de  software orientado  a  aspecto,  considerando  as  características  de  testabilidade.  Para isso, foi definido um conjunto de critérios de testabilidade para ser usado na avaliação.  Estes  critérios  foram  utilizados  numa  aplicação  para  verificar  a sua usabilidade. Palavras  Chave:  Qualidade  de  Software,  Teste  de  Software,  Orientação  a Aspectos 

1. Introdução 

O processo  de  verificação  e  de  validação  compreende  as  atividades  e  as  análises  que asseguram que o software atende às especificações e às necessidades para as quais ele foi  desenvolvido  [Sommerville  2001].  A  atividade  de  teste  é  uma  das  técnicas  mais 

II Latin American Workshop on Aspect-Oriented Software Development

50

Page 2: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

   

utilizadas  de  verificação  e  de  validação,  constituindo-se  num  dos  elementos  para fornecer  evidências  sobre  a  confiabilidade  do  software  em  complemento  a  outras atividades, como por exemplo, o uso de revisões e de técnicas formais de especificação e de validação [Maldonado 1991]. Segundo Pressman (2006), a atividade de teste é um elemento  crítico  da  garantia  de  qualidade  de  software  e  pode  assumir  até  50%  do esforço despendido no desenvolvimento de software. 

  Em decorrência da complexidade das tarefas de criação e de implementação de software  não-triviais,  novas  tecnologias  são  estudadas  e  aplicadas  ao  seu processo de desenvolvimento  para  facilitar  essas  tarefas.  Isto  é  realizado  desde  os  primórdios  da programação,  podendo-se  observar  a  evolução  destas  tecnologias  partindo-se  da programação utilizando linguagens em nível de máquina e passando pelos paradigmas Procedural, Orientado a Objetos (OO) e Orientado a Aspectos (OA).  O  paradigma  OA estende o paradigma OO com o intuito de tratar o entrelaçamento e o espalhamento de certos  requisitos  (interesses  transversais),  visando,  entre  outras  características  de qualidade, a manutenibilidade e a reusabilidade [Elrad et al. 2001]. 

  Existem algumas referências na literatura [Zhao and Rinard 2003], [Zhao 2003], [Zhao  2002]  que  discorrem  sobre  o  fato  da  adoção  do Desenvolvimento  de  Software Orientado a Aspectos (DSOA) eventualmente propiciar software com maior qualidade, porém, a OA não provê corretude por si só [Silveira 2007]. Conforme descrito por Zhao (2003), ainda que a programação OA possa conduzir a uma melhor arquitetura e uma linguagem OA possa conduzir a um estilo de codificação mais disciplinado, ambas não possuem  imunidade  de  erros  de  programadores  nem  de  falta  de  entendimento  de especificações. Sendo assim, a atividade de teste também é essencial para o DSOA. 

  Um fator motivador deste trabalho é a importância, destacada por vários autores [Binder 2000], [Colanzi 1999], [McGregor and Sykes 2001], de realizar as atividades de teste desde o início do ciclo de desenvolvimento de software. Outro fator é o crescente uso de OA no desenvolvimento de  software.  Isso pode ser verificado com eventos de relevância  que  têm  ocorrido,  como  por  exemplo,  o  Latin-American  Workshop  on Aspect-Oriented  Software  Development  e  a  International  Conference  on  Aspect-Oriented Software Development. 

  Desta  forma,  este  trabalho  baseia-se  na  incorporação  de  características  de testabilidade na fase de projeto, realizando avaliação destas características no Modelo1 de  Projeto  por  meio  de  critérios  de  testabilidade  a  serem  seguidos.  O  Modelo  de Implementação, embora apresente características importantes às atividades relacionadas com o teste, não é considerado neste trabalho. Esta decisão visa a incentivar a prática de construção  de  software  com  característica  de  testabilidade  desde  o  início  do desenvolvimento.  Com  isto,  pode-se  obter  os  seguintes  benefícios:  i)  redução  de esforços para a elaboração dos testes, visto que as contribuições para a sua elaboração são  apontadas  nos  artefatos  gerados  no Modelo  de  Projeto;  e  ii)  redução  dos  gastos associados  à  correção  de  defeitos  identificados,  pois  diminui  a  possibilidade  de propagação dos defeitos entre as diferentes fases do desenvolvimento. 

                                                 1 Modelo do Software é uma  representação do  software em vários níveis de abstração, dependendo da fase  do  processo  de  desenvolvimento  (análise/projeto/implementação/teste/manutenção).  Neste  caso,  o Modelo de Projeto está relacionado ao conjunto de artefatos gerados durante a fase de projeto, enquanto o  Modelo  de  Implementação  está  relacionado  à  codificação  dos  sistemas  de  informação  em desenvolvimento [Filman et al. 2005]. 

II Latin American Workshop on Aspect-Oriented Software Development

51

Page 3: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

  

   O objetivo deste trabalho é apresentar um conjunto de critérios de testabilidade para  a  avaliação  do  Modelo  de  Projeto  de  software  OA,  elaborada  a  partir  de características de testabilidade identificadas à luz da norma ISO/IEC 9126 (Tecnologia da Informação – Características e Métricas de Qualidade de Software) [ISO Std. 9126 1991], [ISO Std. 9126 2001]. 

  O  artigo  está  organizado  da  seguinte  forma:  a  Seção  2  discorre  sobre  a fundamentação  teórica  e  lista  alguns  trabalhos  relacionados;  a  Seção  3  apresenta  os critérios de testabilidade; a Seção 4 ilustra o uso dos critérios de testabilidade propostos; por fim, a Seção 5 apresenta algumas conclusões. 

2. Fundamentação Teórica 

A  norma  ISO/IEC  9126  [ISO  Std.  9126  1991],  [ISO  Std.  9126  2001]  define testabilidade  como  o  conjunto  de  atributos  do  software  que  evidenciam  o  esforço necessário  para  validá-lo  após modificá-lo. Segundo Tannouri  (2006),  a  característica de  testabilidade  pode  ser  incorporada  nos  vários  estágios  do  desenvolvimento  do software: i) especificação; ii) projeto; iii) codificação; e iv) testes. 

  Dentre as tecnologias para DSOA, utiliza-se a aSideML para a representação do Modelo  de  Projeto.  aSideML  foi  proposta  por  Chavez  (2004)  e  consiste  em  uma linguagem de modelagem desenvolvida para especificar e comunicar projetos OA.  Para isto,  a  aSideML  define  novos  e  enriquece  alguns  diagramas  da  Unified  Modeling Language (UML) para apresentar os elementos entrecortantes (crosscutting2) e os seus relacionamentos com os elementos base3 [Chavez 2004]: �� Diagrama  de  Aspectos.  Este  diagrama  exibe  a  descrição  de  um  aspecto  que 

incorpora as interfaces transversais4, as características locais (atributos e métodos) e os  relacionamentos  de  herança.  Cada  característica  transversal  comportamental5 pode ser visualizada em um Diagrama de Colaboração Aspectual6; 

�� Diagrama  de  Classes  Estendido.  Este  diagrama  apóia  representação  gráfica  da visão  de  projeto  estático  do  software.  Além  disso,  ele  permite  visualizar  cada aspecto  em  detalhe  e  separadamente  no  Diagrama  de  Aspecto  correspondente  e representa  uma  coleção  de  elementos  de  modelagem  estrutural,  como  aspectos, classes, interfaces e seus relacionamentos, conectados entre si como um grafo; 

�� Diagrama de  Seqüência Aspectual.  Este  diagrama  fornece  representação  gráfica de  um  conjunto  de  mensagens  organizadas  em  seqüência  temporal  (algumas mensagens  denotam  invocações  a  operações  de  aspectos)  e  suporte  à  visão  de interação; 

�� Diagrama  de  Processo  de  Combinação.  Este  diagrama  fornece  representação gráfica  para  um  grupo  de  elementos  combinados  (elementos  base  adornados  de forma a enfatizar as melhorias proporcionadas pelos elementos crosscutting). Esses 

                                                 2 Denota um mecanismo usado para compor aspectos e componentes nos join points designados. 3 A terminologia utilizada neste trabalho está de acordo com o trabalho de Chavez (2004) sobre aSideML, não correspondendo necessariamente às traduções realizadas por Garcia et al. (2004). 4  Conjuntos  de  características  transversais  com  nome  associado,  que  caracterizam  o  comportamento crosscutting de aspectos. 5 Operações  que  descrevem melhorias  no  comportamento de  componentes  (unidades  da  decomposição funcional do sistema encapsuladas de forma clara). 6 Descrição da organização geral de objetos e instâncias de aspectos que interagem em um contexto a fim de implementar o comportamento crosscutting de uma característica transversal comportamental. 

II Latin American Workshop on Aspect-Oriented Software Development

52

Page 4: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

   

elementos  podem  ser  especializados  para  cada  modelo  de  implementação disponível; 

�� Diagrama de Colaboração Aspectual. Este diagrama fornece representação gráfica de  uma  colaboração  aspectual,  com  suporte  a  interaction  view,  que  envolve instâncias  de  aspectos  e  elementos  base.  Uma  colaboração  aspectual  possui  uma parte  estática  (descreve  os  papéis  que  objetos  e  instâncias  de  aspecto  exercem)  e uma parte dinâmica (mostra os fluxos de mensagens ao longo do tempo para realizar o comportamento crosscutting). 

  A Tabela 1 e a Tabela 2 apresentam breve descrição e respectivas representações gráficas de alguns elementos de modelagem que compõem o Diagrama de Aspectos e o Diagrama de Classe Estendido de  aSideML utilizados no  exemplo de  aplicação deste trabalho. 

Tabela 1 – Elementos de Modelagem do Diagrama de Aspectos 

Elemento  Representação  Descrição 

Aspecto 

 

Um  aspecto  é  uma  descrição  de  um conjunto de características que alteram a  estrutura  e  o  comportamento  de classes  por  meio  de  crosscutting  de forma sistêmica. 

Interface Transversal e Característica Transversal 

 

 

 

 

 

 

Características  transversais  descrevem uma propriedade nomeada (atributo ou operação) definida em um aspecto que pode afetar um ou mais elementos base em  locais  específicos  por  meio  de crosscutting. Uma interface transversal é  o  conjunto  de  características transversais  com  nome  associado,  que caracterizam  o  comportamento crosscutting de aspectos. 

Embora  não  haja  consenso  sobre  qual  a  melhor  linguagem  de  modelagem  OA  a  ser utilizada,  a  abordagem  aSideML  se  apresentou  mais  adequada,  pois  ela  propõe  um modelo de aspectos de alto nível, independente de linguagem, bem como contempla os principais conceitos, propriedades e a arquitetura  introduzidos pelo projeto OA. Desta forma,  aSideML  oferece  recursos  (diagramas  e  elementos  de modelagem)  suficientes para  o  levantamento  de  informações  para  os  testes. Além  disso,  uma  nova  versão  da 

II Latin American Workshop on Aspect-Oriented Software Development

53

Page 5: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

  

aSideML  está  em  desenvolvimento,  objetivando  atualizar  e  aumentar  a  sua funcionalidade de maneira a atender à demanda crescente dos seus usuários. 

Tabela 2 – Elementos de Modelagem do Diagrama de Classe Estendido 

Elemento  Representação  Descrição 

Crosscutting 

 

 

 

 

 

Em  aSideML,  o  relacionamento  de crosscutting  classifica  um relacionamento entre um aspecto e um elemento  base.  Ele  especifica  que  o aspecto  deve  atravessar  os  limites  do elemento  base  em  pontos  de combinação bem definidos e modificar, incrementalmente,  a  base  nesses pontos. 

Precedência 

 

 

 

 

Esse  relacionamento  define  que  um aspecto  (o  cliente)  precede  outro aspecto  (o  fornecedor).  Isso  significa que  o  comportamento  do  aspecto cliente  tem  precedência  em  relação  ao comportamento  do  aspecto  fornecedor no  tipo  de  crosscutting  que  esperam realizar. 

   Durante  pesquisas  realizadas,  notou-se  a  escassez  de  trabalhos  que  tratam diretamente a característica de testabilidade ao longo do processo de DSOA. Contudo, considerando  OO,  Souza  (2003)  realizou  um  trabalho  relativo  à  testabilidade  de software  OO,  utilizando  UML  e  Processo  Unificado,  com  o  intuito  de  fornecer subsídios  para  a  elaboração  dos  documentos  de  teste  por  meio  da  identificação  das características  que  podem  ser  inseridas  no  Modelo  de  Análise.  As  características  de testabilidade foram definidas através do estudo do conteúdo dos documentos de teste e das  informações  que  podem  ser  inseridas  durante  a  modelagem.  Foram  propostos critérios  de  forma  a  garantir  que  as  características  de  testabilidade  estejam adequadamente  representadas nos modelos, além de procedimentos de verificação dos modelos. 

  Um  outro  trabalho  é  o  de  Freedman  (1991),  que  definiu  o  conceito  de testabilidade  de  domínio  do  software  mediante  a  aplicação  dos  conceitos  de observabilidade  e  controlabilidade. Um  domínio  é  testável  (domínio-testável)  quando ele é observável e controlável, ou seja, quando ele não apresenta incoerências quanto às suas  entradas  e  saídas.  Além  disso,  o  autor  define  métricas  para  serem  usadas  na avaliação  do  nível  de  esforço  para  modificar  um  programa  domínio-testável  na manutenção. 

3. Critérios de Testabilidade para o Modelo de Projeto 

O contexto de pesquisa deste  trabalho envolve o desenvolvimento de uma abordagem relativa  à  incorporação  da  característica  de  testabilidade  ao  Modelo  de  Projeto  no DSOA, mediante a elaboração de critérios de  testabilidade que guiem a avaliação dos artefatos de software. Assim, busca-se reduzir o esforço de transição dos artefatos entre os diferentes níveis de abstração. 

II Latin American Workshop on Aspect-Oriented Software Development

54

Page 6: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

   

  Estendendo  o  trabalho  de  Souza  (2003),  com  o  diferencial  de  tratar  a testabilidade no DSOA, este trabalho apresenta um conjunto de critérios de testabilidade para o Modelo de Projeto de software OA, do tipo “atende” ou “não-atende”, que visam guiar  a  avaliação  de  seus  artefatos.  Esses  critérios,  denominados  Critérios  de Testabilidade  para  o  Modelo  de  Projeto  (Testability  Criteria  for  Design  Model  – TC_DM),  foram elaborados baseando-se nas características de  testabilidade  [ISO Std. 9126 1991], [ISO Std. 9126 2001]. 

  Esta pesquisa encontra-se em nível intermediário e, desta forma, poucos critérios foram  definidos  até  o momento.  Por  ora,  três  critérios  são  apresentados  (Figura  1)  e seguem a seguinte estrutura: i) critério: identifica o TC_DM com número e descrição; e ii) justificativa: justifica o uso do TC_DM. 

4. Exemplo de Aplicação: Sistema do Domínio Bancário 

A  fim  de  verificar  a  aplicabilidade  dos  TC_DMs,  decidiu-se  utilizá-los  para  guiar  a construção do Modelo de Projeto de um sistema hipotético, denominado SDB (Sistema de  Domínio  Bancário).  Porém,  os  TC_DMs  podem  ser  utilizados  para  avaliar  um Modelo  de  Projeto  pré-existente,  quando  necessário.  O  SDB  gerencia  operações requeridas  por  uma  agência  bancária:  efetuar  login  e  logoff,  cadastrar  e  remover clientes, alterar senha, consultar saldo, realizar transferência e efetuar depósito e saque. Os  usuários  são  classificados  em  administrador  e  cliente. O SDB possui  os  seguintes aspectos:  APersistencia  (persistência),  ATransacoes  e  seu  sub-aspecto ATransacoesBancarias  (controle  de  transação), ALogging  (histórico  de  acessos), AIUsuario  (declare  parents),  ATracing  (controle  de  fluxo  de  execução), APreEPosCondicoes  (suporte  à  verificação  de  pré  e  pós-condições), AAutenticacao (autenticação de usuário) e AExcecoes (tratamento de exceções). A seguir,  são  analisados  artefatos  do  Modelo  de  Projeto  do  SDB,  exemplificando  a aplicação dos três TC_DMs apresentados.  

TC_DM 1 – O relacionamento de precedência entre aspectos permite o rápido reconhecimento da ordem de execução de seus adendos. 

Justificativa: A  ordem  em que  os  adendos  de múltiplos  aspectos  são  combinados  na  aplicação alvo  pode  afetar  o  comportamento  do  sistema,  especialmente  quando  esses  aspectos  afetam conjuntos  de  junção  coincidentes.  Logo,  a  representação  dos  relacionamentos  de  precedência refletirá em implementações mais fáceis de serem testadas, uma vez que a ordem de execução dos adendos é definida a priori. 

TC_DM 2 – Há um conjunto de pontos de junção a serem descartados num relacionamento aspecto-classe fraco. 

Justificativa:  Em um  relacionamento  crosscuting,  caso  a  restrição  seja  fraca  (pouco  restritiva), pontos de junção não requeridos podem ser selecionados, os quais deveriam ser ignorados. Desta forma, uma lista contendo os pontos de junção que deverão ser descartados neste relacionamento facilitará a elaboração dos casos de teste. 

TC_DM 3 – Há um conjunto de pontos de junção a serem considerados num relacionamento aspecto-classe rígido. 

Justificativa:  Em  um  relacionamento  crosscuting,  se  a  restrição  for  rígida,  alguns  pontos  de junção requeridos podem não ser selecionados. Logo, uma lista contendo os pontos de junção que deverão ser considerados neste relacionamento facilitará a elaboração dos casos de teste. 

Figura 1 – Critérios de Testabilidade para o Modelo de Projeto 

II Latin American Workshop on Aspect-Oriented Software Development

55

Page 7: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

  

  O  relacionamento  de  precedência  entre  aspectos  deve  ser  respeitado.  Como  a ordem em que os adendos de múltiplos aspectos são combinados na aplicação alvo pode afetar  o  comportamento do  sistema,  especialmente quando esses  aspectos  interceptam conjuntos de junção coincidentes, a representação dos relacionamentos de precedência entre  aspectos  é  uma  boa  prática. O TC_DM 1  é  verificado  no Diagrama  de Classes Estendido dos aspectos ALogging e ATracing (Figura 2). 

  A  Figura  2  apresenta  dois  relacionamentos  de  crosscutting  que  associam  os aspectos  ALogging  e  ATracing  à  classe Banco.  Estes  dois  aspectos  interceptam  o método  saldo  da  classe  Banco  e  seu  comportamento  é  alterado  nos  pontos  de combinação  definidos  pelo  pointcut7  verSaldo  em  ambos  os  aspectos.  O relacionamento precedence é apresentado como uma seta tracejada entre dois elementos do modelo e rotulada com o estereótipo <<precede>>. O aspecto na parte final da seta (o  cliente)  precede  o  aspecto  na  cabeça  da  seta  (o  fornecedor).  Neste  caso,  um relacionamento  precedence  é  representado  do  aspecto  ATracing  ao  aspecto ALogging.  Isso  significa  que  o  comportamento  de  tracing  ocorre  antes  do comportamento de logging. 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 2 - Diagrama de Classes Estendido de ALogging e ATracing 

  O  TC_DM  1  pode  ser  verificado  no  diagrama  da  Figura  2,  pois  existe  uma referência explícita ao relacionamento de precedência entre os aspectos envolvidos. A representação  dos  relacionamentos  de  precedência  refletirá  em  implementações  mais fáceis de serem  testadas, uma vez que a ordem de execução dos adendos é definida a priori, contribuindo para aumentar a testabilidade de software OA. 

                                                 7  Declarações  responsáveis  por  selecionar  pontos  de  execução  bem  definidos  em  um  programa  (join points),  ou  seja,  detectam  quais  join  points  o  aspecto  deve  interceptar  [Kiczales  2001],  [Garcia  et  al., 2004]. 

II Latin American Workshop on Aspect-Oriented Software Development

56

Page 8: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

   

  O TC_DM 2  e  o TC_DM 3  contribuem para  tornar  a  tarefa  de  elaboração  de casos de teste menos árdua, pois exigem que os relacionamentos aspecto-classe a serem executados e/ou descartados sejam explicitados nos artefatos do Modelo de Projeto. 

  A Figura 3 apresenta o diagrama de aspectos de AAutenticacao. Através dela, é possível observar que existem dois pointcuts, _classes e _verSaldo, responsáveis por  redefinir  características  comportamentais  na  classe  base.  O  pointcut  _classes representa  um  relacionamento  aspecto-classe  fraco  e,  por  isso,  pontos  de  junção  não requeridos  podem  ser  afetados  por  ele.  Por  outro  lado,  o  pointcut  _verSaldo representa um relacionamento aspecto-classe forte. Assim, pontos de junção requeridos podem não ser afetados por ele. Para verificar o TC_DM 2, um estereótipo denominado <<ignore>>  foi  incorporado  ao  Diagrama  de  Aspectos  de  AAutenticacao, juntamente  com  uma  listagem  dos  pontos  de  junção  que  devem  ser  ignorados  para  o relacionamento aspecto-classe em questão (pointcut _classes). 

  De  modo  análogo,  para  verificar  o  TC_DM  3,  um  estereótipo  denominado <<include>> foi incorporado ao diagrama juntamente com uma listagem dos pontos de junção que devem ser selecionados para o relacionamento aspecto-classe em questão (pointcut _verSaldo). 

 

 

 

 

 

 

 

 

Figura 3 - Diagrama de Aspectos de AAutenticacao 

5. Conclusão e Trabalhos Futuros 

A testabilidade é um importante atributo para a manutenção e garantia de qualidade do software  [Chatterjee  2008].  Embora  as  novas  metodologias  busquem  reduzir  a complexidade da sua organização, a atividade de teste continua sendo essencial para o seu desenvolvimento. Além disso, dada a complexidade elevada do software, considera-se  esta  atividade  responsável  por  metade  do  esforço  despendido  no  seu desenvolvimento.  Dessa  forma,  foi  apresentado  um  conjunto  de  critérios  de testabilidade para guiar a construção do Modelo de Projeto de software OA (TC_DMs). 

  Para verificar a aplicabilidade dos TC_DMs, construiu-se um sistema hipotético de domínio bancário.  Visando  a  atingir  a  completeza  dos  critérios,  experimentos  e estudos de caso, referentes à avaliação/adaptação de Modelos de Projeto OA existentes, devem  ser  realizados,  abrangendo  outros  domínios  do  conhecimento,  bem  como  a avaliação  da  efetividade  dos  TC_DMs  estabelecidos.  Desta  forma,  poderão  ser adicionados  novos  critérios  ao  conjunto  dos  TC_DMs  e  efetuadas  adaptações  nos TC_DMs definidos.  

II Latin American Workshop on Aspect-Oriented Software Development

57

Page 9: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

  

  fOutros desdobramentos deste trabalho incluem: a) a elaboração de diretrizes de testabilidade  para  o  Modelo  de  Projeto;  b)  a  construção  de  critérios  e  diretrizes  de testabilidade  para  os  Modelos  de  Análise  e  de  Implementação;  c)  a  criação  e  a atualização de uma  tabela de  rastreabilidade de critérios entre os  três modelos; e d) o desenvolvimento de um ambiente para apoiar a abordagem, visando a sua integração ao processo de desenvolvimento. 

Referências 

Binder, R. V. (2000) Testing Object-Oriented System – Models, Patterns and Tools. Addison-Wesley, 1191p. 

Chatterjee,  I.  (2008)  Testing  Testability.  StickyMinds.com.  Disponível  em: <http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=ART&ObjectId=8077&commex=1>. Acessado em: Maio 2008. 

Chavez,  C.  V.  F.  G.  (2004)  Um  Enfoque  Baseado  em  Modelos  para  o  Design Orientado  a  Aspectos.  Tese  de  Doutorado.  PUC  –  Rio,  Departamento  de Informática. 298 f. 

Colanzi,  T.  E.  (1999) Uma Abordagem  Integrada  de Desenvolvimento  e Teste  de Software Baseada na UML. São Carlos, 135p. Dissertação – Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo. 

Elrad, T., Kiczales, G., Aksit, M., Lieberher, K., Ossher, H. (2001) Discussing Aspects of AOP. Communications of the ACM, v. 44, n. 10, p. 33-38. 

Filman,  R.  E.;  Elrad,  T.;  Clarke,  S.;  Aksit,  M.  Aspect-Oriented  Software Development. Addison Wesley – Pearson Education, 2005, 755p. 

Freedman,  R.  (1991)  Testability  of  Software  Components.  IEEE  Transactions  on Software Engineering, 17(6):553-564, June 1991. 

Garcia, A., Chavez, C., Soares, S., Piveta, E., Penteado, R., Camargo, V. V., Fernandes, F. (2004) Relatório do 1º WASP, 10p. 

ISO  Std.  9126.  (1991)  “Information  Technology  –  Software  Product  Evaluation  – Quality Characteristics and Guidelines for their use”. International Organization for Standardization. 

ISO  Std.  9126.  (2001)  “Software  Enginnering  –  Product  Quality  Part  1:  Quality Model”. International Organization for Standardization. 

Kiczales,  G.  (2001)  Aspect-Oriented  Programming  with  AspectJ  (Tutorial),  In: OOPSLA’2001, Tampa, Flórida, EUA. 

Maldonado,  J. C.  (1991) Critérios Potenciais de Usos: Uma Contribuição ao Teste Estrutural de Software. 169 f. Tese de Doutorado. Unicamp. 

McGregor, J. D.; Sykes, D. A. (2001) A Pratical Guide to Testing Object-Oriented Software. Addison-Wesley. 393p. 

Pressman, R. S. (2006) Engenharia de Software, 6ª ed. McGraw-Hill. 

Silveira, F. F. (2007) METEORA: Um método de Testes Baseado em Estados para Software de Aplicação Orientado a Aspectos. 262f. Tese de Doutorado.  Instituto Tecnológico de Aeronáutica (ITA). 

II Latin American Workshop on Aspect-Oriented Software Development

58

Page 10: Critérios de Testabilidade para Avaliação do Modelo de ... · A atividade de teste de software é realizada visando ... , de realizar as atividades de teste desde o início do

   

Sommerville, I. (2001) Software Engineering. 6a. Ed. Addison-Wesley. 693p. 

Souza,  R.  C.  G.  (2003)  Características  de  Testabilidade  nos  Diagramas  UML (Unified  Modeling  Language):  Apoio  aos  Testes  de  Sistemas  de  Software Orientados a Objetos. Tese de Doutorado. Escola Politécnica da USP. 

Tannouri, P. A. (2008) O que é testabilidade. Linha de Código. 2006. Disponível em: <http://www.linhadecodigo.com.br/ITC_Artigo.aspx?id=923>.  Acessado  em:  Maio 2008. 

Zhao,  J.  (2002)  Slicing  Aspect-Oriented  Software.  In:  International  Workshop  on Program Comprehension, Paris. Proceedings. IEEE Computer Society. p.251-260. 

Zhao,  J.  (2003) Data-Flow-Based  Unit  Testing  of  Aspect-Oriented  Programs.  In: Annual International Computer Software and Applications Conference, Proceedings. IEEE Computer Society. p.188-197. 

Zhao, J. and Rinard, M. (2003) System Dependence Graph Construction for Aspect-Oriented  Programs.  Cambridge:  MIT,  Laboratory  for  Computer  Science. (Technical Report MIT-LCS-TR-891). 

II Latin American Workshop on Aspect-Oriented Software Development

59