AdditionalQAInfo

= Quality Assurance Introduction =

The quality of a software system is mostly defined by its source code. Software evolves continuously, it gets modified, enhanced, and new requirements always arise. If we do not spend time periodically on improving our source code, it becomes messy and its quality will decrease inevitably.

Literature tells us that we can improve the quality of our software product by regularly refactoring it. But does refactoring really increase software quality? Can it happen that a refactoring decreases the quality? In a case study of refactoring large-scale proprietary software systems we found that although one single refactoring makes only a small change (sometimes even decreases quality), but applying blocks of refactoring operations on the source base can significantly increase quality, which can result not only in the local, but also in the global improvement of the code.

Refactoring source code has many benefits (e.g. improving maintainability, robustness and source code quality), but it may take time away from other implementation tasks. In the aforementioned case study we also found that developers can significantly improve the quality of software systems when the extra time and effort is focused on the refactoring process of the source code.

For the sake of efficient planning of the refactoring process and also for the measurement of productivity the continuous monitoring of the software system is inevitable. Fortunately there are many monitoring software one of which is SonarQube. It is a web-based open platform to manage code quality. As such, it covers 7 axes of code quality: architecture and design, duplicates (also known as clones), unit tests, complexity, potential bugs, coding rules (and their violations) and comments. Rules, alerts, thresholds, exclusions, settings… can be configured on-line. By leveraging its database, SonarQube not only allows to combine metrics altogether but also to mix them with historical measures. SonarQube has also got a very efficient way of navigating, a balance between high-level view, dashboard and defect hunting tools. This enables to quickly uncover projects and/or components that are in technical debt to establish action plans.

Together with SourceMeter, SonarQube can provide the ability of deep static source code analysis of complex Python systems. SourceMeter can analyze source code conforming to Python 2.7.8 and earlier versions. By its different modules SourceMeter is capable of detecting Type-2 code clones, i.e. code fragments that are structurally identical, but may differ in variable names, literals, identifiers, etc. It can list source code elements which violate a certain metric threshold value (e.g. most complex algorithms), and coding rule violations (so-called bad practices) in the code. SourceMeter also incorporates Pylint for coding rule violation check.