Software architecture has become a recognized competence area in recent years, owing in large part to the indispensable role it has come to play in the development of high-quality systems. But, with a few notable exceptions, the overwhelming amount of energy in the field has been devoted to the technical and technological side of software architecture, including, but not limited to
- Architecture-based development methodologies
- Architectural design solutions involving cataloged solutions or solution fragments
- Evaluating, analyzing, or assessing a software architecture for suitability
- Capturing and communicating a software architecture
- Modeling and refinement of systems based on their architectural descriptions
These topics and others form the backbone of a formidable body of technical work. However, none of them is focused on the fact that software architectures are created, cared for, promulgated, and nurtured by software architects.
The SEI's "Improving Software Architecture Capability" project broadened the scope of architecture research to explore the following issues:
- What must a software development organization do to get the most out of its software architects and produce software architectures of the highest possible quality?
- How can we measure architectural capability?
- What would a "theory of software architecture competence" look like?
- What are the best industrial practices currently at work to improve capability?
Answering these questions will involve understanding what it means to have capability, what specific actions can be taken to improve capability, and how to measure capability.
Our research has uncovered four distinct models of organizational and human behavior that can be applied to software architecture and can be used to help us evaluate and improve the architectural capability of individuals and organizations.
These models are
- Duties/skills/knowledge (DSK) model of competence: This model is predicated on the belief that architects and architecture-producing organizations are useful sources for understanding the tasks necessary to the job of architecting. Developing this model has involved cataloging what architects and organizations do and know, building measures for how well they do and know it, and crafting improvement strategies for their duties, skills, and knowledge.
- Human performance technology model: This model is based on the human performance engineering work of Thomas Gilbert. This model is predicated on the belief that competent individuals in any profession are the ones who produce the most valuable results at a reasonable cost. Developing this model has involved figuring out how to measure the worth and cost of the outputs of architecture efforts, finding areas where that ratio can be improved, and crafting improvement strategies based on environmental and behavioral factors.
- Organizational coordination model of competence: This model has been developed through ongoing research related to multi-site development of software. The focus is on creating an inter-team coordination model for teams developing a single product or a closely related set of products. The architecture for the product induces a requirement for teams to coordinate during the realization or refinement of various architectural decisions. The organizational structure, practices, and tool environment of the teams allow for particular types of coordination with a particular inter-team communication bandwidth.
- Organizational learning model of competence: This model is based on the concept that organizations, and not just individuals, can learn. Organizational learning is a change in the organization that occurs as a function of experience. This change can occur in the organization’s cognitions or knowledge, its routines or practices, or its performance. To measure organizational learning, we can consider three approaches: (1) measure knowledge directly though questionnaires, interviews, and verbal protocols; (2) treat changes in routines and practices as indicators of changes in knowledge; or (3) view changes in organizational performance indicators associated with experience as reflecting changes in knowledge.
We have produced several technical reports that outline out the basic concepts of software architecture capability and described four models for explaining, measuring, and improving the architecture capability of an individual or a software-producing organization. The models are based on the four models above.