Agile Architecture: Linking Requirements and Architecture to Solve the Right Problem
Mario Cardinal explains how to use agile practices to incrementally introduce non-functional requirements into the architecture in order to reduce the complexity of the solution.

