Software evolution and reuse is more likely to receive higher payoff if high-level artifacts—such as architectures and designs—can be reused and can guide low-level component reuse. In practice, however, high-level artifacts are often not appropriately captured. This paper presents an approach to capturing and assessing software architectures for evolution and reuse. The approach consists of a framework for modeling various types of relevant information and a set of architectural views for reengineering, analyzing, and comparing software architectures. We have applied this approach to large-scale telecommunications systems, where the approach is useful to reveal areas for improvement and the potential for reuse.