This document discusses hierarchical software architectures, including master-slave and main-subroutine architectures. It describes how hierarchical architectures organize systems into layers with specific responsibilities that interact with adjacent layers. Master-slave architecture involves a central master that coordinates subordinate slaves to perform tasks and report results back. Main-subroutine architecture similarly breaks programs into a main program and reusable subroutines.