Quality control is paramount in every engineering discipline. Software engineering, however, is not considered a classical engineering activity for several reasons, such as intrinsic complexity and lack of rigor. In general, if a software system is delivering the expected functionality, only in few cases people see the need to analyze the internals. In this tutorial we offer a pragmatic approach to analyzing the quality of software systems. On the one hand, we offer the theoretical background to detect quality problems by using and combining metrics, by analyzing the past through evolution analysis, and by providing visual evidence of the state of affairs in the system. On the other hand, as analyzing real systems requires adequate tool support, we offer an overview of the problems that occur in using such tools and provide a hands-on session with state-of-the-art tools used on a real case study.