Today, small- and medium-sized enterprises (SMEs) in the software industry face major challenges. Their resource constraints require high efficiency in development. Furthermore, quality assurance (QA) measures need to be taken to mitigate the risk of additional, expensive effort for bug fixes or compensations. Automated static analysis (ASA) can reduce this risk because it promises low application effort. SMEs seem to take little advantage of this opportunity. Instead, they still mainly rely on the dynamic analysis approach of software testing. In this article, we report on our experiences from a technology transfer project. Our aim was to evaluate the results static analysis can provide for SMEs as well as the problems that occur when introducing and using static analysis in SMEs. We analysed five software projects from five collaborating SMEs using three different ASA techniques: code clone detection, bug pattern detection and architecture conformance analysis. Following the analysis, we applied a quality model to aggregate and evaluate the results. Our study shows that the effort required to introduce ASA techniques in SMEs is small (mostly below one person-hour each). Furthermore, we encountered only few technical problems. By means of the analyses, we could detect multiple defects in production code. The participating companies perceived the analysis results to be a helpful addition to their current QA and will include the analyses in their QA process. With the help of the Quamoco quality model, we could efficiently aggregate and rate static analysis results. However, we also encountered a partial mismatch with the opinions of the SMEs. We conclude that ASA and quality models can be a valuable and affordable addition to the QA process of SMEs.
Software cloning is a well-known software quality defect. Nevertheless, it abounds in practice -- across artifacts, organizations and domains. This has two principal reasons: first, the significance of cloning is not well understood. Second, no comprehensive method exists that guides practitioners to establish successful clone control. This thesis contributes to both areas. First, we present empirical results on the significance of cloning. Our case studies on source code, requirements specifications and Matlab Simulink models demonstrate that cloning needs to be controlled to avoid its negative impact on correctness and costs. Second, we present a comprehensive method for clone control and demonstrate its effectiveness through an industrial case study, where it successfully reduced the amount of cloning in the participating system. Finally, we identify the limitations of clone detection and control by a controlled experiment.