automated software maintainability through machine learning by eric mudge
Post on 17-Dec-2015
214 Views
Preview:
TRANSCRIPT
Automated Software Maintainability through
Machine Learningby Eric Mudge
Software Maintainability
IEEE Definition - “Software maintenance is the process of modifying a software system or component after delivery to correct faults, improve performances or other attributes, or adapt to a changed environment."
Expensive - 77-78% of current software engineers are doing a defined maintenance task. "THE ECONOMICS OF SOFTWARE MAINTENANCE IN THE TWENTY FIRST CENTURY" by Capers Jones
Motivation
Current software maintenance done by hand. - Code Review - Pair Programming - Metrics Testing and Quality Review
Goal is to reduce man hours spent on software maintenance More time on new products More job excitement More Profits
Previous Work
Most work takes the form of predicting future costs :
Empirically Guided Software Development Using Metric-Based Classification Trees (1990) by A Porter, R Selby
Machine learning approaches to estimating software development effort (1995) Srinivasan, K. Fisher, D.
Software cost estimation using an Albus perceptron (1998)by Bill Samson, David Ellison and Pat Dugard
Using Machine Learning to Predict Project Effort: Empirical Case Studies in Data-Starved Domains (2001) by Gary D. Boetticher
Metrics
McCabes Cyclometric Complexity - Measures predicate depth
Halsteads Measures of Volume and Effort - Dependent on number of unique operands/operators and total numbers of operands/operators
Maintainability Index - Kurt Welker, Paul Oman, and Gerald Atkinson - Combination of Total LOC, McCabe, Halstead, (Comments) - Gives Reliable Maintenance Metric
Search Based Software EngineeringUse of genetic programming, and other search based techniques to solve software engineering problems
Applied to other problems such as architecture design, and designing of test data
Next step in software engineering
Proposed Approach
Use Genetic Programming and the maintainability metric as a fitness function in order to automatically increase the maintainability of code
Begin on a functional level using procedural metrics rather than object oriented metrics
Next step would be to improve system level, including refactoring
Practicalities
Utilize Resource Standard Metrics software
Necessary to be able to modify code such that functional outputs remain constant
Use opensource or commercial Genetic Programing packages
Prompt areas in code for comments based on complexity of specific sections
Achieve real maintenance improvements rather than numerical improvements
Evaluation
Direct increase in the maintainability index will be the goal
Human evaluation of whether software has actually become more maintainable
Method for Completion
1) Figure out intricacies of genetic programming
2) Merge Genetic Programming with metrics software as fitness function
3) Test on software, tweak GP to increase performance
4) Profit.
QUESTIONS?!
top related