Usually frameworks are seen as semi-complete software architectures which define various templates and hooks in order to organize the interaction between reusable pieces of code. In many cases the properties of frameworks are not formally defined. Our approach serves as a basis to formulate the semantics of frameworks especially the interaction between their constituent parts. This is due to the fact that abstract formal semantic information about component properties can be included in the interfaces as well. Designing the architecture of frameworks is a mission with many potential traps and pitfalls. Especially, subjects like distribution and heterogeneous components introduce additional complexity to framework architectures which easily outweighs their advantages like openness, additional reliability and reusability. As a means to provide support for designing distributed object-oriented application frameworks we propose an architecture description language based on a component model of software which explicitly separates component specific from component interconnection properties. The notation includes specification information about potential distribution. Rather than describing such distribution aspects within a component most of these distribution properties are stated with the use relation between components which may be local or remote. An architecture design can then be transformed into a distributed object-oriented implementation according to the Object Management Groups CORBA standard. It is also desirable to assess framework architectures w.r.t. non-functional performance-related properties like speed or size early in the development process. This applies especially in the case of complex client server relationships and heavy use of multithreading. Thus we show how a performance model can be derived systematically from an architecture description. Finally, we present a detailed example.