Saturday, March 18, 2006

Maintenance forms a major chunk of revenue for most of the ERP Application companies. I am not sure if I can give figures but both Oracle and SAP get major share of their revenue through their annual maintenance contracts. This is just maintenance while the software is in production. If I were to count the bugs which gets fixed before the software is shipped, the cost and revenue (both sides of business) caused by 'BUGS' must be significant ; enough to motivate heavy investments into automating this bug fixing.
While I agree that ERP Application softwares are not written by Computer Scientists but I can safely assume that maintenance is a significant cost/ revenue in lot of other software industries as well.

Lot of companies today do automated testing, however automated maintenance is a far off dream.

Is it possible?

The question to be answered before we even think of executing any such idea is : Does software maintenance involves more of machine intelligence(call it AI, if you wish) or human intelligence.

I have around 20 common characteristics which were common in any bug I fixed along the whole life cycle of BUG. (I call it BFLC - Bug fixing life cycle - they are really short compared to SDLC but yes, there's a cycle there). They are boring so I will spare the reader here.

Some of the important characteristics are :
1.As soon as a developer(D) sees a bug he tries to link it to any of previous similar solutions. If he thinks the problem is similar he searches for such a bug in the bug database. This is a  machine task. For instance, Topic modelling can solve this (Latent Dirichlet Allocation). Simply put, you can get links like Related Bugs.

2.D tries to categorise the bug - i.e is it a UI problem or a query problem or a code problem or simply user's wrong usage of the feature, etc. This categorisation is not a machine task but yes a machine learning problem.
Support Vector machine can be used for this.

3. D tries to make an intelligent guess about the solution and takes an approach based on that guess. (Say putting a breakpoint in probable places). This guess is a result of previous learnings stored in the D's neural network. Again this is a machine learning problem. Lot of other alternative solutions can be done as well - a generative model based on Bayesian inference.

4. Then comes actually finding the fix. This particular step is more of a HI problem than the AI. D's are needed for this step.

5. Testing the fix. It can be automated. However, all the steps mentioned here are easier said than done. In the industry not many Ds follow any automated testing.

For the step 3, if we can store learnings instead of information, (A neural network database), the accuracy of guesses should be high. As of now I have no emperical proofs.

This is a mere suggestion and readers can cast their doubts on such a thing. I am looking for people interested in working out the particular component I mentioned - I call it NNDB - Neural Network DataBase.

Aditya Tripathi.


Blogger Prabhat said...

Awesome !

2:53 AM  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home