Sofcom Research on software independence

Independent non-profit research · Rotterdam, Netherlands

Can software be replaced without changing what it does?

Sofcom studies whether agentic AI can migrate legacy systems to modern, open stacks while behavioural equivalence with the original can be demonstrated rather than assumed.

Non-commercialOpen benchmarkOpen source

The problem

Why this matters outside computer science

Public institutions run software that outlived its builders: benefits calculations in COBOL, hydrological and traffic models in Fortran, case management in VB6 or Delphi. These systems encode decades of policy, exceptions and corrections that exist nowhere else — not in the documentation, and not in anyone's memory.

The barrier to replacement is therefore not engineering capacity but epistemic: nobody can state with confidence what the current system does, so nobody can prove a replacement does the same. Organisations stay with a vendor or a language because leaving cannot be shown to be safe. Software independence fails on a verification problem.

WHERE BEHAVIOUR IS RECORDED Documentation Institutional memory Running system written once, drifts partial, often wrong people retire tacit, unverifiable complete and exact but unreadable at scale coverage ~ partial coverage ~ fading coverage = total The only complete specification is the behaviour itself.
Figure 1 — Where the specification actually lives. Migration projects normally reconstruct requirements from the first two columns. This project takes the third as its source of truth and makes it executable.

Research question & method

Verified legacy migration

How reliably can agentic AI migrate a legacy codebase to a modern stack while preserving its observable behaviour, and where exactly does it fail?

PIPELINEEVIDENCE 0102 0304 CharacterizeMigrate VerifyMeasure behaviour → testsagents rewrite differential runrates, failures test suite withheld from the migrating agents, released only at verification
Figure 2 — The four stages. The characterization suite is produced before migration and kept out of the migrating agents' context, so it acts as a held-out acceptance criterion rather than a target to overfit.
  1. Characterize Derive the behaviour of the running legacy system from real inputs, outputs and state transitions — not from documentation — and express it as an executable characterization-test suite [1].
  2. Migrate Run multi-agent workflows that translate the codebase to a modern, open target stack, with the test suite withheld from the migrating agents.
  3. Verify Run both systems against identical inputs and compare results case by case — differential testing [2] — including edge cases, error paths and numeric tolerance.
  4. Measure Record equivalence rate, failure taxonomy, human interventions required, and cost per thousand lines — per language, per system size, per model.
IDENTICAL INPUTSPER-CASE VERDICT Input cases Legacy system Migrated system Comparison real + generated COBOL · Fortran · VB6 modern open stack agree · differ · error tolerance stated per field A migration is accepted or rejected on evidence, not on code review alone.
Figure 3 — Differential testing. Both systems receive identical inputs; every disagreement is classified, turning "does the new system behave the same?" into a number that can be reported and reproduced.
CLASSIFICATION OF DISAGREEMENTS Disagreement CrashDetected difference Silent divergence fails loudly, cheapto find and fix test catches a wrongvalue or path plausible output, wrongresult, no signal risk: lowrisk: moderate risk: high The third column is the research interest: failures that neither the model nor a reviewer notices.
Figure 4 — Failure taxonomy. Aggregate pass rates hide the distinction that matters to a public institution: a system that crashes is an incident, a system that is quietly wrong is a scandal.
METRIC 01

Behavioural equivalence

Share of differential test cases where legacy and migrated system agree.

METRIC 02

Failure taxonomy

What breaks, and whether it is silent, detected, or a crash.

METRIC 03

Human cost

Interventions and review hours needed to reach an acceptable result.

Scope

Only publicly available legacy codebases are used, so results are reproducible and nothing proprietary or confidential enters the work. Target languages are chosen for public-sector relevance: COBOL, Fortran, VB6 and Delphi first.

Deliverables

First 6 to 12 months · everything public

INDICATIVE TWELVE-MONTH PLAN M0M3 M6M9M12 Benchmark corpus Characterization tooling Migration + verification runs Report / preprint Phases overlap; each released publicly on completion rather than at the end.
Figure 5 — Planning. Indicative schedule for the first twelve months. Each deliverable is published when it is finished, so the work is inspectable before the final report.
OutputStatus
Benchmark dataset
Legacy codebases with reference characterization tests and migration targets
In preparation
Migration & verification workflow
Open-source agentic pipeline, reproducible end to end
In preparation
Report / preprint
Reliability, failure modes and limits of AI-driven modernisation
In preparation

Code under a permissive open-source licence, data and report under an open licence. Links are published here as each component is released.

Selected literature

Work this project builds on

  1. Feathers, M. Working Effectively with Legacy Code. Prentice Hall, 2004. — Characterization testing: pinning down what a system does before changing it.
  2. McKeeman, W. Differential Testing for Software. Digital Technical Journal, 10(1), 1998. — Comparing two implementations on identical inputs.
  3. Lehman, M. Programs, Life Cycles, and Laws of Software Evolution. Proceedings of the IEEE, 68(9), 1980. — Why systems resist change as they age.
  4. Chen, T.Y., Cheung, S.C., Yiu, S.M. Metamorphic Testing: A New Approach for Generating Next Test Cases. HKUST, 1998. — Testing without a known-correct oracle.
  5. Klint, P., van der Storm, T., Vinju, J. RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation. SCAM, 2009. — Dutch work on legacy analysis and transformation.
  6. Rozière, B. et al. Unsupervised Translation of Programming Languages. NeurIPS, 2020. — Machine translation between programming languages.
  7. Chen, M. et al. Evaluating Large Language Models Trained on Code. 2021. — Functional-correctness evaluation of generated code.
  8. Pan, R. et al. Lost in Translation: A Study of Bugs Introduced by Large Language Models while Translating Code. ICSE, 2024. — Empirical failure modes in LLM code translation.
  9. Jimenez, C. et al. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? ICLR, 2024. — Benchmark design for realistic software-engineering tasks.

References are to published work by others and imply no involvement of their authors in this project.

Context in the Netherlands

Related research, programmes and funding — no affiliation implied

Legacy modernisation in the Dutch public sector is studied and financed in several places. These organisations are listed because their work or funding scope touches this research question. Sofcom is independent of all of them and claims no partnership.

Research

Public-sector programmes

Funding routes relevant to this work

People

Project lead

Dick Scholtus

Founder & lead researcher, Sofcom

Works on AI implementation in the Dutch public sector, where legacy constraints are the normal starting point rather than an exception. Designs and runs the pipeline used in this research directly — data extraction, agent orchestration and evaluation.

Sofcom is a small, independent effort. Co-investigators are listed here by name as they join; this page states only people actually working on the project.

Collaborate

Open to researchers, lectorates and public-sector teams

Contribute a case

A legacy system worth studying, in a form that can be shared publicly.

Review the method

Critique the equivalence criteria and evaluation design before results are published.

Run the benchmark

Apply it to your own migration and compare numbers.

Contact

info@sofcom.org

Co-authorship on resulting publications is the default for substantive contributions.