Simulation codes: Migration and Support

Legacy Codes

Legacy code is source code that relates to a no-longer supported or manufactured operating system or other computer technology. The term can also mean code inserted into modern software for the purpose of maintaining an older or previously supported feature — for example supporting a serial interface even though many modern systems do not have a serial port. It may also be in the form of supporting older file formats that may have been encoding in non-ASCII characters, such as EBCDIC.

In practice, most source code has some dependency on the platform for which it is designed— even if a programmer uses a platform-independent programming language like Java, it is hard to write a large, useful program that is totally independent of its environment. When the manufacturer upgrades a platform (or the platform is superseded), the code may no longer work without changes, and becomes legacy code. A large part of the task of a software engineer is to continually alter code to prevent this.

While the term usually refers to source code, it can also apply to executable code that no longer runs on a later version of a system, or requires a compatibility layer to do so. An example would be a classic Macintosh application which will not run natively on Mac OS X, but runs inside the Classic environment, or a Win16 application running on Windows XP using the Windows on Windows feature in XP.

Software modernization

Legacy Modernization, or Software modernization, refers to the conversion, rewriting or porting of a legacy system to a modern computer programming language, software libraries, protocols, or hardware platform. Legacy transformation aims to retain and extend the value of the legacy investment through migration to new platforms.

Legacy system modernization is often a large, multiyear project. Because these legacy systems are often critical in the operations of most enterprises, deploying the modernized system all at once introduces an unacceptable level of operational risk. As a result, legacy systems are typically modernized incrementally. Initially, the system consists completely of legacy code. As each increment is completed, the percentage of legacy code decreases. Eventually, the system is completely modernized. A migration strategy must ensure that the system remains fully functional during the modernization effort.

Making of software modernization decisions is a process within some organizational context. “Real world” decision making in business organizations often have to be made based on “bounded rationality”. Besides that there exists multiple (and possibly conflicting) decision criteria, the certainty, completeness, and availability of useful information (as a basis for the decision) is often limited.

Modernization Strategies and Benefits

ADM (Architecture Driven Modernization) is the initiative to standardize views of the existing systems in order to enable common modernization activities like code analysis and comprehension, and software transformation.

Our projects

In 2009 Iberdrola Ingeniería started working with us.The TRAC-BF1/APK code is property of Iberdrola Ingeniería, it is a modified version of the NRC original one of 1994. This code became a Legacy Code:  was only working in HP UNIX platforms and the code was written in FORTRAN 77 language. The goal was bring back the code to PC and Linux architecture with at least the same quality of the results and experience. The validation matrix and the code performance was simulated successfully, even adding more complex cases.

During the next years more complex tasks were developed including:

  • Migration and validation of TRAC-BF1/BE
  • New friction Models added to TRAC
  • Partial Length fuel rods modelling capabilities added to the code.
  • Modifications to FRAP-T6/APK for a static coupling to TRAC-BF1/APK
  • New model to FRAP-T6/APK to simulate an axial power profile.
  • Analysis for a active coupling FRAP – TRAC.