7.2. 7.2 A Pattern-Based Parallel Software Design Method

In software design, a 'software system' is described as a set of interconnected software components that cooperate to carry out a defined function. The interconnection is carried out by communication components that define the cooperation between software components. Each communication component is normally referred to as a 'subsystem'.

During the development of a parallel application, designers may try different methods, depending on their understanding of the different levels of abstraction within the general design process. A designer selects a method depending on a number of contextual issues, such as the complexity of the design, the size of the design team, its experience, personal style, preferences and so on. Regardless of which method is selected, the goal is to obtain the parallel program with the best possible performance, using the least design effort and implementation cost, and in the shortest possible time. The method selected has an enormous impact on how long it takes to solve a problem.

Conflicting requirements can complicate method selection. For example, producing the best performing solution may conflict with minimizing cost. In fact, the 'best' solution is determined by finding a balance among performance, cost, reliability, maintainability and so on. It may only be possible to accomplish improved performance or reduced cost, however, by investing in a thorough analysis, which itself might increase ...

Get Patterns for Parallel Software Design now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.