'''Author:''' GerardMeszaros '''Context:''' You are building a large complex system which will have many bits of code much of which depends on one another. You are defining one of MultipleArchitectureViews. '''Problem:''' How do you manage the software (code) in your system such that you can reliably configure a system from it? '''Forces:''' * Tracking the dependencies of every bit of software in your system may be too large a problem to keep up to date. * Building systems without tracking software dependencies will often result in failed system builds or random, unexplained errors in the resulting system. '''Solution:''' Organize the software of your system into collections of code which can be managed as a group. Bits of software with a common purpose and common dependencies should be packaged together. If necessary, define several levels of recursive packaging; only stop the recursion when the number of packages is manageable. Track the dependencies of each package using a ConfigurationManagementTool. Examples of packaging include Classes, Modules, Subsystems, SoftwarePackages. Examples of systems which manage the delivery view of the system include Envy/Developer. ---- '''Related Concepts''' * dataDependency * dataContainers ** http://www.samspublishing.com/articles/article.asp?p=31099&rl=1 ** http://www.informit.com/articles/article.asp?p=31325&redir=1 ** http://www.informit.com/articles/article.asp?p=31457&redir=1 ** http://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=/com.ibm.cics.ts.doc/dfhp9/dfhp9b0028.htm