Graph-Based Design and Analysis of Dynamic Software Architectures