Deriving software architectural models from requirements models for adaptive systems: the STREAM-A approach