Tuesday, October 14, 2008

Future Computing Challenges

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.

Friday, October 10, 2008

The Coming Computing Environment

These first few posts will not be about Service-Oriented Computing (SOC). Instead, I will explore the motivating factors for SOC. To do this, we look to the future.

The way that software is developed and used is changing. These changes are being driven by changes to the computing environment. Here are some of the more significant changes that I see coming.

Computer per Person ratio: The computer per person ratio will increase to the point where there will be many more computers than people. Some of these computers will be used directly by people(such as a cell phone, PDA, laptop, media player, or devices yet to be invented). Other computers will simply exist in the environment performing specific functions (such as building climate control, security, or environmental monitoring).

Ubiquitous Applications: The number of computer-based applications that people will use will increase. These applications will continue to become more integrated so that computing will become ubiquitous.

Autonomous Applications: The number of autonomous applications (those that operate mostly independently from people) will continue to grow as processors proliferate. The level of integration among autonomous applications will continue to increase. These autonomous applications will also dynamically (and autonomously) accommodate the addition of new devices and applications, and the loss of decommissioned devices and applications.

Application Domains: The number of application domains will continue to grow as people continue to invent and find applications for all this computing power.

Dynamic Integration: Applications will become highly dynamic as they evolve to integrate with new applications and application domains.

Collaboration:
The level of collaboration will continue to grow. Users will become the source of content and applications. Centralized systems will evolved into platforms that support this collaboration.


(Have I missed any? Please comment!)

===