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].