ArchiTRIO: a UML-compatible language for architectural description and its formal semantics