
Miguel P. Monteiro- PhD
- Professor (Assistant) at Universidade NOVA de Lisboa
Miguel P. Monteiro
- PhD
- Professor (Assistant) at Universidade NOVA de Lisboa
About
51
Publications
35,549
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
621
Citations
Introduction
Miguel P. Monteiro currently works at the Department of Informatics of Nova University of Lisbon. Miguel does research in Software Engineering with a focus on Software Modularity and Program Rengineering.
Past research projects included, among others, PRIA (Parallel Programming Refinements for Irregular Applications), PPC-VM (Portable Parallel Computing Based on Virtual Machines), AMADEUS (Aspects and Compiler Optimizations for MATLAB System Development).
Skills and Expertise
Current institution
Publications
Publications (51)
Devising an appropriate Search String for a secondary study is not a trivial task and identifying suitable keywords has been reported in the literature as a difficulty faced by researchers. A poorly chosen Search String may compromise the quality of the secondary study, by missing relevant studies or leading to overwork in subsequent steps of the s...
Context: The literature provides evidence of challenges and difficulties related to the migration of legacy software systems to a microservice based architecture. The idea of microservices stipulates that the software be organized as a suite of small, modular, and independently deployed services, in which each service runs on its own process and co...
Context: Code smells are associated to poor design and programming style, which often degrades code quality and hampers code comprehensibility and maintainability. Goal: identify published studies that provide evidence of the influence of code smells on the occurrence of software bugs. Method: We conducted a Systematic Literature Review (SLR) to re...
Context: Code smells are associated with poor design and programming style that often degrades code quality and hampers code comprehensibility and maintainability. Goal: Identify reports from the literature that provide evidence of the influence of code smells on the occurrence of software bugs. Method: We conducted a Systematic Literature Review (...
Matrix and data manipulation programming languages are an essential tool for data analysts. However, these languages are often unstructured and lack modularity mechanisms. This article presents a knowledge discovery approach for studying manifestations of the lack of modularity support in that sort of languages. The study is focused on Matlab, as a...
Context: Several Open Source Software (OSS) projects have adopted frequent releases as a strategy to deliver both new features and fixed bugs on time. This cycle begins with express requests from the project’s community, registered as issues in bug repositories by active users and developers. Each OSS project has its own priorities established by t...
The cloud computing paradigm represents a shift in the way companies deal with customizable and resourceful platforms to deploy software. It has been receiving increasing attention, partly due to its claimed financial and functional benefits. Cloud computing providers provide organizations with access to computing services without the need for thos...
Context: The need to accelerate software delivery, supporting faster time-to-market and frequent community developer/user feedback are issues that have led to relevant changes in software development practices. One example is the adoption of Rapid Release (RR) by several Open Source Software projects (OSS). This raises the need to know how these pr...
Matrix and data manipulation programming languages are an essential tool for data analysts. However, these languages are often unstructured and lack modularity mechanisms. This paper presents a business intelligence approach for studying the manifestations of lack of modularity support in that kind of languages. The study is focused on MATLAB as a...
Several Open Source Software (OSS) projects have adopted frequent releases as a strategy to deliver both new features and fix bugs on time. These entails express requests from the project’s community, registered as issues in bug repositories by active users and developers. Each OSS project has its own priorities established by their respective comm...
This article analyses the evolution in the number of authors of scientific publications in computer science (CS). This analysis is based on a framework that structures CS into 17 constituent areas, proposed by Wainer et al. (Commun ACM 56(8):67–63, 2013), so that indicators can be calculated for each one in order to make comparisons. We collected a...
The literature has pointed out the need for focusing efforts to better support comprehension of MATLAB and Octave programs. Despite being largely used in the industry and academia in the engineering domain, programs and routines written in those languages still require efforts to propose approaches and tools for its understanding. Considering the u...
Program comprehension plays an important role in Software Engineering. In fact, many of the software lifecycle activities depend on program comprehension. Despite the importance of MATLAB and Octave programing languages in the Engineering and Statistical communities, little attention has been paid to the conception, implementation and characterizat...
This paper presents a study of the support for modularity of Object Teams, an aspect‐oriented language backwards compatible with Java. The study is based on implementations in Object Teams of two complete collections of the Gang‐of‐Four design patterns. An analysis of the implementations is provided, in terms of advantages of Object Teams over Java...
This article presents an approach to enrich the MATLAB language with aspect-oriented modularity features, enabling developers to experiment different implementation characteristics and to acquire runtime data and traces without polluting their base MATLAB code. We propose a language through which programmers configure the low-level data representat...
Aspect-Oriented Programming (AOP) is an emerging programming paradigm providing novel constructs to improve the overall modularity of a software system. The primary contribution of AOP is the modularization of crosscutting concerns (CCCs), which give rise to the negative symptoms of scattering and tangling, which make a system hard to reason with,...
Eradication of code smells is often pointed out as a way to improve
readability, extensibility and design in existing software. However, code smell
detection in large systems remains time consuming and error-prone, partly due
to the inherent subjectivity of the detection processes presently available. In
view of mitigating the subjectivity problem,...
For years the development of software artifacts was the sole domain of developers and project managers. However, experience has taught us that the users play a very important role in software development and construction. The inclusion of the Domain Experts directly in the development cycle is a very important characteristic of Domain-Specific Lang...
Outside of the high-performance computing domain, many applications are irregular in the sense that opportunities to exploit parallelism change throughout the computation, due to the use of complex, pointer-based data structures such as lists and graphs. However, the parallel programming community has relatively little experience in parallelizing i...
Guidelines for refactoring are meant to improve software systems internal quality and are widely acknowledged as among software's best practices. However, such guidelines remain mostly qualitative in nature. As a result, judgments on how to conduct refactoring processes remain mostly subjective and therefore non-automatable, prone to errors and unr...
Background: Aspect-oriented programming (AOP) is an emerging programming
paradigm whose focus is about improving modularity, with an emphasis on the
modularization of crosscutting concerns.
Objective: The goal of this paper is to assess the extent to which an AOP
language -ObjectTeams/Java (OT/J) -improves the modularity of a software
system. This...
In irregular algorithms, data set's dependences and distributions cannot be statically predicted. This class of algorithms tends to organize computations in terms of data locality instead of parallelizing control in multiple threads. Thus, opportunities for exploiting parallelism vary dynamically, according to how the algorithm changes data depende...
Implementing the 23 Gang-of-Four design patterns in the aspect-oriented programming language Object Teams/Java (OT/J) yields modularity and reusability results roughly comparable to those obtained in a similar study of AspectJ, though not in the same exact set of patterns. Due to differences in composition mechanisms, the two languages seem complem...
Aspect-oriented programming enables software developers to augment programs with information out of the scope of the base language while not hampering the code readability and thus its portability. MATLAB is a popular modeling/programming language that can significantly benefit from aspect-oriented programming features. Crosscutting concerns includ...
SUMMARY This paper describes a refactoring process that transforms a Java source code base into a functionally equivalent AspectJ source code base. The process illustrates the use of a collection of refactorings for aspect-oriented source code, covering the extraction of scattered implementation elements to aspects, the internal reorganization of t...
In the past, repositories of examples of the well-known Gang-of-Four design patterns brought insights on the potential contributions of aspect-oriented programming, as well as providing a suitable case study for subsequent research. In this paper, we present the first results of an ongoing effort to bring these advantages to a broader range of aspe...
This paper overviews a Domain-Specific Language (DSL) for parallel and grid computing, layered on top of AspectJ. This DSL aims to bridge the gap between sequential code and parallel/grid applications, by avoiding invasive source code changes in scientific applications. Moreover, it aims to promote the localization of parallelization and gridificat...
Aspect-Oriented Programming is an emerging programming paradigm providing novel constructs that eliminate code scattering and tangling by modularizing crosscutting concerns in their own aspect modules. Many current aspect-oriented languages are backwards compatible extensions to existing popular languages, which opens the way to aspectize systems w...
In this paper, we present an approach to develop parallel applications based on aspect oriented programming. We propose a collection of aspects to implement group communication mechanisms on parallel applications. In our approach, parallelisation code is developed by composing the collection into the application core functionality. The approach req...
In this paper, we present a collection of well-known high-level concurrency patterns and mechanisms, coded in AspectJ. We discuss benefits of these implementations relative to plain Java implementations of the same concerns. We detect benefits from using AspectJ in all the cases presented, in the form of higher modularity, reuse, understandability...
In this position paper, we argue that traditional object-oriented design patterns can be regarded as workarounds for limitations in current programming languages, including crosscutting concerns. Aspect-oriented programming (AOP) is able to modularise crosscutting concerns and overcomes many of the limitations. To illustrate, we mention a few examp...
In this paper, we contribute to the characterisation of a programming style specific to aspect-oriented programming. For this purpose, we present a collection of refactorings for aspect-oriented source code, comprising refactorings to enable extraction to aspects of crosscutting concerns from object-oriented legacy code, the subsequent tidying up o...
In this paper, we present a collection of aspect-oriented refactorings covering both the extraction of aspects from object-oriented legacy code and the subsequent tidying up of the resulting aspects. In some cases, this tidying up entails the replacement of the original implementation with a different, centralized design, made possible by modulariz...
This paper describes a refactoring process transforming a Java code base into an AspectJ equivalent. The process illustrates 17 aspect-oriented refactorings covering extraction of implementation elements to aspects, internal reorganization of extracted aspects, and extraction of commonalities to superaspects.
This report describes an experiment in using AspectJ to extract a
feature from a Java code base in order to make it unpluggable. We
describe issues and obstacles encountered while performing a series
of code transformations and next present a collection of manual aspect-oriented
refactorings, based on the experience gained in the process. These
are...
The prospect of aspect-orientation receiving widespread acceptance and adoption in the near future begs the question of how to deal with a large base of object-oriented legacy code. We propose to investigate refactoring techniques for restructuring object-oriented source code so that it can leverage the mechanisms of aspect-orientation in order to...
This paper presents an approach to enrich MATLAB with aspect-oriented extensions to experiment different implementation fea-tures. The language we propose aims to configure the low-level data representation of real variables and expressions, to a specifi-cally-tailored fixed-point data representation that benefits from a more efficient support by c...
Khoros applications can be seen as data-flow graphs, which can be specified and executed from Khoros' visual programming environment, Cantata. Many such applications consist of a chain of operators and would clearly benefit from parallel execution, namely pipelines. This paper presents a methodology to port conventional Khoros applications to a Dis...
Object-Oriented Programming (OOP) is the current dominant programming paradigm in software engineering, to the point that several popular software (s/w) development techniques are often discussed in terms of the concepts of object technology. Examples are components [30][28], design patterns [18] and frameworks [22]. One key aim of all these techni...
In this paper, we discuss the benefits of using aspect-oriented programming to develop parallel applications. We use aspects to separate parallelisation concerns into three categories: partition, concurrency and distribution. The achieved modularisation enables us to assemble a variety of platform specific parallel applications, by composing combin...
In this paper, we argue that current research in aspect-oriented refac- toring can benefit from specific efforts to develop a new coding style appropri- ate for aspect-orientation. This notion can be captured through catalogues of refactorings and code smells, after which it can provide a basis for tool devel- opers. We successfully derived useful...
This report presents an AspectJ framework for parallel computing and compares it with a Java framework providing equivalent functionality (concurrency/parallelization, distribution, profiling and optimizations). We detect several relative benefits in the AspectJ implementation, namely greater levels of uncoupling among framework features, a greater...
Questions
Question (1)
I'm looking for a tool to generate unit tests (pref. JUnit) for a given Java code base.
It is meant to be used by students in a course on s/w reverse engineering and reengineering. The student will explore various tools (e.g., metrics, style).
In the past, I tried AgitarOne to generate tests, but those tests require a specific plugin just to run them and do not seem to work with standalone tools outside its suite (e.g., EclEmma). Besides, AgitarOne is rather heavy and its usage policy of for academia is rather restrictive.
Does anyone know of some tool that does not have such problems?