IP Library › Granted Patent US 10,146,531
Granted Patent B2
US 10,146,531 · App. 15/650,085 · Granted Dec 4, 2018

Method and apparatus for generating a refactored code

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 10,146,531
App. No.
15/650,085
Granted
Dec 4, 2018
Kind
B2
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 (158)

1. A method for generating a refactored code 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 includes:

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, wherein determining each 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;

determining a refactoring policy that maximize a sum of rewards as a function of the plurality of states, the plurality of actions, the transition probabilities, and the set of rewards, 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 , is the expected sum of rewards, and K is a predetermined number; 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 the code is acquired from an external device.

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

10. An apparatus for generating a refactored code comprising:

processing circuitry configured to

acquire a code,

identify, 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 includes:

identify a plurality of states, each state representing a potential state of the code,

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

determine 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,

determine a set of rewards, wherein each reward is associated with each of the transition probabilities, wherein determining each 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

determine a refactoring policy that maximize a sum of rewards as a function of the plurality of states, the plurality of actions, the transition probabilities, and the set of rewards, 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, and

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

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

Continuity (2)
Continuation 15047253 · Feb 18, 2016
Related Publication 20170315803A1 · Nov 2, 2017
Cited By (3)
US 12,430,126 US 12,724,605 US 12,724,606