Apostolos Ampatzoglou

Apostolos Ampatzoglou
University of Macedonia | UOM · Department of Applied Informatics

PhD Software Engineering
Assistant Professor, University of Macedonia

About

141
Publications
54,973
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,748
Citations
Introduction
Apostolos Ampatzoglou is an Assistant Professor at the Department of Applied Informatics, University of Macedonia. Apostolos does research in Software Engineering. His main research interests are: Managing Technical Debt, Software Patterns, Maintainability, and Quality Metrics
Additional affiliations
March 2016 - present
University of Groningen
Position
  • Guest Researcher
September 2015 - present
University of Western Macedonia
Position
  • Lecturer
September 2015 - present
International Hellenic University
Position
  • Lecturer

Publications

Publications (141)
Article
Stability refers to a software system’s resistance to the “ripple effect”, i.e., propagation of changes. In this paper, we investigate the stability of classes that participate in instances/occurrences of GoF design patterns. We examine whether the stability of such classes is affected by (a) the pattern type, (b) the role that the class plays in t...
Article
Extract Method’ is considered one of the most frequently applied and beneficial refactorings, since the corresponding Long Method smell is among the most common and persistent ones. Although Long Method is conceptually related to the implementation of diverse functionalities within a method, until now, this relationship has not been utilized while...
Conference Paper
Source code bad smells are usually resolved through the application of well-defined solutions, i.e., refactorings. In the literature, software metrics are used as indicators of the existence and prioritization of resolving bad smells. In this paper, we focus on the long method smell (i.e. one of the most frequent and persistent bad smells) that can...
Article
The use of object-oriented design patterns in game development is being evaluated in this paper. Games’ quick evolution, demands great flexibility, code reusability and low maintenance costs. Games usually differentiate between versions, in respect of changes of the same type (additional animation, terrains etc). Consequently, the application of de...
Article
Developing a plan for monitoring software quality is a non-trivial task, in the sense that it requires: (a) the selection of relevant quality attributes, based on application domain and development phase, and (b) the selection of appropriate metrics to quantify quality attributes. The metrics selection process is further complicated due to the avai...
Article
Technical Debt (TD) is a successful metaphor in conveying the consequences of software inefficiencies and their elimination to both technical and non-technical stakeholders, primarily due to its monetary nature. The identification and quantification of TD rely heavily on the use of a small handful of sophisticated tools that check for violations of...
Conference Paper
Service-Oriented Architectures (SOA) have become a standard for developing software applications, including but not limited to cloud-based ones and enterprise systems. When using SOA, the software engineers organize the desired functionality into self-contained and independent services, that are invoked through end-points (API calls). At the mainte...
Conference Paper
Refactorings constitute the most direct and comprehensible approach for addressing software quality issues, stemming directly from identified code smells. Nevertheless, despite their popularity in both the research and industrial communities: (a) the effect of a refactoring is not guaranteed to be successful; and (b) the plethora of available refac...
Article
Full-text available
Software security is a critical aspect of modern software products. The vulnerabilities that reside in their source code could become a major weakness for enterprises that build or utilize these products, as their exploitation could lead to devastating financial consequences. Therefore, the development of mechanisms capable of identifying and disco...
Article
Full-text available
During software maintenance, it is often costlier to identify and understand the artifacts that need to be changed, rather than to actually apply the change. In addition to identifying the artifacts related to the change per se, one needs also to identify the artifacts that are changed due to ripple effects. In this paper, we focus on ripple effect...
Conference Paper
Despite the attention that Technical Debt has attracted over the last years, the quantification of TD Interest still remains rather vague (and abstract). TD Interest quantification is hindered by various factors that introduce a lot of uncertainty, such as: identifying the parts of the system that will be maintained , quantifying the load of mainte...
Conference Paper
Developing software based on services is one of the most emerging programming paradigms in software development. Service-based software development relies on the composition of services (i.e., pieces of code already built and deployed in the cloud) through orchestrated API calls. Black-box reuse can play a prominent role when using this programming...
Article
Technical Debt Management is of paramount importance for the software industry, since maintenance is the costlier activity in the software development lifecycle. In this paper we present the SDK4ED platform that enables efficient technical debt management (i.e., measurement, evolution analysis, prevention , etc.) at the code level, and evaluate its...
Article
Full-text available
Code Technical Debt (TD) is intentionally or unintentionally cre-ated when developers introduce inefficiencies in the codebase. This can be at-tributed to various reasons such as heavy workload, tight delivery schedule, ordevelopers’ lack of experience. Since a software system grows mostly throughthe addition of new code, it is interesting to study...
Article
Full-text available
Software security is a very important aspect for software development organizations who wish to provide high-quality and dependable software to their consumers. A crucial part of software security is the early detection of software vulnerabilities. Vulnerability prediction is a mechanism that facilitates the identification (and, in turn, the mitiga...
Chapter
Software security is a critical consideration for software development companies that want to provide their customers with high-quality and dependable software. The automated detection of software vulnerabilities is a critical aspect in software security. Vulnerability prediction is a mechanism that enables the detection and mitigation of software...
Article
While technical debt grows in absolute numbers as software systems evolve over time, the density of technical debt (technical debt divided by lines of code) is reduced in some cases. This can be explained by either the application of refactorings or the development of new artifacts with limited Technical Debt. In this paper we explore the second ex...
Article
Context The definition and assessment of software quality have not converged to a single specification. Each team may formulate its own notion of quality and tools and methodologies for measuring it. Software quality can be improved via code changes, most often as part of a software maintenance loop. Objective This manuscript contributes towards p...
Conference Paper
To date, the identification and quantification of Technical Debt (TD) rely heavily on a few sophisticated tools that check for violations of certain predefined rules, usually through static analysis. Different tools result in divergent TD estimates calling into question the reliability of findings derived by a single tool. To alleviate this issue,...
Conference Paper
Technical Debt estimation relies heavily on the use of static analysis tools looking for violations of pre-defined rules. Largely, Technical Debt principal is attributed to the presence of low-level code smells, unavoidably tying the effort for fixing the problems with mere coding inefficiencies. At the same time, despite their simple definition, t...
Article
DevOps is an emerging software development methodology, that differs from more traditional approaches due to the closer involvement of the customer and the adoption of “continuous-*” (e.g., integration, deployment, delivery, etc.) practices. The vast research on DevOps (including numerous secondary studies) published in a short timeframe, and the d...
Conference Paper
The last decade marked undeniably the leading role of web services and the establishment of service-oriented architectures. Indeed, it is nowadays hard to find a contemporary software application that does not use at least one third-party web service. The main driver for this paradigm shift, lies in the benefits that decoupled, cloud-based services...
Conference Paper
Scientific software development refers to a specific branch of software engineering that targets the development of scientific applications. Such applications are usually developed by non-expert software engineers (e.g., natural scientists, biologists, etc.) and pertain to special challenges. One such challenge (stemming from the lack of proper sof...
Article
As the number of heterogeneous embedded systems used in IoT applications increases, there is a lack of software tools to assist developers to meet the challenge of reducing energy consumption. Indeed, there are only few performance prediction tools for heterogeneous systems in the literature and they typically focus on the prediction of speedup by...
Conference Paper
Full-text available
Developing modern secure and low-energy applications in a short time imposes new challenges and creates the need of designing new software tools to assist developers in all phases of application development. The design of such tools cannot be considered a trivial task, as they should be able to provide optimization of multiple quality requirements....
Article
Context In embedded software industry, stakeholders usually promote run-time properties (e.g., performance, energy efficiency, etc.) as quality drivers, which in many cases leads to a compromise at the levels of design-time qualities (e.g., maintainability, reusability, etc.). Such a compromise does not come without a cost; since embedded systems n...
Article
Game mechanics are high-level descriptions of common game requirements; however, they do not provide any guidance on their code implementation. Nevertheless, their implementation involves high volumes of essential complexity, which in turn leads to the introduction of accidental complexity (long methods, code repetition, etc.). A possible solution...
Conference Paper
This work describes a research collaboration between universities and industry with the aim to provide a low-cost prototype based on Augmented Reality technologies, that assists with maintaining correct information in Warehouse Management Systems. The component interacts with the central server of an existing commercial WMS to provide up-to-date in...
Conference Paper
Requirements’ engineering (elicitation and documentation) is considered to be one of the most crucial phases of the software development process. More specifically, many products fail to reach the market or to capture a respectable share of it, due to problems derived during requirements engineering. In any game the main requirement is expected to...
Conference Paper
Nowadays the majority of cloud applications are developed based on the Service-Oriented Architecture (SOA) paradigm. Large-scale applications are structured as a collection of well-integrated services that are deployed in public, private or hybrid cloud. Despite the inherent benefits that service-based cloud development provides, the process is far...
Conference Paper
Full-text available
Software security is a critical consideration for software development companies that want to provide their customers with high-quality and dependable software. The automated detection of software vulnerabilities is a critical aspect in software security. Vulnerability prediction is a mechanism that enables the detection and mitigation of software...
Article
Full-text available
Technical Debt (TD) is a software engineering metaphor that resembles the production of poor-quality code to going into debt. In particular, a development team that "saves" effort while developing by not removing inefficiencies, has to "pay-back" with interest, in the form of additional maintenance costs (i.e., fixing bugs, adding features, etc.) d...
Article
Full-text available
There are numerous commercial tools and research prototypes that offer support for measuring technical debt. However, different tools adopt different terms, metrics, and ways to identify and measure technical debt. These tools offer diverse features, and their popularity / community support varies significantly. Therefore, (a) practitioners face di...
Article
Change Impact Analysis (CIA) is the process of exploring the tentative effects of a change in other parts of a system. CIA is considered beneficial in practice, since it reduces cost of maintenance and the risk of software development failures. In this paper, we present a systematic mapping study that covers a plethora of CIA methods (by exploring...
Article
Background The development of scientific software applications is far from trivial, due to the constant increase in the necessary complexity of these applications, their increasing size, and their need for intensive maintenance and reuse. Aim To this end, developers of scientific software (who usually lack a formal computer science background) nee...
Article
Full-text available
Technical Debt (TD) interest refers to the extra maintenance costs incurred by the very existence of TD items in a system. The generation of TD interest can make or break a system: too little interest and the effect of TD is negligible; too much interest and the system becomes unsustainable. In this paper, we consider the generation of interest as...
Chapter
This paper describes the software architecture and the required hardware components of a Remote Warehouse Management System using Augmented Reality, designed in the context of the project called WMS & AR project. The system architecture will augment the capabilities of an existing WMS system [1]. The main services that the extended system will prov...
Article
Context Making architectural decisions is a crucial task but also very difficult, considering the scope of the decisions and their impact on quality attributes. To make matters worse, architectural decisions need to combine both technical and business factors, which are very dissimilar by nature. Objectives We provide a cost-benefit approach and s...
Article
Context The cornerstones of technical debt (TD) are two concepts borrowed from economics: principal and interest. Although in economics the two terms are related, in TD there is no study on this direction so as to validate the strength of the metaphor. Objective We study the relation between Principal and Interest, and subsequently dig further int...
Article
Change Impact Analysis (CIA) is the process of exploring the tentative effects of a change in other parts of a system. CIA is considered beneficial in practice, since it reduces cost of maintenance and the risk of software development failures. In this paper, we present a systematic mapping study that covers a plethora of CIA methods (by exploring...
Conference Paper
Modularity is one of the four key principles of software design and architecture. According to this principle, software should be organized into modules that are tightly linked internally (high cohesion), whereas at the same time as independent from other modules as possible (low coupling). However, in practice, this principle is violated due to po...
Article
During the last decades, software traceability has been studied in a large number of studies, from different perspectives (e.g., how to create traces? what are the benefits? etc.). This large body of knowledge needs to be better explored and exploited by both practitioners and researchers: we need an overview of different aspects of traceability an...
Preprint
Full-text available
Background: The development of scientific software applications is far from trivial, due to the constant increase in the necessary complexity of these applications, their increasing size, and their need for intensive maintenance and reuse. Aim: To this end, developers of scientific software (who usually lack a formal computer science background) ne...
Preprint
Full-text available
While technical debt grows in absolute numbers as software systems evolve over time, the density of technical debt (technical debt divided by lines of code) is reduced in some cases. This can be explained by either the application of refactorings or the development of new artifacts with limited Technical Debt. In this paper we explore the second ex...
Chapter
The design constraints of Implantable Medical Devices (IMD), such as the low energy consumption, impose significant challenges to application developers. Software tools that improve the quality of the source code by means of technical debt management and provide energy consumption estimations are useful to IMD application developers for addressing...
Conference Paper
One the one hand, as a GitHub profile is becoming an essential part of a developer’s resume it becomes increasingly important to enable HR departments to extract someone’s expertise, through automated analysis of his/her contribution to open-source projects. On the other hand, having clear insights on the technologies used in a project can be very...
Preprint
A GitHub profile is becoming an essential part of a developer's resume enabling HR departments to extract someone's expertise, through automated analysis of his/her contribution to open-source projects. At the same time, having clear insights on the technologies used in a project can be very beneficial for resource allocation and project maintainab...
Conference Paper
Code Technical Debt (TD) is intentionally or unintentionally created when developers introduce ineffciencies in the codebase. This can be attributed to various reasons such as heavy workload, tight delivery schedule, unawareness of good practices, etc. To shed light into the context that leads to technical debt accumulation, in this paper we invest...
Conference Paper
Technical Debt Management (TDM) is a fast-growing field that in the last years has attracted the attention of both academia and industry. TDM is a complex process, in the sense that it relies on multiple and heterogeneous data sources (e.g., source code, feature requests, bugs, developers' activity, etc.), which cannot be straightforwardly synthesi...
Article
During the last years the TD community is striving to offer methods and tools for reducing the amount of TD, but also understand the underlying concepts. One popular practice that still has not been inves-tigated in the context of TD, is software reuse. The aim of this paper is to investigate the relation be-tween white-box code reuse and TD princi...
Article
Full-text available
Software teams are often asked to deliver new features within strict deadlines leading developers to deliberately or inadvertently serve “not quite right code” compromising software quality and maintainability. This non-ideal state of software is efficiently captured by the Technical Debt (TD) metaphor, which reflects the additional effort that has...
Chapter
Technical Debt Management (TDM) is a fast-growing field that in the last years has attracted the attention of both academia and industry. TDM is a complex process, in the sense that it relies on multiple and heterogeneous data sources (e.g., source code, feature requests, bugs, developers’ activity, etc.), which cannot be straightforwardly synthesi...
Chapter
Full-text available
Code Technical Debt (TD) is intentionally or unintentionally created when developers introduce inefficiencies in the codebase. This can be attributed to various reasons such as heavy work-load, tight delivery schedule, unawareness of good practices, etc. To shed light into the context that leads to technical debt accumulation, in this paper we inve...
Conference Paper
Due to the recent (and forthcoming) rapid advancements in the hardware architectures of High-Performance Computing infrastructures, new challenges have arisen in the development of scientific software applications. In particular, software that runs on Exascale machines, needs to be highly portable (so as to be executed in highly heterogenous platfo...
Chapter
Full-text available
Secondary studies review and compile data retrieved from primary studies and are vulnerable to factors that threaten their validity as any other research method. Considering that secondary studies are often used to support the evidence-based paradigm, it is crucial to properly manage their threats, i.e., identify, categorize, mitigate, and report t...
Conference Paper
Game development is one of the fastest growing industries. Since games' success is mostly related to users' enjoyment, one of the cornerstones of their quality assessment is the evaluation from the user perspective. According to literature, game scenario constitutes a key-factor that leads to users' enjoyment. Despite their importance, scenarios ar...
Article
Despite the extensive adoption of crowdsourcing for the timely, cost-effective, and high-quality completion of software development tasks, a large number of crowdsourced challenges are not able to acquire a winning solution, on time, and within the desired cost and quality thresholds. A possible reason for this is that we currently lack a systemati...
Conference Paper
This paper describes the software architecture and the required hardware compo-nents of a Remote Warehouse Management System using Augmented Reality, designed in the context of the project called WMS & AR project. The system ar-chitecture will augment the capabilities of an existing WMS system. The main services that the extended system will provid...
Article
Full-text available
Welcome to the third edition of the workshop on Machine Learn- ing Techniques for Software Quality Evaluation (MaLTeSQuE 2019), held in Tallinn, Estonia, August 27th, 2019, co-located with ESEC / FSE 2019. This year MALTESQUE merged with the MASES (Machine Learning and Software Engineering in Symbiosis) work- shop, co-located with the ASE 2018 conf...
Article
Full-text available
Digital information sources are utilized in various ways, ranging from trend detection in programming languages usage to an in-depth analysis of skills and competences required in some business sectors. Building models and methods for labor market analysis, based on digital information sources offers more timely results that are close to the curren...
Conference Paper
Full-text available
Successful software project survival and progress over time is highly dependent on effectively managing the maintenance process. Estimating accurately maintenance process factors like the effort and the level of changes required for a new release is considered a crucial task for allocating resources. In this work we examine the maintenance process...
Conference Paper
Software reuse is a well-established software engineering pro-cess that aims at improving development productivity. Although reuse can be performed in a very systematic way (e.g., through product lines), in practice, reuse is performed in many cases opportunistically, i.e., copying small code chunks either from the web or in-house developed project...
Article
To capitalize upon the benefits of software reuse, an efficient selection among candidate reusa-ble assets should be performed in terms of functional fitness and adaptability. The reusability of assets is usually measured through reusability indices. However, these do not capture all fac-ets of reusability, such as structural characteristics, exter...
Conference Paper
Technical Debt is a software engineering metaphor that refers to the intentional or unintentional production of software at a lower quality, to achieve business goals (e.g., shorten time to market). Nevertheless, similarly to financial debt, technical debt does not come without negative consequences. The accumulation of technical debt leads to addi...
Conference Paper
Context: Technical Debt (TD) quantification has been studied in the literature and it is supported by various tools; however, there is no common ground on what information to present to stakeholders. Similarly to other quality monitoring processes, it is desirable to provide a view of quality levels through a dashboard, in which important metrics f...
Conference Paper
Refactoring is a prevalent technique that can be applied for improving software structural quality. Refactorings can be applied at different levels of granularity to resolve ‘bad smells’ that can be identified in various artifacts (e.g., methods, classes, packages). A fundamental software engineering principle that can be applied at various levels...
Conference Paper
Technical Debt (TD) reflects problems in software maintainability along evolution. TD principal is defined as the effort required for refactoring an existing system to an ideal one (a.k.a. optimal) that suffers from no maintainability problems. One of the open problems in the TD community is that ideal versions of systems do not exist, and there ar...
Article
Although numerous technologies are available for developing web applications, PHP holds the lions’ share of web content today. PHP offers several features that enable developers to easily produce dynamically extendible code, forming an entire ecosystem of standard as well as more ‘exotic’ opportunities that can be exploited. One reason that drives...
Article
Context: Secondary studies are vulnerable to threats to validity. Although, mitigating these threats is crucial for the credibility of these studies, we currently lack a systematic approach to identify, categorize and mitigate threats to validity for secondary studies. Objective: In this paper, we review the corpus of secondary studies, with the a...
Article
Context: GoF patterns have been extensively studied with respect to the benefit they provide as problem-solving, communication and quality improvement mechanisms. The latter has been mostly investigated through empirical studies, but some aspects of quality (esp. run-time ones) are still under-investigated. Objective: In this paper, we study if the...