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