Acquisition and design of software