Design Patterns, Object-oriented Software Engineering, Aspect Oriented Programming, Search-based Software Engineering, Software Product Lines, System Re-engineering, Domain-Specific Languages, Generative Development, Service Oriented Architecture.