
Rafael CapillaKing Juan Carlos University | URJC · Department of Informatics
Rafael Capilla
PhD
About
161
Publications
79,541
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
2,571
Citations
Citations since 2017
Introduction
Professor for Software Engineering. My research interests are: Software Sustainability & Technical Debt, Industry 4.0, Software Product Line Engineering & Dynamic Variability, Software Architecture & Architectural Knowledge. Currently I'm also adjunct professor at Lappeenranta University of Technology (LUT - Finland)
Additional affiliations
October 2001 - October 2014
Publications
Publications (161)
Achieving the UN Sustainable Development Goals (SDGs) demands adequate levels of awareness and actions to address sustainability challenges. Software systems will play an important role in moving towards these targets. Sustainability skills are necessary to support the development of software systems and to provide sustainable IT-supported services...
The software industry is increasingly facing the need for continuous deployment of systems. This leads to the adoption of continuous activities, including planning, integration, and deployment (a.k.a. Continuous Software Engineering (CSE)). At the same time, systems should exhibit high-quality architectures, which are often achieved through archite...
42 model (SSM) [1], which generates architectures capable of evolving through time without the concern of potential collapses. These evolving architectures are referred as Timeless architectures. Timeless architectures are well-designed architectures, whose structures remain constant, and are able to evolve proportionally with the appearance of new...
While moving away from traditional approaches to build software and design software architecture, the authors realized that it is sensible to migrate to a platform of better fundamental approach. This refers to the way one looks at the analysis and design of any software. This helps one to weave into the system's architecture itself like different...
a p p r o a c h e s s h o u l d p r o d u c e m o r e r e u s a b l e architectures. In the previous column, we saw how we could accomplish vertical architectural scalability with software stability. Here we look how SSM can help us in achieving Horizontal Scalability, thus realizing all the 4-axes (Figure 1) of software architectural scalability....
The increasing importance of automation and smart capabilities for factories and other industrial systems has led to the concept of Industry 4.0 (I4.0). This concept aims at creating systems that improve the vertical and horizontal integration of production through (i) comprehensive and intelligent automation of industrial processes, (ii) informed...
Software Product Lines (SPLs) enable and maximize reuse of software artefacts, using software variability as central technique. In Model-Based Safety Analysis, system and software models are annotated with failure models that are used to produce safety analysis artefacts like fault trees and FMEAs. However, little work has been done to show MBSA in...
Traditionally, the quality of a software or system architecture has been evaluated in the early stages of the development process using architecture quality evaluation methods. Emergent approaches like Industry 4.0 require continuous monitoring of both run‐time and development‐time quality properties, in contrast to traditional systems where qualit...
Although architecture instability has been studied and measured using a variety of metrics, a deeper analysis of which project parts are less stable and how such instability varies over time is still needed. While having more information on architecture instability is, in general, useful for any software development project, it is especially import...
FOLLOWING ALONG WITH the theme of this issue of IEEE Software,
this column reports papers about digital twins from the 2021 Empirical Assessment in Software Engineering
(EASE’21) conference, the 2021 International Conference on Software
Engineering (ICSE 2021), the 2021 International Symposium on
Software Engineering for Adaptive and Self-Managing...
The increasing number of people with impairments and the lack of specialists has led to a loss of efficiency to deliver proper treatments from National healthcare systems. In this light, telerehabilitation can play an important role as patients can perform certain therapies at home. Consequently, telerehabilitation systems must support delivering b...
Context-aware and smart systems that require runtime reconfiguration to cope with changes in the environment increasingly demand variability management mechanisms that can address runtime concerns. In recent years, we have witnessed new dynamic variability solutions using dynamic software product line (DSPL) approaches. However, while few solutions...
Scientific experiments involve complex interactions between geographically distributed researchers, who act as units and require a substantial volume of data and services. This scenario categorizes a Scientific Software Ecosystem, which involves researchers and scientists working together, using scientific software and related services through scie...
The "Practitioners’ Digest" department in this issue of IEEE Software includes papers from the 2021 International Conference on Software Engineering (ICSE). Feedback or suggestions are welcome. In addition, if you try or adopt any of the practices included in this article, please send me and the authors of the paper(s) a note about your experiences...
Industry 4.0 has led to a dramatic shift in manufacturing processes, which must be accomplished by interacting end-to-end industrial systems. While Industry 4.0 is still a big challenge for many manufacturing companies, reference architectures have been increasingly adopted in different domains to guide engineers on how their systems should interop...
Please read our blog as candidate for the Journal of System and Software MIP award and give us a "Like" if you enjoyed.
https://lnkd.in/eZWPD5G
Software ecosystems are considered the natural evo�lution of software product lines. A software ecosystem provides a
(software) product within a particular business and organizational
context that supports the exchange of activities and services within
a domain. However, the increasing degree of autonomy demanded
by software ecosystems is elevating...
Architectural Design Decisions (ADDs) capture the essence of relevant Architectural Knowledge (AK) and the underpinning rationale in order to produce well-designed software architectures. AK and design rationale might get lost if not captured at the same time when the architecture is discussed and modeled in early design phases. For years, this rel...
The availability of open source assets for almost all imaginable domains has led the software industry to opportunistic design—an approach in which people develop new software systems in an ad hoc fashion by reusing and combining components that were not designed to be used together. In this paper we investigate this emerging approach. We demonstra...
For nearly 30 years, industry and researchers have proposed many software variability tools to cope with the complexity of modeling variability in software development, followed by a number of publications on variability techniques built upon theoretical foundations. After more than 25 years of the practice of software variability, there are not ma...
Making the right decisions is challenging for architects on all levels of seniority. Less experienced architects in particular perceive the transition from design problems to their solutions as hard; it is not always clear how to find suitable concepts and technologies, how to compare alternatives, and how to build consensus. Lack of experience mak...
Software Engineering and Advanced Applications (SEAA) is a long-standing international forum for researchers, practitioners, and students to present and discuss the latest innovations, trends, experiences, and concerns in the field of Software Engineering and Advanced Applications in information technology for software-intensive systems. In this sp...
Usability is a highly desired but often ignored software quality. Effective user interfaces tend to increase learnability, effectiveness and user satisfaction. But usability is often neglected in the early stages of software development and is thus frequently not address in a system's architectural design. Furthermore, because usability is often ne...
The stability and longevity of software systems rely on the quality of design decisions over time. In modern software-intensive systems the number of design decisions taken, the dependencies between those decisions, and the number of design alternatives considered, complicate software maintenance and jeopardize the system's longevity. Despite the e...
Over the past 10 years software architecture has been perceived as the result of a set of architecture design decisions rather than the elements that form part of the software design. As quality attributes are considered major drivers of the design process to achieve high quality systems, the design decisions that drive the selection and use of spe...
Software systems have evolved from being 'stand-alone systems' to 'systems of systems' to meet the challenging needs of societies. Contemporary software systems such as socio-technical systems are composed of distributed and heterogeneous agents, the em- bedded environment, and software components. Addressing the disruptions caused by run-time chan...
This issue's Practioners' Digest column reports on the 2018 Measurement and Metrics for Green and Sustainable Software Systems Workshop (MeGSuS), the ACM/IEEE 21st International Conference on Model Driven Engineering Languages and Systems (MODELS), and the 12th European Conference on Software Architecture (ECSA).
This issue’s article reports from the 40th International Conference on Software Engineering (ICSE 18) and the 17th International Conference on Software Reuse (ICSR 18). The ICSE papers focus on sociotechnical issues related to gender and sentiment or emotion. The ICSR paper focuses on safety-critical systems.
Software architectures are affected by evolution cycles when requirements or the system change. When architectural elements are modified other parts of the design can be impacted by these changes, and be propagated to all software products. As the frequency and depth of architectural changes may affect the stability of the architecture, it becomes...
Cloning-and-owning, in the long run, can severely affect evolution, as changes in cloned fragments may require modifications in various parts of the system. This problem scales if cloning is used in classes that derive products in a Software Product Line, because these classes can impact in several features and products. However, it is hard to know...
The story of success of software product line engineering and software variability, as the cornerstone to support the diversity of the product portfolio is widely recognized by software companies. Nowadays, the complexity of new software‐intensive systems demanding development challenges, such as runtime reconfiguration operations, autonomous behav...
This issue’s column reports on presentations at the 11th International Symposium on Empirical Software Engineering and Measurement, 13th International Conference on Predictive Models and Data Analytics in Software Engineering, and 21st International Systems and Software Product Line Conference.
Software sustainability has been described as the capacity of software systems to endure over time. While a consensus on what software sustainability means is still emerging, an increasing focus on green and technical sustainability has caused researchers and software companies to propose that the use of flexible and open software architectures can...
Context
Modern societies are highly dependent on complex, large-scale, software-intensive systems that increasingly operate within an environment of continuous availability, which is challenging to maintain and evolve in response to the inevitable changes in stakeholder goals and requirements of the system. Software architectures are the foundation...
This theme issue provides an updated perspective on techniques to manage software system variability at runtime, to make software systems smarter and less dependent on human intervention.
This theme issue presents some of the most recent advances in and applications of software for context-aware and smart healthcare, so as to provide a view of the state of the technology.
Dynamic Software Product Lines (DSPLs) is still an incipient paradigm to support runtime reconfiguration of systems that need to change their behavior under varying circumstances. As many modern systems demand reconfiguration after post-deployment time, this 10th edition of the DSPL workshops attempts to bring new insight and approaches for such ne...
In the context of software architectures, sustainability has been
investigated as an important quality property to assess how well
these architectures support changes over time. Several initiatives
to achieve sustainable software architectures/systems can be already
found. In parallel, reference architectures have served as an
e ective support to f...
THE EFFORT AND COSTS required to maintain complex software systems are often high, involving continuous refactoring to ensure longevity in the face of changing requirements. Here, we introduce the concept of architecture knowledge (AK) sustainability to help architects deal with the evolution of long-lived systems. We suggest that AK sustainability...
This issue's column reports on papers from the 19th International Conference on Model Driven Engineering Languages and Systems, the 2016 ACM SIGPLAN International Conference on Software Language Engineering, the 12th International ACM SIGSOFT Conference on the Quality of Software Architectures, and the 13th Working IEEE/IFIP Conference on Software...
This document details the planning phase of a Systematic Mapping Study (SMS). Our goal is to identify the software patterns used during the RE phase, in real-world setting (i.e., in real projects), not in academia (toy projects) and, to understand the impact of their application, in terms of different characteristics, pertaining to the development...
As software systems are becoming more complex and configurable, self-properties (i.e., self-adaptive, self-management, self-healing, self-optimization, self-protection) have attracted the attention of software engineers to provide adequate validation and verification mechanisms in order to ensure the quality of adaptation [1,2]. In this light, the...
The promise and challenge of runtime variability mechanisms are still in the infancy. The emerging paradigm of
dynamic software product lines demand adequate solutions based on effective dynamic variability mechanisms able to manage the variability at runtime. Today, few approaches have been proposed and tested in real dynamic software products lin...
We theorize a two-mind model of design thinking. Mind 1 is about logical design reasoning, and Mind 2 is about the reflection on our reasoning and judgments. The problem solving ability of Mind 1 has often been emphasized in software engineering. The reflective Mind 2, however, has not received much attention. In this study, we want to find out if Min...
This issue's column reports on papers from the 19th International Conference on Software Product Lines, the 10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, the 23rd IEEE International Requirements Engineering Conference, and the 9th European Conference on S...
Good software design practice is difficult to define and teach. Despite the many software design methods and processes that are available, the quality of software design relies on human factors. We notice from literature and our own experiments that some of these factors concern design reasoning and reflection. In this paper, we propose a reflectiv...
Ensuring the longevity of a software system is an important concern for developers and maintainers. However, when a system’s architecture decays during evolution and its quality degrades as a result, the system’s long-term sustainability is highly affected. In this light, providing mediums to estimate and track the sustainability of a software syst...
Architecture erosion constitutes the most visible effect of the degradation of design. It is a major reason to
address the design debt, often caused by architectural mismatch problems. Today, the identification of design erosion is a major concern for designers and software maintainers. Adequate tolos are necessary to identify and repair the debt....
The importance of architectural knowledge (AK) management for software development has been
highlighted over the past ten years, where a significant amount of research has been done. Since the
first systems using design rationale in the seventies and eighties to the more modern approaches using
AK for designing software architectures, a variety of...
Modern software systems demand more and more smart capabilities depending on their context of use, as well as the ability to dynamically adapt these capabilities according to sensed context changes. This requires appropriate techniques for modelling, representing and handling context-aware software variability. While traditional variability modelli...
Runtime variability is becoming an attractive technique to support those runtime scenarios for systems that demand some kind of autonomous reconfiguration or adaptive behavior. Nowadays, the challenge of many critical systems that need to handle different operational modes, often in an unattended mode, require specific solutions for which runtime v...
The complexity necessary for robotics software systems to dynamically respond to or handle a variety of evolving scenarios translates into serious development costs and engineering challenges. Dynamic variability is one new strategy for supporting the dynamic behavior of robotics control systems.
Software product line (SPL) engineering has proven to improve software quality and shorten development cycles, cost and time. In product line engineering, product derivation is concerned with the realization of the variability at the implementation level. However, the majority of research works focuses on instantiating the variants selected in the...
The incessant trend where software engineers need to redesign legacy systems adopting a service-centric engineering approach brings new challenges for software architects and developers. Today, engineering and deploying software as a service requires specific Internet protocols, middleware and languages that often complicate the interoperability of...
Architectural Knowledge Management (AKM) has been an active research area in the last decade; the importance of making the right architectural decisions – and making these at the right time – has been recognized by the contemporary software engineering practices. Several AKM meta-models, templates and tools have been proposed and applied in practic...
Named entities (NEs) can facilitate access to multilingual knowledge sources--which have exploded in recent years--but the identification, classification, and retrieval of NEs remain challenging tasks.
The two articles in this special section address the topic of systems and software vaiability. Variability management involves two key challenges. First, industrial reality shows that for successful platforms, the number of variation points, variants (alternatives that can be selected for a variation point), and dependencies between variation point...
Feature models and their extensions have been proposed and used over the past 20 years for modeling the commonality and variability of software systems. However, the increasing runtime demands and post-deployment configuration procedures of self-adaptive, context-aware and pervasive systems has brought the need for modeling context features. In add...
Usability is an important quality requirement for many of today's software applications, with the complexity of modern user interfaces and the quick reaction required by users demanding highly usable software. However, usability is many times poorly addressed because usability requirements often require an additional implementation effort. In addit...
Systems engineering has invested considerable efforts in the
development of complex-large systems, often known as Systems-of-Systems
(SoS). However, the systematization of current engineering practices based on
the inherent complexity and size of these systems is still challenging for
software engineers. In this light we focus we focus in this pape...
In emerging domains such as Cloud-based Industrial Control Systems (ICSs) and SCADA systems where data-intensive and high performance computing are needed, a higher degree of flexibility is being demanded to meet new stakeholder requirements, context changes and intrinsic complexity. In this light, Dynamic Software Product Lines (DSPLs) provide a w...