Download PDF version of this article PDF


Charlene O’Hanlon, ACM Queue

About five years ago I received a large, heavy-duty stand mixer as a birthday gift—a cool gift for me because I am mad about cooking. The stand came with a batter paddle and a dough hook, both of which have been put to good use.

Ever since I received such a wonderful, useful gift, I’ll occasionally find myself perusing the aisles at my local bath and kitchen superstore, admiring the many accessories available to make my mixer even more powerful: a meat grinder for making sausage, a juicer for making fresh OJ, a grain mill for making…whatever. There’s even an ice cream maker and a can opener attachment! Wow! I could make just about anything with my handy mixer, if I had the time, money, and inclination. And when I’m done using it I can swathe it in its own nesting cozy, making it look like an overgrown, deformed teapot.

As silly as some of these accessories may be, someone somewhere must have cited a need for them; otherwise, the company wouldn’t have expended the time and effort in their research and development. I’m sure there is a group of hardcore bakers out there who think the grain mill is the greatest thing since sliced bread. Then there are folks like me who enjoy checking out the different accessories but don’t need them bad enough to plunk down the necessary $49.95 per product.

Components are much the same way. Their usefulness depends on the necessity of the component. That’s part of their beauty. Much like ordering from an a la carte menu, developers have a bevy of components from which to choose, depending on their needs and wants. There are literally thousands of components, for every development platform, making software engineering more like constructing a house out of Legos rather than cement blocks.

Over the past 10 years or so the development community has increasingly recognized the value of using components, which not only can reduce the time and cost associated with development, but can offer secondary benefits such as enabling more complex development without necessarily requiring an advanced degree in computer science. Components have, in many ways, leveled the development playing field.

This month’s guest expert, Greg Olsen of Coghead, discusses this very topic in his article, “From COM to Common.” The rise of component software is challenging the practice of software engineering in unforeseen and fundamental ways, he writes. This includes a shift from building systems from scratch or from a basic set of components to integrating subsystems into larger systems. The ubiquity of components has changed the nature of engineers’ and developers’ job tasks and job descriptions alike.

Like any technology, however, components have had their bad days. As Chris Richardson explains in his article, “Untangling Enterprise Java,” the early days of component frameworks were bleak enough to spur a revolution in framework development. Crosscutting concerns were a big problem, he notes, which forced developers to reevaluate their approach to component frameworks. The result has been an explosion of lightweight component frameworks that do a much better job of handling crosscutting concerns.

Speaking of the early days, Michi Henning of ZeroC recounts the rise and fall of a once-promising technology called CORBA. CORBA’s road to obscurity was paved by arcane technology and an ineffectual standards body. On the positive side, developers of newer distributed computing technologies can learn from CORBA’s shortcomings.

This month’s conversation with Leo Chang of ClickShift, formerly of Savi Technology, is also chock-full of component nuggets and an interesting read for anyone interested in learning about components from an in-the-trenches perspective.

I hope this month’s issue offers some new insight into a technology that truly has the power to make a daunting task simpler. As I’ve learned with my mixer, flipping a switch to mix pizza dough is a lot easier than using a wooden spoon and elbow grease. And many times the result is just as satisfying.

Charlene O’Hanlon, editor of ACM Queue, is a big believer in appliances that make our lives easier. What are your thoughts? E-mail her at [email protected].


Originally published in Queue vol. 4, no. 5
see this item in the ACM Digital Library


© ACM, Inc. All Rights Reserved.