invariant vs conceptual site:softwareengineering.stackexchange.com - Search