Identification of concurrencies for parallel program development
An intermediate step in the design process for concurrent software systems is proposed in this dissertation. The concurrency identification method is intended to be a manual step that mediates between Senn's system development steps "setting detailed system requirements" and "specification of new system (functional)." Manual identification is proposed as a device for stimulating a developer's intellect so that new solutions can be developed as opposed to reiterating known solutions generated by automated detection.
The concurrency identification method presented was derived from an insight into the precedence relationships necessary for system specifications to be defined. This insight was verified by examining a well-defined construct for concurrency. The properties of the construct found to be important for the identification of concurrency are (1) that tasks may be abstracted as logically indivisible steps, (2) that tasks operate independently during an atomic step, (3) that ordering of concurrent operations is unimportant, (4) that continuation and concurrency are not mutually exclusive, and (5) that indeterminate order does not preclude determinate results.
Once the identification method was developed, its use was demonstrated by investigating the concurrencies of the Special Constrained Multiparametric Linear Programming (SCMLP) problem. Although the proposed concurrency identification method allows detection of high level concurrencies, the concurrencies revealed in the SCMLP by the proposed concurrency identification method were primarily on an operational level. The higher level concurrencies detected by the identification method stemmed largely from the possibility of multiple optimal solutions in linear programming problems.
The identification of concurrency presented relies on precedence relationships inherent in the program requirements. Precedence relationships happen to be used in many management tools. Thus, the precedence tools of management may be helpful to programmers in analyzing concurrencies. Also, the common concept of precedence may be helpful in communicating the concepts of concurrent processing to management personnel.