I just finished reading On Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives by Rozanski and Woods. As the title indicates this book is one on software architecture. What sets it apart from many books in that area is that it presents a pragmatic approach to architecture. The basic premise introduced is splitting the architecture into different views, which each address a specific set of concerns, such as information, concurrency, deployment, development etc. The concept of views is not a new one, however what the authors introduce is the concept of viewpoint which is the concrete representation of the view through templates, and artifacts. These artifacts include questions and checkpoints one should go through to describe the architecture.
The above view and viewpoints cover more or less the functional requirements. Perspectives on the other hand cover the quality attributes such as availability, scalability, usability etc. The authors then show how perspectives and viewpoints work together to represent the overall architecture. This includes showing the areas of overlap of these viewpoints/perspectives and how they are to be addressed. The book is supplemented with materials (templates, cheat sheets, questionnaires) on the following website: http://www.viewpoints-and-perspectives.info/.
This is a great software architecture reference and one that you will keep on your desk to refer to on an ongoing basis, particularly because of its pragmatic approach. A must read for any software architect. It will also help developers anticipate the questions that will be asked during an architectural review, and things to consider throughout the life-cycle of a software project.