How do you approach documenting your software architecture? Walk me through how you use UML diagrams to communicate design patterns.