in software development, as in the development of "complex computer systems" (e.g., artificial intelligence, expert systems, control, simulation, or business software) an sme is a person who is knowledgeable about the domain being represented (but often not knowledgeable about the programming technology used to represent it in the system). the sme tells the software developers what needs to be done by the computer system, and how the sme intends to use it. the sme may interact directly with the system, possibly through a simplified interface, or may codify domain knowledge for use by knowledge engineers or ontologists. an sme is also involved in validating the resulting system. sme has formal meaning in certain contexts such as cmms.