You can contrast the green pluses (method bodies) with the yellow triangles (Java class headers) and brown stars (Java interface headers) as an example of the split from interface to implementation.
I'm making the connection between HOT and software evolvability by equating "failure" with "change to the source code".
By splitting the system into interface and implementation, you can reduce the expected size of the change to source code, but at the expense of risking rare, major changes when the interface changes.
In HOT, failure rate is related to failure intensity by a power law. If you squint at the chart, you can see one there.
likelihood = 18.7 * impact^(-2.54).
Don't confuse this with the Lin-Kernighan algorithm, which is a heuristic for the Travelling Salesperson Problem.
Graph partitioning attempts to divide a graph's nodes into two equal sets while minimizing the number of cross edges. It's been shown to be NP-hard.
Kernighan-Lin does a form of hillclimbing, but if the best move available to it is downhill, it'll take it in hope of finding an uphill move later.
The basic experiment did symbolic regression on the equation
y = A * sin(A * x)
where A is a real constant that was chosen at random from [0, 6] every
5 generations.
When we gave the genomes an ADF, they evolved a factored representation that improved in fitness faster, with fewer changes to the tree.
The big trick here is that a factored representation only needs to mutate one part of the solution, rather than two. Thus, the possibility of a fortuitous mutation was made much more likely.
Jakarta Tomcat is the servlet container for Jakarta Apache, a web server written in Java.
Net Beans is an integrated development environment written using Java Beans technology.