software specification