Software Specification: Defining the Blueprint