Research topics in software evolution and maintenance

Más vistas

Research topics in software evolution and maintenance

Libro - ebook


Disponibilidad: Disponible

Categoría: Ingeniería de Sistemas

Editorial: Universidad Nacional de Colombia

Universidad Nacional de Colombia

Año de Edición: 2012

This book provides the readers an overview of the main research topics involved in software evolution and maintenance, as well as, a review and explanation of several of their underlying technologies. It is focused on topics such as: program comprehension, mining software repositories, software visu...
Más Información
Nombre de ProductoPrecioAñadir
Research topics in software evolution and maintenance

eISBN: 9789587611670



COP $ 11.000


SKU: 198126-BW1011213012

Producto creado el 01/01/1970



This book provides the readers an overview of the main research topics involved in software evolution and maintenance, as well as, a review and explanation of several of their underlying technologies. It is focused on topics such as: program comprehension, mining software repositories, software visualization, evolutionary development process models, software change management, software reverse engineering and model-based testing and development. Thus, this book is suitable for researchers and students looking for an introduction and comprehensive overview of current research topics in software evolution and maintenance. The authors are all professors and graduate students at Universidad Nacional de Colombia, members of the Software Engineering Group - ColSWE -, who have been conducting research in this field during the last five years.

Varios Autores

información no disponible.

custom_attributes_toc~Tabla de Contenido~pv


Chapter 1
Summarizing Software Artifacts: Overview and Applications

1.1 Introduction
1.2 Essentials on Natural Language Summarization
1.2.1 The Dimensions of Summarization
1.2.2 Summarization Evaluation
1.3 Summarizing Software Artifacts: Existing Approaches
1.3.1 Summarizing Documentation
1.3.2 Summarizing Source Code
1.3.3 Combining Software Artifacts
1.4 Making Easier Software Evolution: Using Software Summaries in Maintenance Activities 1.4.1 Software Comprehension
1.4.2 Reverse Engineering
1.5 Trends and Challenges References

Chapter 2
Survey and Research Trends in Mining Software

2.1 Introduction
2.2 Understanding Software Repositories
2.2.1 Historical Repositories
2.2.2 Communications Logs
2.2.3 Source Code
2.2.4 Other Kind of Repositories
2.3 Processes of Mining Software Repositories
2.3.1 Techniques
2.3.2 Tools

2.4 Purpose of Mining Software Repositories
2.4.1 Program Understanding
2.4.2 Prediction of Quality of Software Systems
2.4.3 Discovering Patterns of Change and Refactoring’s
2.4.4 Measuring of the Contribution of Individuals
2.4.5 Modeling Social and Development Processes
2.5 Trends and Challenges
2.5.1 Thinking in Distributed Version Control Systems
2.5.2 Integrating and Redesigning Repositories
2.5.3 Simplifying MSR Techniques
2.6 Summary

Chapter 3
Software Visualization to Simplify the Evolution of Software Systems

3.1 Introduction
3.2 Background on Software Visualization
3.2.1 How Software Visualization Supports Software Evolutions Tasks
3.2.2 The Software Visualization Pipeline
3.2.3 Overview of Visualization Tools
3.2.4 Sources of Information Commonly Used
3.2.5 Differences of Software Visualization and Modeling Languages Like UML
3.3 SV Techniques
3.3.1 Metaphors
3.3.2 2D Approaches
3.3.3 3D Approaches
3.3.4 Virtual Environments
3.4 Towards a Better Software Visualization Process
3.4.1 Other Programming Paradigms
3.4.2 Include Other Languages
3.4.3 Better and More Flexible Metaphors
3.4.4 Educational Issues
3.5 Summary References

Chapter 4
Incremental Change: The Way that Software Evolves

4.1 Introduction
4.2 Incremental Change in the Software Development Process
4.2.1 Software Maintenance vs. Software Evolution
4.2.2 Activities of Incremental Change
4.3 Concept and Feature Location
4.3.1 Software Comprehension
4.3.2 Concept Location
4.3.3 Static Techniques
4.4 Impact Analysis
4.5 Summary References

Chapter 5
Software Evolution Supported by Information Retrieval

5.1 Introduction
5.2 Information Retrieval
5.2.1 Classic Models
5.2.2 Alternative and Hybrid Models
5.2.3 Web Models
5.3 Software Evolution Activities
5.3.1 Incremental Change
5.3.2 Software Comprehension
5.3.3 Mining Software Repositories
5.3.4 Software Visualization
5.3.5 Reverse Engineering & Reengineering
5.3.6 Refactoring

5.4 Information Retrieval and Software Evolution
5.4.1 Concept/Feature Location
5.4.2 Mining Software Repositories (MSR)
5.4.3 Automatic Categorization of Source
Code Repositories
5.4.4 Summarization of Software Artifacts
5.4.5 Traceability Recovery
5.5 Summary

Chapter 6
Reverse Engineering in Procedural Software Evolution

6.1 Introduction
6.2 Reverse Engineering Concepts and Relationships
6.2.1 Reverse Engineering and Software Comprehension
6.2.2 Reverse Engineering and Software Maintenance
6.2.3 Reverse Engineering Concepts
6.3 Techniques in Reverse Engineering
6.3.1 Standard Techniques
6.3.2 Specialized Techniques

6.4 Application of Techniques
6.4.1 Description of the System
6.4.2 Considerations for Applying Reverse Engineering
6.4.3 Application of Standard Techniques
6.4.4 Application of Specialized Techniques
6.5 Reverse Engineering Assessment
6.5.1 Assessment of Techniques
6.5.2 Assessment of Tools
6.6 Trends and Challenges

Chapter 7
Agility Is Not Only About Iterations but Also About Software Evolution

7.1 Introduction
7.2 Evolutionary Software Processes
7.2.1 EVO
7.2.2 Spiral
7.2.3 The Unified Process Family
7.2.4 Staged Model
7.3 Principles, Agility and the Agile Manifesto
7.3.1 The Agile Manifesto
7.3.2 Agile Principles
7.3.3 Agility in Software Development

7.4 Agile Methodologies History
7.4.1 Iterative Development (1970-1990)
7.4.2 The Birth of Agile Methodologies (1990-2001)
7.4.3 The Post-manifesto Age (2001-2011)
7.5 Agile Methodologies Overview
7.5.1 Extreme Programming (XP) 7.5.2 SCRUM
7.5.3 Feature Driven Development (FDD)
7.5.4 Lean Agile Development: LSD, Kanban, Scrumban
7.5.5 Agile Versions of UP: AgileUP, Basic/OpenUP
7.6 Agility and Software Evolution
7.7 Trends and Challenges References

Chapter 8
Software Development Agility in Small and Medium Enterprises (SMEs)

8.1 Introduction
8.2 Legal Definition of SMEs
8.2.1 Foreign Definitions
8.2.2 Local Definition (Colombia)

8.3 Agile Methodologies in the Real World
8.3.1 Knowledge about Agile Methodologies
8.3.2 People Who Practiced Agile at a Previous Company
8.3.3 Roles in Agile Usage
8.3.4 Reasons for Agile Adoption
8.3.5 Agile Methodology Used
8.3.6 What Already Have Been Achieved by Using ASDM
8.3.7 Barriers to Further Agile Adoption
8.3.8 Agile Practices
8.3.9 Plans for Implementing Agile on Future Projects
8.3.10 Using Agile Techniques on Outsourced Projects

8.4 Agility Assessment Models
8.4.1 Boehm and Turner's Agility and Discipline Assessment
8.4.2 Pikkarainen and Huomo's Agile Assessment Framework
8.5 Weaknesses and Strengths of Agile
8.6 Challenges Adopting Agile Methodologies in SMEs 8.7 Summary

Chapter 9
Model-driven Development and Model-driven Testing

9.1 Introduction
9.1.1 Challenges of Software Development
9.1.2 Traditional Testing Process
9.1.3 A solution to face the Problem
9.1.4 Model-based Testing
9.2 Why to Use Model-driven Architecture in Agile Methodologies
9.3 Model-driven Development
9.3.1 Philosophy
9.3.2 Unified Modeling language
9.4 Model-driven Architecture
9.4.1 Software Engineering

9.5 What the Model-driven Architecture Does Not Do
9.6 Notations for Modeling Tests
9.6.1 Transitions-based Modeling
9.6.2 Pre/Post Modeling
9.7 Testing from Finite State Machines
9.7.1 FSM and Model/Unit
9.7.2 Case Study
9.8 Testing from Pre/Post Models
9.8.1 Object Constraint language (OCL)
9.8.2 Case Study
9.9 Trends and Challenges
9.10 Summary

Subject Index
Name Index