Arnd Poetzsch-Heffter Dynamic Components as Semantic Entities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Concept and Static Support ~~~~~~~~~~~~~~~~~~~~~~~~~~ Extended Abstract of Work in Progress The notion of a software component is widely used. In most definitions, a component is considered as a static entity (e.g. Booch: ``A reusable software component is a logically cohesive, loosely coupled module that denotes a single abstraction''; Nierstrasz, Tsichritzis: ``A software component is a static abstraction with plugs''). In this talk, we will look at components from a dynamic point of view. The idea is to conceptually structure the storage and code of a running program into a hierarchically organized set of encapsulated components with well-defined interfaces. Based on this concept, we investigate typing techniques and syntactic constructs for access restriction to statically enforce the component structure. The talk is organized into two parts. In the first part, we illustrate the concept of dynamic components by examples within an object-oriented setting. Then, we introduce the invariant expressing the component hierarchy and describe what is necessary to maintain the invariant. We discuss the benefits of a component structure for program specification, verification, and reuse. The second part of the talk investigates language mechanisms that help to make the component structure explicit and to enforce the structure invariant. In particular, we present a typing mechanism for distinguishing objects inside and outside a component.