Software patterns are reusable solutions for repeated software design problems. They are applied on object oriented software systems design. The patterns can be represented by suitable Unified Modeling Language -UML diagrams showing the structure of their class system and the interactions and relations amongst the class system members. Patterns can be identified by the solutions they offer in certain problems of certain contexts and can be grouped in categories according to the solutions they offer to broader problem and context areas. The two main categories are the architectural and the design patterns. The later consists of subcategories including fundamental, creational, structural, behavioral, concurrency and partitioning patterns. The individual patterns can be combined so as to offer complex solutions when necessary. Software patterns, which can be applied in the design of object oriented systems running on multiprocessors or cluster environments, are investigated in this paper.