Software Engineering: What is an Anti-Corruption layer, and how is it used? (4 Solutions!!)