DBMS, June 1997
DBMS Online: Enterprise C/S By Judith Hurwitz

Component-Based Development

Using Components in Application Development Can Optimize Time and Resources.

Recently I was speaking with an application developer who was facing a tough situation. He was being asked to create -- with fewer resources and less time to do so -- complex applications that are important to the functioning of the business. Clearly, he is not alone; many developers are in the same position. The rise of the Internet and hyper-tier computing distributed architectures (such as the Hurwitz Group's Hyper-Tier model, which I described in my April DBMS column--see page 10) have led business users to demand that even more functionality and complexity from applications be delivered in the shortest amount of time possible. It is my perception that the only way development organizations will keep the business users satisfied is to move to a component model of development.

Now, let me explain myself. Do I mean traditional, object-oriented development? No, rather, I am viewing components from a less granular perspective. Components are made up of business rules, application functionality, data, or resources that are encapsulated to allow reuse in multiple applications. The primary difference between this type of reuse and the traditional notion of reuse in object-oriented (OO) programming is the level of granularity required. In OO programming, objects are low-level constructs such as class libraries; reuse at this level is very complex to implement. Programmers have to understand the exact function that a particular library serves and use it appropriately.

In contrast, components are more likely to be large-grain services used in a variety of applications. A component might be a key algorithm for determining an interest-rate calculation. It is clearly defined, and developers can be alerted to use a specific component whenever they need to perform a certain function. Other components are those defined through ActiveX and Java. In these cases, the components are tied to interaction at the client level and can potentially call server-based applications and data.

If developers can build new components and reuse parts of applications they have already created, then applications can begin to emerge as assembly projects rather than elaborate, complex systems with a beginning, a middle, and an end. Components have the potential to redefine the applications development process, providing practical tools that will enable developers to succeed in a fast-paced Internet world that demands instant gratification.

The movement toward a component orientation is being driven by the rise of the Internet and the emerging distributed infrastructure. The Internet's increasing ubiquity has made it necessary to provide more people with more data from more sources. To be successful in this environment, developers must focus on creating flexible, scalable applications with large amounts of distributed processing. Component-based development is becoming increasingly popular as a way not only to create flexible, mission-critical applications but also to increase the productivity of the application development process through code and application piece reuse.

Paradigm Shift in Application Development

The emphasis in development is shifting away from building stovepipe applications that meet specific business needs. To remain competitive, firms must be able to give users unified access to data and applications that currently reside on disparate and unconnected systems. Rapid application development (RAD) tools have done a good job of solving a specific problem: providing a specified group of constituents with access to the data they need. When these tools were introduced, vendors emphasized their speed and efficiency, and productivity increases in many instances were good enough that code reusability was not an issue.

These productivity gains have disappeared, however, as developers attempt to stretch applications built with RAD tools into enterprise-scale mission-critical systems. The typical fat-client model does not work when an application is made accessible via a Web browser. Developers need not only tools that will help to speed the development process, but also tools that will change the model for applications development within an organization.

Managing Components Through a Repository

Storing and managing code centrally is the easiest way to successfully incorporate reuse into application development. Repository-based development is the approach most high-end tool vendors have taken to facilitate the use of components. Important features of a repository are security and management of components in the form of version control and release management. Prior to including components in a development project, developers must determine whether the components are compatible and will work as expected. A repository increases productivity by allowing developers to test component compatibility and modify components as necessary from a central location.

Both Microsoft Corp. and Oracle Corp. are moving toward a repository-based development model. Microsoft is using the repository developed jointly with Texas Instruments Inc. to transition Visual Basic into the distributed development paradigm at the enterprise level. (For more on Microsoft Repository 1.0, please see David Linthicum's column, Application Architect, on page 24.) Microsoft sees components, specifically ActiveX components communicating via DCOM, as its key to becoming a trusted provider of mission-critical software. Repository-based development is also central to Oracle's plans for Sedona. Unlike Microsoft, Oracle is pushing the CORBA standard through the use of IIOP and Java. Other tool vendors moving toward a component- and repository-based model are Compuware Corp., Intersolv Inc., Passport Corp., Prolifics, and Seer Technologies Inc.

Potential Problems with Components

Security is still an issue with components. Security for ActiveX components, for example, is limited to Microsoft's Authenticode technology, which is a means of "code-signing" ActiveX controls. With the release of JDK version 1.1, Java now provides similar security by supporting the digital signature standard (DSS) for digitally signing applets. Although digital signatures enable organizations to verify the source of components, signatures cannot guarantee that components will perform only the desired functions.

Another issue is interoperability. The components a company builds may not necessarily work as expected with other components. Component testing has therefore become a crucial part of the development process. Developers need utilities for testing both visual and nonvisual components that may be scattered across the network at runtime.

Middleware is the hub of any component-based application. Unfortunately, standards for middleware are lacking, forcing users to choose among CORBA, DCOM, or a proprietary solution. While CORBA is a standard approved by The Object Management Group, the vendor specification DCOM is emerging as a de facto standard. Both technologies will remain viable, but I believe that DCOM will predominate because of industry support for ActiveX and OLE.

Pure object-oriented technology (OO) failed to fulfill its promises because those faithful to it never clearly articulated the business value of OO programming. They were never able to convince mainstream developers that mastering the complexities of OO was worth the substantial effort. Components will only be truly successful if developers aren't forced to learn a whole new style of programming. Tools such as Visual Basic, Delphi, and even packaged applications like SAP's R/3 are committed to making components an integral part of their development environments. Allowing developers to use familiar tools to create distributed components will greatly improve the likelihood of developers adopting this approach.

Successfully using components requires a long-term view of the development process. With components, applications will increasingly be modified, not replaced. As a result, analysis and design has become a much more important part of the development process. Users need to make sure that their development environment supports analysis and design functionality, either internally or through integration with vendors such as Platinum Technology Inc., Rational Software Corp., and Select Software.

Understanding the management requirements necessary for successful code and component reuse is more important than the selection of a development environment. However, developers should select an environment that makes the planning and implementation of a formal methodology easier. Features such as version control and team development are critical to success, and the development tool should support them in a repository-based development model.

The following recommendations will help organizations begin the process of leveraging components in the applications development process.

Once you have begun to introduce components into your development environment, and developers are aware of their benefits and begin to use them, you can focus on creating a strategy for utilizing components in the development process on a more formal basis. Laying the foundations for componentizing your applications development environment will enable you to leverage reusable parts of code and application logic, reducing the amount of time in the development process and optimizing time and resources.


Judith Hurwitz is president and CEO of Hurwitz Group Inc., a technology and management consulting company based in Newton, Massachusetts. Hurwitz Group focuses on the business impact, use, and deployment of distributed technology. You can email Judith at jhurwitz@hurwitz.com or visit her company Web site at www.hurwitz.com.
Subscribe to DBMS and Internet Systems -- It's free for qualified readers in the United States
June 1997 Table of Contents | Other Contents | Article Index | Search | Site Index | Home

DBMS and Internet Systems (http://www.dbmsmag.com)
Copyright © 1997 Miller Freeman, Inc. ALL RIGHTS RESERVED
Redistribution without permission is prohibited.
Please send questions or comments to dbms@mfi.com
Updated Friday, May 16, 1997.