Data: quinta-feira, 10/04, às 16:00
Local: sala 511 RDC
Título: How Developers Reason about Module Cohesion?
Palestrante: Cláudio Nogueira Sant’Anna (UFBA)
Several cohesion metrics have been proposed to support development and maintenance activities. The most traditional ones are the structural cohesion metrics, which rely on structural information in the source code. For instance, many of these metrics quantify cohesion based how methods and attributes are related to each other within a given module. Recently, conceptual cohesion metrics have been proposed for computing cohesion based on the responsibilities a given module realizes. Besides different flavors of cohesion, there is a lack of empirical evidence about how developers actually perceive cohesion and what kind of cohesion measurement aligns with developers’ perception. In this paper we fill this gap by empirically investigating developers opinion through a web-based survey, which involved 80 participants from 9 countries with different levels of programming experience. We found that: most of the developers are familiar with cohesion; and they perceive cohesion based on class responsibilities, thus associating more with conceptual cohesion measurement. These results support the claim that conceptual cohesion seems to be more intuitive and closer to the human-oriented view of software cohesion. Moreover, the results showed that conceptual cohesion measurement captures the developers’ notion of cohesion better than traditional structural cohesion measurement.
Cláudio Nogueira Sant’Anna é professor adjunto do Departamento de Ciência da Computação da Universidade Federal da Bahia (UFBA). Ele obteve seu Doutorado em Informática pela Pontifícia Universidade Católica do Rio de Janeiro (2008), tendo realizado doutorado “sanduíche” na Universidade de Lancaster, Reino Unido. Seus interesses de pesquisa incluem: design de software, modularidade de software, métricas de software, arquitetura de software, engenharia de software experimental, compreensão de software e visualização de software.