The framework aims at providing programmers with a framework that permits developing of autonomic and adaptive systems according to the SCEL paradigm. The autonomic computing paradigm has been proposed to cope with size, complexity and dynamism of contemporary software-intensive systems. The challenge for language designers is to devise appropriate abstractions and linguistic primitives to deal with the large dimension of systems, and with their need to adapt to the changes of the working environment and to the evolving requirements. We propose a set of programming abstractions that permit to represent behaviors, knowledge and aggregations according to specific policies, and to support programming context-awareness, self-awareness and adaptation. Based on these abstractions, the language SCEL (Software Component Ensemble Language) has been defined. SCEL is a kernel language whose solid semantic foundations lay also the basis for formal reasoning on autonomic systems behavior.