  During software development, poor design and implementation choices can
detrimentally impact software maintainability. Design smells, recurring
patterns of poorly designed fragments, signify these issues. Role-stereotypes
denote the generic responsibilities that classes assume in system design.
Although the concepts of role-stereotypes and design smells differ, both
significantly contribute to the design and maintenance of software systems.
Understanding the relationship between these aspects is crucial for enhancing
software maintainability, code quality, efficient code review, guided
refactoring, and the design of role-specific metrics. This paper employs an
exploratory approach, combining statistical analysis and unsupervised learning
methods, to understand how design smells relate to role-stereotypes across
desktop and mobile applications. Analyzing 11,350 classes from 30 GitHub
repositories, we identified several design smells that frequently co-occur
within certain role-stereotypes. Specifically, three (3) out of six (6)
role-stereotypes we studied are more prone to design smells. We also examined
the variation of design smells across the two ecosystems, driven by notable
differences in their underlying architecture. Findings revealed that design
smells are more prevalent in desktop than in mobile applications, especially
within the Service Provider and Information Holder role-stereotypes.
Additionally, the unsupervised learning method showed that certain pairs or
groups of role-stereotypes are prone to similar types of design smells. We
believe these relationships are associated with the characteristic and
collaborative properties between role-stereotypes. The insights from this
research provide valuable guidance for software teams on implementing design
smell prevention and correction mechanisms, ensuring conceptual integrity
during design and maintenance phases.
