Versioning for every module (assembly, jar, dll, exe, binaries in general, excluding executables as web-applications, services and web-services) can be further simplified
when
the module used in a code-build-test-deploy environment has Continuous Integration and the application that uses the modules has sufficient automatic tests as acceptance integration and unit tests, and at every automatic build the last official binary version or source code of the module is pulled into the build.
In this case for the modules there is no need to trace and document breaking changes (i.e. for the public interfaces, for the db schema, for the configuration, for the expected behavior) .
So versioning and tracing and documentation of breaking changes can be simplified for modules (assembly, jar, dll, etc.) and done only at application level (executables as web-applications, services and web-services, etc.)