[Edu-sig] RE: [Tutor] Off topic musings

Morris, Steve smorris@cereva.com
Mon, 20 Aug 2001 22:06:29 -0400


 > > Maybe. Really I'm just interested in what exactly a theoretical
 > > basis for software engineering would look like. The papes I was
 > > reading suggested that we may be reaching the point in CS
 > > research where we cannot progress further without an underlying
 > > theoretical base (like electrical theory underpins 
 > > electronics which
 > > is in turn underpinned by atomic/molecular/ionic theory).

I think you are comparing apples and oranges here. I think your vision of
software engineering is too narrow. Electrical theory explains a finite set
of observed electrical properties. Software is a language that can express
too much to be stated in a single theory. It is too expressive. You might as
well try to make a general theory of communication which covers all possible
communication, speech, evocation, persuasion, poetry, art and expression.
Software engineering would then be a substantial subset of this general
theory. In order to have a meaningful theoretical discussion you must break
down the subject into a finite set of rational observable components with
observable relations between them. You then attempt theories to explain what
you observe. The problem with communication (of which software engineering
is a subset) is that it is infinitely extensible. As long as there are new
areas of software problems to solve we can't put a bound on it.

It is not even clear what you mean when you ask what a "theoretical basis of
software engineering would look like." Engineering doesn't have theories.
Science has theories; engineers apply these theories to solve specific
problems. You would do better to think of a specific aspect of software
engineering that you think needs explaination. Without specific questions
you will never have useful theories. When you narrow your self to specific
questions you will likely find plenty of literature that discuss them.

Be careful or you will fall down the rabbit hole that has swallowed literary
criticism, chasing meaningless but pretty ideas that go nowhere, lost in
endless reflections of ideas that seem like they must mean something but
can't be nailed down. This is the curse of language, many more things can be
said than have meaning. You don't start with a theory, you start with
specific questions and observations that need explaination. Theories provide
possible and hopefully testable explainations. The results suggested by
these theories, once validated as useful and predictive, can be the basis
for the next level of theories.

Let me give a specific example. You don't ask for a theory of physics.
Physics is too general a thing to have one theory. On the other hand we have
a set of theories which describe various fields; gravitation,
electromagnetic, strong and weak forces. These theories are pretty mature
and usefully and predidictively explain the specific fields. These field
theories have a lot in common and now that they are well developed and
tested it is worthwhile looking for a unified field theory in which the
specific fields are merely special cases. Physicists have been hoping for
this one for 80 years.  You try to build a general theory when the specific
theories are well understood. This does not describe the condition of
software engineering or even of so called "computer science."