Unifying heterogeneous languages
Comparing different technologies without erasing what makes each one specific.
Begin with stable concepts
Languages differ, but many manipulate comparable concepts: declarations, expressions, calls, control flow, consumed data and produced data. These concepts form the common core.
Retain technology-specific extensions
Not everything fits cleanly into one model. Extensions preserve constructs specific to PySpark, COBOL, SAP BW or another technology without polluting the shared core.
Normalise at the right level
Too little normalisation prevents comparison. Too much destroys information. The right level depends on the objective: lineage, search, validation or translation.
Test representative cases
The quality of the model is measured against real or synthetic programs that cover simple cases, rare constructs and ambiguities. Observed limits become design input.