designing software is for achieving goals