Contact Us
Proof

Proven on one of the hardest codebases in software

Tableau brought us a classic large-system problem: god classes and API usage spread across an enormous C++ estate. We automated the refactoring with DMS.

Earlier, our published work with Boeing re-engineered a large avionics C++ system, transforming 1990s-era components to a modern component framework while preserving functionality. Peer-reviewed and documented, because avionics buyers check.

4M+
Lines of C++
5,000+
Modules refactored
< 3 months
Start to finish
What we fix

The transformations that pay for themselves

God class splitting

Oversized classes are decomposed into coherent smaller ones, with every call site across the codebase updated automatically and consistently.

API migration

Moving 5,000 modules from an old internal API to a new one is a rule set, and every usage converts the same way. Ideal for framework swaps and internal platform upgrades.

Dead code and clone removal

Compiler-grade analysis finds unreachable code and duplicated blocks, then removes or abstracts them safely. Smaller codebase, faster builds, fewer places for bugs to hide.

Dialect upgrades

C++98 and C++03 idioms convert to modern C++: raw pointers to smart pointers, hand-rolled loops to standard algorithms, macros to typed constructs, applied uniformly.

Why C++ specifically needs this machinery

C++ punishes text-level tools

The preprocessor, templates, overloading and multiple dialects make C++ one of the hardest languages to transform correctly. Search-and-replace breaks it. Gen AI suggestions drift on it. DMS parses C++ with full preprocessor awareness and resolves names and types before any change is made, so a transformation that compiles once compiles everywhere it's applied.

C++ hazard How DMS handles it
Preprocessor conditionals Code is analysed with its #if structure intact, so transformations stay correct across build configurations.
Templates and overloads Full name and type resolution decides what each call really binds to before any rewrite touches it.
Mixed dialects Front ends cover legacy C++ dialects through modern standards, in one project, in one pass.
Sheer scale DMS is built for systems in the millions of lines. Whole-codebase consistency is the default, since every rule applies everywhere.
Engagement shapes

Start where it hurts most

Refactoring campaign
API or framework migration
Codebase cleanup
Custom transformation tool

Some clients want a defined campaign delivered. Others want a custom transformation tool their own engineers run repeatedly. Both models are on the table at assessment.

Outcomes

What changes for your team

Before the campaign After the campaign
A 40,000 line class 3 people understand Coherent classes with owners, reviewable in a normal pull request
API migration parked for 2 years Every call site moved, consistently, in one verified pass
Clones patched in 5 places, missed in the 6th Duplicates abstracted once, so the next fix lands everywhere
Build times padded by dead code A smaller codebase that compiles, tests and onboards faster

Every campaign is scoped with before and after measures on your own code: class sizes, clone rates, dead code volume, API usage counts. You see the numbers move.

FAQ

C++ modernization FAQ

General questions

Keeping your system in C++ and fixing the code itself: structure, APIs, duplication, dead weight and outdated dialect idioms. Migration to another language is a different service, and we offer that too when it's the right call.

Because it's deterministic. Each transformation is a rule applied through compiler-grade analysis, verified on samples, then applied uniformly. A hand refactor makes thousands of independent human decisions. This makes one decision and enforces it everywhere.

Yes, and that's checked continuously. Transformed code builds against your toolchain and runs your test suites during the project, with side-by-side comparison on behaviour where it matters.

Yes. That was the core of the Tableau engagement: oversized classes decomposed and more than 5,000 modules' call sites updated in under 3 months.

Legacy dialects through modern standards, including vendor-specific extensions. Mixed-dialect codebases are normal for us.

No. Rules are developed against a copy of the code and the final pass runs on a fresh snapshot, so ongoing development continues throughout.

Yes. API migration is one of the highest-value uses of this machinery: every usage pattern becomes a rule, and the entire codebase moves consistently.

Those tools apply local, predefined fixes one at a time. This applies custom, project-specific transformations across the whole system at once, including changes those tools can't express.

Transformation is done by DMS, deterministically. Gen AI sits alongside providing refactoring suggestions and for documentation, code review support and test generation.

A free assessment. We analyse your codebase, quantify the targets (class sizes, clone rates, API usage counts) and propose a campaign with concrete before and after measures.

The refactor your team keeps postponing
is a rule set to us

Book a free assessment and see the numbers on your own codebase.