IP Library › Granted Patent US 9,740,480
Granted Patent B1
US 9,740,480 · App. 15/047,253 · Granted Aug 22, 2017

Apparatus and methodologies for code refactoring

Inventors: Lahouari Ghouti (Dhahran, SA); Mohammad Alshayeb (Dhahran, SA)
Assignee: KING FAHD UNIVERSITY OF PETROLEUM AND MINERALS
G06F8/72
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,740,480
App. No.
15/047,253
Granted
Aug 22, 2017
Kind
B1
Abstract

Methods and apparatuses are provided for code refactoring. The method includes acquiring a code and identifying, using processing circuitry and based on a Markov decision process model, a refactoring sequence. The refactoring sequence includes a plurality of refactoring steps to be applied to the code. Further, the method includes refactoring, by the processing circuitry, the code according to the refactoring sequence.

Claims (170)

1. A method for code refactoring comprising:

acquiring a code;

identifying, using processing circuitry and based on a Markov decision process model, a refactoring sequence, wherein the refactoring sequence includes a plurality of refactoring steps to be applied to the code;

wherein the Markov decision process model include:

identifying a plurality of states, each state representing a potential state of the code;

identifying a plurality of actions, wherein each action corresponds to a refactoring step;

determining transition probabilities using enumeration techniques wherein each transition probability represents the probability that the code transition from a current state to a subsequent state by taking an action from the plurality of actions that cause the transition to the subsequent state;

determining a set of rewards, wherein each reward is associated with each of the transition probabilities;

determining a refactoring policy that maximizes a sum of rewards as a function of the plurality of states, the plurality of actions, the transition probabilities, and the set of rewards; and

applying, using the processing circuitry, the plurality of refactoring steps according to the refactoring sequence to generate a refactored code.

2. The method of claim 1 , wherein the reward is a function of software metrics and bad smells attributes.

3. The method of claim 2 , wherein the software metrics and bad smells attributes have predetermined weights.

4. The method of claim 2 , wherein the predetermined weights are determined using a genetic algorithm.

5. The method of claim 2 , wherein the software metrics include internal and external attributes.

6. The method of claim 5 , wherein the internal attributes include at least one of number of children, coupling between objects, weighted methods per class, lines of code, and lack of cohesion on methods.

7. The method of claim 5 , wherein the external attributes include at least one of maintainability, usability, efficiency, and reliability.

8. The method of claim 1 , wherein determining the reward includes applying:

r

⁡

(

s

k

,

a

k

,

s

k

+

1

)

=

∑

i

=

1

L

⁢

w

i

·

v

i

where r is the reward for transitioning from state s k to state s k+1 by taking action a k , w i is the weight of each utility function, wherein the utility function is based on software metrics and bad smell attributes.

9. The method of claim 1 , wherein determining the refactoring policy includes applying:

π

*

=

arg

⁢

⁢

max

π

⁢

E

⁡

[

∑

k

=

0

K

⁢

r

⁡

(

s

k

,

a

k

,

s

k

+

1

)

❘

π

]

where π is the refactoring policy, r is the reward for transitioning from state s k to state s k+1 by taking action a k , E is the expected sum of rewards, and K is a predetermined number.

10. The method of claim 1 , wherein the code is acquired from an external device.

11. The method of claim 1 , wherein the refactoring sequence is transmitted to an external device using communication circuitry.

12. An apparatus for code refactoring comprising:

processing circuitry configured to:

acquire a code,

identifying, based on a Markov decision process model, a refactoring sequence, wherein the refactoring sequence includes a plurality of refactoring steps to be applied to the code;

wherein the Markov decision process model include:

identifying a plurality of states, each state representing a potential state of the code;

identifying a plurality of actions, wherein each action corresponds to a refactoring step;

determining transition probabilities using enumeration techniques wherein each transition probability represents the probability that the code transition from a current state to a subsequent state by taking an action from the plurality of actions that cause the transition to the subsequent state;

determining a set of rewards, wherein each reward is associated with each of the transition probabilities;

determining a refactoring policy that maximizes a sum of rewards as a function of the plurality of states, the plurality of actions, the transition probabilities, and the set of rewards; and

applying the plurality of refactoring steps according to the refactoring sequence to generate a refactored code.

13. The apparatus of claim 12 , wherein the reward is a function of software metrics and bad smells attributes.

14. The apparatus of claim 12 , wherein determining the reward includes applying:

r

⁡

(

s

k

,

a

k

,

s

k

+

1

)

=

∑

i

=

1

L

⁢

w

i

·

v

i

where r is the reward for transitioning from state s k to state s k+1 by taking action a k , w i is the weight of each utility function, wherein the utility function is based on software metrics and bad smell attributes.

15. The apparatus of claim 12 , wherein determining the refactoring policy includes applying:

π

*

=

arg

⁢

⁢

max

π

⁢

E

⁡

[

∑

k

=

0

K

⁢

r

⁡

(

s

k

,

a

k

,

s

k

+

1

)

❘

π

]

where π is the refactoring policy, r is the reward for transitioning from state s k to state s k+1 by taking action a k , E is the expected sum of rewards, and K is a predetermined number.

16. A non-transitory computer readable medium storing computer-readable instructions therein which when executed by a computer cause the computer to perform a method for code refactoring, the method comprising:

acquiring a code;

identifying, based on a Markov decision process model, a refactoring sequence, wherein the refactoring sequence includes a plurality of refactoring steps to be applied to the code;

wherein the Markov decision process model include:

identifying a plurality of states, each state representing a potential state of the code;

identifying a plurality of actions, wherein each action corresponds to a refactoring step;

determining transition probabilities using enumeration techniques wherein each transition probability represents the probability that the code transition from a current state to a subsequent state by taking an action from the plurality of actions that cause the transition to the subsequent state;

determining a set of rewards, wherein each reward is associated with each of the transition probabilities;

determining a refactoring policy that maximizes a sum of rewards as a function of the plurality of states, the plurality of actions, the transition probabilities, and the set of rewards; and

applying the plurality of refactoring steps according to the refactoring sequence to generate a refactored code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2016
From: GHOUTI, LAHOUARI; ALSHAYEB, MOHAMMAD
To: KING FAHD UNIVERSITY OF PETROLEUM AND MINERALS
Reel/Frame 037769/0596 →