16 research outputs found
Knitting music and programming: Reflections on the frontiers of source code analysis
Source Code Analysis and Manipulation (SCAM) underpins virtually every operational software system. Despite the impact and ubiquity of SCAM principles and techniques in software engineering, there are still frontiers to be explored. Looking "inward" to existing techniques, one finds frontiers of performance, efficiency, accuracy, and usability, looking "outward" one finds new languages, new problems, and thus new approaches. This paper presents a reflective framework for characterizing source languages and domains. It draws on current research projects in music program analysis, musical score processing, and machine knitting to identify new frontiers for SCAM. The paper also identifies opportunities for SCAM to inspire, and be inspired by, problems and techniques in other domains
Genetic Improvement of Software: a Comprehensive Survey
Genetic improvement (GI) uses automated search to find improved versions of existing software. We present a comprehensive survey of this nascent field of research with a focus on the core papers in the area published between 1995 and 2015. We identified core publications including empirical studies, 96% of which use evolutionary algorithms (genetic programming in particular). Although we can trace the foundations of GI back to the origins of computer science itself, our analysis reveals a significant upsurge in activity since 2012. GI has resulted in dramatic performance improvements for a diverse set of properties such as execution time, energy and memory consumption, as well as results for fixing and extending existing system functionality. Moreover, we present examples of research work that lies on the boundary between GI and other areas, such as program transformation, approximate computing, and software repair, with the intention of encouraging further exchange of ideas between researchers in these fields
Achievements, Open Problems and Challenges for Search Based Software Testing
testing as an optimisation problem, which can be attacked using computational search techniques from the field of Search Based Software Engineering (SBSE). We present an analysis of the SBST research agenda1, focusing on the open problems and chal-lenges of testing non-functional properties, in particular a topic we call ‘Search Based Energy Testing ’ (SBET), Multi-objective SBST and SBST for Test Strategy Identification. We conclude with a vision of FIFIVERIFY tools, which would automatically find faults, fix them and verify the fixes. We explain why we think such FIFIVERIFY tools constitute an exciting challenge for the SBSE community that already could be within its reach. I
Efficient Extension of a Software Analysis Framework to Additional Languages
In the current era of software development, multi-language codebases are common, and change propagation in these codebases is challenging. The existing change propagation tool ModCP is a solution that can assist software developers with propagating changes across several languages, but only one at a time. However, ModCP has some architectural problems in that make supporting new languages hard to develop and maintain for a long time. In addition, supporting change propagation across code snippets consisting of a programming language embedded inside a different programming language would be a useful feature for ModCP. To achieve this, we must detect the embedded code snippets in a code being analyzed by ModCP. In this thesis, we develop a new, more efficient architecture for ModCP, involving a single abstract model that each language extends for its usage, resulting in complete isolation between language results. We compare our approach with a baseline version that uses the same, concrete model for all languages and adds new models when necessary. Our approach reduces code complexity and development time and makes code more compatible with best practices of development compared to the baseline. Moreover, we design a system for ModCP to guess and validate the programming language used in code snippets, based on the initial detection of keywords, as input to execute change propagation for multi-language codes embedded inside each other. We compare our keyword detection approach with existing deep learning and brute force approaches and show that our method is the best choice if accuracy, performance, and scalability are needed simultaneously
IDENTIFICATION AND QUANTIFICATION OF VARIABILITY MEASURES AFFECTING CODE REUSABILITY IN OPEN SOURCE ENVIRONMENT
Open source software (OSS) is one of the emerging areas in software engineering, and
is gaining the interest of the software development community. OSS was started as a
movement, and for many years software developers contributed to it as their hobby
(non commercial purpose). Now, OSS components are being reused in CBSD
(commercial purpose). However, recently, the use of OSS in SPL is envisioned
recently by software engineering researchers, thus bringing it into a new arena. Being
an emerging research area, it demands exploratory study to explore the dimensions of
this phenomenon. Furthermore, there is a need to assess the reusability of OSS which
is the focal point of these disciplines (CBSE, SPL, and OSS). In this research, a mixed
method based approach is employed which is specifically 'partially mixed sequential
dominant study'. It involves both qualitative (interviews) and quantitative phases
(survey and experiment). During the qualitative phase seven respondents were
involved, sample size of survey was 396, and three experiments were conducted. The
main contribution of this study is results of exploration of the phenomenon 'reuse of
OSS in reuse intensive software development'. The findings include 7 categories and
39 dimensions. One of the dimension factors affecting reusability was carried to the
quantitative phase (survey and experiment). On basis of the findings, proposal for
reusability attribute model was presented at class and package level. Variability is one
of the newly identified attribute of reusability. A comprehensive theoretical analysis
of variability implementation mechanisms is conducted to propose metrics for its
assessment. The reusability attribute model is validated by statistical analysis of I 03
classes and 77 packages. An evolutionary reusability analysis of two open source
software was conducted, where different versions of software are analyzed for their
reusability. The results show a positive correlation between variability and reusability
at package level and validate the other identified attributes. The results would be
helpful to conduct further studies in this area
On data-driven systems analyzing, supporting and enhancing users’ interaction and experience
[EN]The research areas of Human-Computer Interaction and Software Architectures have
been traditionally treated separately, but in the literature, many authors made efforts to
merge them to build better software systems. One of the common gaps between software
engineering and usability is the lack of strategies to apply usability principles in the initial
design of software architectures. Including these principles since the early phases of software
design would help to avoid later architectural changes to include user experience
requirements. The combination of both fields (software architectures and Human-Computer
Interaction) would contribute to building better interactive software that should include the
best from both the systems and user-centered designs. In that combination, the software
architectures should enclose the fundamental structure and ideas of the system to offer the
desired quality based on sound design decisions.
Moreover, the information kept within a system is an opportunity to extract knowledge
about the system itself, its components, the software included, the users or the interaction
occurring inside. The knowledge gained from the information generated in a software
environment can be used to improve the system itself, its software, the users’ experience, and
the results. So, the combination of the areas of Knowledge Discovery and Human-Computer
Interaction offers ideal conditions to address Human-Computer-Interaction-related
challenges. The Human-Computer Interaction focuses on human intelligence, the Knowledge
Discovery in computational intelligence, and the combination of both can raise the support
of human intelligence with machine intelligence to discover new insights in a world crowded
of data.
This Ph.D. Thesis deals with these kinds of challenges: how approaches like data-driven
software architectures (using Knowledge Discovery techniques) can help to improve the users'
interaction and experience within an interactive system. Specifically, it deals with how to
improve the human-computer interaction processes of different kind of stakeholders to
improve different aspects such as the user experience or the easiness to accomplish a specific
task.
Several research actions and experiments support this investigation. These research
actions included performing a systematic literature review and mapping of the literature that
was aimed at finding how the software architectures in the literature have been used to
support, analyze or enhance the human-computer interaction. Also, the actions included work
on four different research scenarios that presented common challenges in the Human-
Computer Interaction knowledge area. The case studies that fit into the scenarios selected
were chosen based on the Human-Computer Interaction challenges they present, and on the
authors’ accessibility to them. The four case studies were: an educational laboratory virtual world, a Massive Open Online Course and the social networks where the students discuss
and learn, a system that includes very large web forms, and an environment where
programmers develop code in the context of quantum computing. The development of the
experiences involved the review of more than 2700 papers (only in the literature review
phase), the analysis of the interaction of 6000 users in four different contexts or the analysis
of 500,000 quantum computing programs.
As outcomes from the experiences, some solutions are presented regarding the minimal
software artifacts to include in software architectures, the behavior they should exhibit, the
features desired in the extended software architecture, some analytic workflows and
approaches to use, or the different kinds of feedback needed to reinforce the users’ interaction
and experience.
The results achieved led to the conclusion that, despite this is not a standard practice in
the literature, the software environments should embrace Knowledge Discovery and datadriven
principles to analyze and respond appropriately to the users’ needs and improve or
support the interaction. To adopt Knowledge Discovery and data-driven principles, the
software environments need to extend their software architectures to cover also the challenges
related to Human-Computer Interaction. Finally, to tackle the current challenges related to
the users’ interaction and experience and aiming to automate the software response to users’
actions, desires, and behaviors, the interactive systems should also include intelligent
behaviors through embracing the Artificial Intelligence procedures and techniques
On Data-driven systems analyzing, supporting and enhancing users’ interaction and experience
Tesis doctoral en inglés y resumen extendido en español[EN] The research areas of Human-Computer Interaction and Software Architectures have been traditionally treated separately, but in the literature, many authors made efforts to merge them to build better software systems. One of the common gaps between software engineering and usability is the lack of strategies to apply usability principles in the initial design of software architectures. Including these principles since the early phases of software design would help to avoid later architectural changes to include user experience requirements. The combination of both fields (software architectures and Human-Computer Interaction) would contribute to building better interactive software that should include the best from both the systems and user-centered designs. In that combination, the software architectures should enclose the fundamental structure and ideas of the system to offer the desired quality based on sound design decisions.
Moreover, the information kept within a system is an opportunity to extract knowledge about the system itself, its components, the software included, the users or the interaction occurring inside. The knowledge gained from the information generated in a software environment can be used to improve the system itself, its software, the users’ experience, and the results. So, the combination of the areas of Knowledge Discovery and Human-Computer Interaction offers ideal conditions to address Human-Computer-Interaction-related challenges. The Human-Computer Interaction focuses on human intelligence, the Knowledge Discovery in computational intelligence, and the combination of both can raise the support of human intelligence with machine intelligence to discover new insights in a world crowded of data.
This Ph.D. Thesis deals with these kinds of challenges: how approaches like data-driven software architectures (using Knowledge Discovery techniques) can help to improve the users' interaction and experience within an interactive system. Specifically, it deals with how to improve the human-computer interaction processes of different kind of stakeholders to improve different aspects such as the user experience or the easiness to accomplish a specific task.
Several research actions and experiments support this investigation. These research actions included performing a systematic literature review and mapping of the literature that was aimed at finding how the software architectures in the literature have been used to support, analyze or enhance the human-computer interaction. Also, the actions included work on four different research scenarios that presented common challenges in the Human-Computer Interaction knowledge area. The case studies that fit into the scenarios selected were chosen based on the Human-Computer Interaction challenges they present, and on the authors’ accessibility to them. The four case studies were: an educational laboratory virtual world, a Massive Open Online Course and the social networks where the students discuss and learn, a system that includes very large web forms, and an environment where programmers develop code in the context of quantum computing. The development of the experiences involved the review of more than 2700 papers (only in the literature review phase), the analysis of the interaction of 6000 users in four different contexts or the analysis of 500,000 quantum computing programs.
As outcomes from the experiences, some solutions are presented regarding the minimal software artifacts to include in software architectures, the behavior they should exhibit, the features desired in the extended software architecture, some analytic workflows and approaches to use, or the different kinds of feedback needed to reinforce the users’ interaction and experience.
The results achieved led to the conclusion that, despite this is not a standard practice in the literature, the software environments should embrace Knowledge Discovery and data-driven principles to analyze and respond appropriately to the users’ needs and improve or support the interaction. To adopt Knowledge Discovery and data-driven principles, the software environments need to extend their software architectures to cover also the challenges related to Human-Computer Interaction. Finally, to tackle the current challenges related to the users’ interaction and experience and aiming to automate the software response to users’ actions, desires, and behaviors, the interactive systems should also include intelligent behaviors through embracing the Artificial Intelligence procedures and techniques