Reusable code quickens application development
Corporations looking to save money and time are turning to reusable software.
Larry Singer has seen the ups and downs of software reuse. The CIO for the state of Georgia remembers when the federal government in the 1990s said it would pay for only five states to develop a particular software application needed for child welfare systems; the other 45 states would have to borrow the code. The intent was to save money by reducing software development efforts - but the states were ill-prepared to swap code, Singer says, and spent more money to integrate the code into their platforms than they would have to write it from scratch.
But times have changed. Singer is now on the managing side of an enormous software reuse initiative for the 50 states. As chairman of the component reuse subcommittee at National Association of State Chief Information Officers (NASCIO), Singer is working with a group of states and vendors to iron out the details of a national repository of software components. Component marketplace and infrastructure provider ComponentSource will host the repository, which Singer says will be up and running in October with a minimum of 13 and as many as 24 states participating from the start.
Already the project is saving money. During a trial run of the system, Georgia borrowed three software components from Arkansas for a vehicle registration application it was building. Integrating the components saved 424 hours of software development and $42,000 in development costs, Singer says.
Software reuse has drifted in and out of vogue for more than 30 years. Historically it has consisted of ad hoc efforts to save code in a repository that other developers could access. But this approach doesn't scale well beyond a handful of developers, experts say.
Lately there has been interest among corporations to adopt formal software reuse strategies in order to streamline development efforts - and save money in the process. Adding credit card authorization to an e-commerce application might take a developer six to eight months, including the time to set up contracts with vendors such as Visa and American Express. Alternatively, a marketplace could sell that component for a few hundred dollars and have it in place in days, says Sam Patterson, CEO of reusable software vendor ComponentSource.
Demand for reusable code is increasing. Gartner says that by 2003, 70% of new applications will be deployed as a combination of preassembled and newly created components to form complex business systems. Market research firm IDC predicts worldwide revenue in the software component market will increase from $516 million in 1999 to $2.7 billion in 2004.
The concept of component-based development (CBD) is the cornerstone of enterprise-level software reuse. The idea behind CBD is that developers work with preassembled building blocks of code developed for previous internal projects or purchased from third-party business application vendors. These blocks of code are stored in a central repository and tagged to identify their architectures and features.
In the case of NASCIO, the 50 states have software needs that are unique to state government but common to each other - making the states' components prime candidates for reuse. For example, rather than have all 50 states attempt to retool their Medicaid systems to comply with the Health Insurance Portability and Accountability Act's privacy regulations, states can share the development burden by swapping platform-independent components.
Charles Stack, CEO of component marketplace Flashline.com, says the time is ripe for CBD. Every other engineering discipline has moved to components, he says, citing automobile makers that buy preassembled car parts, architects who specify prefabricated building components and computer hardware makers that plug ready-made circuit boards into their shells. Now it's time for the software industry to follow suit.
Among the corporations embracing software reuse is CitiMortgage, which is employing Flashline's Component Manager2, Enterprise Edition as a repository for Java components to be reused across business units. Another early adopter is Electronic Data Systems' Europe, Middle East and Africa division; it is rolling out a Web services-based reuse platform from ComponentSource so its 10,000 developers in 12 countries can collaborate and share software component assets.
The current interest in enterprise software reuse can be attributed to a number of factors. One is a receptive market. Companies are trimming IT budgets and operating expenses, and software reuse fits nicely with these efforts.
Also speeding things along is that today's technology encourages CBD. Sun's Java 2 Platform Enterprise Edition (J2EE) environment is designed to support reusable components, as is Microsoft's forthcoming .Net architecture. The two differ in their approaches, but the results are comparable. With J2EE, a developer is tied to Java but can write components for multiple platforms. With .Net, a developer is bound to one platform but can use several programming languages to create components.
The buzz around Web services, too, is contributing to renewed interest in software reuse. Web services essentially are software components delivered over the Internet. Standards that will enable deployment of Web services are beginning to mature, including Simple Object Access Protocol for transporting XML-formatted messages between applications; Universal Description, Discovery and Integration for locating Web services; and Web Services Description Language for standardizing Web service descriptions.
Yet even as momentum picks up, corporations have a long way to go before they achieve large-scale reuse of 20% to 40% in their software development efforts, experts say.
Gary Barnett, principal analyst at Ovum, says reuse is one of the most elusive goals of software engineering. "It's nothing like the way we were promised when we were sold component-based development and object-oriented programming," he says.
One reason for the low reuse rate to date is that people haven't been trained to think in terms of reusable code, says Howard Modell, a systems administrator and reuse advocate. Making components that are reusable requires extra work on the part of the developer. Naming conventions and documentation need to comply with predefined standards so developers can search for code they need in a repository.
Cultural and political issues, too, are often cited as barriers to enterprise-scale software reuse. Getting developers to share their work and use the work of others requires a systematic reuse initiative on a corporate level, experts say. Modell compares software reuse to plastic or aluminum recycling efforts. While there are pockets of developers reusing software, it's still not automatic. For software reuse to reach its potential, Modell says "the rewards need to be so obvious that doing anything else would be unthinkable."