palavras-chave Engenharia de Software Middleware adaptação dinâmica arquiteturas de software componentes de software reflexividade