Software recycling doesn't involve taking the discs or shrink-wrapped packages to the local landfill. In this case, it means reusing software code, modules, or other components to keep in-house software development costs down and produce applications more quickly. For years, software developers have used software building blocks to construct applications. Now, with the popularity of the service oriented architecture (SOA) model, developers are building applications not just with chunks of code, but with services, and rely on providers like Amazon.com, with its Elastic Compute Cloud (EC2) to host the software more economically than buying servers and building a hosting infrastructure themselves.
Last November, PayGo, a retail point-of-sale software provider, started a project to re-tool its product from an on-premise solution into a software-as-a-service kind of solution -- hosted offsite, and accessed through a rich Internet application.
By using tools from Servoy USA of Thousand Oaks, Calif. PayGo finished its new “pay as you go” version of the software in April. “We think that it would have taken twice as long to get where we got” using traditional programming tools, says Chris Peterson, co-founder and CEO of PayGo. Rather than hard-coding each function, developers were able to leverage already-built components of code, speeding the development process. And by hosting the application on Amazon’s EC2 -- utilizing “cloud computing” -- PayGo could take its service live paying less than $1,000 per month, rather than spending tens of thousands of dollars up front to buy servers, plus pay for their ongoing maintenance. “It would have been a significant capital expenditure to get our servers ready to go,” Peterson says. “It lets us as a company do what we do best -- create a solution for the customers we sell to.”
Reusing software code and services is a strategy that can help organizations of all sizes to create rich Internet applications more quickly and economically. “The whole concept of reuse sounds logical -- why wouldn’t you want to?” says Mike Gualtieri, senior analyst with Forrester. However, to be successful with reuse, take these steps: make a business case for reusing software, avoid writing your own software if you can, and consider adopting an SOA model to take advantage of already-created services as well.
Make a business case for re-use
Gualtieri advises making a business case for reuse of software or services, both in terms of money and time. Is it going to cost more money to make the code reusable? What is the actual business benefit for the undertaking? Don’t just reuse code because it sounds like a good idea. Companies make “quite an investment in reuse,” he says. “It’s not free.”
Designing for reuse requires more up front time for designing, as well as additional coding and testing. Make sure there’s a business case for the code. “Don’t make it a gamble,” Gualtieri says. “Think this through, from a business case standpoint and technology implementation standpoint.”
Avoid writing your own code
Software reuse often makes sense, but you don’t have to write your own code for reuse, especially if your company is on the smaller side. Depending on your company size, it may make more sense to search for already-written code you can reuse, rather than write your own. “Don’t develop code if you don’t have to,” Gualtieri says.
Writing for re-use can add to the cost of developing code if you don’t plan well enough up front. If you spend 18 months developing code that can be shared, and plans change, making the code obsolete or no longer necessary, you have added to the cost of the project instead of saving time and money. “Buy it, find it, or use open source code,” he says. “Open source code is one of the most successful examples of software asset reuse.”
Adopting a service oriented architecture
Beyond reusing software code, developers can take advantage of already-created services in their applications. “Now you go out and look for services that provide this function,” Gualtieri says. “You’re not just reusing code, you’re reusing functionality of these services.”
Paygo utilized Amazon’s services to take its application to the next level, where customers run the point of sale software in a browser, and access the application running on the Amazon “cloud.” They provide the backend power of an enterprise company, at a fraction of the cost,” Peterson says. “We’re doing software as a service, and utilizing hardware as a service to our situation. For me it seems obvious that this is how software should go -- it’s much easier on the customer,” Peterson says.
Reusing software and services saves time and can bring applications to market more quickly. It also enables people who are not “hard coders” to get into the application development process. “You can get people that are closer to understanding the business process,“ Peterson says, “and create much more intuitive products.”