HW28: Chapter 25

29 Nov 2016

Ex 25.10 During the process of building a release of a large software system, engineers should consider:

1) Building a new release requires building a lot more than just a new executable. Even minor changes in the source code will require the new release to have new build and install tools, revised and updated dependencies, and new documentation. This all sounds obvious, but when deadlines loom it would be easy to just focus on getting the new executable ready while forgetting about the supporting tools and documentation required by the user.

2) Speaking of tools, engineers will want to be sure that the various tools they’re using for system integration are up to snuff. The customers will almost certainly not update their software if the update process imposes any degree of inconvenience, so the tools to build the new release should be slightly easier and more polished than the target customer will require, and that any changes are well documented.

3) System building is inherently error-prone because it requires a sturdy bridge between the development environment and the target client environment. Any cracks or wrinkles will likely cause the new release to fail. For this reason, the builders should be integrating their changes as often as is practical, a process that requires building and testing the system either continuously for agile projects or regularly for larger projects.

4) Part of system building is conforming to version control and release control standards. Updates should have unique and unambiguous signatures that clearly identify when and where software systems have been updated to the latest release. The developers should on their own end as well maintain thorough records on each and every major/minor release and patch.

5) Finally, the engineers should think ahead while they work by anticipating future changes for major and minor releases. Perhaps lower priority goals that were not achieved in the current release become high priority goals for the next release, or maybe an external library on which the system depends is due for a new release and will require rapid patching in the near future.