04:28 PM

Retooling The Programmers

Aspect-oriented programming makes it easier to reflect complex processes.

At many companies, programmers are a breed apart. The guys who start work at 11 a.m., keep their office lights dim, and subsist on pizza and Jolt cola might as well, to the average businessperson, be splicing DNA in their cubicles.

But the systems they build--the ones that process insurance claims, design cars, and make sure everyone gets paid--contain plenty of input from rank-and-file managers and engineers who don't live in the world of distributed objects and method calls. And it's exactly that process of translating the workaday requirements of business software into functioning code that's so time-consuming, manual, and error-prone that it's costing businesses big bucks.

To address the problem, several prominent computer-science teams are developing aspect-oriented software-development tools that help manage system-level concerns that cut across classes--or hierarchies or objects--and make code look more like its design. Instead of setting policies by writing scattered code, these tools encapsulate those policies as aspects of a program that can be woven into the code wherever they're needed.

Modern programming languages are designed in a way that's object oriented: Related data and instructions are grouped together in hierarchies of reusable modules that represent entities in a program--say, employees, or products for sale on an E-commerce site. Objects at the top of the hierarchy pass their properties down to objects below, so that, for example, all employees who are managers share certain characteristics. Add a new object, and a lot of the program's knowledge about it gets generated automatically.

Object-oriented systems don't fare as well at encapsulating commands that might touch unrelated areas of the code. So computing-critical policies such as security, error handling, and data caching show up in hundreds or thousands of places scattered throughout a program's code. When business managers ask for changes or updates to a system, all those tangled pieces of code need to be updated. Miss one instance, and the software acquires a bug that can be devilish to find.

"You find systems where people know they're a complete disaster," says James Gosling, a VP at Sun Microsystems who invented the Java programming language in the early '90s. "But when you have a program with a million lines of code, reorganizing things becomes very difficult."

Just as bad, there's no simple way in popular computer languages such as Java and C++ to incorporate into the code the ideas of the nonprogrammers who'll end up using a piece of software. Since much of today's software is embedded in complex pieces of machinery such as cars or airplanes, or is part of complex social systems such as health care, programmers must transform the input of engineers, chemists, doctors, hospital administrators, and other nontechnical specialists into functional code. That, too, exposes systems to bugs.

1 of 4
Comment  | 
Print  | 
More Insights
Newest First  |  Oldest First  |  Threaded View
Register for InformationWeek Newsletters
White Papers
Current Issue
Top IT Trends to Watch in Financial Services
IT pros at banks, investment houses, insurance companies, and other financial services organizations are focused on a range of issues, from peer-to-peer lending to cybersecurity to performance, agility, and compliance. It all matters.
Twitter Feed
InformationWeek Radio
Archived InformationWeek Radio
Join us for a roundup of the top stories on for the week of August 21, 2016. We'll be talking with the editors and correspondents who brought you the top stories of the week to get the "story behind the story."
Sponsored Live Streaming Video
Everything You've Been Told About Mobility Is Wrong
Attend this video symposium with Sean Wisdom, Global Director of Mobility Solutions, and learn about how you can harness powerful new products to mobilize your business potential.