Field of study that defines a set of common requirements, terminology, and functionality for any software program constructed to solve a problem in domain engineering.