Social and Technical Quality Analysis in Software Projects
Software quality is an important aspect of the development of successful and cost-effective software products. In recent years, it has been recognized that both the technical and the social quality aspects are important for a successful software product. Smells are usually an indication of the deeper quality problems in the software. Technical and community smells reflect the sub-optimal patterns in the software structure and teams’ communication structure, respectively. In this thesis, we investigate technical quality and its relationship with social quality in software projects. For technical quality, the importance of architecture quality and the challenges in the architecture smells detection suggest the need to identify gaps in this area so that the open challenges can be addressed. In addition, there is a lack of empirical evidence on how the architecture-level refactoring of large components in software architecture could be approached using maintainability metrics. Finally, there is limited empirical evidence on the relationship between social and technical quality aspects (using smells) in software projects. For gaps in technical aspect, we first unify the knowledge about the detection of architecture smells through a systematic mapping study. Next, we perform a relationship analysis of package size with maintainability characteristics. To fill the gaps in the relationship of social and technical aspects, we empirically conduct relationship studies of community and technical smells. Our technical quality results identify many challenges and open research areas in architecture smells detection and refactoring opportunities for large packages. Our relationship analysis results identified one type of community smell (i.e., contributions without peers’ knowledge) shows significant relationships with technical smells, indicating the need for joint refactoring. Finally, we find that social quality of software projects increases when the projects use tools (made for effective collaboration within software teams).
Networked Digital Library of Theses and Dissertations