{"title":"Refactoring and the evolution of Fortran","authors":"J. Overbey, Stas Negara, Ralph E. Johnson","doi":"10.1109/SECSE.2009.5069159","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069159","url":null,"abstract":"Successful languages like Fortran keep changing and tend to become more complex, often containing older features that are rarely used. Complexity makes languages harder to use and makes it harder to build tools for them. A refactoring tool can eliminate use of these features from programs; this makes programs easier to understand and maintain, and it can simplify building certain programming tools. This is illustrated by using Photran, a refactoring tool for Fortran, to eliminate global variables from Fortran programs so that they can be used with Adaptive MPI, a version of MPI that performs load balancing.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128448601","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
J. Hannay, H. Langtangen, Carolyn MacLeod, Dietmar Pfahl, J. Singer, G. Wilson
{"title":"How do scientists develop and use scientific software?","authors":"J. Hannay, H. Langtangen, Carolyn MacLeod, Dietmar Pfahl, J. Singer, G. Wilson","doi":"10.1109/SECSE.2009.5069155","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069155","url":null,"abstract":"New knowledge in science and engineering relies increasingly on results produced by scientific software. Therefore, knowing how scientists develop and use software in their research is critical to assessing the necessity for improving current development practices and to making decisions about the future allocation of resources. To that end, this paper presents the results of a survey conducted online in October-December 2008 which received almost 2000 responses. Our main conclusions are that (1) the knowledge required to develop and use scientific software is primarily acquired from peers and through self-study, rather than from formal education and training; (2) the number of scientists using supercomputers is small compared to the number using desktop or intermediate computers; (3) most scientists rely primarily on software with a large user base; (4) while many scientists believe that software testing is important, a smaller number believe they have sufficient understanding about testing concepts; and (5) that there is a tendency for scientists to rank standard software engineering concepts higher if they work in large software development projects and teams, but that there is no uniform trend of association between rank of importance of software engineering concepts and project/team size.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131721849","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Preparing scientists for scalable software development","authors":"Valerie Maxville","doi":"10.1109/SECSE.2009.5069166","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069166","url":null,"abstract":"Software development projects have always struggled to find the balance between domain knowledge and software engineering skills and experience. In computational science, this situation is in the extreme, requiring highly specific domain knowledge paired with skills in tuning parallel programs for optimal performance on specific hardware. These projects often take place in very small teams, or by an individual researcher, who must embody both the scientist and the software engineer. Through observation of a range of computational science projects, and the implementation of rigorous software engineering methods in larger projects, we can reflect on where to bring some of the formality of software engineering into computational science. As part of the iVEC Education Program we provide training to eResearchers, which provides an opportunity to prepare scientists for software projects. By infusing the training program with Software Engineering principles, we can provide best practice essentials to the scientists whose code may eventually need to be scaled to multiple processors, platforms, sites, users and developers. By promoting easily adopted, high-return techniques, we hope to develop a culture where quality is intrinsic, reuse is maximised and effort can be focussed on innovative, robust science.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130202173","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Integration strategies for Computational Science & Engineering software","authors":"R. Bartlett","doi":"10.1109/SECSE.2009.5069160","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069160","url":null,"abstract":"In order to make significant progress in solving challenging problems in Computational Science & Engineering (CS&E), we need to integrate a large amount of software written by different groups of experts. Modern Lean/Agile methodologies would seem to provide a good foundation for research-driven development of complex CS&E software. Here, we describe issues related to the integration of CS&E software and propose different integration processes tailored to the special challenges in CS&E. We also describe practical experience with some of these tailored integration strategies related to Trilinos and some of its important application customers at Sandia National Labs.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114545002","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Some challenges facing software engineers developing software for scientists","authors":"J. Segal","doi":"10.1109/SECSE.2009.5069156","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069156","url":null,"abstract":"In this paper, I discuss two types of challenges facing software engineers as they develop software for scientists. The first type is those challenges that arise from the experience that scientists might have of developing their own software. From this experience, they internalise a model of software development but may not realise the contextual factors which make such a model successful. They thus have expectations and assumptions which prove challenging to software engineers. The second type is those challenges which, while not unique to the development of software for scientists, have especial significance in the context of such development. These include the challenges of ensuring effective user engagement and of developing software for a community.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121266276","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Testing for trustworthiness in scientific software","authors":"D. Hook, D. Kelly","doi":"10.1109/SECSE.2009.5069163","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069163","url":null,"abstract":"Two factors contribute to the difficulty of testing scientific software. One is the lack of testing oracles - a means of comparing software output to expected and correct results. The second is the large number of tests required when following any standard testing technique described in the software engineering literature. Due to the lack of oracles, scientists use judgment based on experience to assess trustworthiness, rather than correctness, of their software. This is an approach well established for assessing scientific models. However, the problem of assessing software is more complex, exacerbated by the problem of code faults. This highlights the need for effective and efficient testing for code faults in scientific software. Our current research suggests that a small number of well chosen tests may reveal a high percentage of code faults in scientific software and allow scientists to increase their trust.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"68 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126268581","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Injecting software architectural constraints into legacy scientific applications","authors":"D. Woollard, C. Mattmann, N. Medvidović","doi":"10.1109/SECSE.2009.5069164","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069164","url":null,"abstract":"While software architectures have been shown to aid developers in maintenance, reuse, and evolution as well as many other software engineering tasks, there is little language-level support for these architectural concepts in scientific programming languages such as Fortran and C. Because many existing scientific codes are written in legacy languages, it is difficult to integrate them into architected software systems. By wrapping scientific codes in architecturally-aware interfaces, we are able to componentize legacy programs, integrating them into systems built with first-class architectural elements while meeting performance and throughput requirements of scientific codes.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124648952","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Reusability of FEA software: A program family approach","authors":"Wen Yu, Spencer Smith","doi":"10.1109/SECSE.2009.5069161","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069161","url":null,"abstract":"This paper proposes a methodology to improve the reusability of Finite Element Analysis (FEA) software using a program family approach. The usability and the maintainability are significant problems for a developer trying to properly reuse FEA software. Usability is promoted via systematically defined goals, assumptions, theoretical and computational models, definitions, common requirements and variabilities. Maintainability is improved through a component generator and traceability matrices between different portions of the documentation. We present preliminary work on a simple FEA program family for solving beam analysis problems to illustrate how the program family approach can be applied to FEA software.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116004803","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Developing scientific applications using Generative Programming","authors":"R. Arora, P. Bangalore, M. Mernik","doi":"10.1109/SECSE.2009.5069162","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069162","url":null,"abstract":"Scientific applications usually involve large number of distributed and dynamic resources and huge datasets. A mechanism like checkpointing is essential to make these applications resilient to failures. Using checkpointing as an example, this paper presents an approach for integrating the latest software engineering techniques with the development of scientific software. Generative programming is used in this research to achieve the goals of non-intrusive reengineering of existing applications to insert the checkpointing mechanism and to decouple the checkpointing-specifications from its actual implementation. The end-user specifies the checkpointing details at a higher level of abstraction, using which the necessary code is generated and woven into the application. The lessons learned and the implementation approach presented in this paper can be applied to the development of scientific applications in general. The paper also demonstrates that the generated code does not introduce any inaccuracies and its performance is comparable to the manually inserted code.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130357534","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Carlton A. Crabtree, A. G. Koru, C. Seaman, H. Erdogmus
{"title":"An empirical characterization of scientific software development projects according to the Boehm and Turner model: A progress report","authors":"Carlton A. Crabtree, A. G. Koru, C. Seaman, H. Erdogmus","doi":"10.1109/SECSE.2009.5069158","DOIUrl":"https://doi.org/10.1109/SECSE.2009.5069158","url":null,"abstract":"A number of recent studies reported on the success of applying agile methods in scientific software development projects. These studies found that agile methods are well suited to the exploratory, iterative, and collaborative nature of scientific inquiry. However, these findings might not be applicable in all situations pertaining to scientific software development projects. In addition, they only constitute a subset of the important factors while deciding which development methods and practices should be adopted. Therefore, it becomes important to conduct further research before making recommendations regarding the adoption of certain development methods and practices in this domain. In this progress report, we discuss our on-going research that will empirically study the characteristics of various scientific software development projects according to a model suggested by Boehm and Turner. We plan to conduct interviews and collect data from various scientific software development projects in the Baltimore-Washington area. We expect that our qualitative results will increase our understanding of the characteristics in those projects favoring plan-driven approaches or agile methods, and the needs and conditions associated with those characteristics. Our research provides guidance to scientific software developers by enhancing their capacity to evaluate and understand their own project characteristics and select effective software practices. As a long-term benefit in the same direction, our qualitative results will generate a set of hypotheses that can be tested in different project environments to better understand and categorize scientific software development projects. Consequently, in the future, more generalizable and actionable recommendations can be made for scientific software development projects.","PeriodicalId":311477,"journal":{"name":"2009 ICSE Workshop on Software Engineering for Computational Science and Engineering","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127385906","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}