A type-centric framework for specifying heterogeneous, large-scale, component-oriented, architectures