By adopting open architectures that are designed for change, you succeed higher levels of application flexibility. When having to move applications to the cloud or migrate them to other technologies, you keep the semantics and update the models compiler.