Reverse Engineering of Design Patterns from Java Source Code
design patterns : elements of reusable object - oriented software .