Using models at runtime to address assurance for self-adaptive systems