Dispositivos com capacidade de processamento e comunicação estão cada vez mais embutidos no ambiente físico, gerando informações sobre os usuários e suas interações com o ambiente. Essa proximidade entre usuários, objetos do mundo físico e serviços está permitindo o aparecimento dos sistemas cyber-físicos (Cyber-Physical Systems -CPS). Neles, a quantidade de dispositivos cresce muito rapidamente e mecanismos que permitam a gerência das interações entre eles são necessários. Assim, essa tese de doutorado propõe um middleware, chamado CyberSupport, que fornece um suporte para o desenvolvimento e execução baseado em camadas de software auto-adaptáveis para CPS. O CyberSupport possui na sua camada mais inferior mecanismos para permitir a comunicação e coordenação entre os diversos dispositivos que formam CPS. A principal contribuição dessa camada está relacionada com as interações entre dispositivos de forma desacoplada e auto-adaptativa. Na camada superior, primitivas de execução fornecem acesso aos recursos do ambiente através de interfaces bem definidas, com especial atenção para facilitar a adaptação do funcionamento da aplicação e do CyberSupport. Essas interfaces são utilizadas para a criação de sistemas auto-adaptativos para CPS. O CyberSupport foi avaliado utilizando métricas de desempenho em dispositivos reais, e também métricas de qualidade de código, comparando aplicações desenvolvidas com e sem o CyberSupport. As métricas de desempenho avaliaram 5 algoritmos de roteamento e 5 tecnologias de comunicação desenvolvidos utilizando o CyberSupport, de acordo com o tempo médio de entrega de uma mensagem, a quantidade total de mensagens entregues e a taxa de perda de mensagens. Já as métricas de qualidade de código compararam 3 aplicações desenvolvidas com e sem o CyberSupport, de acordo com métricas de acoplamento de código. Os resultados mostraram uma redução de 3% no acoplamento de código quando o CyberSupport é utilizado.