Process-Oriented Patterns for Concurrent Software Engineering
نویسنده
چکیده
Concurrency is unavoidable in modern software development, owing to the increasing complexity of computer systems and the widespread use of parallel computer hardware. Conventional approaches to concurrency are fraught with danger: in particular, uncontrolled access to shared resources, poor scalability and the inability of the programmer to reason about the correctness of a program. Process-oriented programming is a software design approach that offers solutions to many of these problems. A process-oriented program is constructed as a network of isolated, concurrent processes that interact only using synchronisation objects such as channels and barriers. Using techniques drawn from CSP and the π-calculus, design rules can be constructed that enable the programmer to easily build systems with known safety properties. Since process-oriented programs expose by their nature a high degree of explicit concurrency, they can be efficiently distributed across multiple processors and clusters of machines. This thesis describes a pattern language for the engineering of process-oriented programs. Design patterns describe reusable, adaptable solutions to common problems that may arise during the design and development of a system. A pattern language serves the dual purposes of documenting the proven design solutions developed by a community, and providing a common technical vocabulary. The patterns described in this thesis are drawn from a variety of existing processoriented real-world applications, and have been used to construct new applications in fields such as embedded systems, multimedia processing, and complex systems simulation. While much of this work has been conducted using the occam-π programming language, the patterns—and the new language and library facilities they inform—are applicable to process-oriented systems built in any language.
منابع مشابه
UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Concurrent Object-Oriented Programming: Separation and Composition of Concerns using Design Patterns, Pattern Languages, and Object-Oriented Frameworks
The development of concurrent object-oriented programs, from a software engineering perspective, must possess a set of features to allow control of its inherent complexities, such as non-determinism. This dissertation contributes the definition of an approach for constructing concurrent object-oriented programs. The approach is rooted in a divide-and-conquer strategy, in which functional and no...
متن کاملAnalyzing Object-Oriented Design Patterns from an Object-Process Viewpoint
Design patterns are reusable proven solutions to frequently occurring design problems. To encourage software engineers to use design patterns effectively and correctly throughout the development process, design patterns should be classified and represented formally. In this paper, we apply Object Process Methodology (OPM) for representing and classifying design patterns. OPM enables concurrent ...
متن کاملJACK: A Framework for Process Algebra Implementation in Java
The construction of concurrent programs is especially complex due mainly to the inherent non-determinism of their execution, which makes it difficult to repeat test scenarios. Process algebras have been used to design and reason about these programs. This paper presents an approach to developing concurrent programs using a set of process algebra constructs implemented as an object-oriented fram...
متن کاملAspect IPM: Towards an Incremental Process Model Based on AOP for Component-Based Systems
In spite of recent and constant researches in the Component-Based Development area, there is still a lack for patterns, processes and methodologies that effectively support either the development “for reuse” and “with reuse”. This paper presents Aspect IPM, a process model that integrates the concepts of component-based software engineering, frameworks, patterns, non-functional requirements and...
متن کاملPreparing for Paradigm Shift
Software systems bridge the gap between information processing needs and available computer hardware. As system requirements grow in complexity and hardware evolves, the gap does not necessarily widen, but it certainly changes. Although today’s applications require concurrency and today’s hardware provides concurrency, programming languages remain predominantly sequential. Concurrent programmin...
متن کامل