The aim of software engineering

NOTE HXA7241 2011-06-27T08:42Z

What, as a discipline, is software engineering trying to do? – One could begin to answer that its purpose is to be an optimal intermediary between requirement and material: a tool that goes where you point it, and shows you where it is pointing.

Software engineering's aim is to reflect the human fluidity of seeing things in new ways with a fluidity in changing software structure. We want software to keep up with our imagination.

It is not, really, exactly, about better means of abstraction, but more like better means of changing abstractions. Half of the core reason why we like software is because it is easily changeable, and so half of the core value in software engineering is – or should be – to realise that virtue. One could say changing is a more generalised kind of creating.

We like software because it can reflect this – software engineering tries to keep close to what we want do.

• • •

Software engineering aims at clarification and fluidity of development.

This is software engineering separated out as facilitation: the requirements are given, and the material is given (the limits and possibilities of computation as elucidated by computer science) – software engineering is left between as the systematic activity to join these together.

The best it can do, then, is more fluidly construct what we think we want, and more clearly show what we have actually built. Think of software engineering as a very broad kind of tool. Its purpose is to be a tool that goes easily where you point it and shows you clearly where it is pointing – it lets you make what you want, and shows you what you are making.

But this is just the essence of software; it is what software does anyway. Software engineering aims at clarity and fluidity because these are what software essentially and distinctively is about. A bit is precisely 0 or 1, and easily changeable between them. Software is clarity and fluidity.

This is a derivation of the aim of software engineering from the other side – the material, not the requirements. It tries to keep us close to what software is.

• • •

All engineering is fundamentally about this joining of requirement with possibility, as Vitruvius wrote:

In architecture [particularly engineering in today's sense], as in other arts, two considerations must be constantly kept in view; namely, the intention, and the matter used to express that intention: but the intention is founded on a conviction that the matter wrought will fully suit the purpose;

– ‘De Architectura’; Vitruvius; 25 BCE. – Book 1, Chapter 1, section 3.

• • •