- Software mining
Software mining is a promising application of
knowledge discovery in the area ofsoftware modernization which involves understanding existing software artifacts. This process is related to a concept ofreverse engineering . Usually the knowledge obtained from existing software is presented in the form of models to which specific queries can be made when necessary. Anentity relationship is a frequent format of representing knowledge obtained from existing software.Object Management Group (OMG) developed specificationKnowledge Discovery Metamodel (KDM) which defines anontology for software assets and their relationships for the purpose of performing knowledge discovery of existing code.oftware 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 individualdata set s,software mining focuses onmetadata , such as database schemas. OMGKnowledge Discovery Metamodel provides an integrated representation to capturing applicationmetadata as part of a holistic existing system metamodel. Another OMG specification, theCommon Warehouse Metamodel focuses entirely on mining enterprizemetadata .Levels 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)Forms of representing the results of Software Mining
*
data model
*metadata
*metamodel s
*ontology
*Knowledge representation
*business rule
*Knowledge Discovery Metamodel (KDM)
*Business Process Modeling Notation (BPMN)
*intermediate representation
*Resource Description Framework (RDF)
*abstract syntax tree (AST)
*software metric s
*graphical user interface s [ [http://java.dzone.com/news/interview-creator-metawidget-a Interview] with the creators of [http://www.metawidget.org Metawidget] ]References
Wikimedia Foundation. 2010.