A software product line architecture for distributed real-time and embedded systems: a separation of concerns approach