Changes to product requirements/specifications during the development cycle are inevitable in a professional setting. In particular, I'm constantly dealing with changes to the specification for an embedded system's software parameters: I/O, user settings, calibration data, logging information, etc. Are there any tools, practices, or methods that development teams commonly use to handle this more gracefully?
Typically, we have one or more engineers/product managers responsible for the document's creation and keeping it up-to-date as requirements change. This "master" document is usually a spreadsheet and contains all the metadata and descriptions for the parameters above. As development progresses, changes to this document need to be propagated to multiple places in the product's source code (interfacing to multiple industry standard protocols among other things), automated test fixtures, other specification documents (describing how they're presented through the other protocols), and multi-language manuals/marketing materials, all of which can be owned by different people. A lot of time and effort seems wasted doing what's essentially manual data entry across multiple people, copying information into different formats. This process is also extremely prone to human error, resulting in a lot of inconsistencies.
My attempt to see how this process could be more streamlined in a previous project was to simply enforce a format on the "master" spreadsheet that would be easier to build a parser around. A parser was developed in Python to auto-generate the database file for the mobile app that interfaces to the product. This seemed to work well since the mobile app team would just rerun their parser anytime an update was needed. Unfortunately, this automation never extended into any of the other problem areas as this was already towards the end of the project. It's hard for me to tell if this is a reasonable approach moving forward as I have no other experiences or example cases to compare with.