About
101
Publications
24,645
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,693
Citations
Publications
Publications (101)
Software architecture assists developers in addressing non‐functional requirements and in maintaining, debugging, and upgrading their software systems. Consequently, consistency between the designed architecture and the implemented software system itself is important; without this consistency the non‐functional requirements targeted may not be addr...
Hidden code clones negatively impact software maintenance, but manually detecting them in large codebases is impractical. Additionally, automated approaches find detection of syntactically‐divergent clones very challenging. While recent deep neural networks (for example BERT‐based artificial neural networks) seem more effective in detecting such cl...
Code clones can detrimentally impact software maintenance and manually detecting them in very large codebases is impractical. Additionally, automated approaches find detection of Type 3 and Type 4 (inexact) clones very challenging. While the most recent artificial deep neural networks (for example BERT-based artificial neural networks) seem to be h...
Objective
This study aims to gather public opinion on the Irish “COVID Tracker” digital contact tracing (DCT) App, with particular focus on App usage, usability, usefulness, technological issues encountered, and potential changes to the App.
Methods
A 35-item online questionnaire was deployed for 10 days in October 2020, 3 months after the launch...
Cryptocurrencies often tend to maintain a publically accessible ledger of all transactions. This open nature of the transactional ledger allows us to gain macroeconomic insight into the USD 1 Trillion crypto economy. In this paper, we explore the free market-based economy of eight major cryptocurrencies: Bitcoin, Ethereum, Bitcoin Cash, Dash, Litec...
Background:
In recent years, social media has become a major channel for health-related information in Saudi Arabia. Prior health informatics studies have suggested that a large proportion of health-related posts on social media are inaccurate. Given the subject matter and the scale of dissemination of such information, it is important to be able...
BACKGROUND
In recent years, social media has become a major channel for health-related information in Saudi Arabia. Prior health informatics studies have suggested that a large proportion of health-related posts on social media are inaccurate. Given the subject matter and the scale of dissemination of such information, it is important to be able to...
Locating bugs is an important, but effort-intensive and time-consuming task, when dealing with large-scale systems. To address this, Information Retrieval (IR) techniques are increasingly being used to suggest potential buggy source code locations, for given bug reports. While IR techniques are very scalable, in practice their effectiveness in accu...
This paper presents a comprehensive evaluation of data pre-processing and word embedding techniques in the context of Arabic document classification in the domain of health-related communication on social media. We evaluate 26 text pre-processings applied to Arabic tweets within the process of training a classifier to identify health-related tweets...
Bitcoin introduced delegation of control over a monetary system from a select few to all who participate in that system. This delegation is known as the decentralization of controlling power and is a powerful security mechanism for the ecosystem. After the introduction of Bitcoin, the field of cryptocurrency has seen widespread attention from indus...
Sentiment analysis can be used for stock market prediction. However, existing research has not studied the impact of a user’s financial background on sentiment-based forecasting of the stock market using artificial neural networks. In this work, a novel combination of neural networks is used for the assessment of sentiment-based stock market predic...
Background:
Digital contact tracing apps have the potential to augment contact tracing systems and disrupt COVID-19 transmission by rapidly identifying secondary cases prior to the onset of infectiousness and linking them into a system of quarantine, testing, and health care worker case management. The international experience of digital contact tr...
BACKGROUND
The silent transmission of COVID-19 has led to an exponential growth of fatal infections. With over 3 million deaths world-wide, the need to control and stem transmission has never been more critical. New COVID-19 vaccines offer hope. However, administration timelines, long-term protection, and effectiveness against variants are still un...
Background:
The silent transmission of COVID-19 has led to an exponential growth of fatal infections. With over 4 million deaths world-wide, the need to control and stem transmission has never been more critical. New COVID-19 vaccines offer hope. However, administration timelines, long-term protection, and effectiveness against potential variants...
A Correction to this paper has been published: https://doi.org/10.1007/s10664-020-09924-6
BACKGROUND
Novel software applications (“Apps”) that can potentially simplify the laborious work of manual contact tracing during the ongoing COVID-19 pandemic are a tempting prospect. Given this potential, many countries have designed, developed and deployed Apps before their efficacy has been established. The Irish health service launched the “CO...
A Correction to this paper has been published: 10.1007/s10664-020-09923-7
Background
Digital Contact Tracing is seen as a key tool in reducing the propagation of Covid-19. But it requires high uptake and continued participation across the population to be effective. To achieve sufficient uptake/participation, health authorities should address, and thus be aware of, user concerns.
Aim
This work manually analyzes user rev...
BACKGROUND
Digital contact tracing apps (DCTAs) have the potential to augment contact tracing systems and disrupt Coronavirus 2019 (COVID-19) transmission. Despite many countries deploying DCTAs, few have disrupted COVID-19 transmission sufficiently to avoid the most restrictive social distancing measures.
OBJECTIVE
Our aim was to describe and pro...
italic xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">Feature Location (FL)
is a core software maintenance activity that aims to locate observable functionalities in the source code. Given its key role in software change, a vast array of Feature Location Techniques (FLTs) have been proposed but, as more a...
Contact Tracing (CT) is seen as a key tool in reducing the propagation of viruses, such as Covid-19. Given near ubiquitous societal usage of mobile devices, governments globally are choosing to augment manual CT with CT applications (CTAs) on smart phones. While a plethora of solutions have been spawned, their overall effectiveness is based on majo...
Background:
Contact tracing remains a critical part of controlling COVID-19 spread. Many countries have developed novel software applications (Apps) in an effort to augment traditional contact tracing methods.
Aim:
Conduct a national survey of the Irish population to examine barriers and levers to the use of a contact tracing App.
Methods:
Adu...
Bitcoin introduced delegation of control over a monetary system from a select few to all who participate in that system. This delegation is known as the decentralization of controlling power and is a powerful security mechanism for the ecosystem. After the introduction of Bitcoin, the field of cryptocurrency has seen widespread attention from indus...
Blockchain systems have gained substantial traction recently, partly due to the potential of decentralized immutable mediation of economic activities. Ethereum is a prominent example that has the provision for executing stateful computing scripts known as Smart Contracts. These smart contracts resemble traditional programs, but with immutability be...
Feature Location (FL) aims to locate observable functionalities in source code. Considering its key role in software maintenance, a vast array of automated and semi-automated Feature Location Techniques (FLTs) have been proposed. To compare FLTs, an open, standard set of non-subjective, reproducible “compare-to” FLT techniques (baseline techniques)...
Many software developers struggle to understand code written by others, leading to increased maintenance costs. Research on program comprehension to date has primarily focused on individual developers attempting to understand code. However, software developers also work together to share and transfer understanding of their codebases. This is common...
Background: Social media platforms play a vital role in the dissemination of health information. However, evidence suggests that a high proportion of Twitter posts (ie, tweets) are not necessarily accurate, and many studies suggest that tweets do not need to be accurate, or at least evidence based, to receive traction. This is a dangerous combinati...
This paper presents a new technique that informs developers of potential architectural-type violations and non-compliance checking in their software system after changes in the source code. The violations identified by our technique not only concern broken calls/dependencies/inheritance or data-dependencies but also concern the dissatisfaction of s...
During its software evolution, the original software system of our industrial partner was split into three variants. These have evolved over time, but retained a lot of common functionality. During strategical planning our industrial partner realized the need for consolidation of common code in a shared code base towards more efficient code mainten...
Feature location (FL) is the task of finding the source code that implements a specific, user-observable functionality in a software system. It plays a key role in many software maintenance tasks and a wide variety of Feature Location Techniques (FLTs), which rely on source code structure or textual analysis, have been proposed by researchers. As F...
Code in legacy systems is often written in procedures and functions (rather than using more modern object-oriented mechanisms). But those procedures/functions can be combined with other similar procedures/functions (and associated data), and thus be converted/re-factored into objects that can be re-used throughout the system.
The question then is h...
As part of a module re-unification project of an industrial partner’s code, spanning one systems and two derivative systems, the feature-clone variants across these systems have to be extracted, to be later re-unified as singular code elements for re-use. To assist developers with this task, the CoRA (The Code Re-unification Application) tool was d...
We present a novel approach for discovering and suggesting classes/objects in legacy/procedural code, based on a genetic algorithm. Initially, a (procedures-accessing-variables) matrix is extracted from the code and converted into a square matrix. This matrix highlights the variable-relationships between procedures and is used as input to a genetic...
Gamification is the use of game design elements in nongame contexts and has been shown to be effective in motivating behavior change. By seeing game elements as “motivational affordances,” and formalizing the relationship between these elements and motivational affordances, it is the position of this article that gamification can be effectively app...
The article Architecture consistency: State of the practice, challenges and requirements, written by Nour Ali et al. was originally published electronically on the publisher’s internet portal on May 15, 2017 without open access.
The original article has been corrected.
Spreadsheets are commonly used to inform decision making across many business sectors, despite the fact that research performed in the financial sector has shown that they are quite error-prone. However, few studies have investigated spreadsheet errors and their impact in other domains, like the healthcare sector. This article derives a lifecycle-s...
Architecture Consistency (AC) aims to align implemented systems with their intended architectures. Several AC approaches and tools have been proposed and empirically evaluated, suggesting favourable results. In this paper, we empirically examine the state of practice with respect to Architecture Consistency, through interviews with nineteen experie...
Context
Feature location is the task of finding the source code that implements specific functionality in software systems. A common approach is to leverage textual information in source code against a query, using Information Retrieval (IR) techniques. To address the paucity of meaningful terms in source code, alternative, relevant source-code des...
Modularity is at the core of software quality. It is an attribute which reflects the complexity of software systems, and their ability to evolve. In previous metric-based research, modularity has been predominantly assessed at the class level, but this level seems inappropriate for the large-scale software systems of today due to information overlo...
Theory suggests that software development may benefit from applying architecture consistency checking and hence, academics have focused on this area. In such circumstances it is important to characterize the overall focus of the field, in order to assess the actual impact of the research work carried out to date, identifying where researchers are p...
A functional perspective of software systems, at the architectural level allows developers to maintain a consistent understanding of the relationships between different functionalities of their system as it evolves, and allows them to analyze the system at a functional-chunk level rather than at the traditional, structural levels more typically pre...
Technical Support (TS) is a post sales service provided to users of Information Technology (IT) products. Effective customer support can increase an IT company’s revenue, improve the quality of their software, build customer loyalty, and enhance their reputation. However, not all companies realise these benefits as many customers and users are choo...
Users of software systems need support. When users choose to go directly to online forums rather than report issues to the source of the problem, the development organization loses out in terms of gathering information on where their systems could be improved, and can lose customer loyalty and goodwill. This in turn will have a negative effect on f...
The more complex a software system is and the longer a software system evolves, the more difficult it is to avoid effects like software architecture erosion or architectural drifts. These effects can lead to systems where the realization of the system diverges from the intended architecture with resultant negative impacts on quality attributes asso...
Reflexion Modelling is an industrially proven and well-established technique for the reconstruction of software architectures. Studies have shown, users of this technique not only envisage it as a means of recovering the logical module structure of the system but also envisage it as a means of modelling a high-level functional view on the system, i...
Data exchange formats play a prominent role in facilitating interoperability. Standardization of data exchange formats is therefore extremely important. In this paper, we present two contributions: an empirical framework called XML-DIUE, for evaluating data exchange format standards in terms of their usage and an illustration of this framework, dem...
While we know much about refactoring trends and their occurrence in open-source and proprietary systems, we still know little about their association with defects or the nature of classes where refactoring is applied. In this paper, we explore one such refactoring, "Introduce explaining variable" (IEV), a low-level code based refactoring which simp...
The ubiquitous nature of software has resulted in many non-computer-science (NCS) major students taking courses in computer programming. The appeal of learning computer programming for this cohort may be diminished, given that they do not usually have an initial desire to become expert programmers. This, coupled with the difficulty of learning comp...
Reflexion Modelling is considered one of the more successful approaches to architecture reconciliation. Empirical studies strongly suggest that professional developers involved in real-life industrial projects find the information provided by variants of this approach useful and insightful, but the degree to which it resolves architecture conforman...
Reflexion Modelling is a well-understood technique to detect architectural violations that occur during software architecture erosion. Resolving these violations can be difficult when erosion has reached a critical level and the causes of the violations are interwoven and difficult to understand.
This article outlines a novel technique to automati...
Context
Several authors have proposed information seeking as an appropriate perspective for studying software evolution. Empirical evidence in this area suggests that substantial time delays can accrue, due to the unavailability of required information, particularly when this information must travel across geographically distributed sites.
Objecti...
Architectural drift is a widely cited problem in software engineering, where the implementation of a software system diverges from the designed architecture over time causing architecture inconsistencies. Previous work suggests that this architectural drift is, in part, due to programmers' lack of architecture awareness as they develop code. JITTAC...
Before User Generated Content (UGC) became widespread, the majority of web content was generated for a specific target audience and in the language of that target audience. When information was to be published in multiple languages, it was done using well-established localisation methods. With the growth in UGC there are a number of issues, which s...
Studies which consider the extent to which the encapsulation of a class is weakened by direct access to its hidden members (such as through the use of the friend construct in C++) are scarce, and those that do exist are based on metric suites where the enabling mechanism of the coupling is ignored. This can lead to conclusions of limited construct...
Architecting software systems is an integral part of the software development lifecycle. However, often the implementation of the resultant software ends up diverging from the designed architecture due to factors such as time pressures on the development team during implementation/evolution, or the lack of architectural awareness on the part of (po...
There are two traditional approaches to meeting inter-national users' requirements during content genera-tion. The first is localisation which adapts a content to meet the language, cultural and other requirements of a specific locale. The second is personalisation which involves delivering relevant content and presenting information according to i...
Objectives: Software architecture is perceived as one of the most important artefacts created during a system's design. However, implementations often diverge from their intended architectures: a phenomenon called architectural drift. The objective of this research is to assess the occurrence of architectural drift in the context of de novo softwar...
Localisation concerns the translation of digital content and software, and their appropriate presentation to end users in different locales. Localisation is important because having software, a website or other content in several languages, and meeting several sets of cultural expectations is an important international marketing advantage. In the n...
The friend mechanism is widely used in C++ software even though the potential benefits of its use are disputed and little is known about when, where and why it is employed in practice. Furthermore, there is limited empirical analysis of its impact in object-oriented software, with only one study (Counsell and Newson, 2000) reported at journal level...
Several authors have proposed information seeking as an appropriate perspective for studying software maintenance, and have characterized information seeking empirically in commercial software evolution settings. This paper addresses the parallel issue of information seeking in Open Source software evolution. Open Source software evolution exacerba...
Concept location, the problem of associating human oriented concepts with their counterpart solution domain concepts, is a
fundamental problem that lies at the heart of software comprehension. Recent research has attempted to alleviate the impact
of the concept location problem through the application of methods drawn from the information retrieval...
Software architecture and its related documentation are acknowledged as some of the most important artefacts created during system design. However, often the implemented system diverges, over time, from the designed architecture. This phenomenon is called architectural drift and is either a result of inconsistent evolution of the system, or a failu...
Several authors have proposed information seeking as an appropriate perspective for studying software maintenance and evolution, and have characterized information seeking empirically in commercial software evolution settings. However, there is little research in the literature describing the information seeking behaviour of Open Source programmers...
One obvious flaw in the concept of the knowledge society is our collective failure to date to provide equal access to information and knowledge across languages. We are a long way away from the ideal world, where, as Muhammad Yunus, winner of the 2006 Nobel Peace Prize said, there would only be one language in the information technology (IT) world...
Programming languages are not only useful to command computers, they also increasingly are a medium for human communication. I will use the framework of distributed cognition to discuss how knowledge is shared in a team of programmers and to show that computer code plays an important role in it. The resulting model of how programmers comprehend cod...
A software designer often has little control over, or means of checking, whether his design is being adhered to, once the implementation begins. This 'architectural drift', where the original design of the system and the as-implemented design of the system diverge, can cause serious problems for evolution, maintenance and the comprehensibility of a...
Information-seeking has been recognized as a core subtask in software maintenance. While much of the research in this area attempts to identify the information sought by programmers, the work to date has been typically based on pre-defined information types limiting the potential for new information types to arise. Hence, this paper presents a smal...
This paper outlines the needs for careful empirical-design choices during the study of software practitioners. It does this by presenting a docu- mented, but unpublished, in-vivo, empirical, group study. The study was ini- tially conceived as an experiment but was subsequently overwhelmed by human and other factors. As a consequence, only more obse...
A software designer often has little control over, or a means of checking, whether his design is being adhered to once implementation begins. This 'architectural drift,' where the original design and the design of the implemented system diverge can cause serious problems for evolution, maintenance and the comprehensibility of a system if it remains...
It is the view of many computer scientists that the standard of empirical software engineering research leaves scope for improvement. However, there is also an increasing awareness in the software engineering community that empirical studies are a vital aspect in the process of improving methods and tools, for software development and maintenance....
Continuing to develop software from scratch will not be feasible indefinitely. Reusing existing software would seem to be a viable solution to this problem. The paradigm of component-based development (CBD) explicitly accounts for reuse in its process. Unfortunately the majority of existing software systems are not implemented using CBD, thus reusi...
Previous taxonomies of software change have focused on the purpose of the change (i.e., the why) rather than the underlying mechanisms. This paper proposes a taxonomy of software change based on characterizing the mechanisms of change and the factors that influence these mechanisms. The ultimate goal of this taxonomy is to provide a framework that...
Continuing to develop software from scratch will not be feasible indefinitely. Reusing existing software would seem to be a viable solution to this problem. The paradigm of component-based development (CBD) explicitly accounts for reuse in its process. Unfortunately the majority of existing software systems are not implemented using CBD, thus reusi...
This paper proposes an evaluation framework for assessing students' comprehension of concurrent programs. The need for such a framework is illustrated by a review of various Computer Science Education forums. This review suggests that there is little pedagogical research in the area of concurrent software, particularly with respect to assessing stu...
Software reconnaissance is a dynamic analysis technique which can aid in the mapping between program features and code that implements those features. In a previous case study we have shown how we were able to combine software reconnaissance with a static data analysis to a derive reuse perspective from an existing system. In this paper we report o...
Identifying elements of existing software that are reused within a system may provide maintainers with valuable insights during system evolution. This paper evaluates an extension of software reconnaissance that can be used to analyze reuse across features in a system, as part of a component recovery process. We illustrate and evaluate retrieval of...
Information seeking has been recognised as a core subtask in software maintenance. This paper reviews, merges, and adapts existing information seeking models for different domains to propose a nonlinear information-seeking model for programmers involved in software maintenance. Talk-aloud data from two empirical studies of industrial programmers ca...