Intermediate Software Design