An Aspect Oriented Framework for Flexible Design Pattern-based Development