A Catalogue of Bad Smells for Software Process - Santos, Edison J.; Maciel, Rita Suzana Pitangueira; Sant'Anna, Claudio (Anais do Simpósio Brasileiro de Qualidade de Software (SBQS); 2018: Anais do XVII Simpósio Brasileiro de Qualidade de Software, 2018)
Software processes play an important role in the software industry, as they influence the quality of the product and determine the efficiency of the company that develops these software products. To be used systematically in different projects, software processes need to be disseminated in the organization and continuously evaluated when one wants to understand their quality. The evaluation of a software process maintains and promotes its quality and evolution. However, if these evaluations happen from data directly collected from a process that has been applied to a given development project, process quality problems have already influenced the outcome of the process and possibly the software product. Software process models, commonly specified in a process modeling language (PML), specify in a standardized way the elements of a process and the appropriate interactions between them. In addition to assigning to the understanding, communication and execution of a software process in a company, process models offer an opportunity for them to be evaluated before their first execution or even to help identify problems in the process of ongoing projects. This paper presents a proposal to use the concept of bad smells in software process models with the objective of identifying possible disharmonies in the models. Initially bad smells of object-oriented code were analyzed and adapted to SPEM (Software & Systems Process Engineering Meta-Model) to generate a catalog. Subsequently a survey was carried out to validate the definitions, representations and possible impacts of the proposed bad smells, resulting in a validation that presented an overall rate of 86% agreement. It is expected that being possible to characterize bad smells for software processes, to enable their applicability in real software development process.