Reference articles on history, science, culture and more
Encyclopedia

Software mining

Application of knowledge discovery in software modernization

Software mining is a subfield of software engineering that focuses on extracting and analyzing information from software artifacts stored in repositories such as version control systems, issue trackers, and communication logs. It aims to uncover patterns and actionable insights about software systems and development processes using techniques such as data mining, statistical analysis, and machine learning, supporting activities like software maintenance, evolution, and quality assessment.

01Object Management Group (OMG)

Developed specification Knowledge Discovery Metamodel (KDM) which defines an ontology for software assets and their relationships for the purpose of performing knowledge discovery of existing code. The OMG Knowledge Discovery Metamodel provides an integrated representation to capturing application metadata. Another OMG specification, the Common Warehouse Metamodel focuses entirely on mining enterprise metadata.

02Software mining and data mining

Software mining is closely related to data mining, since existing software artifacts contain enormous business value, key for the evolution of software systems. Knowledge discovery from software systems addresses structure, behavior as well as the data processed by the software system. Instead of mining individual data sets, software mining focuses on metadata.

03Text-Mining Software Tools

Text mining software tools enable easy handling of text documents for the purpose of data analysis including automatic model generation and document classification, document clustering, document visualization, dealing with Web documents, and crawling the Web.

04Levels of software mining

Knowledge discovery in software is related to a concept of reverse engineering. Software mining addresses structure, behavior as well as the data processed by the software system.

Mining software systems may happen at various levels:

  • program level (individual statements and variables)
  • design pattern level
  • call graph level (individual procedures and their relationships)
  • architectural level (subsystems and their interfaces)
  • data level (individual columns and attributes of data stores)
  • application level (key data items and their flow through the applications)
  • business level (domain concepts, business rules and their implementation in code)

05Forms of representing the results of Software Mining

Watch videos about Software miningExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Software mining, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.