I work at a university at an Information Technology department. My colleagues claim we are 'computer scientists'. However, from what I observed, most of our work is pure implementation and often follows the Engineering Method, not the Scientific Method (see this page). What is the proper scientific output for research on a real life problem (how to transform a data model encoded in XML Schema into a useful web form for entering/editing data) that involves implementation of a new software (a new data model annotation language and a web form generator software)? Is the resulting software a scientific or an engineering result? What would constitute a proper scientific result?
Coming from a similar research area myself, I can say that in practice the borders between science and engineering are often not clear-cut in applied computer science.
That being said, usually, the starting point of our research is indeed a hypothesis, but more of the style it is possible to build a system that does X using Y in order to achieve Z. (and, consequently, this new way is better in some meaningful regards than the traditional way of doing it via X^*). Naturally, the way to falsify such an hypothesis is to set out and do a proof-of-concept, optimally in a realistic setting, and compare it against the traditional way.
Note that the proof-of-concept implementation here is not the scientific output. It is a vehicle for scientific validation. The scientific output is the knowledge that X can indeed be usefully done via Y to achieve Z. Maybe, the proof-of-concept can be improved into an open source tool or product (either by the researchers directly or by partner companies), but this productization is not science anymore - this is pure engineering (we know that it can be done, but now it needs to be done properly, which takes time, effort, and domain knowledge - all things that researchers often don't have in spades).
As such, to answer your question:
Is the resulting software a scientific or an engineering result?
It is not the scientific result, but it was used to validate the scientific result. It may be considered an engineering result (depending on the quality of the proof-of-concept).
What would constitute a proper scientific result?
I strongly dislike the term proper in this context, as it implies an ordering of value between science and engineering.
It depends on what area of Computer Science you're in. However, I think where things are getting confused for you may be in what you do with the thing that you built.
In a "scientific" perspective, particularly for Computer Science, the key lies in explaining why. After building the system, your goal is not only to have accomplished the construction but to either:
- Compare it with existing solutions to "prove" your unstated hypothesis that your system is better while explaining -why/what makes- it better; or
- If no solution exists, tie your solution in with previous work and explain not only how it solves this problem, but why it works.
If what you do is you build a solution to a problem and stop there, without trying to explain the why or testing it against the often unstated hypothesis of "my approach will be better than other approaches", then that may be what you're referring to as an engineering method.
The "science" or "research" method that you seem to be looking for is in the aftermath of building the system and seeking to add to the theoretical knowledge of the field by testing and explaining why your approach is faster/more efficient/easier to use/etc.
This is, of course, in addition to the big two factors of reliability (is it reproduceable?) and validity (is this a problem people care about, does this move the field forward, are you using the correct measures to prove your hypothesis, etc.).