Research Topics in Software Evolution and Maintenance
Total Page:16
File Type:pdf, Size:1020Kb
RESEARCH TOPICS IN SOFTWARE EVOLUTION AND MAINTENANCE RESEARCH TOPICS IN SOFTWARE EVOLUTION AND MAINTENANCE Jairo Hernán Aponte Melo Mario Linares Vásquez Laura Viviana Moreno Cubillos Christian Adolfo Rodríguez Bustos editors VICERRECTORÍA DE INVESTIGACIÓN %*3&$$*¦/%&*/7&45*("$*¦/4&%�(05 Bogotá, D. C., May de 2012 © Universidad Nacional de Colombia Vicerrectoría de Investigación Dirección de Investigación Sede Bogotá © Editorial Universidad Nacional de Colombia © Jairo Hernán Aponte-Melo [email protected] Mario Linares-Vásquez [email protected] Laura Viviana Moreno-Cubillos [email protected] Christian Adolfo Rodríguez-Bustos [email protected] Editors Dirección de Investigación Sede Bogotá Luis Fernando Niño Vásquez Director Editorial UN Editorial Board Alfonso Correa Motta María Belén Sáez de Ibarra Jaime Franky Julián García González Luis Eugenio Andrade Pérez Salomón Kalmanovitz Krauter Gustavo Silva Carrero First Edition, 2012 ISBN: 978-958-761-162-5 (paperback) ISBN: 978-958-761-163-2 (print on demand) ISBN: 978-958-761-167-0 (e-book) DIB collection design Ángela Pilone Herrera Publisher Editorial Universidad Nacional de Colombia [email protected] www.editorial.unal.edu.co Bogotá, D. C. Colombia, 2012 No part of this book may be reproduced by any means without permission in writing from the owner of the patrimonial rights. Made and printed in Bogotá, D. C. Colombia Universidad Nacional de Colombia Cataloging-in-Publication Data Research topics in software evolution and maintenance / [eds.] Jairo Hernán Aponte Melo ... [et al.]. -- BogotáUniversidad Nacional de Colombia. Vicerrectoría de Investigación. Dirección de Investigación Sede Bogotá, 2012 xxiv 256 p. – (Colección DIB) Includes bibliography references and indexes ISBN : 978-958-761-162-5 (paperback). – ISBN : 978-958-761-163-2 (print on demand). -- ISBN : 978-958-761-167-0 (e-book) 1. Software engineering 2. Software evolution 3. Software maintenance 4. Software visualization I. Aponte Melo, Jairo Hernán, 1965- II. Series CDD-21 005.1 / 2012 List of contributors Jairo Aponte Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Fernando Cortés Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Miguel Cubides Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Óscar Chaparro Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Víctor Escobar-Sarmiento Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Mario Linares-Vásquez Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] David Montaño Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] vii Laura Moreno Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Yury Niño Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Christian Rodríguez-Bustos Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Juan Gabriel Romero-Silva Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Leslie Solorzano Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Henry Roberto Umaña-Acosta Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Angélica Veloza-Suan Universidad Nacional de Colombia, sede Bogotá E-mail: [email protected] Contents Preface xxi Chapter 1 Summarizing Software Artifacts: Overview and Applications 1 Abstract 1 1.1 Introduction 1 1.2 Essentials on Natural Language Summarization 2 1.2.1 The Dimensions of Summarization 3 1.2.2 Summarization Evaluation 5 1.3 Summarizing Software Artifacts: Existing Approaches 6 1.3.1 Summarizing Documentation 7 1.3.2 Summarizing Source Code 8 1.3.3 Combining Software Artifacts 16 1.4 Making Easier Software Evolution: Using Software Summaries in Maintenance Activities 17 1.4.1 Software Comprehension 19 1.4.2 Reverse Engineering 20 1.5 Trends and Challenges 21 References 24 Chapter 2 Survey and Research Trends in Mining Software Repositories 29 Abstract 29 2.1 Introduction 29 ix RESEARCH TOPICS IN SOFTWARE EVOLUTION AND MAINTENANCE 2.2 Understanding Software Repositories 31 2.2.1 Historical Repositories 32 2.2.2 Communications Logs 33 2.2.3 Source Code 34 2.2.4 Other Kind of Repositories 34 2.3 Processes of Mining Software Repositories 34 2.3.1 Techniques 34 2.3.2 Tools 35 2.4 Purpose of Mining Software Repositories 36 2.4.1 Program Understanding 37 2.4.2 Prediction of Quality of Software Systems 38 2.4.3 Discovering Patterns of Change and Refactorings 39 2.4.4 Measuring of the Contribution of Individuals 40 2.4.5 Modeling Social and Development Processes 42 2.5 Trends and Challenges 44 2.5.1 Thinking in Distributed Version Control Systems 44 2.5.2 Integrating and Redesigning Repositories 46 2.5.3 Simplifying MSR Techniques 47 2.6 Summary 48 References 50 Chapter 3 Software Visualization to Simplify the Evolution of Software Systems 57 Abstract 57 3.1 Introduction 57 3.2 Background on Software Visualization 58 3.2.1 How Software Visualization Supports Software Evolutions Tasks 58 3.2.2 The Software Visualization Pipeline 59 3.2.3 Overview of Visualization Tools 59 3.2.4 Sources of Information Commonly Used 60 3.2.5 Differences of Software Visualization and Modeling Languages Like UML 62 x CONTENTS 3.3 SV Techniques 62 3.3.1 Metaphors 62 3.3.2 2D Approaches 64 3.3.3 3D Approaches 69 3.3.4 Virtual Environments 72 3.4 Towards a Better Software Visualization Process 72 3.4.1 Other Programming Paradigms 73 3.4.2 Include Other Languages 73 3.4.3 Better and More Flexible Metaphors 74 3.4.4 Educational Issues 74 3.5 Summary 75 References 76 Chapter 4 Incremental Change: The Way that Software Evolves 81 Abstract 81 4.1 Introduction 81 4.2 Incremental Change in the Software Development Process 82 4.2.1 Software Maintenance vs. Software Evolution 83 4.2.2 Activities of Incremental Change 84 4.3 Concept and Feature Location 87 4.3.1 Software Comprehension 87 4.3.2 Concept Location 88 4.3.3 Static Techniques 89 4.4 Impact Analysis 96 4.5 Summary 98 References 100 Chapter 5 Software Evolution Supported by Information Retrieval 105 Abstract 105 5.1 Introduction 105 5.2 Information Retrieval 106 5.2.1 Classic Models 108 xi RESEARCH TOPICS IN SOFTWARE EVOLUTION AND MAINTENANCE 5.2.2 Alternative and Hybrid Models 109 5.2.3 Web Models 109 5.3 Software Evolution Activities 110 5.3.1 Incremental Change 110 5.3.2 Software Comprehension 111 5.3.3 Mining Software Repositories 112 5.3.4 Software Visualization 112 5.3.5 Reverse Engineering & Reengineering 112 5.3.6 Refactoring 113 5.4 Information Retrieval and Software Evolution 113 5.4.1 Concept/Feature Location 113 5.4.2 Mining Software Repositories (MSR) 114 5.4.3 Automatic Categorization of Source Code Repositories 117 5.4.4 Summarization of Software Artifacts 118 5.4.5 Traceability Recovery 119 5.5 Summary 120 References 121 Chapter 6 Reverse Engineering in Procedural Software Evolution 127 Abstract 127 6.1 Introduction 127 6.2 Reverse Engineering Concepts and Relationships 129 6.2.1 Reverse Engineering and Software Comprehension 129 6.2.2 Reverse Engineering and Software Maintenance 130 6.2.3 Reverse Engineering Concepts 130 6.3 Techniques in Reverse Engineering 133 6.3.1 Standard Techniques 133 6.3.2 Specialized Techniques 134 6.4 Application of Techniques 141 6.4.1 Description of the System 141 6.4.2 Considerations for Applying Reverse Engineering 142 xii CONTENTS 6.4.3 Application of Standard Techniques 143 6.4.4 Application of Specialized Techniques 144 6.5 Reverse Engineering Assessment 147 6.5.1 Assessment of Techniques 147 6.5.2 Assessment of Tools 148 6.6 Trends and Challenges 151 References 154 Chapter 7 Agility Is Not Only About Iterations But Also About Software Evolution 161 Abstract 161 7.1 Introduction 161 7.2 Evolutionary Software Processes 164 7.2.1 EVO 165 7.2.2 Spiral 168 7.2.3 The Unified Process Family 168 7.2.4 Staged Model 171 7.3 Principles, Agility and the Agile Manifesto 173 7.3.1 The Agile Manifesto 173 7.3.2 Agile Principles 175 7.3.3 Agility in Software Development 177 7.4 Agile Methodologies History 178 7.4.1 Iterative Development (1970-1990) 178 7.4.2 The Birth of Agile Methodologies (1990-2001) 179 7.4.3 The Post-manifesto Age (2001-2011) 181 7.5 Agile Methodologies Overview 183 7.5.1 Extreme Programming (XP) 183 7.5.2 SCRUM 184 7.5.3 Feature Driven Development (FDD) 184 7.5.4 Lean Agile Development: LSD, Kanban, Scrumban 185 7.5.5 Agile Versions of UP: AgileUP, Basic/OpenUP 188 7.6 Agility and Software Evolution 190 xiii RESEARCH TOPICS IN SOFTWARE EVOLUTION AND MAINTENANCE 7.7 Trends and Challenges 193 References 195 Chapter 8 Software Development Agility in Small and Medium Enterprises (SMEs) 201 Abstract 201 8.1 Introduction 202 8.2 Legal Definition of SMEs 205 8.2.1 Foreign Definitions 205 8.2.2 Local Definition (Colombia) 207 8.3 Agile Methodologies in the Real World 208 8.3.1 Knowledge About Agile Methodologies 208 8.3.2 People Who Practiced Agile at a Previous Company 209 8.3.3 Roles in Agile Usage 209 8.3.4 Reasons for Agile Adoption 209 8.3.5 Agile Methodology Used 210 8.3.6 What Already Have Been Achieved by Using ASDM 210 8.3.7 Barriers to Further Agile Adoption 210 8.3.8 Agile Practices 211 8.3.9 Plans for Implementing Agile on Future Projects 211 8.3.10 Using Agile Techniques on Outsourced Projects 211 8.4 Agility Assessment Models 211 8.4.1 Boehm and Turner’s Agility and Discipline Assessment 212 8.4.2 Pikkarainen and Huomo’s Agile Assessment Framework 215 8.5 Weaknesses