Pattern-based reverse-engineering of design components
design patterns : elements of reusable object - oriented software .