Managing arguments and configuration in composite applications
When we have a complex suite (or system) of individual applications, it's common for several applications to share common features. When we have completely separate applications, external Command-Line Interfaces (CLIs) are is tied directly to the software architecture. It becomes awkward to refactor the software components because changes will also alter the visible CLI.
The coordination of common features among many applications can become awkward. As a concrete example, imagine defining the various, one-letter abbreviated options for command-line arguments. We might want all of our applications to use -v
for verbose output: this is an example of an option that would require careful coordination. Ensuring that there are no conflicts might require keeping some kind of master list of options, outside all of the individual applications.
This kind of common configuration should be kept in only one place in the...