Abstract :
Software complexity is the degree to which software is difficult to analyze, understand, or explain. As society increasingly depends on software, the size and complexity of software systems continues to grow making them progressively more difficult to understand and evolve. This trend has dramatically accelerated in recent years with the advent of Web services, agent-based systems, autonomic and self-healing systems, reconfigurable computing, and other advances. Software´s complexity has compounded in both volume (structure) and interaction (social) as the Internet has enabled delivering software functionality as services. Yet, most technologies that we use to develop, maintain, and evolve software systems do not adequately cope with complexity and change. Traditionally, software engineers respond to complexity by decomposing systems into manageable parts to accommodate the sheer number of elements and their structure. However, the Internet and the emergence of software as services have led to a new kind of complexity.
Keywords :
Web services; fault tolerant computing; object-oriented programming; software architecture; software metrics; Internet; Web services; agent-based system; autonomic self-healing system; change-tolerant system; reconfigurable computing; service-oriented architecture; software engineering; software functionality; software system complexity; software system decomposition; Algorithm design and analysis; Assembly; Computer networks; Data flow computing; Distributed computing; Embedded computing; Embedded software; Pervasive computing; Software tools; Web services; change-tolerant systems; service-oriented architectures; software technologies;