This dissertation fits in the realm of the emerging scientific area named Experimental Software Engineering.
We propose and advocate the use of quantitative methods in Software Engineering where, traditionally,
qualitative-based approaches have been the rule. The quantitative emphasis has the objective aim of expressing
and assessing Software Quality.
The quantitative approaches p roposed herein are instantiated in the scope of the object-oriented paradigm and
targeted to the product quality. We formalize a set of software complexity metrics named MOOD (Metrics for
Object-oriented Design). These metrics, expressed with a formal specification language, OCL (Object
Constraint Language), are evaluated against several validation criteria, as those of Measurement Theory, and
are compared with other proposals in the literature. We demonstrate experimentally that is it possible to use
those metrics as explicative variables of software quality characteristics, such as reliability or maintainability.
To facilitate the construction of a versatile computational support to collect the design metrics, as required to
validate experimentally the hypothesis formulated herein, we have conceived a textual language to express
object-oriented designs, named GOODLY (a Generic Object-oriented Design Language? Yes!). This language is
used as an intermediate formalism in the MOODKit tool, whose architecture we present.
We approach the problem of software system modularization according to structural criteria, that is, guided by
cohesion and coupling among classes. We demonstrate that besides being possible to assess quantitatively the
modularity of a given system, we are able to suggest solutions that optimize it, given the adopted criteria. We
have verified experimentally that systems produced in several application domains are far from coping with the
desiderata of structural modularization as proclaimed in the Software Engineering literature.
To support the comparison, assessment and generation of optimized modularization architectures, we have
developed another tool named MOTTO (MOdularity Trial Tool for Object-oriented systems) that receives data
from MOODKit and interoperates with a statistical analysis tool to achieve the required purposes.
The most important outcome of this thesis is the proof of practicability of quantitative analysis applied to
software systems built according to the object-oriented paradigm. Several quantitative techniques originating
from Applied Statistics such as Multivariate Estimation and Cluster Analysis, as well as several types of
adherence and independence tests are applied. These techniques are commonly used in many fields of Science,
but their potential has not yet been fully realized by software engineers.