Skip to main content.

Why Software Mining / Application Mining?

Industry analysts estimates that up to 50%, and even more in some cases, of system developers time is spend on analysis and understanding of application source.

For each new line of code added to an application the complexity increase, which leads to great needs to analyze and understand the source to be changed. This is noticable when building new applications because the cost per produced unit (line of code, function point etc measured) increase with the development of the application. At the second half of the application life cycle, system developers can spend more than half their time analyzing the source.

It is not uncommon that when old timers leave, the successors find them self in big trouble.

Common tasks without and with Software Mining / Application Mining:

Task Without Application Mining With Application Mining
Identifying Requirements  Requirements for a new system is identified in workshops with business key resources who are busy and have limited time. The level of detail is low and further requirement analysis is needed. Key resources can be less involved by delegating to system developers to harvest business rules from existing source as far as possible. The level of detail is high and further requirement analysis is less needed.
Quality Audits Audits of newly written source to check that requirements on design decisions and coding standards are fulfilled takes time consuming reading through source or making a few checks here and there giving an uncomplete picture of flaws. Doing a few audits late in the project will give more flaws than the project afford to repair.  Advanced queries that can be altered, saved and used as reports give a fast and complete picture of flaws. Creating the reports early in the project and rerun them often will decrease flaws to a minimum.
Understand unknown system It takes several month to be productive in a system one hardly know anything about. A system developer can be productive in just a few days. Tasks can be solved despite lack of competence because the inner structure and processes is revealed by the tool.
Error and Change Analysis  This task normally divides into these subtasks:

  50% - 70% understand
  10% write code
  20 - 40% test
Finding the 'hot spots' can be done acccording to the inner structure of the system which will give a faster and more accurate result.

Searching result in order of execution will increase understanding of processes within the system.

Possibility to identify testcases, ie find out how a certain 'hot spot' can be tested.

Unexpected errors because of Changes It is quite common to get unexpected errors when the consequences of a code change not have been evaluated good enough. To find and correct those unexpected errors can cost a lot of time analyzing, making more changes and tests. With a few mouse clicks a system developer can see which other parts of the source will be affected by a change. This check is called an Impact Analysis.
Compensate lack of competence When someone leaves an assignment, that persons complete knowledge about the system is lost.  
This lack of competence may cost frustration and extra time at a number of occasions to come.
Solving problems is much easier, lack of competence about the inner workings of a system and its processes is not an obsticle for productivity.