Software architecture encompasses:
• Working out functional requirements that cut across use cases
• Working out non-functional requirements
• Description system components