- Object-Oriented Technology
- Component-Oriented Technology
- Technology Ownership
- Client-Server Technology
- Internet Technology
- Architectural Layers and When to Use Them
- Software Application Experience
- Technology and Application Architecture
- Applying Standards to Application Systems
- Distributed Infrastructures
- Conclusions
- Exercises
3.8 Technology and Application Architecture
Software architecture involves the management of both application functionality and commercial technology change. The kinds of benefits that were just mentioned are not the direct result of adoption of a particular technology but involve exploiting the technology in ways that are most effective to realize the business purpose of the system. The simple decision to adopt CORBA or COM+ is not sufficient to guarantee positive business outcomes. One of the key challenges is managing the change in commercial technologies in a manner that supports long-term system life cycles and extends the system without substantial maintenance as the commercial technology evolves.
Figure 3.16 is an example of the class of technology challenges that must be managed by object-oriented architects. Figure 3.16 concerns the evolution of middleware technologies, starting with the socket technologies and evolving into remote procedure calls and distributed computing environment to the current J2EE and ActiveX technologies. No one can reliably predict the future, but given what is known about proprietary technology evolution as well as open systems evolution, it is likely that many of the technologies that are becoming popular will eventually have their own life cycle, which has a distinct ending point based on when the software vendors discontinue their product support and move their attention to new product lines. This particular technology evolution in middleware has some dramatic effects on application software because the middleware is closely integrated with many of the emerging application capabilities. When a technology like ActiveX becomes obsolete, it then becomes necessary to upgrade application systems to the new technologies in order to maintain vendor support and integration of new capabilities. The demise of ActiveX can already be seen on the horizon as COM+, a succeeding technology, makes inroads into replacing core elements of its technology. The software interfaces are likely to be quite different, especially because COM and COM+ are based upon an interface definition language, not the same one as CORBA, and COM+ doesn't have an interface definition language, at least in terms of current marketing information. It is important for the software architect to anticipate these kinds of inevitable changes and to plan the migration of application systems to the new technologies in a manner that doesn't mitigate the business purpose of current system development.
Figure 3.16. Managing Technology Change
The architect is faced with many challenges in the application space. Some of the most strenuous challenges involve the changing business processes that current businesses are undergoing. There is increasing competition from all sectors, and a merger of capabilities through technologies like the Internet, such that newspapers, computer companies, cable television vendors, and telecommunications operators are starting to work in the same competitive spaces and are experiencing significant competitive pressure that is the direct result of information technology innovations and innovative concepts implemented in application systems. Even with previous generations of technologies, it is fairly well known that requirements change a great deal. In fact, the majority of applications costs for software development can be traced directly to requirements changes [Horowitz 1993]. For the first time in history, information technology budgets are exceeding payrolls in many organizations in industries such as financial services. Information technology is becoming synonymous with competitive advantage in many of these domains. However, the basic capabilities of system development are still falling far short of what is needed to realize competitive capabilities fully. For example, in corporate development, one out of three systems that are started end up in a project cancellation [Johnson 1995]. These types of statistics represent inordinate risk for small and medium-size businesses, given the increasing cost and dependence upon information systems.
One of the fundamental rules of thumb of computing is that no technology ever truly goes away. One can imagine some early IBM minicomputers that are still faithfully performing their jobs in various businesses around the world. As information technology evolves, the need to integrate an increasing array of heterogeneous systems and software starts to become a significant challenge. As it becomes necessary to integrate across enterprises and between enterprises using intranets and extranets, the architectural challenges become substantial. One problem is the current inadequacy of information technology infrastructure, including technologies like COM+ and CORBA, which differ from the real application needs in some significant ways. As the challenges of information technology continue to escalate, another problem with the software skill base arises. In many industries, there are substantial shortages of software engineers. It is estimated that at one time there was at least a 10% negative unemployment level in the United States in the software engineering profession. Some industries are much harder hit than others, including public sector systems integration contractors. To build systems with that challenge in mind, the object-oriented architect needs to plan the system development and control the key software boundaries in a more effective manner than has ever been done before.
Many critical challenges lie ahead for application systems developers and software architects. There is an escalating complexity of application system development. This complexity is driven by the increasing heterogeneity of information systems and the need to integrate increasing scopes of systems both within and outside the company. In addition, the user requirements not only are increasing the user expectations as a result of exposure to Internet technologies and other marvels of modern life but also are driving software developers to take increasing risks with more complicated and ambitious systems concepts. The key role of the object-oriented architect is the management of change. Managing commercial technology innovation with its many asynchronous product life cycles is one area. Another area is managing the changing business processes that the information technology supports and implements. One area of potential solutions lies in the users influencing the evolution of open systems technologies, influencing software vendors to provide whole technology capabilities, and influencing legislators to put in place the appropriate guarantees of merchantability and fitness for the purposes that underlie the assumptions in system architecture and development.