Providing a Clear Point of Reference
Project Planning Aids
Project planning aids are a key reference architecture artifact because they assist project managers with successfully utilizing a reference architecture. Planning aids might include project templates, resource allocation guides, estimating templates, staff training recommendations, and so forth.
Reference Architecture Artifacts
Table 1 summarizes the reference architecture artifacts discussed above:
|Reference Guide||"what to build"||Describes solutions that address sets of functional and non functional requirements||Architect|
|Reference Models||"how to build it"||Specifies how to build a given solution chosen in the reference guide||Architect, Developer|
|Reference Implementations||"working code"||Working code that has been refined, tested, and validated and can be leveraged on a project||Developer, Architect|
|Factory Setup Guide||"who does what"||Outlines the development and production environments. Roles and responsibilities are clearly understood through the software development life cycle||Project Manager, Configuration Manager|
|Planning Aids||"plan the work"||Provides templates for building a project using a particular reference architecture and includes resource needs, timelines, training, estimating guides, and so on||Project Manager|
Collectively, these artifacts create a meta model for documenting a reference architecture.
Artifacts by Problem Domain
A set of reference architecture artifacts may be used to document the reference architecture of a particular problem domain; for example, a n-tier transactional application architecture. Note that a domain's reference architecture need not include all of the artifacts mentioned here. A reference guide is generally the best place to begin. Over time, additional artifacts such as reference models, reference implementations, factory setup guides, and project planning aids can be used to mature the reference architecture. By using a common meta model, all relevant domains can be documented in a consistent manner.
Reference Architecture and Knowledge Management
The field of knowledge management provides tremendous insight into reference architecture.
Knowledge management is the explicit and systematic management of vital knowledge and its associated processes of creation, organization, diffusion, use, and exploitation. As you did with the definition of reference architecture, you can examine this definition in further detail.
Knowledge management encompasses both tacit knowledge (in people's heads) and explicit knowledge (codified and expressed in databases, documents, and the like.). By making knowledge explicit, it can be broadly communicated and leveraged. This is exactly what reference architecture does when it articulates proven solutions to common problems by using the artifacts described above.
One of my colleagues coined the phrase "living architecture" to describe the reliance upon the experience and judgment of certain key architects. Living architecture is not sustainable. By codifying the knowledge of these individuals and making it explicit, a reference architecture can leverage their knowledge more broadly.
Leaving things to chance won't achieve the benefits of knowledge management. There must be a process to create, organize, communicate, use, and exploit knowledge. The same applies to reference architecture. A reference architecture shouldn't be a one-time activity. There needs to be a process to create, store, communicate, use, govern, and refine reference architecture artifacts.
Certain knowledge is essential to an organization's mission. Knowledge management focuses on capturing this vital knowledge. In a similar way, a reference architecture focuses on the common solutions that are leveraged on the greatest number of projects. There should be a justifiable benefit to capturing a reference architecture for a given problem domain.
From the parallels, you can see that reference architecture is really a type of knowledge management. It makes vital architecture knowledge explicit, and requires a systematic process to build and leverage this knowledge.
Page 2 of 3