A Pattern-Based Architectural Style for Self-Organizing Software Systems