____________encompasses a broad set of activities that include planning, coding, testing, and documenting while a related activity, _____, is a development process that uses mathematical, engineering, and management techniques to reduce the cost and complexity of a computer program while increasing its reliability and modifiability.