Use of CORBA® and UML® pays off in many types of applications, but here's where the benefits compound:
If you use CORBA in a small client-server type of application, you'll get the benefits of a sound, standard infrastructure, and if you use UML to design before you start to code, you'll be much more likely to get a final application with the structure and functionality that you had in mind (or would have asked for!) when you started. CORBA lets you build and run client and server sides on different platforms and in different programming languages, so there are a number of benefits that we can list even for small applications run alone on a network. But these are purely compute-domain benefits; the business functionality of this type of application is the same as if it had been written to sockets, or a proprietary RPC mechanism. CORBA can give immense business-domain benefits also, when it's used pervasively in your enterprise. Let's have a look:
Businesses benefit when all of their applications, with their diverse functionality and data, work together. For example, a salesman on the road in a customer's office may need access to product description information (from the catalog), product technical data (from engineering), pricing (from the back office), stock (from the warehouse), production schedule if there aren't enough in stock (from the plant), order placement, customer credit data, sales department totals and his own totals, and more. In the old days, he used to collect this by telephone and memo, moving to FAX as technology advanced, but now computer networks give you an opportunity to make the diverse systems in all of these departments work together to support your salesman as he generates the income that, after all, keeps your company in business.
So you wrap these legacy applications with OMG IDL™ interfaces and put them all onto your network, accessible via CORBA object references. This lets your IT department build a client that integrates information from all of them into a sales application. Your salespeople, on-line in their customers' offices via modem or wireless connection, can answer questions immediately and make more sales. Orders enter into your fulfillment system as they are taken, allowing you to schedule shipping (and production, if you need to) and billing automatically and immediately.
Then it occurs to someone in your company that, with a little tweaking, the salespeople's' application could become a web sales site, allowing any potential customer with a browser to find and order your products themselves. Because all of your supporting applications are available via CORBA, it's easy to generate the application that drives the website, so you do this, and the sales start rolling in.
With so many customers out there, the load of product support and repair calls increases and, since support has always been a cost center, you brainstorm to figure out a way to deal with it. You finally decide to design a call-center support application around your CORBA enterprise infrastructure. By standardizing response to trouble calls, you deal with these in less time, but the real benefit comes in parts and repair: With all of the engineering diagrams on-line, your telephone staff can sell and ship parts to customers with one or two clicks of a mouse, and with another click or two, can dispatch contracted repair vans to take care of the installation. Income from parts and commission on repair calls turns this cost center into a profit center, and customers satisfaction increases at the same time. Integration of the many applications around your enterprise that connect to the call-center application, a potential nightmare, is straightforward because they all have CORBA wrappers already.
With success, the load on your e-commerce website increases until it outgrows the capacity of the mainframe applications that supported it at start-up. Since CORBA has been so successful for you on your network, you decide to build your server's replacement object-oriented in CORBA from the ground up. To start, you use UML for your analysis and design: it helps you gather requirements, work through use-cases, and set down the functionality that the new server will provide. Then, class diagrams, object diagrams, and action diagrams let you picture how it will work. By the time you're done, the UML diagrams that you've generated dictate most of your OMG IDL and language code. To take care of both current and anticipated load, you decide to buy an ORB that runs load-balanced on a roomful of server machines. It's based on OMG's Portable Object Adaptor or POA, which helps you take best advantage of your hardware when you run heavy loads, like the ones that web-based applications generate. If your application needs to stay up reliably (as it would if you're running stock or bond trades, for example), you may decide to use CORBA Fault Tolerance also. More than just load-balancing, fault tolerance runs every object on two or more separate machines at the same time and automatically switches to the good one if one fails. If you duplicate your hardware (computers, networks, even power sources) also, you can set up a very reliable server indeed. By the way, you haven't replaced all of your legacy systems (that is, the functional systems that run your business!), and this server still needs to access the ones that are still around. Since they all retain their CORBA wrappers, of course, this is routine. To maximize sales, you design the front-end for this server to be accessible from as many customer client types as possible: Some customers come in via web browsers, using HTTP which your web server translates into CGI invocations of your CORBA front end. Others use Java/CORBA clients for more sophisticated programmatic access, while some users with direct network connections use OMG's standard COM/CORBA bridge to come in straight from a Microsoft desktop. Type-specific adapters condense your screens, eliminating graphics and isolating key lines of text, enabling digital PDAs, pagers, and browser-capable cell phones to place orders using your same business-logic architecture and implementation.
To keep up with demand, you decide to automate your plant. Because of the speed that parts travel around the assembly line, the control program must run in Real-time so you build this system on an ORB and operating system that conform to the CORBA Real-time specification. Computers on your shop-floor equipment also runs CORBA (in Real-time where needed here too), so your plant hums smoothly along; in fact, some of the processors on your shop floor run minimal CORBA, OMG's standard for embedded ORBs. Of course the plant doesn't run in isolation: it needs stock, which needs to be bought, which cost money, and needs to be brought to the plant, which needs logistical coordination, so your automation system also talks to your supply and logistics applications over CORBA interfaces, of course.
We could go on, but you get the idea. The next addition would be CORBA-based interfaces to your suppliers, automating your logistics out to their warehouse (and, within their enterprise, hopefully to their plant as well). This is not a purely hypothetical example; Boeing Aircraft automates its manufacturing system from order entry, through production and delivery, to maintenance, using CORBA. You can read about it here.
So where's the payoff? Just as the different departments and divisions that make up your enterprise need to work together in order to maximize profit, their computing applications need to work together too. CORBA lets you do this, and that's where standards pay off in a big way: You can't limit the diversity of computers in your enterprise - you need to pick different computers for different uses. This is clear on the shop floor, where equipment may come with a processor built-in, or in the call center, where machines need to link up to the telephone system computer for both voice and data to take advantage of ID information that comes with incoming calls. So, you pick a standard interoperability infrastructure - CORBA! - to tie your applications together. You'd like to use it for all of your applications, but sometimes this just isn't possible. For these cases, CORBA gives you the couplings you need: the COM/CORBA interoperability standard to connect to the desktop that everyone uses (and to Microsoft servers, too, if you have them); the reverse Java-to-IDL language mapping and RMI/IIOP to connect to Java RMI objects and EJBs, and the mapping from XML to OMG IDL, scheduled for June 2000.
There's a good example of how OMG's specifications work together in the example we just covered, but here's a concrete description:
You'll want (and need, actually) to perform an analysis and design before starting any substantial software development project. For this, you buy and use a tool based on UML, the Unified Modeling Language. Using XML Metadata Interchange or XMI®, you transfer your model - which is the metadata for your application- into a standardized repository based on the MOF™, or Meta-Object Facility.
Using XMI again, you transfer your model from your MOF into a development environment that lets you implement it as a CORBA application. You will generate OMG IDL interfaces, which will map into the programming languages that you choose for your clients and objects, using the OMG-standard language mappings. You may design a scalable server-side architecture using features of the Portable Object Adaptor or POA, and augment CORBA's support for load-balancing with a standard Fault Tolerant infrastructure. You will surely want to design your overall application around the CORBAservices and possibly the Domain CORBAfacilities to reap the major gains possible from the buy-vs..-build philosophy.
If you're building a specialized application, you may want to buy an ORB product based on one of the specialized CORBA versions, either Real-time or Minimal (for embedded systems) CORBA.