Software architectures revisited