Software architecture competence is the ability of an individual or organization to acquire, use, and sustain the skills and knowledge necessary to carry out software architecture-centric practices. Previous work in architecture has concentrated on its technical aspects: methods and tools for creating, analyzing, and using architecture. However, a different perspective recognizes that these activities are carried out by people working in organizations, and those people and organizations can use assistance towards consistently producing high-quality architectures.
This report lays out the basic concepts of software architecture competence and describes four models for explaining, measuring, and improving the architecture competence of an individual or a software-producing organization. The models are based on
(1) the duties, skills, and knowledge required of a software architect or architecture organization,
(2) human performance technology, an engineering approach applied to improving the competence of individuals,
(3) organizational coordination, the study of how people and units in an organization share information, and
(4) organizational learning, an approach to how organizations acquire, internalize, and utilize knowledge to improve their performance. The report also shows how the four models can be synergistically applied to produce an evaluation instrument to measure an organization’s architecture competence.