This document discusses software design methodologies. It describes three levels of software design - architectural design, high-level design, and detailed design. Modularization is discussed as a technique to divide a software system into discrete and independent modules. The document also covers concurrency, data objects and relationships, cardinality and modality in data modeling, and entity-relationship diagrams. Structured design methodologies propose breaking programs into functions and subroutines with single entry and exit points.