David BenavidesUniversidad de Sevilla | US · Languages and Systems
David Benavides
PhD
About
174
Publications
40,077
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
5,741
Citations
Introduction
Additional affiliations
December 2010 - December 2021
Publications
Publications (174)
Feature models are the de facto standard for modelling variabilities and commonalities in features and relationships in software product lines. They are the base artefacts in many engineering activities, such as product configuration, derivation, or testing. Concrete models in different domains exist; however, many are in private or sparse reposito...
Feature Models (FMs) are not only an active scientific topic but they are supported by many tools from industry and academia. In this chapter, we provide an overview of example feature modelling tools and corresponding FM configurator applications. In our discussion, we first focus on different tools supporting the design of FMs. Thereafter, we pro...
Developing and maintaining Feature Models (FMs) can become an errorprone activity. In this chapter, we focus on different aspects of analyzing relevant properties of FMs. Such an analysis helps to increase the maintainability and correctness of FMs and also makes them better manageable in industrial settings. Analysis operations are discussed in de...
In this chapter, we describe the basis of Feature Models (FMs) using graphical as well as textual representations. We introduce a smartwatch FM that will be used as a working example for this and later chapters. Based on this example, we describe feature modelling extensions using cardinalities and attributes. In the following,we showhowFMs can be...
In this chapter, we discuss different AI techniques that can be applied to support interactive FM configuration scenarios.We have in mind situations where the user of a FM configurator is in the need of support, for example, in terms of requiring recommendations and related explanations for feature inclusions or exclusions or recommendations of how...
Data visualization aims to convey quantitative and qualitative information effectively by determining which techniques and visualizations are most appropriate for different situations and why. Various software solutions can produce numerous visualizations of the same data set. However, data visualization encompasses a wide range of visual configura...
The popularity of open-source software (OSS) projects has grown over the last few years with more organizations relying on them. As these projects become larger, the need for higher performance increases. DevOps practices have been shown to improve quality and organizational performance. DORA reports provide useful information to compare DevOps pra...
Software development projects are built on top of external libraries and tools that help manage code and databases and/or facilitate deployment. The external libraries that assist in these tasks create dependent relations with the developed software, thereby increasing the use of dependencies as a common practice. There exist mechanisms in the proj...
Constraint-based applications attempt to identify a solution that meets all defined user requirements. If the requirements are inconsistent with the underlying constraint set, algorithms that compute diagnoses for inconsistent constraints should be implemented to help users resolve the “no solution could be found” dilemma. FastDiag is a typical dir...
Constraint-based applications attempt to identify a solution that meets all defined user requirements. If the requirements are inconsistent with the underlying constraint set, algorithms that compute diagnoses for inconsistent constraints should be implemented to help users resolve the "no solution could be found" dilemma. FastDiag is a typical dir...
The popularity of open-source software (OSS) projects has grown significantly over the last few years with more organizations relying on them. As these projects become larger, the need for higher quality also increases. DevOps practices have been shown to improve quality and performance. The DORA benchmarking reports provide useful information to c...
Challenging domains of the future such as Smart Cities, Cloud Computing, or Industry 4.0 expose highly variable systems with colossal configuration spaces. The automated analysis of those systems’ variability has often relied on SAT solving and constraint programming. However, many of the analyses have to deal with the uncertainty introduced by the...
Software product lines (SPL) has been consolidated in the last decades as a de facto and non-opportunistic way of mass customization and reuse of software artifacts to produce specific products. Over the years, SPLs and their construction processes have evolved based on several seminal works and technologies. In this chapter, we characterize an SPL...
Many analyses on configurable software systems are intractable when confronted with colossal and highly-constrained configuration spaces. These analyses could instead use statistical inference, where a tractable sample accurately predicts results for the entire space. To do so, the laws of statistical inference requires each member of the populatio...
Conflict detection is used in various scenarios ranging from interactive decision making (e.g., knowledge-based configuration) to the diagnosis of potentially faulty models (e.g., using knowledge base analysis operations). Conflicts can be regarded as sets of restrictions (constraints) causing an inconsistency. Junker’s QuickXPlain is a divide-and-...
Stepwise design of programs is a divide-and-conquer strategy to control complexity in program modularization and theorems. It has been studied extensively in the last 30 years and has worked well, although it is not yet commonplace. This paper explores a new area of research, finding efficient products in colossal product spaces, that builds upon p...
Teaching computer programming is a real challenge in the State University of Milagro (UNEMI), located in one of the least-developed zones in Ecuador, a non-WEIRD country (WEIRD stands for Western, Educated, Industrialized, Rich and Democratic). Despite the application of various learning strategies, the historical pass rate does not exceed 43%. To...
Complex and large-scale feature models can become faulty, i.e., do not represent the expected variability properties of the underlying software artifact. In this paper, we propose the DirectDebug algorithm that supports the automated testing and debugging of variability models. Our approach assists software engineers in identifying an adaptation hi...
Many domains require scalable algorithms that help to determine diagnoses efficiently and often within predefined time limits. Anytime diagnosis is able to determine solutions in such a way and thus is especially useful in real-time scenarios such as production scheduling, robot control, and communication networks management where diagnosis and cor...
Variability models (e.g., feature models) are a common way for the representation of variabilities and commonalities of software artifacts. Such models can be translated to a logical representation and thus allow different operations for quality assurance and other types of model property analysis. Specifically, complex and often large-scale featur...
The completion of partial configurations might represent an expensive computational task. Existing solutions, such as those which use modern constraint satisfaction solvers, perform a complete search, making them unsuitable on large-scale configurations. In this work, we propose an approach to define the completion of a partial configuration like a...
Variability models are used to build configurators, for guiding users through the configuration process to reach the desired setting that fulfils user requirements. The same variability model can be used to design different configurators employing different techniques. One of the design options that can change in a configurator is the configuration...
italic xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">Contribution:
A systematic literature review on the empirical evidence regarding the usage of programming languages for learning purposes is presented. The review analyzes different methods and tools at different educational levels and with different o...
Several relevant analyses on configurable software systems remain intractable because they require examining vast and highly-constrained configuration spaces. Those analyses could be addressed through statistical inference, i.e., working with a much more tractable sample that later supports generalizing the results obtained to the entire configurat...
See the video presentation on: https://youtu.be/1eWi0FUuoP8
Conflict detection is used in many scenarios ranging from interactive decision making to the diagnosis of potentially faulty hardware components or models. In these scenarios, the efficient identification of conflicts is crucial. Junker's QUICKXPLAIN is a divide-and-conquer based algorithm for the determination of preferred minimal conflicts. Motiv...
Conflict detection is used in many scenarios ranging from interactive decision making to the diagnosis of potentially faulty hardware components or models. In these scenarios, the efficient identification of conflicts is crucial. Junker’s QuickXPlain is a divide-and-conquer based algorithm for the determination of preferred minimal conflicts. Motiv...
Context
: The adoption of Software Product Line Engineering (SPLE) is usually only based on its theoretical benefits instead of empirical evidences. In fact, there is no work that synthesizes the empirical studies on SPLE. This makes it difficult for researchers to base their contributions on previous works validated with an empirical strategy.
Ob...
Nowadays, Free/Libre/OpenSource Software (FLOSS) is becoming a strategic option for many organizations in the public and the private sector. The lack of well defined guidelines for IT managers may jeopardize the FLOSS adoption process. FLOSS adoption procedures are developed ad-hoc in every organization, hence, leading to potential wheel reinventio...
Variability modelling and analysis are among the most important activities in software engineering in general and in software product line engineering in particular. In 1990, the FODA report supposed a revolution in the importance of modelling and analysing of variability. In 2020, 30 years of variability modelling and analysis will be celebrated....
Feature models were invented in 1990 and have been recognised as one of the main contributions to the software product line community. Although there have been several attempts to establish a sort of standard variability modelling language, there is still no consensus. There can be many motivations to have one but there is one that is very importan...
Software Product Lines (SPL) enable systematic reuse within an organization thus, enabling the reduction of costs, efforts, development time and the average number of defects per product. However, there is little empirical evidence of SPL adoption in the literature, which makes it difficult to strengthen or elaborate adjustments or improvements to...
Feature models have been used since the 90's to describe software product lines as a way of reusing common parts in a family of software systems. In 2010, a systematic literature review was published summarizing the advances and settling the basis of the area of Automated Analysis of Feature Models (AAFM). From then on, different studies have appli...
Software product lines (SPL) management is one of the most important activities for the software engineer and it represents one of the key pieces of software product line engineering. When a software system grow fast, configuring a product becomes a costly and error-prone activity due to the amount of features available for configuration. This proc...
Feature models are one of the most important contributions to the field of software product lines, feature oriented software development or variability intensive systems. Since their invention in 1990, many feature model dialects appeared from less formal to more formal, from visual to textual, integrated in tool chains or just as a support for a c...
Variability models are used to build configurators. Configurators are programs that guide users through the configuration process to reach a desired configuration that fulfils user requirements. The same variability model can be used to design different configurators employing different techniques. One of the elements that can change in a configura...
Several approaches to define Variability Models (VM) of non-functional requirements or quality attributes have been proposed. However, these approaches have focused on specific quality attributes rather than more general non-functional aspects established by standards such as ISO/IEC 25010 for software evaluation and quality. Thus, developing speci...
In a Software Products Line (SPL) there may be features which can be implemented by different components, which means there are several implementations for the same feature. In this context, the selection of the best components set to implement a given configuration is a challenging task due to the high number of combinations and options which coul...
Feature models have been used since the 90's to describe software product lines as a way of reusing common parts in a family of software systems. In 2010, a systematic literature review was published summarizing the advances and settling the basis of the area of Automated Analysis of Feature Models (AAFM). From then on, different studies have appli...
The proliferation of features and platforms in variability intensive systems, coupled with substantial technological progress, imposes several challenges for software developers and equipment manufacturers—in some cases referred as technical sustainability. For instance, in the mobile application domain, developers often need to know the requiremen...
In an industrial project, we addressed the challenge of developing a software-based video generator such that consumers and providers of video processing algorithms can benchmark them on a wide range of video variants. This article aims to report on our positive experience in modeling, controlling, and implementing software variability in the video...
Software Product Lines (SPLs) are about developing a set of different software products that share some common functionality. Feature models are widely used to encode the common and variant parts of an SPL. The number of products encoded in a feature model grows with the number of features. Given n features and no constraints on valid feature combi...
Many domains require scalable algorithms that help to determine diagnoses efficiently and often within predefined time limits. Anytime diagnosis is able to determine solutions in such a way and thus is especially useful in real-time scenarios such as production scheduling, robot control, and communication networks management where diagnosis and cor...
Variability intensive systems are software systems that describe a large number of configurations. Managing variability in these systems is expensive and often difficult because of the number of configurations that can be derived. For a software developer selecting the deployment platform for a product is a complex activity to solve. To mitigate th...
Variability is a intrinsic characteristic of software. We could affirm that there is no software if there is no variability. Nowadays, variability management is a must in modern software engineering because the the need of software intensive systems to vary according to different contexts, different platforms or different customers. In the last dec...
In this chapter we focused on how to improve the learning of computer programming in college students. From the reported success, we relied on Scratch, a visual programming language for enhancing the informal learning. Despite the progress achieved in the past, we have observed some issues regarding the use of Scratch by college students. First, th...
In a literature review on the last 20 years of automated analysis of feature models, the formalization of analysis operations was identified as the most relevant challenge in the field. This formalization could provide very valuable assets for tool developers such as a precise definition of the analysis operations and, what is more, a reference imp...
Feature-oriented programming (FOP) and aspect-oriented programming (AOP) focus are to modularize additional classes behavior and crosscutting concerns, respectively, for soft- ware evolution. So, these software development approaches represent advanced paradigms for modular software product lines development. Thereby, a FOP and AOP symbiosis would...
Feature models are widely used to encode the configurations of a software product line in terms of mandatory, optional and exclusive features as well as propositional constraints over the features. Numerous computationally expensive procedures have been developed to model check, test, configure, debug, or compute relevant information of feature mod...