Detecção de Inconsistências em Modelos UML: Uma Técnica Baseada em Métricas

Abstract

A Unified Modeling Language (UML) é uma linguagem padrão para modelagem de software orientado a objetos, sendo utilizada amplamente tanto na academia quanto na indústria para modelar aspectos estruturais e comportamentais de software. Essa abordagem de modelagem multivisão permite representar informações complementares do software em diagramas distintos (por exemplo, os diagramas de classes e de sequência), permitindo uma melhor representação e compreensão das decisões de projeto tomadas por parte dos desenvolvedores. O problema é que a literatura atual mostra que tais modelos complementares da UML possuem informações estruturais e comportamentais conflitantes, bem como as técnicas atuais têm se mostrado imprecisas para detectar tais inconsistências, incluindo as sintáticas e semânticas mais severas. Além disso, a detecção manual é caracterizada como uma atividade propensa a erros e que exige um alto esforço, principalmente tentando identificar inconsistências semânticas entre os elementos dos diagramas. A presença de inconsistências em modelos UML pode levar a interpretação incorreta de decisões de projetos, bem como reduzir a qualidade do software produzido. Por outro lado, métricas de projeto têm sido definidas e utilizadas nas últimas décadas, sendo apontadas como indicadores efetivos de possíveis problemas em modelos UML. Infelizmente, até o momento nenhum trabalho foi desenvolvido utilizando métricas para detecção de inconsistências em modelos UML. Sendo assim, este trabalho busca: (1) produzir conhecimento empírico sobre os impactos da utilização de modelos UML com inconsistências na qualidade e na produtividade (esforço) do desenvolvimento de software; (2) identificar e elaborar um catálogo de tipos de inconsistências em modelos UML; (3) propor uma técnica baseada em métricas para detecção das inconsistências identificadas no catálogo; e, por fim, (4) implementar uma ferramenta capaz de detectar inconsistências em modelos UML. Para isso, um mapeamento sistemático da literatura foi realizado com 31 estudos primários selecionados através de um cuidadoso processo de filtragem com o objetivo de responder a seis questões de pesquisa motivadoras para o entendimento do estado da arte sobre o tema proposto. Além disso, experimentos controlados foram projetados e executados com uma amostra de 15 pessoas, entre desenvolvedores e analistas de sistemas, para compreender os impactos da utilização da ferramenta proposta na Taxa de Má Interpretação, no Esforço e na Corretude de Interpretação dos modelos, assim como, identificar gravidades para cada tipo de inconsistência. Os resultados obtidos mostram que existem algumas limitações das técnicas de detecção de inconsistência existentes, ocasionando a falta de insights e conhecimentos práticos sobre os efeitos das inconsistências em questões de qualidade de software e do esforço a ser investido para detecção destas inconsistências. Além disso, foi possível identificar três graus de gravidade para determinados tipos de inconsistências e verificar o impacto da utilização da ferramenta, que utiliza as técnicas propostas, na detecção de inconsistências em modelos UML multivisão. Por fim, pode-se concluir que, mesmo não sendo possível comprovar estatisticamente a melhora nos graus de Taxa de Má Interpretação e Esforço, a utilização de uma técnica baseada em métricas possibilita o aumento da Corretude na interpretação de modelos UML miltivisão, melhorando assim a qualidade do software desenvolvido.

Publication
Master Dissertation, Universidade do Vale do Rio dos Sinos, São Leopoldo, Brazil
Date
Links