As a software engineer, you’ll often find yourself in situations where documentation is missing, legacy code is cryptic, and yet, you're expected to rebuild, revamp, or integrate a system. In such cases, reverse-engineering data models from the exist...