Changing the Economics of Software Development
By Chris Rollyson and Mark Panthofer
As 2004 dawns, IT finds itself at a crossroads: the 90s wave of e-business investment mandated pervasive, real-time access to enterprise information-and burdened technology executives with steadily increasing complexity. Most corporate mission-critical information systems still reside in applications developed with proprietary technology that predated today's network-oriented platforms. While these legacy applications are rock-solid in themselves, they weren't built to share information very easily, which has frustrated efforts to open them up to the rest of the enterprise.
At many corporations, software development practices have changed little since the mainframe and 2-tier client/server days. Waterfall-style development, in which an extended requirements phase is followed by a highly structured period of development, still pervades many IT departments. Meanwhile, the rush to the Web has enterprise architecture playing catch up, which has given rise to enterprise architecture groups.
This predicament is a major factor in curtailing IT investment: weak architecture and complexity are driving budget busting IT maintenance costs, which already average 80% of IT spend at many corporations. In an era of little tolerance for IT cost increases, technology executives have little choice but to pull funds new development, which stifles innovation and weakens competitiveness.
An Inflection Point for Enterprise Software
Several developments are now converging to enable astute executives to overcome the difficulties of advanced enterprise software, permanently enhancing their competitiveness:
· Corporate IT is starting to grasp the core best practices of iterative software development—after substantial investments in training and on the job experience. They are beginning to develop internal competency with distributed object architectures.
· Service-oriented architecture (SOA) has driven the industry to put robust distributed application environments within the reach of most IT shops. Distributed applications, when properly architected, have proven to decrease maintenance costs significantly and drive a new model of reuse that markedly reduces costs and time to market.
· SOA, with J2EE and Web services, has created opportunities to provide standards-based alternatives to EAI; it has delivered native integration of applications throughout the enterprise—and has quickly developed into a universal means for deep B2B connectivity. As applications become more distributed, their functionality can be shared much more easily and accessed via open XML protocols and Web services without long-term vendor lock-in.
· Modern integrated development tools and innovative specialized software have matured to the point where they address the corporate developer's needs by facilitating the development of distributed applications with sophisticated architectures.
The Rise of Architecture- and the Two-edged Sword
In 2002, Gartner and the META Group mandated service-oriented architecture at conferences worldwide because the maturity of Web services served as a trigger to expose the functionality and information of service-based applications:
"Web services have potential as a low-risk, high-utility data integration catalyst…Companies should begin to experiment with Web services now, developing pilots for deployment no later than 2003."
However, many of the details required to achieve these visionary initiatives have lagged behind. Web services' value is largely derived from connectivity, and if applications are not architected for connectivity, Web services are trivial. Hence, service-oriented architecture.
On the corporate front, the IT investment downturn gave corporations some breathing room to take stock of their IT, and they recognized that architecture and standards were woefully lacking. They created enterprise architecture groups to determine and enforce standards.
Yet the majority of consultants and in-house enterprise architects hail from large technology consultancies and, consequently, they have product-oriented backgrounds. Taking a product-oriented approach within a complex enterprise environment often doesn't produce optimal results because key (legacy) systems are the result of many generations of custom development, and their idiosyncrasies are not fully addressed by product-focused approaches.
In fact, the function of architecture is arguably to abstract away from products and even technologies: it is the strategy for how the system or environment is to function, taking into account business goals, desired solution components and resources. The demand for architecture experience exceeds the supply, forcing a long learning curve on enterprises.
Distributed applications, enabled by service-oriented architecture and Web services, represent an increase in complexity for enterprise developers, but the upside is achievable and extensive.
Asset-based Software Engineering
Asset-based Software Engineering (ASE) is a crucial mindset that guides the development of distributed applications with pliable, robust, service-oriented architecture. It is an emerging critical facet of software development that is currently practiced by less than 3% of the Fortune 1000.
Central to ASE is its organizational focus and emphasis on aligning investments with strategic value by distinguishing between "strategic" software, which is closely tied to an enterprise's competitive advantage and is classed as an asset, and "commodity" software, which is required to run the business and is classed as an expense.
The business strategy underlying ASE is creating and managing distributed systems' services as assets, attaining ROIs that are exponentially higher than average.
Breakaway results occur with ASE when assets are published as services and managed as assets. Attaining breakaway results requires a balanced approach between developing a robust distributed computing environment and process/mechanism that institutionalizes the asset-based software engineering mindset.
Technology and approaches for creating distributed systems have existed for over a decade, but they have been mired in the early adopter phase. The Internet's mass adoption has created a pervasive network, which dramatically facilitates the spread of distributed applications. As the demand for interactivity increases, technologies that facilitate interactivity have matured, and standards-based protocols such as J2EE and Web services are a practical means to achieve deep B2B integration without multimillion dollar, vendor licensed integration projects.
The maturation of distributed systems will create a new economics of enterprise software. Distributed systems have begun to deliver on their promise of efficiency to enterprise software developers. To accelerate the benefits of distributed applications, executives must procure rare architecture expertise, overcome resistance to cultural changes (waterfall to iterative development) and have a realistic roadmap to negotiate the adoption of ASE.
This article is an abstract of a seminar of the same name, which is delivered by nVISIA in public and private forums. For more information, please see http://www.nvisia.com/webservices