Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives