This document discusses software design. It begins by defining software design and noting that it is more creative than analysis. It describes the software design document and design framework. It discusses that design satisfies both customers and developers. It differentiates between conceptual and technical design. It explains properties of modularity like well-defined subsystems and interfaces. It describes different types of module coupling and cohesion and how to achieve loose coupling and high cohesion. Finally, it discusses design strategies, notations, and function-oriented design.