Professional Documents
Culture Documents
(1) Modern systems require programmers to develop code that dynamically adapts to different contexts, leading to
the evolution of new context-oriented programming languages. (2) These languages introduce new software-
engineering challenges, such as: how to maintain the separation of concerns of the codebase? how to model the
changing behaviors? how to verify the system behavior? and more. (3) This paper introduces Context-Oriented
Behavioral Programming (COBP) — a novel paradigm for developing context-aware systems, centered on natural
and incremental specification of context-dependent behaviors. (4) As the name suggests, we combine behavioral-
programming (BP) — a scenario-based modeling paradigm — with context idioms that explicitly specify when
scenarios are relevant and what information they need. (5) The core idea is to connect the behavioral model with a
data model that represents the context, allowing an intuitive connection between the models via update and select
queries. (6) Combining behavioral - programming with context-oriented programming brings the best of the two
worlds, solving issues that arise when using each of the approaches in separation. (7) We begin with providing
abstract semantics for COBP and two implementations for the semantics, laying the foundations for applying
reasoning algorithms to context-aware behavioral programs. (8) Next, we exemplify the semantics with formal
specifications of systems, including a variant of Conway’s Game of Life. (9) Then, we provide two case studies of
real-life context-aware systems (one in robotics and another in IoT) that were developed using this tool. (10)
Throughout the examples and case studies, we provide design patterns and a methodology for coping with the
above challenges. (11) The case studies show that the proposed approach is applicable for developing real-life
systems, and presents measurable advantages over the alternatives — behavioral programming alone and context-
oriented programming alone. (12) We present a paradigm allowing programmers and system engineers to capture
complex context - dependent requirements and align their code with such requirements.
Abstract 2: Variability models for generating efficient configurations of functional quality attributes
(1)Quality attributes play a critical role in the architecture elicitation phase. (2) Software Sustainability and energy
efficiency is becoming a critical quality attribute that can be used as a selection criteria to choose from among different
design or implementation alternatives. (3) Energy efficiency usually competes with other non-functional requirements,
like for instance, performance. (4) This paper presents a process that helps developers to automatically generate
optimum configurations of functional quality attributes in terms of energy efficiency and performance. (5) Functional
quality attributes refer to the behavioral properties that need to be incorporated inside a software architecture to fulfill
a particular quality attribute (e.g., encryption and authentication for the security quality attribute, logging for the
usability quality attribute). (6) Quality attributes are characterized to identify their design and implementation variants
and how the different configurations influence both energy efficiency and performance. (7) A usage model for each
characterized quality attribute is defined. (8) The variability of quality attributes, as well as the energy efficiency and
performance experiment results, are represented as a constraint satisfaction problem with the goal of formally reasoning
about it. (9) Then, a configuration of the selected functional quality attributes is automatically generated, which is
optimum with respect to a selected objective function. (10) Software developers can improve the energy efficiency
and/or performance of their applications by using our approach to perform a richer analysis of the energy consumption
and performance of different alternatives for functional quality attributes. (11) We show quantitative values of the
benefits of using our approach and discuss the threats to validity. (12) The process presented in this paper will help
software developers to build more energy efficient software, whilst also being aware of how their decisions affect other
quality attributes, such as performance.
Abstract 8: What skills do IT companies look for in new developers? A study with Stack Overflow jobs
(1) There is a growing demand for information on how IT companies look for candidates to their open
positions. (2) This paper investigates which hard and soft skills are more required in IT companies by analyzing
the description of 20,000 job opportunities. (3) We applied open card sorting to perform a high-level analysis
on which types of hard skills are more requested. (4) Further, we manually analyzed the most mentioned soft
skills. (5) Programming languages are the most demanded hard skills. (6) Communication, collaboration, and
problem-solving are the most demanded soft skills. (7) We recommend developers to organize their resum´e
according to the positions they are applying. (8) We also highlight the importance of soft skills, as they appear
in many job opportunities.
(1) Exploiting software development related data from software-development intensive organizations to
support tactical and strategic decision making is a challenge. (2) Combining data-driven approaches with
expert knowledge has been highlighted as a sensible approach for leading software-development intensive
organizations to rightful decision-making improvements. (3) However, most of the existing proposals lack of
important aspects that hinders their industrial uptake such as: customization guidelines to fit the proposals to
other contexts and/or automatic or semi-automatic data collection support for putting them forward in a real
organization. (4) As a result, existing proposals are rarely used in the industrial context. (5) Support software-
development intensive organizations with guidance and tools for exploiting software development related data
and expert knowledge to improve their decision making. (6) We have developed a novel method called SESSI
(Specification and Estimation of Software Strategic Indicators) that was articulated from industrial experiences
with Nokia, Bittium, Softeam and iTTi in the context of Q-Rapids European project following a design science
approach. (7) As part of the industrial summative evaluation, we performed the first case study focused on the
application of the method. (8) We detail the phases and steps of the SESSI method and illustrate its application
in the development of ModelioNG, a software product of Modeliosoft development firm. (9) The application
of the SESSI method in the context of ModelioNG case study has provided us with useful feedback to improve
the method and has evidenced that applying the method was feasible in this context.
Abstract 10: Case Study Research in Software Engineering—It is a Case, and it is a Study, but is it a
Case Study?
(1) Case studies are regularly published in the software engineering literature, and guidelines for conducting
case studies are available. (2) Based on a perception that the label ‘‘case study’’ is assigned to studies that are
not case studies, an investigation has been conducted. (3) The aim was to investigate whether or not the label
‘‘case study’’ is correctly used in software engineering research. (4) To address the objective, 100 recent articles
found through Scopus when searching for case studies in software engineering have been investigated and
classified. (5) Unfortunately, the perception of misuse of the label ‘‘case study’’ is correct. (6) Close to 50% of
the articles investigated were judged as not being case studies according to the definition of a case study. (7)
We either need to ensure correct use of the label ‘‘case study’’, or we need another label for its definition. (8)
Given that ‘‘case study’’ is a well-established label, it is probably impossible to change the label. (9) Thus, we
introduce an alternative definition of case study emphasising its real-life context, and urge researchers to
carefully follow the definition of different research methods when presenting their research.