Declarative design pattern-based development using aspect oriented programming