Reaction Graphs for the Testing and Analysis of Software Architectures