Treating software design as a service to manage complexity

Service-oriented computing (SOC) has been adopted to manage complexity and develop robust software applications. SOC is mainly used for Web services or the application layer. As software complexity is increasing in an enormous speed, software design has become more challenging. Autonomic computing (AC) supports self-adaptation to manage complexity, improve performance, and/or increase reliability. The concept of AC has been applied to many applications, such as communication networks and computing systems. There are similarities and differences between SOC and AC. This paper highlights a comparison between SOC and AC and presents our experience n building a performance-oriented self-adaptive system. The paper then advocates the idea of treating software design as a service to manage complexity and improve extensibility. Integrating SOC and AC can benefit both research areas and even software design for single systems or multi-agent systems.