
Rafael Capilla- PhD
- Professor at Rey Juan Carlos University
Rafael Capilla
- PhD
- Professor at Rey Juan Carlos University
About
175
Publications
93,959
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
3,188
Citations
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)
Current institution
Additional affiliations
October 2000 - September 2001
Publications
Publications (175)
Digital ecosystems are complex networks of people, businesses and systems that use technology to interact with each other. The combination of technologies of a digital ecosystem enables to access information in real-time. To remain competitive, organizations across several industries must respond with efficient use of resources and short production...
Serverless computing has revolutionized cloud computing by abstracting the management of underlying infrastructure. This paradigm shift allows developers to concentrate on developing and optimizing application logic rather than managing the complexities of servers. Platforms such as AWS Lambda and OpenWhisk are gaining widespread adoption by enabli...
The world faces escalating crises: record-breaking temperatures, widespread fires, severe flooding, increased oceanic microplastics, and unequal resource distribution. Academia introduces courses around sustainability to meet the new demand, but software engineering education lags behind. While software systems contribute to environmental issues th...
Education for sustainable development has evolved to include more constructive approaches and a better understanding of what is needed to align education with the cultural, societal, and pedagogical changes required to avoid the risks posed by an unsustainable society. This evolution aims to lead us toward viable, equitable, and sustainable futures...
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...
The advent of serverless computing has revolutionized the landscape of cloud computing, offering a new paradigm that enables developers to focus solely on their applications rather than managing and provisioning the underlying infrastructure. These applications involve integrating individual functions into a cohesive workflow for complex tasks. The...
Research shows that the global society as organized today, with our current technological and economic system, is impossible to sustain. We are living in an era in which human activities in highly industrialized countries are responsible for overshooting several planetary boundaries, with poorer communities contributing the least to the problems bu...
Ensuring consistency between architectural models in software-intensive systems is challenging; hence, this paper presents an industry-oriented solution for the continuous evaluation of the consistency of architecture models aligned with CI/CD pipelines. We evaluated our solution using a concept car to demonstrate its viability and how architectura...
This edition of the “Practitioner’s Digest” features recent papers on open source software related to toxicity in open source discussions, newcomers in open source projects, quality of ansible scripts, code review practices, orphan vulnerabilities in open source software, and the relationship between community and design smells.
Research shows that the global society as organized today, with our current technological and economic system, is impossible to sustain. We are living in the Anthropocene, an era in which human activities in highly industrialized countries are responsible for overshooting several planetary boundaries, with poorer communities contributing least to t...
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....
Context-aware systems are gaining increasing importance in industry as managing and using context information opens new opportunities for reconfiguration, digital twin concepts, performance monitoring, and so forth. Today, there is an immense variety of context-aware systems, from mobile applications to complex systems which require run time reconf...
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...
In this invited talk we will draw the evolution from feature modeling techniques to context variability models and its importance for Dynamic Software Product Lines approaches and for supporting dynamic variability as well.
Usability is an important quality requirement for many of the today software applications, where the complexity of modern user interfaces and the quick reaction required by users demanding highly usable software. However, usability is many times poorly addressed as usability requirements often require an additional implementation effort. In additio...
Over the last two decades, Software Product Lines have been used successfully in industry for building families of systems of related products, maximizing reuse, and exploiting their variable and configurable options. In a changing world, modern software demands more and more adaptive features, many of them performed dynamically, and the requiremen...
Many software systems must adapt to suit the particular context in which they are operating. Runtime variability mechanisms are suitable for systems that must configure optimally during execution.
A complete and detailed (full) Design Rationale Do cumentation (DRD) could support many software development activities, such as an impact analysis or a major redesign. However, this is typically too onerous for systematic industrial use as it is not cost-effective to write, maintain, or read. The key idea investigated in this paper is that DRD sho...
Software architects must sustain design decisions to endure throughout software evolution. Several criteria can help them assess decisions' sustainability. In addition, industry and research projects have applied different techniques to make architectural design decisions sustainable; their examples offer solutions and lessons learned.
The success of product line engineering techniques in the last 15 years has popularized the use of software variability as a key modeling approach for describing the commonality and variability of systems at all stages of the software lifecycle. Software product lines enable a family of products to share a common core platform, while allowing for p...
Recent research suggests that architectural knowledge, such as design decisions, is important and should be recorded alongside the architecture description. Different approaches have emerged to support such architectural knowledge (AK) management activities. However, there are different notions of and emphasis on what and how architectural activiti...
As a summary of past, current, and future trends in software maintenance and reengineering research, we give in this editorial a retrospective look from the past 14 years to now. We provide insight on how software maintenance has evolved and on the most important research topics presented in the series of the European Conference on Software Mainten...
This paper explores the use of dynamic software variability techniques to manage Wireless Sensor and Actuator Networks (WSANs), and we describe both an architecture and a dynamic software variability mechanism that can be integrated in WSAN scenarios. Our main goal is to apply runtime variability to describe the context-aware properties of a WSAN f...
Questions
Questions (3)
RG computes wrong the impact points. If this is expected to be a sum of the IFs of each journal the sum is wrong. In addition, it asigns the same IF to the same journal or magazine independently of the year when it has been published, which is clearly a mistake
From a recent IEEE software article we are looking for those legs that make architectural design decisions sustainable in terms of documentation effort, maintainability and trace links to other software artifacts, balancing the items describing a decision and the capturing effort needed to maintain such knowledge evolvable over time.