Posted on Feb 27th 2013

At Genuitec, we are very interested in the longevity of software tooling because it is critical for our customers’ success.  At its most basic level, software environment longevity is the ability to create a permanent archive of your complete software development environment coupled with the ability to reinstantiate the archive to enable future software maintenance with the same known-good environment.

A concrete example of longevity requirements can be seen in the airline industry.  For example, if an airplane has an embedded system with a fault, you must be able fix that issue in an exceedingly reliable manner.  Doing so requires you to have access to the environment used to initially develop the software because the inability to reproduce the exact known-good environment means that any maintenance work has a higher risk of introducing even more problems. That’s not a situation you want to be in when your software has peoples’ lives literally hanging in the balance.

Key requirements of any environment longevity solution:

  1. Development Stack Archival
    Development configurations must be archived for each software release and must include add-on software and dependent tools. The full suite of tools must be archived to ensure reproducibility of build artifacts when later working on the software maintenance.
  2. Source and Associated Configuration Archival
    Association of configuration and source definitions as part of a stack archive is critical to reconstituting the full environment used to develop software. Only tracking the tools, but not their configuration, requires a separate repository of configuration; which would introduce additional risk.
  3. Easy Reconstitution of Past Environments
    Facilitating a longevity environment not only necessitates archiving software but also ensuring that teams can easily access archived builds.  Easy access helps facilitate and ensure compliance as the longevity tooling becomes a key part of the business workflow.
  4. Offsite Archival of Stacks
    While we like to believe that all systems will continue to work for decades, reality dictates that we have a reliable way to ensure reconstitution of long term archives. Longevity tools must provide self-contained artifacts that can reconstitute the archived tools and configuration without requiring server infrastructure.
  5. Visibility into Archived Stacks
    As part of tracking and archiving tooling configurations and software, longevity mustsupport auditing and traceability for the archives. Whether from a compliance perspective, or to facilitate teams using previous archives, longevity systems must ensure easy access to archived stacks.
  6. Application of Patches to Archived Stacks
    Patching of components in archived stacks can be required as part of maintenance activities when issues in the embedded software are a result of the tooling used, not only the source itself.  When reconstituting a stack, it can be necessary to update a particular component to facilitate rectification of the issue being worked.

To Genuitec, longevity is synonymous with reproducibility and traceability. For longevity to be realized, not only must you ensure access to your development tool stacks from past years, but you must also be able to easily configure those stacks for use with any required software that was outside of your base development tooling. And, once all the tools are in place, you must finally be able to determine the precise set of source projects, branches, settings and configurations you used during the original development activities.

Some of our embedded systems customers must support the software they write today for 5 to 25 years or more.  No matter if you have a shorter or longer time horizon in your industry, your basic concerns remain the same because longevity is critical for all types of software development.

How do you address your software environment longevity requirements?

- Tim Webb

About the Blogger:

Tim is lead architect for SDC at Genuitec, where we think he is the very definition of awesome. When Tim sneezes- he leaks awesome. On one occasion he sneezed so hard, SDC was born. When he's not being awesome, he enjoys quiet picnics and long walks on the beach.