Building efficient scientific applications as hierarchical compositions of cooperating components depends significantly on having a thorough knowledge of component performance and component interactions. To make effective decisions concerning component configuration, deployment, and coupling, it is important to develop a performance engineering methodology that complements the component and application development and execution processes. Ideally, the methodology would be supported by performance technology (measurement, analysis, and modeling) that extends the programming and execution environment to be performance observable and performance aware. However, the diversity of component functionality and the complexity of component implementation (e.g., different languages, hardware platforms, and parallelism modes) challenge performance technology to offer (more) robust solutions. Our objective here is to define a consistent performance engineering model for components and component ensembles, and to implement that model in an integrated fashion throughout the component development and execution framework.