Architecture Compliance Checking of Semantically Rich Modular Architectures: A Comparative Study of Tool Support
design patterns : elements of reusable object - oriented software .