- defining an architecture for the software that satisfies the requirements
- specifying an algorithm for each software component in the architecture
The architecture includes a specification of all the building blocks of the software, how they interface with each other, how they are composed of one another, and how copies of components are instantiated (made in memory and executed) and destroyed. The final product of design is a design specification.