Software mining is a process by which a person or group, usually involved in the information technology (IT) industry, looks at the source code of a software program to determine information about it. This can be done in a number of different ways, though other software is often used to make the process easier or faster. Information found through this method can then be used in a variety of ways, and it is routinely utilized in creating models for future software development. Software mining is similar in some respects to data mining, though the type of information gained and its uses can be quite different.
The process of software mining is often used by companies and software developers to extract data from a program for use in the development of new software. This is typically done by software developers going through the various lines of code that make up a program and extracting data from that code. Other programs are often used to facilitate software mining, often by searching for certain terms or segments within the code itself. Information found in this way can be used in many ways, often as a model for the development of new programs.
Software mining is typically done by a company or individual on software that was developed by that company, is legally owned by the company, or which is provided under an open source license. This makes the use of any data extracted through the mining process legal. Software mining performed on a program owned by another person or company, however, may violate copyright laws that protect software as intellectual property. This can be something of a nebulous legal area in some instances, however, so mining should be done carefully by a programmer or developer.
In many ways, software mining is similar to another process known as data mining. Data mining often uses similar techniques and applications as those used in mining software, though it is done to databases and other large quantities of raw data rather than to a particular software program. The two terms are used interchangeably by some IT professionals, however, and so “data mining” may be used with regard to a software program as well. While data mining commonly seeks to gain useful and specific data from a large data set, software mining is often performed to find how data tables and code were created in the first place.