Existing software development technology will not scale to meet future computer application needs. Specific problems include:
· Many applications last for long periods of time. During this time their requirements evolve as environmental conditions change. For instance, applications are developed to be hosted on a specific operating system and run-time platform. As these platforms evolve, applications must be modified to accommodate platform evolution. An application that is distributed over several platforms will be affected by the evolution all platforms part of it is distributed on.
· As applications are extended to integrate with more and more components, they become increasingly complex. This complexity causes problems with application flexibility, reliability, reusability, and adaptability.
· A computer’s environment (the devices it is connected to, the context that it is operating in, and its supporting infrastructure) changes from time to time. As these changes occur, the system and application software on that computer also needs to change.
· System and application domains will become highly heterogeneous. That is, applications and systems will mash together elements from widely differing domains.
· There is tremendous opportunity and synergy associated with collaboration. Systems and applications that are generated through a collaborative process can leverage capabilities and ideas from all collaborants involved.
Thus, the computing platform of the future needs to have these properties:
Scalability – the platform needs to be able to handle systems and applications that grow, both with the number of potential users and with the functionality provided by that application.
Collaborative – the platform needs to be able to reuse requirements, design patterns, workflows, tests and components developed by others.
Dynamic Testability – the platform needs to be able to test existing capabilities with new configurations that are caused by external changes.
Heterogeneous – the platform needs to be able to discover and compose systems and applications from elements that distributed over many different platforms.