The Evolution of Software Technology
Like all life forms, Software Technology evolves in phases. Each new phase, or era, begins when the fundamental assumptions of the current era change dramatically, rendering existing solutions inadequate. This creates an "inflection point", where new assumptions are the catalyst for innovation, and new solutions are the end result. From file systems to databases, from "dumb" terminals to client/server, from web servers to application servers, each phase charts the evolution of the software industry as it adapts to accommodate changing assumptions and increasing complexity.
Historically, each inflection point is marked by initial confusion and uncertainty, with much speculation about new "killer apps", and with the incumbent winner from the previous era the predicted winner in the next. In reality, however, this has never been borne out; technology always precedes applications, and new players have emerged to dominate with each seismic shift.
For integration, the inflection point we face today was created by the razor-like concentration on back-end problems. Mobile devices, wireless networks, and machine-to-machine interactions promise to extend our reach in previously unforeseen ways. The integration solutions we build must be able to self-configure based on device capability, location, and connectivity (or lack thereof). Each of these device combinations represents a "channel" which our systems must accommodate in an ever more complex web of interactions.
Instead of 2 or 3 different client devices, this multi-channel universe has hundreds, perhaps thousands of discrete end-points, from Voice to WAP Browsers to PDA's to Web Services, with little or no standardization between channels. As the number of handheld devices surpasses PC's, and Web Services unleashes a flood of automated requests, system scalability requirements will increase by orders of magnitude; successful web systems supporting hundreds of thousands of users will be overwhelmed by the need to support hundreds of millions.
There is another, perhaps more subtle shift underway. The saturation of the packaged application market has given rise to the need to get more value out of integrated systems. Most businesses have more applications than they want/need; companies have spent years and millions implementing ERP, CRM, SFA, OM, etc., often with lackluster results. These systems are single-purpose and inherently unable to adapt to changing business needs. It's time to get some return on these investments, to satisfy the constant stream of new requirements emanating from a rapidly changing and increasingly complex business environment, to extend reach across more channels to do more things.
This, Part 1 of a 2-part article, puts today's existing Software Technology in perspective and defines the direction it is headed.
Part 2 will discuss the direction Software Technology is taking and the solutions that are evolving.
Businesses, and their associated processes, are complex entities, so it stands to reason that the software required to run them is equally complicated. However, when software inflexibility prevents a business from implementing new solutions to meet emerging business needs, or when systems become so interdependent that changes to one wreak havoc in another, the complexity is accidental, and it's effects can paralyze a business.
Accidental Complexity is insidious; it is introduced when an organization takes an expedient, seemingly rational approach to insistent business demands, adding functionality as needed with little thought given to long-term implications. Usually, these point solutions, or stovepipes, are implemented with technologies that are proprietary, non-integrated, and completely incompatible with other aspects of their systems architecture.
Ironically, the initial success of this approach often works in the short term for a small number of systems, leading the organization to believe that it's a viable strategy. However, as new stovepipes are added and the need to integrate across systems increases, the situation quickly becomes untenable. Fundamental problems such as data integrity, redundant code, inconsistent enforcement of rules & processes, and escalating maintenance costs cause organizational entropy, ultimately rendering the business unable to respond to competitive demands.
How does this reflect industry trends? Rampant increase in Accidental Complexity is the bellwether of an Inflection Point. This is happening now with multi-channel technology. Businesses that deployed web applications (which are often accidentally complex) are now adding separate, non-integrated applications for mobile, wireless, voice, and Web Services.
There's trouble on the backend too. The alphabet soup of integration technologies adopted during the previous phases of evolution has created a veritable Tower of Babel for organizations trying to reach the valuable functions and data in the legacy enterprise.
Who will solve these problems? Many pundits expect it to be the incumbent winners of the last phase. That's a reasonable conclusion; the incumbents certainly know about the problems they helped create. However, they are afflicted with the "Innovator's Dilemma"; their business interests lead them to focus on building additions to their existing platforms, to deliver the value they promised to their customers, and to maximize revenue. But these solutions are based on outdated assumptions and only contribute to the overall morass.
At best, the incumbents offer or back "extension plays" (such as the MAP and WAG guys in the mobile space) that masquerade as solutions but only contribute to their own demise. This paradox allows smaller, unencumbered, and therefore more nimble players to enter, define, and win in the new market (consider Oracle vice IBM in the Database Phase, or Weblogic/BEA vice Oracle in the App Server Phase).
How do we keep pace with the constantly changing demands of business? Weren't ERP, CRM, SFA, etc. supposed to resolve this? Do we need more applications? Please, enough. We have all the applications we need; we need to make better use what we've got. But how do I combine the functions of my SAP installation with the capabilities of Siebel to give me the specialized hybrid application I need to make my highly mobile sales force more effective? The answer lies in the concept of "composite interactions."
A composite interaction provides new capabilities on top of integration solutions by combining functionality from existing applications and exposing the result to multiple channels. Sounds too simple? The concept itself is indeed simple, but the devil is in the details. First, the back-office mess needs to get straightened out; there must be a consistent way to access the functions and data that exist in the legacy enterprise.
Fortunately, the emergence of Web Services offers a widely adopted, standard way to achieve this (more later). Second, there must be a consistent way of interacting with the myriad devices and channels that make up the client/user universe. This is a highly complex problem that requires a sophisticated, integrated solution capable of dealing with the new technology assumptions mentioned previously.
Many early adopters who chose to implement premature, non-integrated solutions for one channel (e.g. WAP) quickly found they had no means of supporting new channels without adding another non-integrated "solution". Perhaps supporting two such systems doesn't seem so bad, but how about 5? 10? 50? Whenever the software industry is confronted with this kind of complexity, a new layer of infrastructure emerges.
This concludes Part 1 of a 2-part article on emerging Software Technology.
Part 2 will discuss Web Services and the Interaction Server.
About the Author
Greg Rollins, Director of Product Management for Cysive, Inc. has been involved in enterprise architecture, design and development for over 20 years and has worked on some of the largest enterprise Java systems developed by Cysive for clients such as Cisco, First Union, and AT&T. Greg sets the technical direction for Cymbio, Cysive's Interaction Server for developing, deploying and managing the complexity associated with supporting today's multi-channel (web, wireless, voice, and web services) enterprise applications.
For more information visit www.cysive.com.