Spontaneous software: a Web-based, object computing paradigm
1 INTRODUCTION Software systems can be seen as living entities under constant evolution, requiring dynamic mechanisms to extend and adapt their behavior in order to meet changing user needs. Software engineering addresses evolution by providing design methodologies that minimize the impact of changes in code. In distributing settings, however, evolution implies rebuilding whole software systems at user desktops, a complex and time-consuming task. Such approach is too cumbersome for Internet-centric software systems. Some limited software distribution systems have been proposed based upon Web technologies; however, they suffer from critical problems related to referential integrity, location transparency, scalability and customizability. Furthermore, since user needs are in general extremely diversified and changes over time and space are not completely foreseen, software systems should be able to evolve differently on user desktops. Such evolution requires individual, high granularity, software components being installed on demand, according to user needs. Current proposals do not provide such flexibility, adaptability and extensibility.