PARALLEL PROCESSING FOR SCIENTIFIC COMPUTING(2006)
Indiana Univ
被引用7|浏览7
摘要
The increasing complexity of software systems for computational science and engineering has led to the adoption of a now-common methodology from business and industrial computing: software components. A component in this context is an independently deploy-able unit of software, which can be composed together with other components to form a complete program for solving some class of problems [63]. Components must have well-defined interfaces to allow this composition, but the implementation within the component is not specified. This situation implies programming language independence and, as long as the interfaces do not change, the ability to substitute updated or superior implementations. Other desirable features include scalability of the number of interacting components, scalable parallelism both within and between components, and minimality. In this context, minimality means that the requirements for a unit of software to function as a component are as lightweight and as few as possible.Components are typically regarded as peers, so that no component necessarily must be the driver or main component. All component systems provide some level of encapsulation, the idea from object-oriented programming that limits all interactions with the component to defined interfaces. Those interfaces are called ports, and often a formal interface definition language (IDL) is used to define ports. Because all interactions are through the ports, defining them completely specifies the component's requirements. Conventional libraries may cause programs linking with them to fail when upgraded to a new version, but components implementing the same interface are interchangeable (although they may differ in performance or resource usage, such as memory).The setting in which components are connected is called a framework, which is responsible for instantiating, running, connecting, and stopping components—in general, the full life cycle.