|
|
ConclusionThe research in this thesis was motivated by an apparent lack of Software Engineering in Computer Science research as conducted at Australian universities. While striving to be impartial in our collection and analysis of results, our initial hypothesis was that the lack of observable scientific discipline and engineering was detrimental to the maturing of computer science as field. During the course of this research it was necessary to further refine our premise. We defined what sort of Computer Science we were examining, reverted to an older and more general definition of Software Engineering, and investigated various types of `usefulness'. As no previous work addressing these questions appears to exists, each refinement involved hard choices and has had significant impact on this thesis. In this chapter we review the refined premise and elaborate and qualify the conclusion that `some form of discipline and engineering is certainly of benefit (in some way) to some aspects of computer science research'. The form and benefit of software engineering, as well as the aspects of computer science most likely to benefit were other than anticipated at the start of this research. We conclude that Software Engineering as it stands in industry is not an appropriate option and may have significant negative effects on research. As this area of research is largely unexplored we conclude with a number of general directions for future research and a brief summary1 of what we have examined. 1 ReviewComputer Science has been defined as that field of science that is concerned with solving problems through the use of computers and study of that field. Our research concentrates on that part of computer science that uses computers as a means to solve problems. Software Engineering has been interpreted in its broader sense as the dicipline of making this part of computer science more `Engineering like'. A number of potential problems and uses for Software Engineering were considered. Many outcome metrics were proposed and examined. It is apparent from the results that the metrics are sometimes uncorrelated or in fact negatively correlated with each other. Whether Software Engineering, or various Software Engineering methods are of use to Computer Science, depends upon which outcomes one considers important. We will now recap a number of Software Engineering approaches and when they may be useful. External documentation
Readable Code
Configuration Management
Frameworks
2 Future workThe work in this thesis is based on relatively small survey samples and three case studies. A more extensive examination of the issues discussed is needed. This should include a larger sample for the survey and many more case studies and interviews. While data was collected from both the US and Australian surveys, this research focused on the Australian results. It is apparent from a brief analysis of the US data that some differences exist in the approach and tools favored in the different countries. It is thought they may be due to a different of emphasis in the funding models. These differences should be examined in detail. The RAISER / RESET approach need further development. It meets the key requirement of agility and complements research rather than imposing restrictions on it. The finer details of what form of documentation to use in the RESET part of the project, and how best to use configuration management are open questions. One idea is that of literate programming. This could provide commenting in layers allowing the `resetters' to create the internal comments and documentation of large modules (created by combining a number of smaller modules) while retaining and including the documentation (possibly left their by the researchers) of smaller modules. It would also allow research to document design decisions in code. These could we reviewed by the resetters to ensure key structure is not lost. The RAISER / RESET methodology is yet to be field tested. Computer science is a vast field and the approach to research and the development of research code differs greatly. There is still much work to be done in examining and documenting the approaches. Researchers across the globe may have good ideas they are applying successfully, but at present their is no forum to examine and exchange these ideas. Forums on both Computer Science and Software Engineering education exist. The lack of a forum for research education, that is discuss on methods and approaches to developing research software is a noticeable gap in the field. The organisation of such a forum to exchange knowledge and ideas constitutes a significant amount of future work in this area. 3 Brevis epitomeDuring his interview Meyer (2002) said "If you can show that some of the ideas from software engineering are directly applicable, then you will have achieved something". We hope with an objective view we have done this and more. Not only have we examined `what' software engineering may be useful for computer science research, but we have addressed the important question of whom it may assist. We have explained `why' and `when' these methods should be applied. The detailed question of `how' to best apply them will require significant experimentation and is largely left for future research. I hope this research has laid a useful foundation and provided an incentive for a more detailed philosophical examination of computer science research and our approach to it. |