“…An AOSD approach can be beneficial at different stages of the software lifecycle and at various levels of abstraction. In particular, it can be advantageous to apply AOSD principles at levels closer to the problem space, e.g., architectural analysis [18], requirements engineering [30], and modeling [14], as well as the solution space, e.g, design [5,10,33], and implementation/coding [4,19,21,36].…”