The talk proposes that as incremental extension is an activity that is carried out both in initial development and in subsequent evolution of a software system, it should be included as a basic construct for defining architecture. We note that dealing with future evolution by the inclusion of pre-planned extension points is both incompatible with agile methods since these develop against immediate current requirements and impossible in principle for all development methods, since we cannot predict all future requirements for extension. We assume that constructs for dealing with incremental extension must deal with multi-authority design and development in that it must be possible to incremental develop a base framework in addition to allowing users to extend this base framework to permit their own developments. In acknowledging this, we develop a set of requirements that an extensibility facility must address. We propose resemblance, replacement, evolution and stratum as the basic constructs to introduce extensibility into architecture definition. Resemblance permits definition extension by creating a new definition from one or more existing definitions via the use of structural deltas. Replacement permits definition substitution while preserving identity such that any use relations that a definition has with a larger system are preserved. Evolution combines resemblance and replacement to permit global substitution of an extended definition. Definitions and definition extensions are packaged into strata that provide units of ownership and that are used to establish dependencies between extensions. We show how resemblance applies in the context of hierarchical architecture definition and how it is computed in a dependency graph where strata dependencies are taken into account. The talk describes how we have implemented these concepts in a UML2 based architecture definition tool (Evolve) with an associated Architecture Definition Language (Backbone) and its runtime support. A brief demonstration is used to illustrate the use of the extensibility constructs in definition, reuse and evolution of software architecture. The talk concludes by contrasting the approach with configuration management to emphasize the difference between using extensions in design versus making design oblivious to change. j.n.magee 1.12.2009