Comprehension and change impact analysis of aspect-oriented programs through declarative reasoning