collaboration, configuration management, test, etc.). I will call this the support layer. For the sake of this article, I am keeping the layers simple and have illustrated this simplified architecture framework while highlighting the infrastructure stack in the figure below. Again, the various layers within an infrastructure stack may be different within your company so it is important to identify the infrastructure view within your organization.
Figure 1: Simplified Architecture Framework highlighting the Infrastructure Stack
In some cases, the infrastructure stacks of interdependent legacy systems and IT roadmap standards constrain the choices for envisioning the infrastructure for the new product. However, this is not always a bad thing. If this new application must integrate with legacy products, then this helps assure easier integration. For example, if the existing legacy architecture and infrastructure applies the .Net framework, then introducing a Java Interface Layer (of JIL) framework within a new product may introduce extra work including bringing in extra skills into the company. Typically legacy constraints occur at the platform and development layers.
The key, however, is that you should not let predefined tools, components, or environments constraint the interactions of people, but instead allow the way the team optimally interacts as a means to help drive the better infrastructure choices to the degree that it is feasible. When the Agile Manifesto says, "Individuals and interactions over processes and tools", this is an example of not allowing the tool to drive or constrain the interaction. A suggested approach is to begin projects using Agile and to then see how individuals and interactions meld together into working processes. This information can then be used to help identify tools that may be suited for the work (as appropriate).