Reference architectures and scrum: Friends or foes?
Software reference architectures provide templates and guidelines for designing so.ware systems in a particular domain. Companies use reference architectures to achieve interoperability of (parts of) their software, standardization, and faster development. In contrast to system-specificc software architectures that "emerge" during development, reference architectures dictate significant parts of the software design early on. Agile software development frameworks (such as Scrum) acknowledge changing so.ware requirements and the need to adapt the software design accordingly. In this paper, we present lessons learned about how reference architectures interact with Scrum (the most frequently used agile process framework). These lessons are based on observing software development projects in five companies. We found that using reference architectures can be a good agile practice in Scrum: They provide enough design upfront without spending too much effort, reduce documentation activities, facilitate knowledge sharing, and contribute to "architectural thinking" of developers. On the other hand, we found that reference architectures can impose risks or even threats to the success of Scrum (e.g., to self-organizing and motivated teams).