Miguel P. Monteiro

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).
Current institution
Universidade NOVA de Lisboa
Current position
  • Professor (Assistant)
Additional affiliations
September 2006 - May 2020
Universidade NOVA de Lisboa
Position
  • Professor (Assistant)
Description
  • Faculdade de Ciências e Tecnologia, Universidade Nova de Lisboa

Publications

Publications (51)
Conference Paper
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...
Chapter
Full-text available
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...
Article
Full-text available
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...
Preprint
Full-text available
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 (...
Article
Full-text available
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...
Chapter
Full-text available
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...
Chapter
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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,...
Article
Full-text available
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,...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Article
Full-text available
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...
Article
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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.
Conference Paper
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Full-text available
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)
Question
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?

Network

Cited By