Open Access Open Access  Restricted Access Subscription or Fee Access

A Refactoring Approach to Enhance Software Development Process

Areeg Samir, Nagy Ramadan Darwish

Abstract


The quality of software is an important topic in the development of successful software application. Many software development methods have been applied to enhance the software quality. The improvement of software quality can be achieved through using refactoring which improves the internal structure of a software without changing its external behavior. However, refactoring effects the quality attributes of software such as reusability, complexity, maintainability, flexibility, modularity, modifiability, and understandability. Thus, there is a need to proof the imprint of refactoring on the software quality. This paper will propose a software development model under the refactoring method concept. In addition, an evaluation will be conducted to check the effectiveness of the reusability and modifiability quality attributes on a software development process with and without applying the refactoring method. As a result, this study can be used by developers to aid them in determining whether to apply refactoring to improve quality attributes.


Keywords


Refactoring, Metrics, Software Development, Software Process, eXtreme Programming, Quality Attributes, Reusability, Modifiability.

Full Text:

PDF

References


M. Fowler, K. Beck, J Brant, W. Opdyke, and D. Roberts, Refactoring: Improving the design of existing programs. Addison Wesley, 1999, pp. 53-87.

S. Erb, S, “A survey of software refactoring tools”, IEEE Trans. Software Engineering, vol. 30, pp. 126–139, June. 2004.

Alex. “What is refactoring? Benefits of a code refactoring,” Skorkin.Com. [Online]. Available: http://www.skorkin.com/2010/09/what-is-refactoring-benefits-of-a-code-refactoring/#.Vym4qY9OLIU. [Accessed: June. 1, 2016].

B. Vangie, S. Forrest, and S. Paul. “Extreme Programming,” Webopedia.Com. [Online]. Available: http://www.webopedia.com/TERM/E/Extreme_Programming.html. [Accessed: June. 1, 2016].

J. Donovan. “Extreme Programming: A gentle introduction,” Extremeprogramming.org. [Online]. Available: http://www.extremeprogramming.org/. [Accessed: June. 1, 2016].

Y. Kataoka, T. Imai, H. Andou, and T.A. Fukaya, “Quantitative Evaluation of Maintainability Enhancement by Refactoring,” in Proc. of the IEEE Int Conference on Software Maintenance (ICSM), Montreal, Canada, 2002, pp. 576-585.

D. Wilking, U. Khan, and S. Kowalewski. (2007). An Empirical Evaluation of Refactoring, E-Informatica Software Engineering Journal (EISEJ), 1(1), pp. 27-42. Available: http://www.e-informatyka.pl/attach/e-Informatica_-_Volume_1/Vol1Iss1Art2eInformatica.pdf

T. Mens, S. Demeyer, B. D. Bois B D, H. Stenten, and P. V. Gorp. (2003). Refactoring: Current Research and Future Trends. Theoretical Computer Science Journal, 80(3), pp. 483-499. Available: http://lore.ua.ac.be/Publications/pdf/MensLDTA03.pdf.

K. Stroggylos and D. Spinellis, “Refactoring – Does It improve Software Quality?,” in Proc of 5th Int Workshop on Software Quality (WoSQ’07:ICSE), Minneapolis, USA, 2007, pp. 10–16.

K. Usha, N. Poonguzhali, and E. Kavitha, “A quantitative Approach for Evaluating the Effectiveness of Refactoring in Software Development Process,” in Proc. of IEEE Int Conf on Methods and Models in Computer Science (ICM2CS), Delhi, India, 2009.

B. D. Bois and T. Mens, “Describing the Impact of Refactoring on Internal Program Quality,” in Proc of the 8th International Workshop on Evolution of Large-scale Industrial Software Applications, Amsterdam, Netherlands, 2003, pp. 37-48.

B. D. Bois, S. Demeyer, and J. Verelst, “Refactoring – Improving Coupling and Cohesion of Existing Code,” in Proc of the 11th Working Conf on Reverse Engineering (WCRE’04), Washington, DC, USA, 2004, pp. 144–151.

S. H. Kannangara and W.M.J.I. Wijayanayake, “Measuring the Impact of Refactoring on Code Quality Improvement Using Internal Measures,” in Proc. of the Int Conf on Business and Information (ICBI), Sri Lanka, Colombo, 2013.

F. Dandashi, “A method for Assessing the Reusability of Object-Oriented Code Using a Validated Set of Automated Measurements,” in Proc. ACM Symposium Special Interest Group on Applied Computing (SIGAPP), Madrid, Spain, 2002, pp. 997-1003.

R. Moser, P. Abrahamsson, W. Pedrycz, A. Sillitti, and G. Succi, “A case Study on the Impact of Refactoring on Quality and Productivity in an Agile Team,” in Proc of the Central and East European Conf on Software Engineering Techniques (CEECSET), Poznan, Poland, 2007, pp. 252-266.

S. H. Kannangara and J. Wijayanayake. (2015, April). An Empirical Exploration of Refactoring effect on Software Quality using External Quality Factors. International Journal on Advances in ICT for Emerging Regions (ICTer), 7(2), pp. 1-11. Available: http://icter.sljol.info/articles/abstract/10.4038/icter.v7i2.7156/

M. Alshayeb. (2009, September). Empirical Investigation of Refactoring Effect on Software Quality, Information and Software Technology. 51(9), pp. 1319-1326. Available: http://webcache.googleusercontent.com/search?q=cache:54JQBkJz580J:ftp://mail.im.tku.edu.tw/Prof_Shyur/Software%2520Project%2520Management/99_2/paper/P_5.pdf+&cd=3&hl=en&ct=clnk&gl=uk

C. Mel Ó, B. Dermot, and H. M. Iman, “Automated refactoring for testability,” in Proc. 4th IEEE Int Conf. Software Testing Verification and Validation Workshops (ICSTW), Berlin, Germany, 2011, pp. 437-443.

B. Geppert, A. Mockus, and F. Röbler, “Refactoring for Changeability: A way to go?,” in Proc. 11th IEEE International Software Metrics Symposium (METRICS'05), Como, Italy, 2005, pp. 10–13.

S. H. Kannangara, and W. M. J. I. Wijayanayake. (2015, January). An Empirical Evaluation of Impact of Refactoring On Internal and External Measures of Code Quality. International journal of Software Engineering and Applications (IJSEA). 6(1), pp. 51-67. Available: https://arxiv.org/ftp/arxiv/papers/1502/1502.03526.pdf

J. Ratzinger, M. Fischer, and H. Gall. (2005, May). Improving Evolvability through Refactoring, ACM. 30(4), pp. 1-5. Available: http://msr.uwaterloo.ca/msr2005/papers/21.pdf.

H. A. Sahraoui, R. Godin, and T. Miceli, “Can Metrics Help to Bridge The Gap Between The Improvement of OO design quality and its automation?,” in Proc. Int Conf. Software Maintenance, San Jose, CA, 2000, pp. 154–162.

S. Diomidis. “Metric Descriptions,” Spinellis.gr. [Online]. Available: http://www.spinellis.gr/sw/ckjm/doc/metric.html/. [Accessed: June. 1, 2016].

Agile. “An Introduction to Object Oriented Metrics,” agile.csc.ncsu.edu. [Online]. Available: http://agile.csc.ncsu.edu/SEMaterials/OOMetrics.htm. [Accessed: June. 1, 2016].

M. O'Keeffe and M. O. Cinneide, “Search-Based Software Maintenance,” in Proc. 6th Int Conf. Software Maintenance and Reengineering (CSMR'06), Bari, Italy, 2006, pp. 249-260

S. Tuomas. “MOOD and MOOD2 Metrics,” Aivosto.Com. [Online]. Available: http://www.aivosto.com/project/help/pm-oo-mood.html. [Accessed: June. 1, 2016].

Tutorialspoint. “Cyclomatic Complexity,” Tutorialspoint.Com. [Online]. Available: http://www.tutorialspoint.com/software_testing_dictionary/cyclomatic_complexity.htm. [Accessed: June. 1, 2016].

B. Henderson and D. Tegarden. (1994, May). The Theoretical Extension of Two Versions of Cyclomatic Complexity to Multiple Entry/Exit Modules. Software Quality Journal. 4(3), pp. 253-269. Available: http://www.acis.pamplin.vt.edu/faculty/tegarden/wrk-pap/SQJ.PDF

Objecteering. “Number Of Attributes (NOA),” Objecteering.Com. [Online]. Available: http://support.objecteering.com/objecteering6.1/help/us/metrics/metrics_in_detail/number_of_attributes.htm. [Accessed: June. 1, 2016].

Staff. “Total Lines of Code / Source Lines of Code / Effective Lines of Code,” Staff.Unak.is. [Online]. Available: http://staff.unak.is/andy/StaticAnalysis0809/metrics/loc.html. [Accessed: June. 1, 2016].

F. Brito, M. Goulao, and R. Estevers, “Toward the Design Quality Evaluation of OO Software Systems,” in Proc. 5th Int Conf. Software Quality, Austin, Texas, 1995, pp. 44–57.

Staff. “Response for Class (RFC),” Staff.Unak.is. [Online]. Available: http://staff.unak.is/andy/StaticAnalysis0809/metrics/rfc.html. [Accessed: June. 1, 2016].

Arisa AB. “Tight Class Cohesion (TCC),” Arisa.se. [Online]. Available: http://www.arisa.se/compendium/node118.html. [Accessed: June. 1, 2016].

R. Marinescu, “Using Object-Oriented Metrics for Automatic Design Flaws Detection in Large Scale Systems,” in Proc ECOOP Workshops, Brussels, Belgium, 1998, pp. 252–255.

O. Ezekiel. (2010, March). A Pedagogical Evaluation and Discussion about the Lack of Cohesion in Method (LCOM) Metric Using Field Experiment. International Journal of Computer Science Issues. 7(2), pp. 36–43. Available: https://arxiv.org/ftp/arxiv/papers/1004/1004.3277.pdf

FreeSourceCode. (2016, June 1). Java. [Online]. Available: http://freesourcecode.net/. [Accessed: June. 1, 2016].


Refbacks

  • There are currently no refbacks.


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 License.