Software was conceived
as a mathematical artifact in the early days
of modern computing, when British mathematician Alan
Turing formalized the concept of algorithm and
computation by means of his now famous Turing Machine,
which boils the idea of a computer down to an idealized
device that steps though logical states.
But over time, software development gradually became
more of a craft than a science. Forget the abstractions
and the mathematical philosophers. Enter the realm of
fearless, caffeinated programmers who can churn out
hundreds of lines of code a day (often by hastily gluing
together existing pieces of code). The problem is that
for some projects, even tirelessness, dedication, and
skill aren't good enough if the strategy is wrong.
Large, complex software systems usually involve so
many modules that dealing with them all can overwhelm a
team following an insufficiently structured approach.
That's especially true of the mission-critical
applications Praxis develops, as well as of large
enterprise resource-planning systems, of the sort used
by Fortune 500 companies, and complex data-driven
software, such as the FBI's Virtual Case File project
[see "/sep05/1203 Who Killed the
Virtual Case File?" in this issue].
Even when you break such a big program down into
small, seemingly manageable pieces, making a change to
one turns out to affect 10 others, which may in turn
affect scores or maybe even hundreds of other pieces. It
may happen that making all the fixes will require more
time and money than you have. If your system's correct
operation depends on those changes, you'll have to
either admit defeat or scramble to find a way to salvage
what you've done so far, perhaps by giving up on some of
the capabilities or features you'd hoped to have in the software.
As it turns out, complete failure—projects canceled
before completion—is the fate of 18 percent of all
information technology projects surveyed in a 2004 study
by consultancy Standish Group International Inc., in
West Yarmouth, Mass. Apparently that's the good news;
the rate 10 years ago, according to Standish, was 31
percent.
Still, the overall picture is pretty bleak. Standish
asserts that more than 50 percent of the thousands of
projects it surveyed faced problems, from being turned
over without significant features to going well beyond
their deadlines or budgets. In the end, according to the
Standish numbers, only 28 percent of projects could be
considered successes by any rigorous definition.
Standish's numbers, however, are far from universally
accepted in the computer industry. For contract software
projects, more specifically, other analyses in recent
years have put the success rate as low as 16 percent and
as high as 62 percent. Nevertheless, even using those
numbers as a guide, it's hard not to see the contract
software business as anything but an enterprise all too
often mired in mediocrity. As one study by consultant
Capers Jones, in Marlborough, Mass., put it: "Large
software systems...have one of the highest failure rates
of any manufactured object in human history."
Today, ever more sophisticated tools are available to
help companies manage all aspects of their software
projects. These tools help conceptualize and design the
system; manage all people, files, computers, and
documents involved; keep track of all versions and
changes made to the system and its modules; and automate
a number of tests that can be used to find system
errors.
Indeed, worldwide sales of such software development
tools, according to Stamford, Conn.based market research
firm Gartner Inc., generate more than US $3 billion a
year. Rational Software Corp., a company acquired by IBM
in 2002 for $2.1 billion, is currently the market
leader, followed by Microsoft, Computer Associates
International, Compuware, Borland, and others, according
to Gartner.
But the effect of widespread use of these tools on
overall software quality hasn't been gauged in a
detailed or rigorous way. Some would even argue that the
sector is a little reminiscent of the market for diet
products: it, too, is a billion-dollar industry, and
yet, somehow, obesity as a public health problem hasn't
gone away. And, just as the few successful diet
strategies all seem to require a major change in
lifestyle, perhaps, too, the software failure rates
won't improve significantly without a basic and
widespread shift in tactics.
Certainly, Praxis's experience supports that idea.
Consider one of the company's recent projects, for
Mondex International Inc., a financial services company
founded in the UK that is now a subsidiary of MasterCard
International Inc. First, a little background. Mondex
had a product called an electronic purse, a credit
cardlike payment card that stored electronic cash. That
is, it did not debit a bank account or draw on a line of
credit; it stored the cash digitally in an embedded
chip. Mondex wanted to make the card flexible enough to
run a variety of applications that would keep track not
only of electronic cash but also of discount coupons,
loyalty reward points, and other items still unimagined.
The critical issue was to make sure that only cards
with legitimate applications would work; any other card,
even if programmed to pass as a Mondex card, would be
deemed invalid. The solution Mondex chose was to use a
special program, known as a certification authority,
that would run on a central computer at the company's
headquarters. The certification authority would generate
unique digital certificates—long strings of numbers—to
accompany all applications on the cards. That way, a
card reader at, say, a store could validate a card's
certificates by running them through a series of
mathematical operations that would prove unequivocally
that they came from Mondex.
Mondex hired Praxis to develop the certification
authority, which was the most critical part of the whole
system. After all, if the security of one card was
broken, then just that one card could be forged. But
compromising the certification authority would allow
mass forgery of cards.