From: www.itworld.com

Code salvation

May 10, 2001 —

 

IF A CAR COMPANY discovered that it was rebuilding all the pieces of an engine from scratch every time, even though it had a warehouse of the necessary parts already built, then heads would roll, and the inventory would be put to use. But every day, large, organized, and profitable corporations create and re-create applications from scratch -- even though, stockpiled somewhere on the corporate network, they already have pieces of code that could be reused to build the application.

In fact, developers have toyed with the concept of reuse for nearly as long as software has existed but have mostly failed because they lacked ways to identify, catalog, test, manage, and find components once they were built. However, the technology pieces are finally coming together to help developers reuse code and components rather than reinvent the wheel every time they embark on a new project.

The advent of Web services has meant that applications will have to be built and delivered in a more componentized fashion, and a marketplace of prewritten component brokers is emerging along with hosted development options. Analyst firm Gartner in Stamford, Conn., projects that by 2003 70 percent of new applications will be assembled by using prewritten software components and application frameworks. It is finally a realistic possibility for developers to start managing and storing code and, more important, reusing it.

Advantages of reuse

The main benefits of reusing components include faster development, increased software quality, and cost savings, according to Sam Patterson, CEO of component seller ComponentSource in Kennesaw, Ga.

Reusing in-house code or buying components that already exist reduces the cost of development and saves programmers from continually revisiting standard steps in software development, such as business processes, process flow between components in a framework, and even testing the code.

For example, nearly 40 percent of the time spent in a typical development cycle is on debugging code, according to John Lam, head of the software division and software training at Wintellect, a Knoxville, Tenn.-based software consulting firm. Using prewritten components allows developers to save debugging time and increase productivity.

"By reusing components, companies can get the most mileage out of what they already have," says Tyler McDaniel, senior analyst for application strategies at Boston-based Hurwitz Group.

Web services

As companies begin to plan for Web services and implement platforms, such as Microsoft's .NET or Sun's Java 2 Enterprise Edition (J2EE), now is the time to institute a reuse plan or program.

"There is a realization that, from an application model, J2EE is here to stay, which makes reuse worthwhile," says Sanjay Sarathy, director of product marketing at iPlanet E-commerce Solutions in Palo Alto, Calif. "The idea of how to bring components into a Web services model is one of implementation. But no one would argue that the same is not true for .NET."

Web services platforms have other reuse advantages as well. Because Web services are essentially components that are deliverable via the Web, companies can offer only the code necessary to execute a specific function, rather than turning over to customers all the proprietary code in an application.

Furthermore, making component-based resources accessible to a much larger developer audience could lead to a significant increase in the utilityy of and, thus, demand for components, according to Peter O'Kelly, a senior consultant/analyst at The Patricia Seybold Group in Boston.

"Web services and components are complementary. I think Web services may be a breakthrough for reuse," O'Kelly says.

Component brokers

In addition to the Web services platforms, three other market elements will play a significant role in the reuse of components: tools vendors, application development life-cycle ASPs (application service providers), and companies that broker prewritten code.

Tools vendors such as Rational Software and WebGain are currently offering programs that help customers manage code so that it can be reused.

"People are just now on the cusp of realizing the benefits of reuse, and they are starting to be comfortable with building software in components," says Ted Farrell, CTO of WebGain in Santa Clara, Calif.

Companies that want to reuse code but prefer not to manage the process in-house can turn to a number of ASP-model development life-cycle hosts. In fact, a number of hosted development services have emerged in the past year from startups and established players, including Borland, Compuware, Merant, and Rational. Smaller players include CollabNet, OpenAvenue, and Westside.

Many of these development ASPs and online development communities have a much broader focus, and although the goal of these services is not strictly the recycling of code, the peak of what can be done once the components are identified and stored in a central repository is certainly reuse.

Whether they outsource a reuse program or run one in-house, companies can supplement their reuse strategy by tapping the prewritten components offered via the Web by component brokers such as ComponentSource and Flashline.com. Analysts say that a significant chunk of EJBs (Enterprise JavaBeans) coming to market are suitable for use when building applications.

Reuse teams

To facilitate reuse, large corporations are spawning reuse teams, and new titles such as reuse manager or reuse engineer are showing up in the Fortune 500, according to Charles Stack, president and CEO of Flashline.com, a Cleveland-based provider of prewritten components.

Pitney Bowes, the $4 billion global provider of integrated mail and document management solutions based in Stamford, Conn., started reusing application code in 1996 out of necessity when the company wanted a software program for mail sorting.

"Management said we could make the software but that we couldn't hire any new people to do it," says Kevin Bodie, engineering manager of the software components and reuse group at Pitney Bowes.

So the company started reusing existing code and components, mostly to ensure that the limited developer pool was not wasting precious time writing code pieces it already had -- but the program was only functioning within the context of one of the company's four business units.

Once the project proved feasible, Bodie pitched to upper management that they institute a dedicated team spanning all four units to concentrate on making programmers more efficient by cross-training them to not only build components that are reusable but also to be aware of what components the company already has and, if at all possible, to reuse them.

Bodie's clincher was a savings matrix he created to demonstrate that by reusing just the components Pitney Bowes already had he was able to get 500 man-weeks of development progress in just 200 man-weeks time. And thus was born the company's software components and reuse group. Now Bodie's team consists of a dozen full-time coders and four part-timers.

"The ultimate goal is to make reuse a part of everyone's daily job, not just the exceptional case," Bodie adds.

One of the tangible, measurable results of Pitney Bowess' program was the integration of its billing systems across business units. Whereas customers once received a bill from each unit, Bodie and his corps of developers created a single system that operates across all the units so customers now receive a single bill, and Pitney Bowes' systems take care of appropriating the payments correctly.

Escalating efficiency

Typically, enterprises are not just building a single application but, rather, need to create several applications. "That's when components are critical -- not in the first application but in the second, third, or fourth application," iPlanet's Sarathy says.

Testifying to that, Maja Tibbling, an application architect at Ann Arbor, Mich.-based surface freight transportation company ConWay, realized at the onset of a five-application customer-related project that her team already had a number of components that could be used in all five of the applications.

"It wouldn't surprise me if 50 percent of the fifth project's code came from existing components and every customer-facing project after that will require less and less original code," Tibbling says.

But Tibbling admits that reaching that point was not always smooth. For instance, developers working on different projects were rarely aware of the progress that their colleagues were making. In fact, it was feasible that two developers were building the components to execute the same function at the same time.

To overcome these issues, ConWay instituted a reuse methodology in which there are checkpoints -- where developers look to see if the company has code that can be reused -- before they start on a project.

The company also created information exchange paths to help raise awareness of what other projects are in development -- and at what point -- so programmers can either reuse existing components or suggest that another team use a component they have.

"There is a real consciousness that was raised all of a sudden that there are enormous reuse opportunities, not just for us but for other companies, too," Tibbling says. "We've been the drivers for spreading the gospel."


Reusable component standards

As vendors and users alike further the concept of reuse, the need for standards is becoming increasingly clear. The Web services standards -- XML, SOAP (Simple Object Access Protocol), UDDI (Universal Description, Discovery, and Integration), and WSDL (Web Services Description Language) -- will enable developers to describe, find, and access components for reuse.

But programmers still need guidelines for building the components so that they can be reused easily. To that end, a multipart standard is in development to describe both the application architectures, which vendors are dubbing frameworks, as well as the components and Web services that plug in to them. And it has the backing of major vendors, including Microsoft, IBM, Rational Software, Objectools, Flashline.com, and ComponentSource.

Rational Software, based in Cupertino, Calif., has pledged to propose parts of the Reusable Asset Specification for adoption as a standard by Needham, Mass.-based OMG (Object Management Group), the organization that develops and maintains the UML (Unified Modeling Language), a collection of best engineering practices that have proved successful in the modeling of large systems.

The initiative is designed to help large developer shops speed the building of applications by reusing common software assets, including architecture, business model, design model, code fragments, requirements, test plan, and test script, according to Eric Schurr, senior vice president of marketing at Rational. Analysts say the specification helps to accelerate application development and ease the burden of application maintenance.

The specification provides a way of describing components so that large enterprises with a mix of Java and Windows developers can find and reuse components, regardless of which platform the components were written for or what the back end is.

Rational is not alone in promoting reuse. ComponentSource, a Kennesaw, Ga.-based component broker, and Rational currently are at work on the Reusable Component Specification, a means to describe components and a key piece of the Reusable Asset Specification. It provides a common way to price, license, categorize, and distribute components, as well as a functional description.

Although the closely aligned standards for both components and Web services overlap somewhat, Peter O'Kelly, a consultant/analyst at The Patricia Seybold Group in Boston, points out that the two standards likely will remain separate entities.

"There will still be many contexts in which component models are more appropriate than Web services," O'Kelly says.