In-Depth
OOP Hits the Mainstream
Advances, market trends bring OOP center stage.
After years of hype and just-missed expectations, object-oriented programming (OOP) is coming into its own as a mainstream practice for building enterprise computing environments. The programming technique offers developers and companies a faster way to field applications, at a lower cost. It is simplifying development and integration of applications in enterprise and Internet environments. And steadily, software objects are gaining more intelligence, allowing easier development of software componentswhich, in turn, contribute to faster development cycles and lower cost factors.
That's the good news.
On the downside, some experts contend that object-oriented programming has yet to develop to the point that it is as intuitive as it could be. But that is a relative statement, particularly when you consider the arcane DOS prompt screens that characterized application development in the past.
Objects: The Offspring of Functions
What is an object? Essentially, it is a functional standalone piece of computer code that can be packaged so that it is easy to reuse in a variety of applications.
Object-oriented programming grew out of the need for companies to have a better code reuse mechanism. "Before we had object-orientation, we had functions. Functions were okay, but they weren't ‘black box' enough," says Chris Sells, director of software engineering for DevelopMentor, a software development services company. "You couldn't capture functions and use them across languages. But today's objects are about capturing some functionality and throwing it into a piece of software that you can then use."
"The implementation of object-oriented design is not new, but it is becoming much more widely practiced," says Dean Guida, president and CEO of Infragistics Inc. "The software industry is more mature as an engineering discipline. There's a more defined process for building reliable software by using object-oriented design."
Object-oriented programming is enabling an increasingly broad trend, whereby software developers deliver packaged code in component pieces, rather than as full-blown applications.
"Components are becoming a reality for companies, and you can't have components without object-oriented programming," says Many Chandi, a California Institute of Technology professor of computer science and chief scientist at iSpheres Corp.
Well-Suited to Enterprise Environments
Object-oriented programming gives companies enterprisewide capabilities at a much lower cost than older programming methods.
Enterprisewide systems, such as customer relationship management (CRM) and enterprise resource planning (ERP) applications, are increasingly object-based to streamline the customization of those applications for target customers, says Barry Johnson, chief services officer for Dynamic Information Systems LLC.
Today, instead of buying an ERP or other turnkey package, companies can purchase large frameworks of objects. This makes implementation a task of connecting these objects to the company's core business processes, rather than developing an application from the ground up. As a result, fewer systems-level programming tasks are necessary, enabling companies to hire less experiencedand less costlyprogrammers to engineer the finishing touches of sophisticated applications.
"Truly eliminating programmers is not a practical objective," Johnson says. But they can be managed more cost effectively in object-oriented environments.
For example, companies will start seeing lower costs as programming teams shrink because of the adoption of object-oriented programming tools, says Carl Hewitt, CEO and CTO of Object-Oriented Programming, also known as OOP.
Historically, large teams have been used to write code within reasonable deadlines. But with more programming contained in objects, companies can use teams of perhaps one-third the size to complete the programming on time and with fewer errors and code redundancies, Hewitt says. "Especially with the tightening of the economy, companies are looking to see if they can do [programming] for less and get better systems," Hewitt says. "The answer is unequivocally, ‘yes.' " And often, a smaller team translates into fewer bugs and glitches.
Many of the bugs in programming today can be attributed to the unwieldy size of programming teams. These teams, typically 15 to 20 programmers, are too large for one member to always know what the other members are doing. And since objects are designed to be reused, the need for major ongoing development projects are significantly reduced. Paradoxically, the software gets more sophisticated within the context of the enterprise solution, as it is constantly tweaked with every reuse to deliver exactly what the implementing company needs.
"One of the mantras in software development today is ‘reuse before you buy, and buy before you build,'" says Sam Patterson, CEO for ComponentSource. "The idea is to see what you have already built in prior applications that you could use in the current one. After that, you can go out to the component marketplace to choose components written by experts. These software components have very specific functionality like credit card authorization. There are components for nearly everything out there." This enables companies to acquire components, or objects, from companies that specialize in writing this type of technology, rather than the company trying to have in-house programmers do nearly everything themselves. New development environments are making it easier to reuse objects, says Guida. He cites Visual Studio and Visual CafÈ as two environments that are synergistic with OOP.
Object-oriented programming enables companies to buy a flexible core that can be customized. Johnson likens it to the garment industry, where a person can buy expensive custom suits, ill-fitting, off-the-rack suits and "made to measure" suits. The last fits just about as well as the first, at a fraction of the cost.
OOP in Networks
One trend driving object-oriented programming is the growing presence of distributed enterprise networks. Object-oriented programming is favored for these because of the need to quickly put in place functionality that supports internally- and externally-accessed Internet applications.
With the Internet, corporate intranets, local-area networks and wide-area networks becoming increasingly integral parts of business processes, companies are using object-oriented programming for applications that are accessible via the Internet or remotely within the enterprise, according to Guida. Indeed, beyond basic objects that include some programming capability, companies now are developing objects that can communicate across the Internet or corporate intranets, and are intuitively easy to connect with other disparate objects. These objects can contain complex information, such as transactional databases (inventory, accounts receivable, purchasing). "The world of development is changing to be more enterprise-based, client-server, Internet-enabled," says Patterson.
Object-oriented programming is gaining popularity because of the growth of e-commerce. With object-oriented programming, disparate companies, such as a manufacturer, bill payment firm and fulfillment company, can combine software components from their individual companies into one object that handles the entire purchasing, billing and shipping process.
However, objects used in Internet-accessible applications are not always what they are promised to be, says OOP's Hewitt. "Too many companies rushed out to get [applications] on the Internet, without considering the access devices," Hewitt says. So, applications accessible via a desktop computer often are not accessible or usable from a wireless device, for example.
In more than one instance, companies have sought to rewrite code too quickly to enable additional access deviceswith mixed results. "They've captured their business logic in these Web systemsand spent millions of dollars in doing itwithout fully appreciating the fact that Internet applications involve so many access devices," Hewitt says. As a result, many companies have to go back and retool much of the work they've done over the last three to four years to open them up to more platforms. "These companies bought into the myth that the only thing that is important is getting out there really fast. They didn't realize that the Internet is the start of something that keeps evolving," Hewitt says. "It's more of a marathon [than] a sprint."
Object Integration
Object-oriented programming is helping integrate legacy and new applications, says Mike Howard, chief technology officer for emWare.
Embedded objects can add control capability to applications. With embedded objects, for example, companies can track the performance, history and other details about a device. So, a snack foods distributor could use objects to track supply, sales and inventory in vending machines, Howard says. This would enable the company to fill a machine when it is nearly out of stock, rather than letting it run out or making unnecessary trips when it is still nearly full.
New Directions
To date, nuts and bolts technical details have dominated the thinking when it comes to object-oriented programming, Hewitt says. From now on, however, he expects more of the news to revolve around solutions-oriented developments. For example, technology companies will show the benefits their clients derived from the vendors' work in using object-oriented programming. In fact, this is already happening. Customers are no longer asking for, or are impressed by, the technology that a developer uses. Instead, companies want to see practical applications of that technology. So, rather than being wowed by the type of technology, companies want to see how objects have helped solve specific problems. Companies also are asking about what vendors can provide beyond a pure technical solution, Hewitt says.
As it changes the way developers produce and integrate applications, the process of object-oriented programming also is undergoing change. One of the new programming trends involves what is known as extreme programming (XP).
"XP enables companies to build base applications, test them immediately and then rework them as needed," says Alex Cone, CEO of CodeFab Inc., a consulting firm. With this method, CodeFab builds object-oriented applications in small bites, with the client providing feedback throughout the process. "It works better in the Web universe than the traditional development cycle," says Cone. "The whole collection of practices that make up XP end up producing surprisingly high-quality code, considering you've designed the whole thing at once."
"It's like deciding that you're going to drive to Boston and then pointing your car in exactly the right direction, taking your hands off the wheel and pressing the accelerator. But it turns out that isn't how you drive to Boston. You start driving in that direction, then make mid-course corrections depending on what is happening on the roads as you travel toward that destination." Besides being efficient, this approach also leads to better client relationships, Cone adds.
Challenges Remain
There are challenges that face object-oriented programming as it moves toward its full potential, according to industry experts.
One is that companies need to learn how to better manage their object-oriented components, says Dynamic Information's Johnson. Whether a company develops its own objects or buys them from a vendor, the company needs an organizationwide understanding of their objects inventory and capabilities. Otherwise, companies will be shortchanging themselves on the return on investment, Johnson says.
Another challenge is that standards allowing efficient communication between disparate objects are just starting to develop. For example, Microsoft and IBM only recently agreed on Simple Object Access Protocol (SOAP). Once more complete standards are in place, the use of object-oriented programming will explode, predicts Chandy.
But going forward, object-oriented programming could get a boost from programming language advances at Microsoft. Microsoft's C#, a language for writing COM+ and Windows-based programs for enterprise computing, is designed to combine the best features of C++ and Virtual Basic to get the most out of object-oriented language capabilities. C# is currently in beta testing, with a release planned for later this year.
"C# is providing all of the benefits that Java did, while adding some C dialect," Guida says. But unlike Java, C# also includes compiler preprocessing statements. C# has been positioned to build out Microsoft's .Net applications.
Looking Ahead
Beyond allowing the functionality of the objects across the Internet and across corporate networks, objects will evolve still further to the point that the objects themselves, and all of their embedded functionality, will be exchanged, experts predict.
In the future, there also will be more coordination between embedded systems and embedded devices, Howard forecasts. "The evolution that we need to see happen is for the machines to be controlled remotelydirectly from the application." There also needs to be more automation and self-configuration so that objects can interact with each other immediately upon installation, with little or no further programming required. However, "technology is pretty unpredictable," Hewitt warns, so the future development of object-oriented applications is likely to take some unexpected twists.
Tom Moore and Phil Britt are freelance writers for the Washington News Bureau, specializing in technology reporting. Reach them at [email protected].