Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.

Share this Page URL

Part I: E-Business and the Changing Role... > The Evolution of Application Develop... - Pg. 12

12 Chapter 2. The Evolution of Application Development The previous chapter discussed the changing characteristics of application systems. Technology advances lead us to conclude that future software-intensive solutions in almost all domains will be distributed across many sites, access data from multiple sources, and have web-based interfaces [1, 11]. Furthermore, users expect robust, high-performance systems in the face of constant change of underlying technologies, reconfiguration of the system, and the occasional failure of any pieces of the system. These expectations are coupled with the parallel need for reducing overall develop- ment and maintenance costs, typically by consuming more third-party software rather than building all software in-house from scratch for each new project. Consequently, traditional approaches to software development and maintenance are under increasing pressure to evolve in ways that pro- vide better support for these kinds of needs. Unfortunately, even relatively recent innovations such as rapid application development (RAD) and object-oriented analysis and design (OOAD) are falling short of the mark. They have much to offer in support of many kinds of application development, but exhibit a number of limitations when faced with challenges such as modeling externally-developed pieces of a system, facilitating flexibility in the design of system architectures, and encouraging reuse of analysis patterns, design templates, and code fragments. New approaches are needed to support these requirements--approaches that encourage appro- priate ways of thinking about the solutions being provisioned, and which foster a wide range of skills in distributed systems, databases, and web-based technologies. In this chapter we examine the evolution of application development and the tools required to support it. This establishes a base for subsequent chapters analyzing current and future enterprise-scale application development approaches in general, and component-based technologies in particular. Introduction The software industry is constantly in a state of change. One area where change is particularly evident is the area of automated tool support for application development. A key message over the past two decades has been that automation has a major impact on productivity and quality in any large-scale software engineering effort [21]. Most systems are now sufficiently complex that auto- mated support for many tasks is essential, from managing the thousands of user requirements to recording which variant of a product was delivered to each customer. As a result, automated tools for designing and provisioning application solutions are essential. In fact, as we face the new chal- lenges of the Internet age, the need for automation only increases. In response, a new generation of tool support is becoming commercially available. We can identify three major sources of such tools: