Finally, there is work on software theory on the hands of programmers (most of them), it is the Software Engineering Method and Theory (SEMAT) initiative.
There is a meaning for the word ‘theory’ as in “In theory, there is no difference between theory and practice, but in practice, there is”. But that meaning is superficial. There is another meaning in the scientific sense, which represents the closest point to truth humans have been able to reach, up to the present day. I hope that SEMAT initiative is focused on the latter meaning.
Of course, computers and programming belong to the science of the artificial, much closer to social sciences than Nature. So, for the possible outcomes from such effort, maybe we are better to base our hopes on the sort of outcomes from social constructivism that from religious thoughts.
The first SEMAT workshop took place recently in Zurich. A report is available online.
For a start, there is a good step forward, as shown by the adopted tentative definition of software engineering, Tom Gilb’s: Software engineering is “the discipline of making software systems deliver the required value to all stakeholders”.
Update: Martin Fowler's take on this could also help to build an informed and balanced opinion.