The term 'parallel software design' describes a problem-solving activity. While many software developers solve problems routinely, the problems that parallel software designers face are often very complex. An important distinction between parallel software design and other types of software design is that parallel problems are solved by applying specialized scientific and mathematical approaches, abstract knowledge and often much intuition.
Most parallel software design problems are so complex that designers cannot initially foresee a solution. To produce a parallel program, designers need to proceed methodically, solving the problem in a step-by-step process. A general design process that is used for parallel software design is shown in Figure 7.1 [PB90].
In parallel systems that deal with scientific problems, the general design process can often be characterized using four levels of abstraction (Figure 7.1). Each level defines its own collection of data and a set of operations or manipulations applicable to that data, [PB90], as described below:
Model level. At this level the problem is expressed in abstract terms and the solution is described in terms of abstract entities, logical associations and abstract values. The solution is outlined in general terms, irrespective of the computer system on which it will execute. Descriptions are often made in natural language or diagrams. At the model level, software designers may start ...