Experts say the current surge of interest in service-oriented architecture (SOA) represents a major breakthrough in the longtime quest among IT managers to reduce the amount code developers need to write, while increasing the sum of existing code that can be reworked for new applications.
CIOs and other decision makers have perennially sought to implement systems that allow them to recycle old code into newly created applications. Experts pointed out that a number of advancements have been made in this area over the years, but none quite as major and as positive as the SOA.
The design of the SOA is all about shared, reusable services. In an SOA, code is implemented in a single place so that every application that needs that code can call on it, rather than creating a new copy.
Do SOAs represent the "Holy Grail" of reusable code? Not quite, experts said, but they're close. SOAs solve the issue of machine-to-machine communication in a heterogeneous environment, but fall short of solving the problem of how companies tend to represent information in different ways.
"One of the challenges that SOAs don't solve is the data or semantic integration challenge," said Ronald Schmelzer, founder and senior analyst, Zapthink LLC, Waltham, Mass. "What we need are better ways of handling semantic differences or ambiguities."
The quest to build systems that allow developers to reuse code goes back many years, according to analysts and IT industry professionals.
Back in the days when mainframes were the main choice for big business, COBOL programmers created what were known as COBOL copy books. Developers would log any new coding into a COBOL copy book so that it could be reused and adapted for future projects.
"Anyone who is still doing mainframe COBOL applications is still doing COBOL copy books," said Anne Thomas Manes, vice president and research director, Burton Group, Midvale, Utah.
In the '80s, when folks started talking about Java and object-oriented programming, code reuse got simpler. In the object-oriented world, any set of code that makes up a function is called a class. These classes are grouped into libraries that developers can use over and over. At about the same time, C# programmers were also creating libraries of reusable code.
"One of the strengths of Java is that it enables you to define reusable objects as individual components that you can then use in higher level applications by virtue of a technique called sub-classing," said Tom Bishop, chief technology officer of VIEO, a management appliance vendor in Austin, Texas. "Anybody that is doing object-oriented programming, but is not doing object-oriented design in such a way that they can take advantage of sub-classing, is spending a high price for a technology and getting no benefit."
"The entire Java framework and the .NET framework are basically a set of class libraries, and this is a bunch of reusable code," Manes added.
More recently, IBM Rational created the Reusable Asset Specification (RAS), which is a set of protocols that allows developers to define meta data about source code and runtime binaries. RAS "is a way for you to actually capture information in a repository about some piece of reusable code, so that other people have better information about how to go about using it," Manes said.
Vendors are also available for helping companies implement reusable code systems. Companies like Flashline Inc., ComponentSource and Logic Library Inc. sell products that allow companies to centrally manage reusable assets.