The Journal of Supercomputing

, Volume 73, Issue 5, pp 2229–2257 | Cite as

Change-driven development for scientific software

  • Mariano Méndez
  • Fernando G. TinettiEmail author


Scientific software production dates back to the days before the computer science discipline obtained its own name. Over the past 76 years, scientists have been producing software, which means that most of the modern techniques and software engineering methods available these days did not exist while part of this process was taking place. Change-driven development was born as a new approach to maintain and develop scientific software. Founded on the principles of software essence (changeability, complexity, intangibility, and conformity), integrated development tools, and automated source code transformation. This new, agile approach takes change as a working unit devised to drive the entire development process, which is performed in a four-stage cycle. One of the most interesting approaches to apply change-driven development on scientific software is to update, modernize and even parallelize sequential programs that have been written 20 or 30 years ago and are still running in production environments. This process will be thoroughly described and implemented. Two successful case studies will be presented and analyzed in depth.


Change-driven development Scientific programming High performance computing 


  1. 1.
    American National Standards Institute and Computer and Business Equipment Manufacturers Association (1992) American National Standard for programming language, FORTRAN—extended: ANSI X3.198-1992: ISO/ IEC 1539: 1991 (E). American National Standards InstituteGoogle Scholar
  2. 2.
    ANSI FORTRAN. X3. 9-1966. (1966) American National Standards Institute Incorporated, New York, p 40Google Scholar
  3. 3.
    Arnold RS (1989) Software restructuring. Proc IEEE 77(4):607–617MathSciNetCrossRefGoogle Scholar
  4. 4.
    Backus J (1978) The history of Fortran I, II, and III. ACM SIGPLAN Not 13(8):165–180MathSciNetCrossRefGoogle Scholar
  5. 5.
    Baker BS (1977) An algorithm for structuring flowgraphs. J ACM (JACM) 24(1):98–120MathSciNetCrossRefzbMATHGoogle Scholar
  6. 6.
    Balmer DW, Paul RJ (1986) Casm-the right environment for simulation. J Oper Res Soc 37:443–452Google Scholar
  7. 7.
    Basicevic I, Jovanovic S, Drapsin B, Popovic M, Vrtunski V (2009) An approach to parallelization of legacy software ECBS-EERC ’09 Proceedings of the 2009 First IEEE Eastern European Conference on the Engineering of Computer Based Systems, Novi Sad, Serbia, pp 42–48. ISBN: 978-0-7695-3759-7Google Scholar
  8. 8.
    Basili VR, Cruzes D, Carver JC, Hochstein LM, Hollingsworth JK, Zelkowitz MV, Shull F (2008) Understanding the high-performance-computing communityGoogle Scholar
  9. 9.
    Basili VR, Turner AJ (1975) Iterative enhancement: a practical technique for software development. Softw Eng IEEE Trans 4:390–396CrossRefGoogle Scholar
  10. 10.
    Beck K, Beedle M, van Bennekum A, Cockburn A, Cunningham W, Fowler M, Grenning J, Highsmith J, Hunt A, Jeffries R, Jon K, Brian M, Martin RC, Steve M, Ken S, Jeff S (2001) The Agile Manifesto. Technical report, The Agile AllianceGoogle Scholar
  11. 11.
    Benington HD (1983) Production of large computer programs. IEEE Ann Hist Comput 5(4):350–361CrossRefGoogle Scholar
  12. 12.
    Boehm BW (1975) The high cost of software. Practical strategies for developing large software systems, pp 3–15Google Scholar
  13. 13.
    Boehm B (2002) Get ready for agile methods, with care. Computer 35(1):64–69CrossRefGoogle Scholar
  14. 14.
    Booch G (2005) The complexity of programming models. Keynote talk at AOSD, pp 14–18Google Scholar
  15. 15.
    Brooks FP Jr, Blaauw GA, Buchholz W (1959) Processing data in bits and pieces. IRE Trans Electron Comput 8(2):118–124CrossRefzbMATHGoogle Scholar
  16. 16.
    Brooks FP (1987) No silver bullet: essence and accidents of software engineering. IEEE Comput 20(4):10–19MathSciNetCrossRefGoogle Scholar
  17. 17.
    Burks AW (1980) From ENIAC to the Stored-Program Computer. In: Metropolis N (ed) Two Revolutions in Computers History of Computing in the Twentieth Century, Academic Press, pp 311–344. ISBN: 0124916503Google Scholar
  18. 18.
    Canning RG (1972) That maintenance iceberg. EDP Anal 10(10):1–14Google Scholar
  19. 19.
    Carver JC, Kendall RP, Squires SE, Post DE (2007) Software development environments for scientific and engineering software: a series of case studies. In: Software Engineering, 2007. ICSE 2007. 29th International Conference on IEEE, pp 550–559Google Scholar
  20. 20.
    Carver JC, Hochstein L, Kendall RP, Nakamura T, Zelkowitz MV, Basili VR, Post DE (2006) Observations about software development for high end computing. CTWatch Q 2(4A):33–37Google Scholar
  21. 21.
    Cheney W, Kincaid D (1985) Numerical mathematics and computing. Cengage LearnGoogle Scholar
  22. 22.
    Chen N, Overbey JL (2013) Photran developer’s guide. Part II: specialized topicsGoogle Scholar
  23. 23.
    Chikofsky EJ, Cross II JH (1990) Reverse engineering and design recovery: a taxonomy. IEEE Softw 7(1):13–17CrossRefGoogle Scholar
  24. 24.
    D’Ambros M (2008) Supporting software evolution analysis with historical dependencies and defect information. In: Software Maintenance, 2008. ICSM 2008. IEEE International Conference on IEEE, pp 412–415Google Scholar
  25. 25.
    de Balbine G (1975) Better manpower utilization using automatic restructuring. In: Proceedings of the May 19–22, 1975, National Computer Conference and Exposition, AFIPS ’75. ACM, New York, NY, pp 319–327Google Scholar
  26. 26.
    Dederick LS (1940) The mathematics of exterior ballistic computations. Am Math Mon 47(9):628–634MathSciNetCrossRefzbMATHGoogle Scholar
  27. 27.
    D’Hollander EH, Zhang F, Wang Q (1998) The fortran parallel transformer and its programming environment. Inf Sci 106(3):293–317CrossRefGoogle Scholar
  28. 28.
    Easterbrook SM, Johns TC (2009) Engineering the software for understanding climate change. Comput Sci Eng 11(6):65–74CrossRefGoogle Scholar
  29. 29.
    Eastwood A (1993) Firm fires shots at legacy systems. Comput Can 19(2):17Google Scholar
  30. 30.
    Edwards PN (2001) A brief history of atmospheric general circulation modeling. Int Geophys 70:67–90CrossRefGoogle Scholar
  31. 31.
    Eigenmann R, Hoeflinger J, Jaxon G, Li Z, Padua D (1991) Restructuring fortran programs for cedar. In: Proceedings of the 1991 International Conference on Parallel Processing, pp 57–66Google Scholar
  32. 32.
    Erlikh L (2000) Leveraging legacy system dollars for e-business. IT Prof 2(3):17–23CrossRefGoogle Scholar
  33. 33.
    Fowler M, Beck K, Brant J, Opdyke W, Roberts D (1999) Refactoring: improving the design of existing code. Addison-Wesley, BostonGoogle Scholar
  34. 34.
    Gomez JE (1979) An interactive Fortran structuring aid. In: Proceedings of the 4th International Conference on Software Engineering. IEEE Press, pp 241–244Google Scholar
  35. 35.
    Gorla N (1991) Techniques for application software maintenance. Inf Softw Technol 33(1):65–73CrossRefGoogle Scholar
  36. 36.
    Griswold WG, Notkin D (1993) Automated assistance for program restructuring. ACM Trans Softw Eng Methodol (TOSEM) 2(3):228–269CrossRefGoogle Scholar
  37. 37.
    Hannay JE, MacLeod C, Singer J, Langtangen HP, Pfahl D, Wilson G (2009) How do scientists develop and use scientific software? In: Proceedings of the 2009 ICSE workshop on software engineering for computational science and engineering. IEEE Computer Society, pp 1–8Google Scholar
  38. 38.
    Horowitz E (1975) Fortran can it be structured-should it be? Computer 8(6):30–37CrossRefGoogle Scholar
  39. 39.
    Huff S (1990) Information systems maintenance. Bus Q 55(1):30–32Google Scholar
  40. 40.
    IEEE (1999) IEEE Standard for Software Maintenance, IEEE Std., vol 2. IEEE Press, pp 1219–1998Google Scholar
  41. 41.
    ISO (2006) International Standard—ISO/IEC 14764 IEEE Std 14764-2006. ISO/IEC 14764:2006 (E) IEEE Std 14764-2006 Revision of IEEE Std 1219-1998), pp 1–46Google Scholar
  42. 42.
    Johnson RE (2010) Software development is program transformation. In: Proceedings of the FSE/SDP workshop on future of software engineering research. ACM, pp 177–180Google Scholar
  43. 43.
    Karp AH (1987) Programming for parallelism. Computer 20(5):43–57CrossRefGoogle Scholar
  44. 44.
    Kelly DF (2007) A software chasm: software engineering and scientific computing. Softw IEEE 24(6):119–120CrossRefGoogle Scholar
  45. 45.
    Kendall R, Carver JC, Fisher D, Henderson D, Mark A, Post D, Rhoades CE, Squires S (2008) Development of a weather forecasting code: a case study. IEEE Softw 25(4):59–65CrossRefGoogle Scholar
  46. 46.
    Kontogiannis K, Patil P (1999) Evidence driven object identification in procedural code. In: Software Technology and Engineering Practice, 1999. STEP’99. Proceedings, IEEE, pp 12–21Google Scholar
  47. 47.
    Lammel R, Verhoef C (2001) Cracking the 500-language problem. IEEE Softw 18(6):78–88CrossRefGoogle Scholar
  48. 48.
    Larman C, Basili VR (2003) Iterative and incremental development: a brief history. Computer 36(6):47–56CrossRefGoogle Scholar
  49. 49.
    Lee G, Kruskal CP, Kuck DJ (1985) An empirical study of automatic restructuring of nonnumerical programs for parallel processors. IEEE Trans Comput 100(10):927–933CrossRefGoogle Scholar
  50. 50.
    Lehman MM (1978) Laws of program evolution-rules and tools for programming managementGoogle Scholar
  51. 51.
    Lehman MM, Ramil JF, Wernick PD, Perry DE, Turski WM (1997) Metrics and laws of software evolution-the nineties view. In: Software metrics symposium, 1997. Proceedings, Fourth International, IEEE, pp 20–32Google Scholar
  52. 52.
    Lehman MM (1980) On understanding laws, evolution, and conservation in the large-program life cycle. J Syst Softw 1:213–221CrossRefGoogle Scholar
  53. 53.
    Lientz BP, Swanson EB, Tompkins GE (1978) Characteristics of application software maintenance. Commun ACM 21(6):466–471CrossRefGoogle Scholar
  54. 54.
    Lynch P (2008) The origins of computer weather prediction and climate modeling. J Comput Phys 227(7):3431–3444MathSciNetCrossRefzbMATHGoogle Scholar
  55. 55.
    McKee JR (1984) Maintenance as a function of design. In: Proceedings of the July 9–12, 1984, National Computer Conference and Exposition. ACM, pp 187–193Google Scholar
  56. 56.
    Méndez M (2016) Aplicaciones del cómputo científico: mantenimiento del software heredado. PhD thesis, Facultad de InformáticaGoogle Scholar
  57. 57.
    Méndez M, Overbey J, Garrido A, Tinetti F, Johnson R (2010) A Catalog and two possible classifications of Fortran refactorings. Technical reportGoogle Scholar
  58. 58.
    Méndez M, Tinetti FG, Overbey JL (2014) Climate models: challenges for fortran development tools. In: Proceedings of the 2nd international workshop on software engineering for high performance computing in computational science and engineering. IEEE Press, pp 6–12Google Scholar
  59. 59.
    Mens T, Tourwé T (2004) A survey of software refactoring. IEEE Trans Softw Eng 30(2):126–139CrossRefGoogle Scholar
  60. 60.
    Metcalf M (2011) The seven ages of Fortran. J Comput Sci Technol 11(1):1–8MathSciNetGoogle Scholar
  61. 61.
    Moad J (1990) Maintaining the competitive edge. Datamation 36(4):61Google Scholar
  62. 62.
    Morris C, Segal J (2009) Some challenges facing scientific software developers: the case of molecular biology. In: e-Science, 2009. e-Science’09. Fifth IEEE International Conference on IEEE, pp 216–222Google Scholar
  63. 63.
    Nicholas C, Overbey JL (2013) Photran developer’s guide. General information, Part IGoogle Scholar
  64. 64.
    OpenMP Architecture Review Board (2015) OpenMP application programming interface.
  65. 65.
    Overbey JL, Negara S, Johnson RE (2009) Refactoring and the evolution of Fortran. In: 2nd International workshop on software engineering for computational science and engineering (SECSE’09)Google Scholar
  66. 66.
    Overbey JL, Xanthos S, Johnson R, Foote B (2005) Refactorings for Fortran and high-performance computing. In SE-HPCS ’05: Proceedings of the second international workshop on software engineering for high performance computing system applications. ACM, New York, NY, pp 37–39Google Scholar
  67. 67.
    Overbey JL, Negara S, Johnson RE (2009) Refactoring and the evolution of Fortran. Urbana 51:61801Google Scholar
  68. 68.
    Overbey J, Rasmussen C (2005) Instant IDEs: supporting new languages in the CDT. In: Proceedings of the 2005 OOPSLA workshop on Eclipse technology exchange. ACM, p 79Google Scholar
  69. 69.
    Pipitone J, Easterbrook S (2012) Assessing climate model software quality: a defect density analysis of three models. Geosci Model Dev Discuss 5(1):347–382CrossRefGoogle Scholar
  70. 70.
    Polychronopoulos CD (1988) Automatic restructuring of Fortran programs for parallel execution. Springer, NewYorkCrossRefGoogle Scholar
  71. 71.
    Port O et al (1988) The software trap-automate or else. Bus Week 3051(9):142–154Google Scholar
  72. 72.
    Ricardo M, Braunschweig F, Leitao P, Neves R, Martins F, Santos A (2000) Mohid 2000, a coastal integrated object oriented model. Hydraulic engineering software VIII. WIT Press, SouthamptonGoogle Scholar
  73. 73.
    Riggs R (1969) Computer systems maintenance. Datamation 15(11):227Google Scholar
  74. 74.
    Rope C (2007) Eniac as a stored-program computer: a new look at the old records. IEEE Ann Hist Comput 29(4):82–87CrossRefGoogle Scholar
  75. 75.
    Sammet JE, Garfunkel J (1985) Summary of changes in Cobol, 1960–1985. Ann Hist Comput 7(4):342–347CrossRefGoogle Scholar
  76. 76.
    Schmidberger M, Brugge B (2012) Need of software engineering methods for high performance computing applications. In: Parallel and distributed computing (ISPDC), 2012 11th international symposium on IEEE, pp 40–46Google Scholar
  77. 77.
    Seacord RC, Plakosh D, Lewis GA (2003) Modernizing legacy systems: software technologies, engineering process and business practices. Addison-Wesley Longman Publishing Co., Inc., Boston, MAGoogle Scholar
  78. 78.
    Segal J (2008) Models of scientific software development. In: SECSE 08, first international workshop on software engineering in computational science and engineering, LeipzigGoogle Scholar
  79. 79.
    Segal J (2008) Scientists and software engineers: a tale of two cultures. In: Proceedings of the psychology of programming interest group, PPIG 08, pp 10–12Google Scholar
  80. 80.
    Segal J (2009) Some challenges facing software engineers developing software for scientists. In: 2nd International software engineering for computational scientists and engineers workshop (SECSE ’09), ICSE 2009 Workshop, Vancouver, pp 9–14Google Scholar
  81. 81.
    Shaw M et al (2004) National Research Council Computer Science: Reflections on the Field, Reflections from the Field National Academies Press. ISBN-10:0309093015Google Scholar
  82. 82.
    Swanson EB (1976) The dimensions of maintenance. In: Proceedings of the 2nd International Conference on Software Engineering, IEEE. Computer Society Press, pp 492–497Google Scholar
  83. 83.
    Tinetti FG, Méndez M (2012) Fortran legacy software: source code update and possible parallelisation issues. In: ACM SIGPLAN Fortran Forum, vol 31. ACM, pp 5–22Google Scholar
  84. 84.
    Tinetti FG, Méndez M, Giusti AD (2013) Restructuring fortran legacy applications for parallel computing in multiprocessors. J Supercomput 64(2):638–659CrossRefGoogle Scholar
  85. 85.
    Triolet R, Feautrier P, Irigoin F (1986) Automatic parallelization of fortran programs in the presence of procedure calls. In: ESOP 86, Springer, pp 210–222Google Scholar
  86. 86.
    Tukey JW (1958) The teaching of concrete mathematics. Am Math Mon 65(1):1–9MathSciNetCrossRefzbMATHGoogle Scholar
  87. 87.
    von Neumann J (1947) Chapter 2: The Point Source Solution. Wave B, Bethe HA, Fuchs K, Hirschfelder JO, Magee JL, Peierls RE, von Neumann J (eds) Los Alamos Scientific laboratory Report LA-2000Google Scholar
  88. 88.
    Ware MP, Wilkie FG, Shapcott M (2007) The application of product measures in directing software maintenance activity. J Softw Maint Evol Res Pract 19(2):133–154CrossRefGoogle Scholar
  89. 89.
    Wilson GV (2006) Where’s the real bottleneck in scientific computing? Am Sci 94(1):5CrossRefGoogle Scholar
  90. 90.
    Zelkowitz MV, Shaw AC, Gannon JD (1979) Principles of Software Engineering and Design Prentice Hall Professional Technical Reference. ISBN:013710202XGoogle Scholar

Copyright information

© Springer Science+Business Media New York 2017

Authors and Affiliations

  1. 1.Facultad de IngenieríaUniversidad de Buenos AiresBuenos AiresArgentina
  2. 2.III-LIDI, Fac. de InformáticaUNLPLa PlataArgentina
  3. 3.Comisión de Inv. Científicas de la Prov. de Buenos AiresLa PlataArgentina

Personalised recommendations