This document discusses software architecture and provides examples of architectural styles and frameworks. It begins with an overview of software architecture and then discusses the Abstract Window Toolkit (AWT) architecture used in Java. It describes how AWT uses a two-level toolkit with native code to provide platform-independent windowing, graphics, and user interfaces. It then covers the Model-View-Controller (MVC) architecture and how it was applied in the Swing framework to improve decoupling. It concludes with a summary of the key aspects of software architecture.