Supporting Source Code Comprehension During Software Evolution and Maintenance

Supporting Source Code Comprehension During Software Evolution and Maintenance
Author :
Publisher :
Total Pages : 210
Release :
ISBN-10 : OCLC:870335868
ISBN-13 :
Rating : 4/5 (68 Downloads)

Synopsis Supporting Source Code Comprehension During Software Evolution and Maintenance by : Nouh Alhindawi

This dissertation addresses the problems of program comprehension to support the evolution of large-scale software systems. The research concerns how software engineers locate features and concepts along with categorizing changes within very large bodies of source code along with their versioned histories. More specifically, advanced Information Retrieval (IR) and Natural Language Processing (NLP) are utilized and enhanced to support various software engineering tasks. This research is not aimed at directly improving IR or NLP approaches; rather it is aimed at understanding how additional information can be leveraged to improve the final results. The work advances the field by investigating approaches to augment and re-document source code with different types of abstract behavior information. The hypothesis is that enriching the source code corpus with meaningful descriptive information, and integrating this orthogonal information (semantic and structural) that is extracted from source code, will improve the results of the IR methods for indexing and querying information. Moreover, adding this new information to a corpus is a form of supervision. That is, apriori knowledge is often used to direct and supervise machine-learning and IR approaches. The main contributions of this dissertation involve improving on the results of previous work in feature location and source code querying. The dissertation demonstrates that the addition of statically derived information from source code (e.g., method stereotypes) can improve the results of IR methods applied to the problem of feature location. Further contributions include showing the effects of eliminating certain textual information (comments and function calls) from being included when performing source code indexing for feature/concept location. Moreover, the dissertation demonstrates an IR-based method of natural language topic extraction that assists developers in gaining an overview of past maintenance activities based on software repository commits. The ultimate goal of this work is to reduce the costs, effort, and time of software maintenance by improving the results of previous work in feature location and source code querying, and by supporting a new platform for enhancing program comprehension and facilitating software engineering research.

On the Evolution of Source Code and Software Defects

On the Evolution of Source Code and Software Defects
Author :
Publisher : Createspace Independent Publishing Platform
Total Pages : 248
Release :
ISBN-10 : 1460953568
ISBN-13 : 9781460953563
Rating : 4/5 (68 Downloads)

Synopsis On the Evolution of Source Code and Software Defects by : Marco D'ambros

Software systems are subject to continuous changes to adapt to new and changing requirements. This phenomenon, known as software evolution, leads in the long term to software aging: The size and the complexity of systems increase, while their quality decreases. In this context, it is no wonder that software maintenance claims the most part of a software system's cost. The analysis of software evolution helps practitioners deal with the negative effects of software aging. With the advent of the Internet and the consequent widespread adoption of distributed development tools, such as software configuration management and issue tracking systems, a vast amount of valuable information concerning software evolution has become available. In the last two decades, researchers have focused on mining and analyzing this data, residing in various software repositories, to understand software evolution and support maintenance activities. However, most approaches target a specific maintenance task, and consider only one of the several facets of software evolution. Such approaches, and the infrastructures that implement them, cannot be extended to address different maintenance problems. In this dissertation, we propose an integrated view of software evolution that combines different evolutionary aspects. Our thesis is that an integrated and flexible approach supports an extensible set of software maintenance activities. To this aim, we present a meta-model that integrates two aspects of software evolution: source code and software defects. We implemented our approach in a framework that, by retrieving information from source code and defect repositories, serves as a basis to create analysis techniques and tools. To show the flexibility of our approach, we extended our meta-model and framework with e-mail information extracted from development mailing lists. To validate our thesis, we devised and evaluated, on top of our approach, a number of novel analysis techniques that achieve two goals: 1) Inferring the causes of problems in a software system. We propose three retrospective analysis techniques, based on interactive visualizations, to analyze the evolution of source code, software defects, and their co-evolution. These techniques support various maintenance tasks, such as system restructuring, re-documentation, and identification of critical software components. 2) Predicting the future of a software system. We present four analysis techniques aimed at anticipating the locations of future defects, and investigating the impact of certain source code properties on the presence of defects. They support two maintenance tasks: defect prediction and software quality analysis. By creating our framework and the mentioned techniques on top of it, we provide evidence that an integrated view of software evolution, combining source code and software defects information, supports an extensible set of software maintenance tasks.

Advances in Software Engineering

Advances in Software Engineering
Author :
Publisher : Springer Science & Business Media
Total Pages : 481
Release :
ISBN-10 : 9780387215990
ISBN-13 : 0387215999
Rating : 4/5 (90 Downloads)

Synopsis Advances in Software Engineering by : Hakan Erdogmus

This book contains both relevant real-world research, as well as reviews of different areas of interest in the software engineering literature, such as clone identification. The contents of the various sections will provide a better understanding of known problems and detailed treatment of advanced topics. Consequently, the book consolidates the work and findings from leading researchers in the software research community in key areas such as maintainability, architectural recovery, code analysis, software migration, and tool support.

Software Maintenance: Concepts And Practice (Second Edition)

Software Maintenance: Concepts And Practice (Second Edition)
Author :
Publisher : World Scientific
Total Pages : 371
Release :
ISBN-10 : 9789814485616
ISBN-13 : 9814485616
Rating : 4/5 (16 Downloads)

Synopsis Software Maintenance: Concepts And Practice (Second Edition) by : Penny Grubb

Software systems now invade every area of daily living. Yet, we still struggle to build systems we can really rely on. If we want to work with software systems at any level, we need to get to grips with the way software evolves. This book will equip the reader with a sound understanding of maintenance and how it affects all levels of the software evolution process.

Supporting Code-design Consistency During Software Evolution

Supporting Code-design Consistency During Software Evolution
Author :
Publisher :
Total Pages : 163
Release :
ISBN-10 : OCLC:611516242
ISBN-13 :
Rating : 4/5 (42 Downloads)

Synopsis Supporting Code-design Consistency During Software Evolution by : Maen M. Hammad

The dissertation presents a set of approached and automated tools to identify, maintain, and preserve code-to-design traceability links during software evolution. Four main research issues are addressed. The first issue is the automatic identification of breaks in code-to-design traceability from a code change. The second issue is the understanding of how code-to-design traceability change during daily and incremental code changes. The third issue is the identification of critical classes in design based on their involvement in changes to design and lastly is to preserve code-to-design traceability during incremental code changes. The main contributions include a lightweight and efficient automated approach and tool to identify inconsistencies in code-to-design traceability given a code change. The tool and approach are described and evaluated. A detailed empirical study, on three years of four open source projects, was undertaken to understand how code-to-design traceability changes during evolution. The results of this empirical work are used as a basis for an approach to measure class importance based on its involvement in changes to design. Measuring importance for sets of classes that collaborate to realize a feature or concept is also done in the context of change. A visual aid to monitor and aid developers implementing the intended design along with an automated approach to update and maintain design documents during evolution are described. The ultimate goal of this work is to reduce the costs of software maintenance by supporting the consistency of code-to-design traceability links for incremental evolutionary code changes.

Software Evolution and Maintenance

Software Evolution and Maintenance
Author :
Publisher : John Wiley & Sons
Total Pages : 416
Release :
ISBN-10 : 9780470603413
ISBN-13 : 0470603410
Rating : 4/5 (13 Downloads)

Synopsis Software Evolution and Maintenance by : Priyadarshi Tripathy

Provides students and engineers with the fundamental developments and common practices of software evolution and maintenance Software Evolution and Maintenance: A Practitioner’s Approach introduces readers to a set of well-rounded educational materials, covering the fundamental developments in software evolution and common maintenance practices in the industry. Each chapter gives a clear understanding of a particular topic in software evolution, and discusses the main ideas with detailed examples. The authors first explain the basic concepts and then drill deeper into the important aspects of software evolution. While designed as a text in an undergraduate course in software evolution and maintenance, the book is also a great resource forsoftware engineers, information technology professionals, and graduate students in software engineering. Based on the IEEE SWEBOK (Software Engineering Body of Knowledge) Explains two maintenance standards: IEEE/EIA 1219 and ISO/IEC14764 Discusses several commercial reverse and domain engineering toolkits Slides for instructors are available online Software Evolution and Maintenance: A Practitioner’s Approach equips readers with a solid understanding of the laws of software engineering, evolution and maintenance models, reengineering techniques, legacy information systems, impact analysis, refactoring, program comprehension, and reuse.

A Source Code Transformation Language to Support Software Evolution

A Source Code Transformation Language to Support Software Evolution
Author :
Publisher :
Total Pages : 0
Release :
ISBN-10 : OCLC:1355334964
ISBN-13 :
Rating : 4/5 (64 Downloads)

Synopsis A Source Code Transformation Language to Support Software Evolution by : Christian D. Newman

The research presented in the dissertation focuses on the construction and evaluation of a transformation language to support software maintenance. The language, srcTL, is built on top of the srcML infrastructure. srcML is an XML-based markup language that embeds Abstract Syntax Tree (AST) information into code in the form of XML tags. srcTL takes as input the AST generated by srcML and allows users to manipulate this AST using its operators. srcTL is very modular; relying on tools written for srcML to add additional functionality without complicating the language. Additionally, srcTL uses a methodology that syntactically restructures the source code being transformed to greatly reduce the problem space of some transformations. This methodology is applied automatically by srcTL, with minimal user intervention, to make transformation scripts written in srcTL short and easy to understand. Combined, these qualities make srcTL very easy to learn from scratch and very applicable to lightweight transformation tasks. The language is evaluated on size and complexity against other transformation techniques; one an XML transformation language and the other a modern, maintenance-oriented language. The comparison uses a set of general maintenance problem types. The problems are common to software maintenance and their solutions must be applied in multiple locations within the code, making them ideal candidates for automation. It is shown that srcTL solves several of these general problems with more brevity compared to other transformation languages. It is also shown that, even in worst-case scenarios, srcTL is better or equal in complexity to current, state-of-the-art tools.

Exploring Action Unit Granularity of Source Code for Supporting Software Maintenance

Exploring Action Unit Granularity of Source Code for Supporting Software Maintenance
Author :
Publisher :
Total Pages : 124
Release :
ISBN-10 : 0355251973
ISBN-13 : 9780355251975
Rating : 4/5 (73 Downloads)

Synopsis Exploring Action Unit Granularity of Source Code for Supporting Software Maintenance by : Xiaoran Wang

Because resources for today's software are used primarily for maintenance and evolution, researchers are striving to make software engineers more efficient through automation. Programmers now use integrated development environments (IDEs), debuggers, and tools for code search, testing, and program understanding to reduce the tedious, error-prone tasks. A key component of these tools is analyzing source code and gathering information for software developers. Most analyses treat a method as a set of individual statements or a bag of words. Those analyses do not leverage information at levels of abstraction between the individual statement and the whole method. However, a method normally contains multiple high-level steps to achieve a certain function or execute an algorithm. The steps are expressed by a sequence of statements instead of a single statement. In this dissertation, I have explored the feasibility of automatically identifying these high level actions towards improving software maintenance tools and program understanding. ☐ Specifically, methods can often be viewed as a sequence of blocks that correspond to high level actions. We define an action unit as a code block that consists of a sequence of consecutive statements that logically implement a high level action. Rather than lower level actions represented by individual statements, action units represent a higher level action, for example, "initializing a collection"' or "setting up a GUI component". Action units are intermediary steps of an algorithm or sub-actions of a bigger and more general action. In this dissertation, I (1) introduce the notion of action units and define the kinds of action units, (2) develop techniques to automatically identify actions for loop-based action units, (3) automatically generate natural language descriptions for object-related action units, and (4) automatically insert blank lines into methods based on action units to improve source code readability.

Encyclopedia of Software Engineering Three-Volume Set (Print)

Encyclopedia of Software Engineering Three-Volume Set (Print)
Author :
Publisher : CRC Press
Total Pages : 1872
Release :
ISBN-10 : 9781351249256
ISBN-13 : 1351249258
Rating : 4/5 (56 Downloads)

Synopsis Encyclopedia of Software Engineering Three-Volume Set (Print) by : Phillip A. Laplante

Software engineering requires specialized knowledge of a broad spectrum of topics, including the construction of software and the platforms, applications, and environments in which the software operates as well as an understanding of the people who build and use the software. Offering an authoritative perspective, the two volumes of the Encyclopedia of Software Engineering cover the entire multidisciplinary scope of this important field. More than 200 expert contributors and reviewers from industry and academia across 21 countries provide easy-to-read entries that cover software requirements, design, construction, testing, maintenance, configuration management, quality control, and software engineering management tools and methods. Editor Phillip A. Laplante uses the most universally recognized definition of the areas of relevance to software engineering, the Software Engineering Body of Knowledge (SWEBOK®), as a template for organizing the material. Also available in an electronic format, this encyclopedia supplies software engineering students, IT professionals, researchers, managers, and scholars with unrivaled coverage of the topics that encompass this ever-changing field. Also Available Online This Taylor & Francis encyclopedia is also available through online subscription, offering a variety of extra benefits for researchers, students, and librarians, including: Citation tracking and alerts Active reference linking Saved searches and marked lists HTML and PDF format options Contact Taylor and Francis for more information or to inquire about subscription options and print/online combination packages. US: (Tel) 1.888.318.2367; (E-mail) [email protected] International: (Tel) +44 (0) 20 7017 6062; (E-mail) [email protected]