Petri nets are a powerful technique for modelling, analysing and verifying dynamic aspects of all kinds of systems. And so are many other techniques from the field of formal methods, e. g. State Charts or timed automata. All of these techniques have their particular strengths and weaknesses, which often make it necessary to have models in different notations for the very same system. Or it might be necessary to have one abstract model and another more detailed model of the same system for performing different analysis tasks. The problem, however, is that the different techniques come with their own composition mechanisms, which make it very expensive to use and to maintain different models of the same system. In this paper, we discuss some concepts that deal with the above problems. The basic idea is to define component types with their interfaces and their possible connections completely independently from any particular modelling technique. For each component type, a set of possible models in different notations and on different levels of abstractions can be defined. From these component definitions, which we call a component library, an engineer can build a system and can fully automatically generate an overall model. Then, this overall model can be analysed or verified with the techniques provided for this particular technique. The generation of the overall model will be defined by triple graph grammar (TGG) rules, which will be interpreted by a TGG-interpreter.