Also known as subject matter expertise, domain knowledge is information that is relevant to the content that is housed in a software package. This type of knowledge is different from programming knowledge, which influences how the software product itself is designed to function. The focus of domain knowledge is providing the basis for how the programmer sets up the software program so that the information that the program is capable of housing and utilizing will make it attractive to the targeted market of users.
One of the easiest ways to understand the role of domain knowledge in the development of software products is to consider the input of salespeople in the development of a new sales database. Salespeople will know what type of information they would want to house in that database. For example, data such as company names, contact names, and general contact information would be essential to setting up customer profiles using the software. At the same time, a salesperson would also like the ability to designate the status of the contact in some manner, such as a lead, prospect, or customer. The inclusion of sections to capture notes of discussions, schedule pending tasks related to a specific contact and even the ability to export or import information from other programs would also be helpful.
In like manner, the domain knowledge of medical professionals can go a long way toward helping programmers and developers come up with software products that are useful in a doctor’s office, hospital, or other medical facility. Drawing on the knowledge base and experience of medical professionals can help develop software programs that help with everything from dispensing medication to patients in a hospital to maintaining comprehensive records on every patient. By knowing what end users need in a program, it is possible to include those needs in the development and programming functions and come up with a product that is useful and attractive.
From this perspective, domain knowledge is all about helping programmers have some idea of what a program needs to accomplish in order to meet the needs of potential users. This form of knowledge engineering is often used by developers as a means of creating new products or refining newer versions of older products in a manner that makes them more useful to consumers. At the same time, the programmers will seek to keep the user interface as friendly as possible while still including features and functions that are of interest to the end users. Finding this ideal balance will usually require input from those users if the software product is to achieve its goals and attractsignificant attention from potential buyers.