SOFA provides a platform for designing applications composed of hierarchical, dynamically updatable components, interconnected by connectors hiding deployment details. Communication among the components can be captured formally by behavior protocols.