What's wrong with software engineering research methodology

In a recent conference, there was a panel session on whether Software Engineering is really engineering. The debate was interesting but inconclusive, not because the panelists disagreed on the state of the arts of software engineering, but on the definition of what is called engineering. Some thought that the aim of engineering is to build useful machines, and as far as we build machines we are engineers using engineering knowledge. So the question of the panel session was somehow ill-posed. For others, an engineering needs a scientific theory to help building machines, and when the theory cannot well guide practice, the engineering is still at the craft stage [1].I believe on the last definition: an engineering must have a scientific theory as foundation and this theory can be applied to build products. If we examine other engineering disciplines such as mechanical, electrical, or civil engineering in a modern sense, all these engineering disciplines have their theoretic foundation [2]. Therefore, anyone who builds products without theoretic knowledge, whatever the expertise he may have, can only be called craftsman or artist, not engineer.In this sense I feel that, with the current knowledge on software "engineering", those who develop software are akin to artisans rather than engineers. Many people will disagree with my assertion, by mentioning a great variety of tools, languages, environments, etc. It is true that software development practices have achieved a lot of progress. However, as an engineering discipline and therefore from its scientific aspect, I think we are progressing very slowly. The reason is that there are few theories in software engineering that can really be qualified scientific and I will try to demonstrate it from epistemology viewpoint. Comments will be welcome.