Software architecture design is a critical aspect of developing large-scale software systems. However, the practice of architecture design reasoning is immature, partly because of a lack of practical methodology support. The authors discuss why capturing design rationale---the elements of design reasoning---is useful and how developers use it in architecture design. They demonstrate architecture design reasoning's application with a UML -based modeling method called Architecture Rationale and Elements Linkage.