Please use this identifier to cite or link to this item: http://dspace.dtu.ac.in:8080/jspui/handle/repository/15544
Title: IMPROVING SOFTWARE MAINTENANCE USING SOFTWARE METRICS
Authors: CHUG, ANURADHA
Keywords: SOFTWARE MAINTENANCE
SOFTWARE METRICS
MAINTAINABILITY
Issue Date: Dec-2016
Series/Report no.: TD NO.2705;
Abstract: On the occasion of submitting my thesis for fulfillment of the requirement of the degree ‘Doctor of Philosophy’, I would take this opportunity to express my immeasurable appreciation and deepest gratitude for the help and support to the following persons, who in one way or the other, have contributed in making this study possible. It’s a matter of great fortune and privilege to work under the able guidance of my supervisor Dr. Ruchika Malhotra, Associate Head and Assistant Professor, Department of Software Engineering, Delhi Technological University. Without her sound advice, excellent supervision, valuable suggestions, wise counsel and technical guidance, I would not have been able to complete the dissertation in this manner. I am deeply indebted to her for shaping my path of research by constantly supporting me with her extensive knowledge, insightful discussions and ever available help. She is one of the smartest people I’ve ever known and she would remain my best role model as a scientist, researcher, mentor, and teacher. I would remain obliged to her for being patient, precise and motivating me at all the times. I am really thankful to her for the consistent support and encouragement she provided me throughout the period of this research, which has brought me where I stand today. The positive vibes she transferred to me during this research work deserve admiration. I feed proud to be associated with her and look forward to carrying this relationship to greater heights. With a profound sense of gratitude, I want to give special thanks to Prof. Yogesh Singh, Vice Chancellor, Delhi Technological University and Director, Netaji Subhas Institute of Technology. I cherish my old memories, when I used to attend the software engineering classes delivered by him during my M.Tech. course. It was during these classes that my love for this subject actually developed. Earlier I used to consider software engineering as a theoretical subject, however, it was his excellent delivery of the concept using numericals that changed my opinion and I felt inspired for the current study. I would like to convey my sincere thanks to Prof. O.P. Verma, Head, Department of Computer Science and Engineering, Delhi Technological University for his encouragement, help and cooperation in accomplishing the current research. I would like to thank all the faculty members of Department of Computer Science & Engineering, Delhi Technological University for their valuable discussion and guidance during the course of this study. I would like to thank my friends, fellow research scholars and office staff for all their direct and indirect assistance in carrying out this task. I would like to thank my husband Lt Col P K Chug who has always inspired me for hard work and motivated me to focus on my research work. I am grateful to him for his much needed emotional support and unconditional love during the course of research journey apart from willing support always available at my disposal. I would also like to thank my parents and parents-in-law for their blessings and sharing my responsibilities as a home-maker during this research work. Lastly and by no means least, I thank my children Ms. Sezal and Master Naman whose precious time I have invested in carrying this research work because often, they had to endure my absence, but they seldom complained. Finally, I bow to the Almighty Waheguru who gave me the strength to carry out this work with sincerity, honesty and dedication. Anuradha Chug Abstract Changes in the newly developed software are inevitable due to multiple reasons such as change in user requirements, advancement in technology and business competition pressure. One of the biggest challenges faced by the software engineers today is to develop large and complex software in stipulated time frame, under budgetary constraints, meeting the customer’s demands and needs. Maintenance phase starts once the software product is delivered to the customer and during this period software have to be constantly improved/modified on the basis of the change in customer’s requirements or software environment. Software maintainability means the ease with which a software can be modified to correct faults, improve the performance or adapt to a changed environment. Since the maintenance phase consumes one third of the total cost of the software development life cycle, producing a software that is easy to maintain may potentially save large costs and efforts. Any endeavor towards increasing the maintainability of the system would eventually be helpful in reducing the overall project cost. Many studies have previously established the strong relationship between software design metrics and maintainability of the system. This means that by constantly measuring the design metrics and applying regularly certain methods, the overall maintainability of the system can be monitored and improved. It would certainly have a positive impact on the development of software and implementing the best practices for the software development community. In this study, solutions are proposed for monitoring and analyzing large software system using a set of software design metrics during the product development stage. Further, with the help of certain validated prediction models, these metrics can be gainfully applied in the software engineering processes in general and for optimizing software maintainability in particular. It is very important to predict the efforts required to accommodate these changes during maintenance phase at an early stage of software development. It will help the managers to allocate resources more judiciously, thereby leading to the reduction of costs overruns. One of the main approach in controlling maintenance cost is to monitor software design metrics i during the development phase itself. There are several object oriented metrics proposed in the literature to capture the design properties such as coupling, cohesion, inheritance, and polymorphism. It is a matter of interest for researchers to measure the software using design metrics and predict its maintenance behavior on the basis of their values. The problem of predicting the maintainability of software is widely acknowledged in the industry and much has been written on how maintainability can be predicted by using various tools and processes at the time of development with the help of software design metrics. Several statistical and machine learning techniques have been proposed in the literature for prediction problems across a range domains such as finance, medicine, engineering, geology and physics. Most of the prediction models in the literature are built using statistical and machine learning techniques. There are very few studies which are using evolutionary techniques for predicting software maintainability using object oriented metrics. Since evolutionary techniques have different results, there is strong need to conduct more and more data based empirical studies that are capable of being verified by observation or experiments. Conducting such large empirical studies and comparing the performance of evolutionary techniques with statistical and machine learning techniques is helpful for the creation of well established theories. Many metric suites are proposed in literature to measure the object oriented software. The current research work was undertaken to examine these various object oriented metric suites defined in literature and in this regard empirical investigations were conducted using machine learning techniques and evolutionary techniques with an aim of constructing a generalized, reliable and repeatable model to predict precise software maintainability during an early phase of software product development. Further, large-scale bench-marking framework for the maintainability predictions of open source software system was also developed during the course of the current study. Metric based maintainability prediction model developed in this study would be helpful in software development process without escalating budgetary considerations taking least possible time ii frame. The framework and reference architecture in which the software systems are being currently developed world over are fast changing dramatically due to the emergence of data warehouse and data mining tools. To appropriately address this challenge, a new metric suite to redefine the relationship between design metrics and maintainability for data intensive applications is also proposed. In this research study, we are principally concerned with various methods and measures used to improve the software maintainability by predicting maintenance effort with the help of internal quality attributes. Certain methods are also available in literature which improve the design of the code and in turn enhances maintainability such as Clean Code, Pair Programming, Lean, Crystal, Kanban, scrum etc. Refactoring is one of the important activity carried out in maintenance phase, in which the design of software is improved and complexity is reduced without affecting its external behaviour. Many refactoring methods have been suggested in the literature and each has a specific purpose and corresponding effect. However, it is so far unclear how a particular refactoring method affects the software maintainability. One of the objectives of this study was also to observe the quantifiable effects of few commonly applied refactoring methods on software maintainability. The design metrics of the software were calculated and analyzed, both before as well as after the application of refactoring method and comprehensive reports were prepared to observe the effects of selected refactoring methods on design metrics which were subsequently mapped to the maintainability of the software system. It helps in identifying the opportunities of refactoring in software comprising of a large number of lines of source code with an aim to ascertain its potential to optimize software maintainability. Agile methodology is comparatively new method of software development to address the problem of unpredictability in business. It provides alternatives to the traditional project management techniques and nowadays more and more products are developing in software industry based on agile methodology to ensure quality, reliability and scalability of the delivered software products. Scrum is one of the most vital agile method whose impact on iii software maintainability has also been investigated in this study. We developed the same product using scrum method as well as Iterative Enhancement Model and compared both of them using carefully selected metrics from the maintenance point of view. It helps the project managers to create a flexible product in which defects are identified during early stages of software development life cycle thereby avoiding any cost overrun.
URI: http://dspace.dtu.ac.in:8080/jspui/handle/repository/15544
Appears in Collections:Ph.D. Computer Engineering

Files in This Item:
File Description SizeFormat 
Anuradha Chug PhD Thesis.pdf3.79 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.