The fundamental structures of a software system.
General repeatable solutions to commonly occurring problems in software design.