Overall, small, less mission-critical projects with high rates of change are best accomplished by highly-skilled agile teams able to operate on shared, tacit knowledge with little documentation. Large, more mission-critical projects with less change and mixed developer skill levels are more successful using explicit documented knowledge such as architectural views and project plans to succeed. If the requirements of these large projects are relatively stable, architectures and plans will change infrequently, and a pure documented-architecture approach will succeed. However, as seen in Figure 1, large projects increasingly need product and process architectures that enable them to use agility to support more volatile requirements in areas like user interfaces, competition-critical features, or interfaces with independent, rapidly evolving external systems.
Also, our experiences in the commercial and public-service sectors indicate that a growing number of systems must integrate into larger enterprise software frameworks and systems of systems. This leads to complex interactions with evolving COTS products, legacy systems, and external systems, with the expectation that these systems never fail. Emergent requirements, rapid changes, reused components, high levels of assurance, and dynamic market factors must also be addressed.
Replaced/Superseded by document(s)
Systems are becoming increasingly reliant on software due to needs for rapid fielding of ―70%‖ capabilities, interoperability, net-centricity, and rapid adaptation to change. The latter need has led to increased interest in agile methods of software development, in which teams rely on shared tacit interpersonal knowledge rather than explicit documented knowledge. However, such capabilities often need to be scaled up to higher level of performance and assurance, requiring stronger architectural support. Several organizations have recently transformed themselves by developing successful combinations of agility and architecture that scale up to projects of up to 100 personnel. This paper identifies a set of key principles for such architected agile solutions for software-reliant systems, and illustrates them with several case studies.