The growing complexity of IT systems is reducing the
effectiveness of traditional engineering techniques and computer
science courses need to adapt accordingly.
A recent BCS thought leadership debate at the Institute of
Directors in London attempted to address this problem. It was
attended by 35 senior people from universities, IT suppliers,
commerce, industry and the public sector.
The participants noted that systems are getting increasingly
complex and, in some cases, there is no control or knowledge of
exactly how they work or are performing. The internet is a notable
example.
This throws into question traditional engineering techniques. These
are based on breaking a problem into smaller problems until the
components are small enough to be developed by an individual or a
small team.
In traditional engineering - notably structural engineering -
simple components are strong components. But in IT system
development this approach typically leads to a hierarchy with a
central control point, which can introduce delays. Trying to apply
this to systems in which thousands of components work together will
create systems that are slow, unwieldy and fragile.
The use of the term "engineering" in software development was also
seen as an issue. In traditional engineering the laws of physics
rule: engineers can calculate the strength of a beam or other
physical component. Software professionals do not have an
equivalent.
So what does "software professional" mean? participants asked.
Established engineering professions are highly specialised - people
who design aircraft do not also design tunnels, for instance. In
software there is some specialisation but not enough.
Systems combine components of many types: a banking system can
include accounts management and network control. People cannot say
they are banking systems specialists - a banking system has many
subsystems, some of which are specialisms in their own right and
common to many applications.
But do systems have to be perfect? Must software professionals only
produce systems that do not fail? Some systems must be correct as
far as possible: for example safety systems or banking systems. But
some systems can be "good enough". We need to understand this
spectrum and adopt appropriate approaches.
The debate found that this has implications for the computer
science curriculum and for continuing professional development for
computing professionals.
Computer science graduates need to be literate in related sciences:
they need to understand the physics, biology, economics and social
pressures of complex adaptive systems which might be working on a
global scale.
And they need to understand how to approach and investigate
problems scientifically. Students also need to be taught how to
deal with the informal human and physical world which requires and
uses the systems.
Read the full report of the debate
www.bcs.org/BCS/News/ThoughtLeadership/ITSystems.htm>>