In the race to introduce the very latest software developments,
quality can be compromised for the sake of speed. IBM's Mark
Cathcart explains what his company is doing to make sure its
products do exactly what is expected of them whilst still being
delivered on time.
At IBM, as with many large software houses, maintaining software
quality among hundreds of products is an increasingly complex task.
Mark Cathcart, a member of IBM's corporate strategy team,
recognises the trade-off developers face between the speed and
quality of development.
This trade-off can threaten software quality. Cathcart observes
that at IBM: "We need to strike a balance between developing
software with no defects and an acceptable level of defects." This
affects the way software is released. There is constant debate at
the company over whether to ship enhancements to a product as
new-version software or simply to release a patch. The problem for
users, as Cathcart notes, is "it can take more than a year to roll
out new software".
Today, thanks to rapid application development tools, he says,
"modern software can be developed extremely quickly". What is
apparent to Cathcart is that rather than simplifying the
development process, such tools have enabled software developers to
create far more complex applications than were possible with
earlier generations of software tools and programming languages.
"Testing now takes far longer than writing software," he
says.
Testing therefore forms the crux of software quality. In 1986, when
Cathcart was working in the IT department for a bank in New York, a
tight disclosure process - where software developers had to declare
their intentions - was used to minimise the risk of a software
enhancement affecting other parts of the IT system.
Any software enhancement requires several levels of testing.
Functional testing is used to ensure the enhancements correctly
perform the tasks they have been designed for. System level testing
checks if the software enhancements affect any other part of the IT
system.
For IBM, the drive to improve the quality of software development
began in 1992 when Big Blue said it would make a commitment to
quality through its 6x quality improvement programme. "We needed a
relentless approach to quality," says Cathcart. "There is no point
producing software that doesn't work." The 6x quality programme led
to rigorous new processes within IBM.
It was bigger than ISO 90002," says Cathcart, and involved a
complete refocus on software development processes. For Cathcart,
the 6x programme has led to a significant improvement of
productivity in software development. "Since 1994 we have been able
to deliver two releases of software per year, including two annual
releases of our mainframe operating system that comprises 110
different sub-systems," he says.
Quality is driven through IBM's software design council, an
organisation set up within the company to co-ordinate high-level
design. With software development facilities on every continent,
the council meets every six weeks, to monitor changes in software
design. "Some of our operating systems represent 25 years' worth of
development effort. In terms of quality, it is important that the
impact of adding a new feature is thoroughly understood," says
Cathcart.
Failures in software occur when design teams fail to communicate
effectively, he says. "With some of our products we need to work
with 15 to 20 different components, so it is important to get
everyone involved at the start."
With heavy involvement in Linux and open-source development,
Cathcart says IBM has been studying the way software such as Linux
and Apache is in development on the Internet. "We are making a very
large investment in Linux," he adds, "and we want to be compatible
with open source." For Cathcart, that means establishing a central
body or organisation that controls software development projects -
mirroring the way Linus Torvald oversees Linux development - and
letting everyone have access to the source code.
On the non-open source side of the business Cathcart says tools
known as software repositories can help companies improve the
quality of their source code. Software developers store source code
for their applications within such repositories, allowing the same
code to be used repeatedly. As bugs are fixed within this piece of
code, the fixes can be propagated to any software project using it.