|
|
The central argument has been interpreted to mean that there will be no more easy answers to software engineering problems.
| Table of contents |
|
2 To Quality 3 External links |
At the heart of the argument is the distinction between
accidental and essential complexity. Accidental complexity
is problems that we create on our own and can be fixed. For
example, the complexity of writing and optimizing assembly
code is accidental and can be eliminated by programming in Java.
Essential complexity is caused by the problem to be solved,
and nothing can remove it. If users want a program to do 30
different things, then those 30 things are essential and
the program must do those 30 different things.
The problems with software engineering, is that we have cleaned
up much of the accidental complexity, and the rest cannot
be changed.
Perhaps the one technology to make the most improvement was
the invention of high level languages, such as Fortran and Java.
While the article was originally written in terms of productivity,
the same arguments have been applied to quality and control.
The common view of software engineers today is that probably never
be any more silver bullet technologies or practices, yet hope
remains. Many advocates of specific technologies and practices
promote their benefits and claim that they are 'silver bullets'.Accidental versus essential complexity
To Quality