Software Engineering to Autonomic Computing
Software, as an artefact, has been tremendously successful. It has pervaded every aspect of our professional and social life, due mainly to the outstanding advances in hardware, but also to undeniable progress in software engineering practices that allow
- PDF / 279,283 Bytes
- 21 Pages / 439.37 x 666.14 pts Page_size
- 44 Downloads / 258 Views
Software Engineering to Autonomic Computing
Software, as an artefact, has been tremendously successful. It has pervaded every aspect of our professional and social life, due mainly to the outstanding advances in hardware, but also to undeniable progress in software engineering practices that allow the timely production of high-quality computing products. Software is however a victim of its own success. The software systems of today have to constantly face new and demanding requirements in terms of their availability, robustness, dynamism and pervasiveness. This is challenging, the way software systems are produced and managed. In particular, great pressure is put on the maintenance of software and systems; maintenance tasks are becoming increasingly difficult and correspondingly more time-consuming to carry out. Today, many believe that we have reached a barrier in terms of complexity and that innovative practices are needed to ensure the continuous delivery of software-based services. In this introductory chapter, we present how software systems are currently being developed and managed. We show how the use of software has evolved and how this has impacted on the software development and maintenance processes. In particular, we show that much of the complexity involved with the software life cycle has moved from the development stage to the maintenance stage, which raises formidable challenges for practitioners. Finally, we briefly introduce the field of autonomic computing, a relatively new spin on the ways we build and maintain software systems and whose purpose is to overcome some of these aforementioned problems we highlight. This chapter motivates the need for autonomic computing systems.
P. Lalanda et al., Autonomic Computing: Principles, Design and Implementation, Undergraduate Topics in Computer Science, DOI 10.1007/978-1-4471-5007-7_1, © Springer-Verlag London 2013
1
2
1.1
1
Software Engineering to Autonomic Computing
Software Complexity
Software systems can be amazingly complex. They can be difficult to conceive, to implement, to understand and to maintain. This raises significant challenges that gave birth to the software engineering approach to creating computing systems a few decades ago and has motivated the autonomic computing movement today. But what is a software system, and why is it so complex? A software system is a collection of programmes and data deployed on one or several computers for execution. It is complex for a number of reasons. First, programmes are heterogeneous constructions. They can be made of a number of interacting computing entities, very diverse in the sense that they have their own structure, their own state at runtime and, sometimes, their own language. These computing entities are typically project specific. That is, they are created for the purpose of a single project, and this makes it difficult to reuse the experience obtained from one project to another, in terms of the development and maintenance of these entities across projects. As observed by Frederic Bro
Data Loading...