Rhythm in Software Architecture: Assuring Beat, Process, and Movement
- Introduction: The Impact of Rhythm in Architecture
- Rhythm Definition
- Motivation
- Putting Rhythm Into Practice: Criteria, Antipatterns, and Patterns
- Summary
Rhythm is one of the principal translators between dream and reality. Rhythm might be described as, to the world of sound, what light is to the world of sight.
Edith Sitwell in Taken Care Of [Sitwell65]
Introduction: The Impact of Rhythm in Architecture
Grady Booch points out in Object Solutions that the iterative nature of object-oriented development makes rhythm a critical element for success. He writes that having a rhythm forces closure at periodic intervals, coordinates supporting activities, and helps organizations react better when problems arise [Booch96]. Rhythm is important to any development process, but especially for architecture-based development. Rhythm can battle complexity, keep competition off-balance, and maintain sanity and predictability for architecture and development teams.
The sharing of an architecture is like an improvisational jazz ensemble. Each player in an ensemble is autonomous, but each musician's performance is coordinated by cues exchanged with the other musicians as well as the tempo, key, and style of the performance. While the basic elements of the performance may be written down or planned, many elements are performed by the musicians relying on their instinct, training, and talent.
Just as a jazz combo must share a common tempo, phrasing, and progression to have a rhythm, an architecture team must share work products with predictable timing, content, and quality. Software architectures are developed and used in many different organizations. Since many of these groups are autonomous, it is not possible to fully coordinate all of them from the top down. Without rhythm, sharing an architecture can befuddle even the best-designed schemes for communicating across teams.
Rhythm provides a temporal framework that allows groups sharing an architecture to synchronize activities and expectations. With rhythm, stakeholders know when and on which activities to focus. Not only can organizations with rhythm coordinate planned activities, but they can also coordinate those tasks that do not show up on plans because they are performed by other organizations or are not visible enough to be included in the planning process. When rhythm is weak, dissonance between organizations emerges, paving the road to architecture breakdown.