need to unify the following list of topics from "our gang"
Tool support for program comprehension;
Novel visualization techniques and interfaces to support program
comprehension, including searching, browsing and analyzing;
Novel text summarisation techniques and interfaces to support program
comprehension, including searching, browsing and analyzing;
Cognitive theories for program comprehension, including experiments,
empirical studies, and case studies;
Individual, collaborative, distributed, and global program comprehension;
Comprehension of specific types of software systems, such as
open/closed source, mobile applications, spreadsheets, web-based
systems, legacy systems, product lines, libraries, multi-threaded
applications, and systems of systems;
Comprehension in the context of diverse software process models and
specific lifecycle activities, such as: maintenance, evolution,
reengineering, migration, security, auditing, and testing;
Comprehension of software artifacts ranging from requirements
documents to test cases and crash logs; from API documentation to
models, meta-models and model transformation; and from Stack Overflow
questions & answers to GitHub code review messages - all artifacts
software developer encounters when creating or evolving software.
Empirical evaluations of program comprehension tools, techniques, and
approaches;
Human aspects in program comprehension;
Comprehension and legal issues, such as due diligence, intellectual
property, reverse engineering, and litigation;
Issues and case studies in the transfer of program comprehension
technology to industry.
• Program comprehension
• Mining software repositories
• Empirical studies in reverse engineering
• Concept and feature location
• Binary reverse engineering
• Redocumenting legacy systems
• Model-driven reengineering
• User interface reengineering
• Wrapping techniques
• Preprocessing, parsing and fact extraction
• Reverse engineering tool support
• Reverse engineering of service-oriented systems
• Reengineering to distributed architectures
• Software architecture recovery
• Visualization techniques and tools
• Object and aspect identification • Program analysis and slicing
• Reengineering pattern
s • Program transformation and refactoring
• Dynamic analysis
• Data reverse engineering
• Reverse engineering for security assessment
• Education in reverse engineering
• Performance reengineering
Analysis of software ecosystems and mining of repositories across
multiple projects
Models for social and development processes that occur in large
software projects
Prediction of future software qualities via analysis of software repositories
Models of software project evolution based on historical repository data
Characterization, classification, and prediction of software defects
based on analysis of software repositories
Techniques to model reliability and defect occurrences
Search-driven software development, including search techniques to
assist developers in finding suitable components and code fragments
for reuse, and software search engines
Analysis of change patterns and trends to assist in future development
Visualization techniques and models of mined data
Techniques and tools for capturing new forms of data for storage in
software repositories, such as effort data, fine-grained changes, and
refactoring
Characterization of bias in mining and guidelines to ensure quality results
Privacy and ethics in mining software repositories
Meta-models, exchange formats, and infrastructure tools to facilitate
the sharing of extracted data and to encourage reuse and repeatability
Empirical studies on extracting data from repositories of large
long-lived and/or industrial projects
Methods of integrating mined data from various historical sources
Approaches, applications, and tools for software repository mining
Mining software licensing and copyrights
Mining execution traces and logs
Mining code review repositories
Mining interaction data repositories
Mining mobile app stores and app reviews
Analysis of natural language artifacts in software repositories
Energy aware mining
Studies of programming language features and their usage in code corpuses
· software quality, energy-efficiency, and security
· source-level metrics and bad smells
· clone and bug detection and prediction
· concern and feature localization and mining
Change and defect management
Code cloning and provenance
Concept and feature location
Continuous integration/deployment
Empirical studies of software maintenance and evolution
Evolution of non-code artefacts
Human aspects of software maintenance and evolution
Maintenance and evolution of model-based methods
Maintenance and evolution processes
Maintenance and evolution of mobile apps
Maintenance versus release process
Mining software repositories
Productivity of software engineers
Release engineering
Reverse engineering and re-engineering
Run-time evolution and dynamic configuration
Service oriented and cloud computing
Software and system comprehension
Software migration and renovation
Software quality assessment
Software refactoring and restructuring
Software testing
need to unify the following list of topics from "our gang"
Tool support for program comprehension; Novel visualization techniques and interfaces to support program comprehension, including searching, browsing and analyzing; Novel text summarisation techniques and interfaces to support program comprehension, including searching, browsing and analyzing; Cognitive theories for program comprehension, including experiments, empirical studies, and case studies; Individual, collaborative, distributed, and global program comprehension; Comprehension of specific types of software systems, such as open/closed source, mobile applications, spreadsheets, web-based systems, legacy systems, product lines, libraries, multi-threaded applications, and systems of systems; Comprehension in the context of diverse software process models and specific lifecycle activities, such as: maintenance, evolution, reengineering, migration, security, auditing, and testing; Comprehension of software artifacts ranging from requirements documents to test cases and crash logs; from API documentation to models, meta-models and model transformation; and from Stack Overflow questions & answers to GitHub code review messages - all artifacts software developer encounters when creating or evolving software. Empirical evaluations of program comprehension tools, techniques, and approaches; Human aspects in program comprehension; Comprehension and legal issues, such as due diligence, intellectual property, reverse engineering, and litigation; Issues and case studies in the transfer of program comprehension technology to industry.
• Program comprehension • Mining software repositories • Empirical studies in reverse engineering • Concept and feature location • Binary reverse engineering • Redocumenting legacy systems • Model-driven reengineering • User interface reengineering • Wrapping techniques • Preprocessing, parsing and fact extraction • Reverse engineering tool support • Reverse engineering of service-oriented systems • Reengineering to distributed architectures • Software architecture recovery • Visualization techniques and tools • Object and aspect identification • Program analysis and slicing • Reengineering pattern s • Program transformation and refactoring • Dynamic analysis • Data reverse engineering • Reverse engineering for security assessment • Education in reverse engineering • Performance reengineering
Analysis of software ecosystems and mining of repositories across multiple projects Models for social and development processes that occur in large software projects Prediction of future software qualities via analysis of software repositories Models of software project evolution based on historical repository data Characterization, classification, and prediction of software defects based on analysis of software repositories Techniques to model reliability and defect occurrences Search-driven software development, including search techniques to assist developers in finding suitable components and code fragments for reuse, and software search engines Analysis of change patterns and trends to assist in future development Visualization techniques and models of mined data Techniques and tools for capturing new forms of data for storage in software repositories, such as effort data, fine-grained changes, and refactoring Characterization of bias in mining and guidelines to ensure quality results Privacy and ethics in mining software repositories Meta-models, exchange formats, and infrastructure tools to facilitate the sharing of extracted data and to encourage reuse and repeatability Empirical studies on extracting data from repositories of large long-lived and/or industrial projects Methods of integrating mined data from various historical sources Approaches, applications, and tools for software repository mining Mining software licensing and copyrights Mining execution traces and logs Mining code review repositories Mining interaction data repositories Mining mobile app stores and app reviews Analysis of natural language artifacts in software repositories Energy aware mining Studies of programming language features and their usage in code corpuses
tic and dynamic program analysis
· repository, revision and change analysis · automated testing, abstract interpretation, verification
· program transformation, slicing and refactoring
· software quality, energy-efficiency, and security
· source-level metrics and bad smells
· clone and bug detection and prediction
· concern and feature localization and mining
Change and defect management Code cloning and provenance Concept and feature location Continuous integration/deployment Empirical studies of software maintenance and evolution Evolution of non-code artefacts Human aspects of software maintenance and evolution Maintenance and evolution of model-based methods Maintenance and evolution processes Maintenance and evolution of mobile apps Maintenance versus release process Mining software repositories Productivity of software engineers Release engineering Reverse engineering and re-engineering Run-time evolution and dynamic configuration Service oriented and cloud computing Software and system comprehension Software migration and renovation Software quality assessment Software refactoring and restructuring Software testing