is a dynamic API protocol miner for Java applications. It instruments Java applications at bytecode level dynamically. Then, it synthesizes API protocols from collected program execution traces based on an online approach. The online method receives a method call of a trace sequentially and evolves API protocols persistently. Since it does not require loading all traces into memory at once, it has low space overhead. Additionally, precise and complete API protocols may be achieved, if enough application programs are feed for mining. ISpecMiner describes API protocols using an extended Markov model with final probability (MCF). Compared with Finite State Automata (FSA), MCF has inherent ability to tolerate noises. When required, a MCF can be transformed to a deterministic model Class Interface Model(CIM). The CIM is nearly the same as the FSA, except that, a CIM may have mutiple intial states. The final API protocols described using CIMs can be used for software testing, program validation, program evolution, etc. ISpecMiner generates a MCF and a CIM for each Java class, both of which can be visualized with software Graphviz.

Below is the API protocol for Java class , which is mined by ISpecMiner. The left one is the MCF. The right one is the CIM.

Learn more >> Learn more >> Learn more >>