In a world of high productivity with a focus on maximizing profit, it becomes extremely important to produce new, reliable software as quickly and cheaply as possible. Component based software development (CBD) promised to reach this goal. By just composing prefabricated, reusable, well-tested components to new applications, application development should become much more productive and reliable. Application programmers should be able to select from a set of suitable components potentially produced by different vendors. Industry contributed to this goal by introducing several different component models as e.g JavaBeans, Enterprise JavaBeans (EJBs), the Component Object Model (COM), the Corba Component Model (CCM), and most recently .NET. Each component model defines its own standard for component look up, instantiation, access to the functionality of the component, communication, composition techniques available etc. Although these component models already are a big step towards the goals of CBD, especially the composition techniques supported are still too restricted, not simple enough, and vary from component model to component model. Thus, the main goal of this thesis is to establish a basis and to develop techniques for simplifying and unifying the composition process for components belonging to industrial component models. We introduce a unifying component model comprising the main features of current industrial component models. This model provides some additional, useful features, as e.g. the support of bi-directional connections which can be established by a certain composition mechanism. Components of this model can be composed to yield components of a higher level of abstraction. These composite components are described by a composition language which supports late binding mechanisms through strict interface based programming. As components of industrial component models can be integrated into our unifying model, all its features are also available for existing industrial component models. Compositions can be checked for consistency based on a type system we define for our component model. This type system respects amongst others conditions for bi-directional connections and a certain kind of alias control. Besides consistency checking, the type system is used to decide whether a component can be replaced by another one without invalidating any existing composite referring to the component to be replaced. To further simplify the composition process, we focus on tool support for visual composition. Some useful features are introduced, as e.g the guided establishment of needed interconnections and the colored depiction of constituents of a composite causing incorrect compositions.