Leitura Baseada em Perspectiva: Visão do Projetista - PUC-Rio

Propaganda
Leitura Baseada em Perspectiva:
Visão do Projetista Orientada a Objetos
Sômulo Nogueira Mafra
[email protected]
Orientador: Guilherme Horta Travassos
[email protected]
COPPE/UFRJ - Programa de Engenharia de Sistemas e Computação
Universidade Federal do Rio de Janeiro
Caixa Postal 68.511, CEP 21945-970,
Rio de Janeiro – RJ – Brasil
Nível: Mestrado
Ano de Ingresso no Programa (formando): 2003
Ano de Ingresso no Programa (efetivo): 2004
Época Prevista de Conclusão: 04/2006
Aprovação da Proposta de Dissertação pelo Orientador: 11/2004
Resumo. O desenvolvimento orientado a objetos (OO), embora tenha
alcançado relativo sucesso industrial, ainda apresenta desafios, como a
condução de testes estruturais e a manutenção evolutiva. Nesse sentido, o uso
de técnicas de leitura minimizaria esse problema, ao apoiar o desenvolvedor
na aquisição do conhecimento sobre o problema descrito nos requisitos.
Dessa forma, seria possível a correção de defeitos críticos no início do
desenvolvimento e a construção de modelos iniciais de projeto OO,
aumentando a qualidade do desenvolvimento. Assim, o objetivo do trabalho
proposto é a definição e avaliação experimental de uma técnica que apóie a
revisão de requisitos e a construção de modelos iniciais de projeto OO.
Palavras-Chave: Verificação, validação e inspeção de software, Engenharia
de requisitos, Técnicas orientadas a objetos, Qualidade de software, Aspectos
empíricos para a engenharia de software.
1. Introdução
Apesar do relativo sucesso alcançado na indústria de software durante a última década,
a adoção do paradigma orientado a objetos (OO) parece ainda não ter contribuído de
forma significativa para o aumento de produtividade e qualidade no desenvolvimento de
software [Deligiannis et al. 2002]. O aclamado benefício do paradigma OO, que
supostamente diminui o custo de manutenção evolutiva, não foi observado em [Hatton
1998]. Além disso, alguns aspectos intrínsecos do paradigma OO, como polimorfismo e
generalização, dificultam a predição do caminho de execução do software OO, tornando
a aplicação de testes estruturais um desafio [Lima e Travassos 2004].
Uma provável razão para esse problema pode estar relacionada à carência de
técnicas que apóiem o engenheiro de software na extração do conhecimento sobre o
problema descrito no documento de requisitos. Como conseqüência, modelos
equivocados de projeto poderiam ser gerados, dificultando o entendimento e a posterior
manutenção do software [Mafra e Travassos 2005].
Nesse sentido, técnicas de leitura de software [Shull et al. 2000] poderiam
contribuir de forma satisfatória para a resolução desse problema, ao prover o engenheiro
de software com um processo bem definido para a obtenção do entendimento necessário
à execução de uma tarefa específica (ex.: revisão de requisitos, modelagem OO). Ao
longo dos anos, diversas técnicas de leitura de software foram propostas com variados
propósitos e avaliadas experimentalmente. Entretanto, não há registros de sua utilização
para a construção de modelos de projeto OO de alto nível [Mafra e Travassos 2005].
Dessa forma, o objetivo do presente trabalho é propor uma técnica de leitura que
apóie a obtenção do entendimento necessário para a execução das atividades de
detecção de defeitos em documentos de requisitos, através da tentativa de construção de
modelos iniciais de projeto OO. O uso de tal técnica, durante a revisão de requisitos,
permitiria a remoção eficiente de defeitos críticos ao sistema, na fase onde eles são
menos custosos de serem corrigidos [Lima e Travassos 2004], diminuindo o custo total
do desenvolvimento. Além disso, o uso adequado da técnica a ser proposta forneceria
ao engenheiro de software orientação sobre como modelar o sistema OO a partir dos
requisitos, permitindo uma visão inicial da estrutura do projeto, que poderia ser
utilizada no plano inicial de testes estruturais. A técnica a ser proposta será avaliada
experimentalmente, tendo em vista seu refinamento e sua posterior utilização industrial.
2. Fundamentação Teórica
O software, desde sua fase de concepção até sua descontinuação, necessita ser
representado ou estar apoiado por algum tipo de documentação. Nesse sentido, a
documentação do software contém valiosas informações sobre o desenvolvimento,
sendo um importante mecanismo para passar informações ao longo do ciclo de vida de
desenvolvimento [Shull 1998].
Em particular, o documento de requisitos exerce um papel fundamental no
desenvolvimento de software, à medida que descreve as características e funções que o
software deve possuir, além de servir como base para as etapas subseqüentes do ciclo de
desenvolvimento [Davis e Zowghi 2004].
Entretanto, para executar satisfatoriamente uma determinada tarefa utilizando o
documento de requisitos, o engenheiro de software necessita, primeiramente, extrair
deste documento o entendimento necessário à resolução do problema em questão.
Porém, muitas vezes as informações necessárias para a construção desse entendimento
encontram-se dispersas e mascaradas por outras informações não relevantes no contexto
da tarefa. Como conseqüência, o engenheiro de software poderia estar desperdiçando
valioso esforço na leitura de aspectos não relevantes do documento [Shull et al. 2000].
Uma possível causa dessa falta de foco na leitura vem da constatação de que os
engenheiros de software geralmente são ensinados a escrever artefatos de software; não
a lê-los [Basili 1997]. A educação básica em ciência da computação privilegia a escrita
de programas, enquanto as habilidades requeridas para a leitura adequada de um
artefato são raramente ensinadas, sendo geralmente adquiridas por anos de experiência.
A importância de um apoio à leitura dos requisitos pode ser justificada ainda
pelo fato do engenheiro de software muitas vezes não participar das sessões de
elicitação de requisitos; além disso, o conhecimento sobre o domínio do problema
adquirido dos stakeholders pelos analistas durante essas sessões pode não estar
documentado adequadamente nos requisitos. Assim, durante a leitura dos requisitos,
exigir-se-ia um considerável esforço de interpretação por parte do engenheiro de
software, aumentando drasticamente a probabilidade de propagação de defeitos.
Diante desse quadro, pesquisadores começaram a se preocupar com a definição
de técnicas que apoiassem a leitura satisfatória de requisitos de software [Ciolkowski et
al. 2002]. Ao longo dos anos, a pesquisa envolvendo tais técnicas tem sido direcionada
por resultados de estudos experimentais. À medida que novos estudos são executados,
as técnicas vão sendo refinadas e novas hipóteses geradas.
Assim, com o intuito de identificar o grau de conhecimento experimental
existente sobre técnicas de leitura, conduzimos uma revisão sistemática [Mafra e
Travassos 2005], cujo objetivo foi identificar, analisar e avaliar estudos experimentais
envolvendo técnicas de leitura de documentos de requisitos escritos em linguagem
natural com o propósito de caracterizá-las com respeito à usabilidade, eficiência na
identificação de defeitos e efetividade1 na cobertura dos defeitos identificados do ponto
de vista dos participantes dos estudos experimentais no contexto no qual os estudos
foram executados. Os resultados obtidos encontram-se sumarizados na próxima seção.
3. Trabalhos Relacionados
A revisão sistemática foi conduzida entre dezembro de 2004 e março de 2005. A seguir,
descrevemos sucintamente as principais técnicas encontradas. Maiores detalhes sobre as
técnicas podem ser encontrados em [Mafra e Travassos 2005].
DBR (Defect-Based Reading) - DBR [Porter e Votta 1994] representa uma família de
técnicas de leitura para a detecção de defeitos em documentos de requisitos descritos
em SCR [Heninger 1980], uma notação formal baseada em máquinas de estado. Cada
técnica DBR pode ser projetada para focar uma determinada classe de defeitos
específicos à notação SCR. No contexto da revisão conduzida não estivemos
interessados em DBR, haja vista que o objetivo da revisão restringiu a pesquisa a
requisitos descritos em linguagem natural.
PBR (Perspective-Based Reading) - A leitura baseada em perspectiva (PBR) [Shull et
al. 2000] representa uma família de técnicas de leitura elaborada inicialmente para a
1
Definimos efetividade como a quantidade de defeitos encontrados e eficiência como a quantidade de defeitos
encontrados por unidade de tempo, por exemplo, hora de inspeção.
detecção de defeitos em documentos de requisitos escritos em linguagem natural. PBR
auxilia a tarefa de detecção de defeitos ao observar quais informações possuem maior
relevância para os diferentes usuários do documento. Nesse sentido, PBR assegura que
cada revisor avaliará o documento segundo uma determinada perspectiva ao fornecer
um procedimento orientando-o a criar um modelo físico com base nos requisitos. Dessa
forma, o revisor que assumisse a perspectiva de testador construiria um conjunto de
casos de testes, utilizando a técnica de partição por equivalência, o revisor responsável
pela perspectiva de projetista construiria um diagrama de projeto, utilizando técnica de
análise estruturada e o revisor responsável pela perspectiva de usuário construiria um
manual do sistema, utilizando técnica de modelagem de casos de uso. Durante a criação
do modelo físico, revisores tentariam identificar os possíveis defeitos existentes,
respondendo a um conjunto de questões ajustadas para cada passo do procedimento de
criação do modelo. Caso os requisitos não forneçam informações suficientes para
responder às questões, significa que não apóiam o usuário dos requisitos em suas
tarefas, caracterizando a presença de potenciais defeitos.
OORT's (Object-Oriented Reading Techniques) - OORT's [Travassos et al. 1999]
representa uma família de sete técnicas de leitura que fornecem um procedimento para
as revisões individuais dos diferentes diagramas e documentos de projeto orientado a
objetos. O processo de leitura utilizando OORT's precisa ser em duas dimensões: leitura
horizontal e vertical. Na leitura horizontal, diferentes diagramas de projeto são
verificados para assegurar que estejam consistentes entre si. Na leitura vertical é
necessária a validação entre os modelos de projeto e os requisitos do sistema, para
assegurar que o projeto do sistema está correto com relação aos requisitos.
UBR (Usage-Based Reading) - UBR [Thelin et al. 2004] é uma técnica de leitura que
apóia a detecção de defeitos severos do ponto de vista do usuário, através da utilização
de modelos de caso de uso. UBR pode ser aplicada no contexto de inspeções em todas
as fases de desenvolvimento (requisitos, projeto, código etc) de um projeto específico.
MBR (Metric-Based Reading) - MBR [Bernardez et al. 2004] é uma técnica de leitura
para detecção de defeitos em modelos de casos de uso. A premissa assumida é que os
valores de certas métricas de casos de uso podem ser vistos como potenciais indicadores
de defeitos. Dessa forma, cada métrica apresenta uma faixa de valores onde, valores
fora dessa faixa, seriam indícios de potenciais defeitos nos modelos de casos de uso.
Na próxima seção, destacamos como os resultados dos estudos obtidos pela
condução da revisão sistemática podem contribuir para a proposta do presente trabalho.
4. Caracterização da Contribuição
A aplicação de técnicas de leitura poderia aumentar a qualidade no desenvolvimento de
sistemas OO, ao prover o engenheiro de software com um processo bem definido de
apoio à aquisição de conhecimento sobre o problema descrito nos requisitos.
Através desse conhecimento adquirido sobre o problema, o engenheiro de
software poderia detectar defeitos críticos para o sistema na fase onde eles são menos
custosos de serem corrigidos: a fase de requisitos. Resultados obtidos em [Travassos et
al. 1999], onde participantes aplicando a leitura vertical OORT’s comparando modelos
de projeto OO com documentos de requisitos detectaram defeitos do tipo omissão de
funcionalidades e fatos incorretos, reforçam essa idéia. Além disso, a aplicação
adequada de uma técnica de leitura que explorasse os principais aspectos da análise OO,
como classificação, colaboração e responsabilidades [Beck 1989], permitiria a
construção de um modelo inicial de projeto OO de qualidade.
Diante dos resultados obtidos da revisão sistemática conduzida, notamos a
carência na literatura de técnicas de leitura que explorem a construção de modelos de
projeto OO em sua aplicação [Mafra e Travassos 2005]. Estudos envolvendo a
perspectiva de projetista adotada por PBR utilizaram técnicas de análise estruturada
para construção de diagramas de fluxo de dados. Por sua vez, OORT’s e UBR, embora
relacionadas a inspeções de modelos de projeto OO, não prevêem a construção de tais
modelos no processo de inspeção.
Devido à carência de técnicas de leitura relacionadas ao desenvolvimento OO, e
aos resultados positivos da aplicação da técnica PBR observados nos estudos
experimentais obtidos da revisão sistemática, passamos a considerar a definição de uma
técnica PBR focando a visão do projetista OO um desafio de pesquisa interessante. Na
próxima seção descrevemos a estratégia para a avaliação da técnica a ser proposta,
enfatizando o estado atual do trabalho, além dos próximos passos a serem seguidos.
5. Avaliação dos Resultados
Como forma de avaliar a técnica a ser proposta, pretendemos utilizar a metodologia
para validação experimental de processos de software descrita em [Shull et al 2001]. De
acordo com essa metodologia são previstos passos para a validação de tecnologias
desde sua fase de concepção até sua aplicação industrial. Entretanto, a condução de um
estudo experimental na indústria está fora do escopo deste trabalho.
De acordo com essa metodologia, conduziremos, inicialmente, estudos
experimentais de viabilidade a serem executados em ambiente acadêmico, utilizando
estudantes universitários como participantes. O objetivo desses estudos não é a
validação da técnica, mas sim a construção de um corpo de conhecimento que proveja
indícios de que a técnica seja viável, em relação à detecção de defeitos, e plausível, no
que se refere ao esforço de sua aplicação.
Caso os resultados dos estudos de viabilidade sejam satisfatórios, demonstrando
que a técnica proposta foi capaz de atingir os resultados esperados demandando
razoável esforço, pretendemos conduzir estudos experimentais de observação. O
objetivo desses estudos será avaliar a utilização da técnica do ponto de vista de seus
usuários, analisando a forma como a técnica é aplicada. Dessa forma, seria possível a
avaliação de potenciais pontos fracos e fortes da técnica proposta, tendo em vista seu
provável refinamento.
A condução desses estudos, além de possibilitar a avaliação da viabilidade de
utilização da técnica, permitiria a geração de novas hipóteses para pesquisas futuras. A
Figura 1 resume as etapas previstas para a condução do trabalho.
ATIVIDADES
JUN
JUL
AGO
SET
OUT
Definição Inicial da Técnica
Estudos de viabilidade
Refinamento da Técnica Proposta
Estudos de observação
Figura 1 – Andamento do Trabalho em 2005/2006
NOV
DEZ
JAN
6. Considerações Finais
A aplicação de técnicas de leitura pode ser útil na garantia da qualidade do software
OO. Sua aplicação na inspeção de documentos de requisitos permitiria ao engenheiro de
software obter o conhecimento sobre o problema descrito nestes requisitos. A obtenção
desse conhecimento, através da tentativa de criação de modelos iniciais de projeto OO,
possibilitaria a remoção eficiente de defeitos, ainda durante a fase inicial do ciclo de
desenvolvimento, diminuindo o custo total do projeto. Além disso, o modelo inicial de
projeto OO gerado poderia ser um ponto de partida para o desenvolvimento de um
sistema OO de qualidade.
Como próximos passos citamos a definição da técnica e a execução de estudos
experimentais de viabilidade e de observação. O objetivo desses estudos será o provável
refinamento da técnica, visando à sua posterior utilização industrial. No momento
(junho de 2005), estamos definindo a técnica de leitura e planejando os estudos.
Agradecimentos - Os autores agradecem o apoio financeiro do CNPq para a
realização desse trabalho.
Referências
Basili, V. (1997) “Evolving and Packaging Reading Technologies”, The Journal of Systems and
Software, 38(1): 3-12, July 1997.
Beck, K. (1989) “A Laboratory For Teaching Object-Oriented Thinking”, OOPSLA'89 Conference
Proceedings October 1-6, 1989, New Orleans, Louisiana.
Bernardez, B., Genero, M., Duran, A., Toro, M. (2004) “A controlled experiment for evaluating a metricbased reading technique for requirements inspection”, Software Metrics. Proceedings of 10th
International Symposium on 14-16, Sept.Pages:257-268.
Ciolkowski, M., Laitenberger, O., Rombach, D., Shull, F., Perry, D. (2002) “Software Inspections,
Reviews & Walkthroughs”, 24th ICSE, May 19 - 25, 2002, Orlando, Florida.
Davis, A., Zowghi, D. (2004) "Good requirements practices are neither necessary nor sufficient",
Requirements Engineering, Issue: Online First, October 2004.
Deligiannis, I; Shepperd, M.; Webster, S., Roumeliotis, M. (2002) “Review of Experimental
Investigations into Object-Oriented Technology”, Empirical Software Engineering: An International
Journal. Vol. 7, No. 3, Kluwer Academic Publishers, September.
Hatton, L. (1998) “Does OO really match the way we think?” IEEE Software, 15(3):46-54, May/June.
Heninger, K. (1980) “Specifying Software Requirements for Complex Systems: New Techniques and
their Application”, IEEE Transactions on Software Engineering, SE-6(1):2-13, January.
Lima, G., Travassos, G. (2004) “Testes de Integração Aplicados a Software Orientado a Objetos:
Heurísticas para Ordenação de Classes”, In: III SBQS, Brasília, DF.
Mafra, S. N., Travassos, G. (2005) “Técnicas de Leitura de Software: Uma Revisão Sistemática”. In: XIX
SBES, Uberlândia, MG, Brasil.
Porter, A, Votta, L (1994) “An experiment to assess different defect detection methods for software
requirements inspections”, Proc. of the 16th international conference on Software engineering, May.
Shull, F. (1998) “Developing Techniques for Using Software Documents: A Series of Empirical
Studies”, PhD Thesis, University of Maryland, USA.
Shull, F., Rus, I., Basili, V. (2000) “How perspective-based reading can improve Requirements
Inspections”, Computer, Volume:33, Issue:7, July 2000 Pages:73 – 79.
Shull, F., Carver, J., Travassos, G. (2001) “An Empirical Methodology for Introducing Software
Processes”, In Proceedings of the Joint 8th European Software Engineering Conference (ESEC),
Vienna, September, 2001, pp.288-296.
Thelin, T., Runeson, P., Wohlin, C., Olsson, T, Anderson, C. (2004) “Evaluation of Usage-Based
Reading-Conclusions after Three Experiments”, Empirical Software Engineering, Volume 9, Issue 12, March. Pages: 77-110.
Travassos, G., Shull, F., Fredericks, M., Basili, V. (1999) “Detecting defects in object-oriented designs:
using reading techniques to increase software quality”, Proceedings of the 14th ACM SIGPLAN
conference on Object-oriented programming, systems, languages, and applications, Vol. 34 Issue 10.
Download