PLanD: An expressive lightweight language for describing static and dynamic software product line architectures | Synapse