Before revision: Software design is the process by which an agent creates a specification of a software artifact intended to accomplish goals, using a set of primitive components and subject to constraints .
After revision: Software design is the process of conceptualizing how a software system will work before it is implemented or modified .