PeerJ Computer Science Preprints: Software Engineeringhttps://peerj.com/preprints/index.atom?journal=cs&subject=11930Software Engineering articles published in PeerJ Computer Science PreprintsAffiliated participation in open source communitieshttps://peerj.com/preprints/278272019-06-272019-06-27Adam AlamiAndrzej Wasowski
Background: The adoption of Free/Libre and Open Source Software (FOSS) by institutions is significantly increasing, and so is the affiliated participation (the participation of industry engineers in open source communities as part of their jobs). Aims: This study is an investigation into affiliated participation in FOSS communities. So far, little is known about the affiliated participation and the forces that influence it, even though the FOSS innovation model is increasingly becoming a serious contender for the private investment model in many sectors. Method: We present a qualitative inquiry into affiliated participation in the Robot Operating System (ROS) and Linux Kernel communities, using twenty-one in-depth interviews and participatory observation data from twenty-nine community events. Results: Our results show that affiliated participation in these communities is constrained by several barriers: objections of senior management, protection of the company’s image, protection of intellectual property, undefined processes and policies, the high cost of participation, and unfamiliarity with the FOSS system. Conclusions: These barriers should be addressed in any organization considering using FOSS as a significant acquisition, distribution, and development strategy.
Background: The adoption of Free/Libre and Open Source Software (FOSS) by institutions is significantly increasing, and so is the affiliated participation (the participation of industry engineers in open source communities as part of their jobs). Aims: This study is an investigation into affiliated participation in FOSS communities. So far, little is known about the affiliated participation and the forces that influence it, even though the FOSS innovation model is increasingly becoming a serious contender for the private investment model in many sectors. Method: We present a qualitative inquiry into affiliated participation in the Robot Operating System (ROS) and Linux Kernel communities, using twenty-one in-depth interviews and participatory observation data from twenty-nine community events. Results: Our results show that affiliated participation in these communities is constrained by several barriers: objections of senior management, protection of the company’s image, protection of intellectual property, undefined processes and policies, the high cost of participation, and unfamiliarity with the FOSS system. Conclusions: These barriers should be addressed in any organization considering using FOSS as a significant acquisition, distribution, and development strategy.How to kill them all: an exploratory study on the impact of code observability on mutation testinghttps://peerj.com/preprints/277942019-06-112019-06-11Qianqian ZhuAndy ZaidmanAnnibale Panichella
Mutation testing has been well-known for its efficacy to assess test quality, and recently it has started to be applied in the industry as well. However, what should a developer do when confronted with a low mutation score? Should the test suite be reinforced to increase the mutation score, or should the production code be improved as well, to make the creation of better tests possible? In this paper, we investigate whether testability and observability metrics are correlated with the mutation score on six open source Java projects. We observe a correlation between observability metrics and the mutation score, e.g., test directness seems to be an essential factor. Based on our insights from the correlation study, we propose a number of "mutation score anti-patterns", which enable software engineers to refactor their existing code to be able to improve the mutation score. In doing so, we observe that relatively simple refactoring operations enable an improvement in the mutation score.
Mutation testing has been well-known for its efficacy to assess test quality, and recently it has started to be applied in the industry as well. However, what should a developer do when confronted with a low mutation score? Should the test suite be reinforced to increase the mutation score, or should the production code be improved as well, to make the creation of better tests possible? In this paper, we investigate whether testability and observability metrics are correlated with the mutation score on six open source Java projects. We observe a correlation between observability metrics and the mutation score, e.g., test directness seems to be an essential factor. Based on our insights from the correlation study, we propose a number of "mutation score anti-patterns", which enable software engineers to refactor their existing code to be able to improve the mutation score. In doing so, we observe that relatively simple refactoring operations enable an improvement in the mutation score.A research institution framework for publishing open code to enable reproducible sciencehttps://peerj.com/preprints/277622019-05-282019-05-28Thomas R EtheringtonBen JollyJan ZörnerNick Spencer
Reproducible science is greatly aided by open publishing of scientific computer code. There are also many institutional benefits for encouraging the publication of scientific code, but there are also institutional considerations around intellectual property and risk. We discuss questions around scientific code publishing from the perspective of a research organisation asking: who will be involved, how should code be licensed, where should code be published, how to get credit, what standards, and what costs? In reviewing advice and evidence relevant to these questions we propose a research institution framework for publishing open scientific code to enable reproducible science.
Reproducible science is greatly aided by open publishing of scientific computer code. There are also many institutional benefits for encouraging the publication of scientific code, but there are also institutional considerations around intellectual property and risk. We discuss questions around scientific code publishing from the perspective of a research organisation asking: who will be involved, how should code be licensed, where should code be published, how to get credit, what standards, and what costs? In reviewing advice and evidence relevant to these questions we propose a research institution framework for publishing open scientific code to enable reproducible science.An architecture for context-aware reactive systems based on run-time semantic modelshttps://peerj.com/preprints/277022019-05-042019-05-04Ester GiallonardoFrancesco PoggiDavide RossiEugenio Zimeo
In recent years, new classes of highly dynamic, complex systems are gaining momentum. These systems are characterized by the need to express behaviors driven by external and/or internal changes, i.e. they are reactive and context-aware. These classes include, but are not limited to IoT, smart cities, cyber-physical systems and sensor networks.
An important design feature of these systems should be the ability of adapting their behavior to environment changes. This requires handling a runtime representation of the context enriched with variation points that relate different behaviors to possible changes of the representation.
In this paper, we present a reference architecture for reactive, context-aware systems able to handle contextual knowledge (that defines what the system perceives) by means of virtual sensors and able to react to environment changes by means of virtual actuators, both represented in a declarative manner through semantic web technologies. To improve the ability to react with a proper behavior to context changes (e.g. faults) that may influence the ability of the system to observe the environment, we allow the definition of logical sensors and actuators through an extension of the SSN ontology (a W3C standard). In our reference architecture a knowledge base of sensors and actuators (hosted by an RDF triple store) is bound to real world by grounding semantic elements to physical devices via REST APIs.
The proposed architecture along with the defined ontology try to address the main problems of dynamically reconfigurable systems by exploiting a declarative, queryable approach to enable runtime reconfiguration with the help of (a) semantics to support discovery in heterogeneous environment, (b) composition logic to define alternative behaviors for variation points, (c) bi-causal connection life-cycle to avoid dangling links with the external environment. The proposal is validated in a case study aimed at designing an edge node for smart buildings dedicated to cultural heritage preservation.
In recent years, new classes of highly dynamic, complex systems are gaining momentum. These systems are characterized by the need to express behaviors driven by external and/or internal changes, i.e. they are reactive and context-aware. These classes include, but are not limited to IoT, smart cities, cyber-physical systems and sensor networks.An important design feature of these systems should be the ability of adapting their behavior to environment changes. This requires handling a runtime representation of the context enriched with variation points that relate different behaviors to possible changes of the representation.In this paper, we present a reference architecture for reactive, context-aware systems able to handle contextual knowledge (that defines what the system perceives) by means of virtual sensors and able to react to environment changes by means of virtual actuators, both represented in a declarative manner through semantic web technologies. To improve the ability to react with a proper behavior to context changes (e.g. faults) that may influence the ability of the system to observe the environment, we allow the definition of logical sensors and actuators through an extension of the SSN ontology (a W3C standard). In our reference architecture a knowledge base of sensors and actuators (hosted by an RDF triple store) is bound to real world by grounding semantic elements to physical devices via REST APIs.The proposed architecture along with the defined ontology try to address the main problems of dynamically reconfigurable systems by exploiting a declarative, queryable approach to enable runtime reconfiguration with the help of (a) semantics to support discovery in heterogeneous environment, (b) composition logic to define alternative behaviors for variation points, (c) bi-causal connection life-cycle to avoid dangling links with the external environment. The proposal is validated in a case study aimed at designing an edge node for smart buildings dedicated to cultural heritage preservation.Reverse engineering approach for improving the quality of mobile applicationshttps://peerj.com/preprints/276332019-04-042019-04-04Eman K. ElsayedKamal A. ElDahshanEnas E. El-SharawyNaglaa E. Ghannam
Background: Portable applications (Android applications) are becoming increasingly complicated by mind-boggling programming frameworks. Applications must be produced rapidly and advance persistently in order to fit new client requirements and execution settings. However, catering to these imperatives may bring about poor outline decisions on design choices, known as anti-patterns, which may possibly corrupt programming quality and execution. Thus, the automatic detection of anti-patterns is a vital process that facilitates both maintenance and evolution tasks. Additionally, it guides developers to refactor their applications and consequently enhance their quality.
Methods: We propose a reverse-engineering approach to analyze Android applications and detect the anti-patterns from mobile apps. We validate the effectiveness of our approach on a set of popular mobile apps such as YouTube, Whats App, Play Store and Twitter. The result of our approach produced an Android app with fewer anti-patterns, leading the way for perfect long-time apps and ensuring that these applications are purely valid.
Results: The proposed method is a general detection method. It detected a set of semantic and structural design anti-patterns which have appeared 1262 times in mobile apps. The results showed that there was a correlation between the anti-patterns detected by an ontology editor and OntoUML editor. The results also showed that using ontology increases the detection percentage approximately 11.3%, guarantees consistency and decreases accuracy of anti-patterns in the new ontology.
Background: Portable applications (Android applications) are becoming increasingly complicated by mind-boggling programming frameworks. Applications must be produced rapidly and advance persistently in order to fit new client requirements and execution settings. However, catering to these imperatives may bring about poor outline decisions on design choices, known as anti-patterns, which may possibly corrupt programming quality and execution. Thus, the automatic detection of anti-patterns is a vital process that facilitates both maintenance and evolution tasks. Additionally, it guides developers to refactor their applications and consequently enhance their quality.Methods: We propose a reverse-engineering approach to analyze Android applications and detect the anti-patterns from mobile apps. We validate the effectiveness of our approach on a set of popular mobile apps such as YouTube, Whats App, Play Store and Twitter. The result of our approach produced an Android app with fewer anti-patterns, leading the way for perfect long-time apps and ensuring that these applications are purely valid.Results: The proposed method is a general detection method. It detected a set of semantic and structural design anti-patterns which have appeared 1262 times in mobile apps. The results showed that there was a correlation between the anti-patterns detected by an ontology editor and OntoUML editor. The results also showed that using ontology increases the detection percentage approximately 11.3%, guarantees consistency and decreases accuracy of anti-patterns in the new ontology.Component-oriented acausal modeling of the dynamical systems in Python language on the example of the model of the sucker rod stringhttps://peerj.com/preprints/276122019-03-222019-03-22Volodymyr B KopeiOleh R OnyskoVitalii G Panchuk
As a rule, the limitations of specialized modeling languages for acausal modeling of the complex dynamical systems are: limited applicability, poor interoperability with the third party software packages, the high cost of learning, the complexity of the implementation of hybrid modeling and modeling systems with the variable structure, the complexity of the modifications and improvements. In order to solve these problems, it is proposed to develop the easy-to-understand and to modify component-oriented acausal hybrid modeling system that is based on: (1) the general-purpose programming language Python, (2) the description of components by Python classes, (3) the description of components behavior by difference equations using declarative tools SymPy, (4) the event generation using Python imperative constructs, (5) composing and solving the system of algebraic equations in each discrete time point of the simulation. The classes that allow creating the models in Python without the need to study and apply specialized modeling languages are developed. These classes can also be used to automate the construction of the system of difference equations, describing the behavior of the model in a symbolic form. The basic set of mechanical components is developed — 1D translational components "mass", "spring-damper", "force". Using these components, the models of sucker rods string are developed and simulated. These simulation results are compared with the simulation results in Modelica language. The replacement of differential equations by difference equations allow simplifying the implementation of the hybrid modeling and the requirements for the modules for symbolic mathematics and for solving equations.
As a rule, the limitations of specialized modeling languages for acausal modeling of the complex dynamical systems are: limited applicability, poor interoperability with the third party software packages, the high cost of learning, the complexity of the implementation of hybrid modeling and modeling systems with the variable structure, the complexity of the modifications and improvements. In order to solve these problems, it is proposed to develop the easy-to-understand and to modify component-oriented acausal hybrid modeling system that is based on: (1) the general-purpose programming language Python, (2) the description of components by Python classes, (3) the description of components behavior by difference equations using declarative tools SymPy, (4) the event generation using Python imperative constructs, (5) composing and solving the system of algebraic equations in each discrete time point of the simulation. The classes that allow creating the models in Python without the need to study and apply specialized modeling languages are developed. These classes can also be used to automate the construction of the system of difference equations, describing the behavior of the model in a symbolic form. The basic set of mechanical components is developed — 1D translational components "mass", "spring-damper", "force". Using these components, the models of sucker rods string are developed and simulated. These simulation results are compared with the simulation results in Modelica language. The replacement of differential equations by difference equations allow simplifying the implementation of the hybrid modeling and the requirements for the modules for symbolic mathematics and for solving equations.How systematic reviews cover practitioners' issues: A study on Stack Exchange communitieshttps://peerj.com/preprints/276102019-03-222019-03-22Bruno CartaxoGustavo PintoFernando KameiDanilo MonteiroFabio QuedaSergio Soares
Context: One of the goals of Evidence-Based Software Engineering is to leverage evidence from research to practice. However, some studies suggest this goal has not being fully accomplished.
Objective: This paper proposes a strategy to assess how systematic reviews cover practitioners' issues in software engineering.
Method: We selected 24 systematic reviews identified by a comprehensive tertiary study. Using search strings of the selected systematic reviews, we queried most relevant practitioners' issues on five active Stack Exchange communities, a professional and high-quality Question & Answer platform. After examining more than 1,800 issues, we investigated how findings of the selected systematic reviews could help to solve (i.e. cover) practitioners' issues.
Results: After excluding false positives and duplicates, a total of 424 issues were considered related to the selected systematic reviews. This number corresponds to 1.75% of the 26,687 most relevant issues on the five Stack Exchange communities. Among these 424 issues, systematic reviews can successfully cover 14.1% (60) of them. Based on a qualitative analysis, we identified 45 recurrent issues spread in many software engineering areas. The most demanded topic is related to agile software development, with 15 recurrent issues identified and 127 practitioners' issues as a whole.
Conclusions: An overall coverage rate of 14.1% reveals a good opportunity for conducting systematic reviews in software engineering to fill the gap of not covered issues. We also observed practitioners explicitly demanding for scientific empirical evidence, rich in context and oriented to specific target audiences. Finally, we also provided guidelines for researchers who want to conduct systematic reviews more connected with software engineering practice.
Context: One of the goals of Evidence-Based Software Engineering is to leverage evidence from research to practice. However, some studies suggest this goal has not being fully accomplished.Objective: This paper proposes a strategy to assess how systematic reviews cover practitioners' issues in software engineering.Method: We selected 24 systematic reviews identified by a comprehensive tertiary study. Using search strings of the selected systematic reviews, we queried most relevant practitioners' issues on five active Stack Exchange communities, a professional and high-quality Question & Answer platform. After examining more than 1,800 issues, we investigated how findings of the selected systematic reviews could help to solve (i.e. cover) practitioners' issues.Results: After excluding false positives and duplicates, a total of 424 issues were considered related to the selected systematic reviews. This number corresponds to 1.75% of the 26,687 most relevant issues on the five Stack Exchange communities. Among these 424 issues, systematic reviews can successfully cover 14.1% (60) of them. Based on a qualitative analysis, we identified 45 recurrent issues spread in many software engineering areas. The most demanded topic is related to agile software development, with 15 recurrent issues identified and 127 practitioners' issues as a whole.Conclusions: An overall coverage rate of 14.1% reveals a good opportunity for conducting systematic reviews in software engineering to fill the gap of not covered issues. We also observed practitioners explicitly demanding for scientific empirical evidence, rich in context and oriented to specific target audiences. Finally, we also provided guidelines for researchers who want to conduct systematic reviews more connected with software engineering practice.SEO: A unique approach to enhance the site rank by implementing Efficient Keywords Schemehttps://peerj.com/preprints/276092019-03-222019-03-22Khalil ur RehmanAnaa YasinTariq MahmoodMuhammad AzeemSaqib Ali
In search engine optimization individual website pages are optimized through precise keywords, while the websites are optimized using back link watch. The existing literature has no proper guideline for keywords selection and back link generation. In this research, we proposed a model for making back link watch generation and the selection of keywords through precise research analysis. The information on webpages consist of specific keywords while the website traffic is monitored through referrals. we concluded that during the development of Page Content, and architecture, if selected keywords are used in Title, Headings and Meta Tag then the page result is higher in search results. Moreover, for the back-link generation use a shorter volume of URL that monitor the complete traffic of a site can be placed on trusted location which increase the ranks of a site. Proposed model has been validated by comparing quantitative data of website rank taken before and after implementation of framework. Results revealed that overall increase gained in site rank by applying the proposed model was 40%.
In search engine optimization individual website pages are optimized through precise keywords, while the websites are optimized using back link watch. The existing literature has no proper guideline for keywords selection and back link generation. In this research, we proposed a model for making back link watch generation and the selection of keywords through precise research analysis. The information on webpages consist of specific keywords while the website traffic is monitored through referrals. we concluded that during the development of Page Content, and architecture, if selected keywords are used in Title, Headings and Meta Tag then the page result is higher in search results. Moreover, for the back-link generation use a shorter volume of URL that monitor the complete traffic of a site can be placed on trusted location which increase the ranks of a site. Proposed model has been validated by comparing quantitative data of website rank taken before and after implementation of framework. Results revealed that overall increase gained in site rank by applying the proposed model was 40%.Event-driven industrial robot control architecture for the Adept V+ platformhttps://peerj.com/preprints/275522019-02-272019-02-27Oleksandr SemeniutaPetter Falkman
Modern industrial robotic systems are highly interconnected. They operate in a distributed environment and communicate with sensors, computer vision systems, mechatronic devices, and computational components. On the fundamental level, communication and coordination between all parties in such distributed system are characterized by discrete event behavior. The latter is largely attributed to the specifics of communication over the network, which, in terms, facilitates asynchronous programming and explicit event handling. In addition, on the conceptual level, events are an important building block for realizing reactivity and coordination. Event-driven architecture has manifested its effectiveness for building loosely-coupled systems based on publish-subscribe middleware, either general-purpose or robotic-oriented. Despite all the advances in middleware, industrial robots remain difficult to program in context of distributed systems, to a large extent due to the limitation of the native robot platforms. This paper proposes an architecture for flexible event-based control of industrial robots based on the Adept V+ platform. The architecture is based on the robot controller providing a TCP/IP server and a collection of robot skills, and a high-level control module deployed to a dedicated computing device. The control module possesses bidirectional communication with the robot controller and publish/subscribe messaging with external systems. It is programmed in asynchronous style using pyadept, a Python library based on Python coroutines, AsyncIO event loop and ZeroMQ middleware. The proposed solution facilitates integration of Adept robots into distributed environments and building more flexible robotic solutions with event-based logic.
Modern industrial robotic systems are highly interconnected. They operate in a distributed environment and communicate with sensors, computer vision systems, mechatronic devices, and computational components. On the fundamental level, communication and coordination between all parties in such distributed system are characterized by discrete event behavior. The latter is largely attributed to the specifics of communication over the network, which, in terms, facilitates asynchronous programming and explicit event handling. In addition, on the conceptual level, events are an important building block for realizing reactivity and coordination. Event-driven architecture has manifested its effectiveness for building loosely-coupled systems based on publish-subscribe middleware, either general-purpose or robotic-oriented. Despite all the advances in middleware, industrial robots remain difficult to program in context of distributed systems, to a large extent due to the limitation of the native robot platforms. This paper proposes an architecture for flexible event-based control of industrial robots based on the Adept V+ platform. The architecture is based on the robot controller providing a TCP/IP server and a collection of robot skills, and a high-level control module deployed to a dedicated computing device. The control module possesses bidirectional communication with the robot controller and publish/subscribe messaging with external systems. It is programmed in asynchronous style using pyadept, a Python library based on Python coroutines, AsyncIO event loop and ZeroMQ middleware. The proposed solution facilitates integration of Adept robots into distributed environments and building more flexible robotic solutions with event-based logic.For and against PEGs: Why we need multi-ordered grammarshttps://peerj.com/preprints/273582019-02-182019-02-18Nick Papoulias
Since their introduction in 2004, Parsing Expression Grammars (PEGs for short) have been gaining widespread adoption both in industry and academia. More than 400 subsequent works cite B. Ford's original paper, while a total of 29 implementations in 14 different programming languages are reported in active use. Nevertheless reviewing PEG-related bibliography reveals that the original argumentation in favor of PEGs has actually been weakened by subsequent work, regarding basic parsing features such as (a) recursion handling and (b) associativity support. To this day all proposed enhancements either address these issues in isolation or in implementation specific ways. It is still unclear if there is a single way to parse PEGs without facing these issues or introducing implementation directives external to the formalism. Our subsequent analysis takes us a step further, questioning the very core of the initial PEG proposal: (c) by design unambiguous grammars. We then discuss why a form of ordered choice and conditional operators that PEGs advocate are worth saving, but only within a wider synthesis that could address the aforementioned issues. To this end we present our on-going effort with the Gray algorithm and MOGs (Multi-Ordered Grammars), a possible alternative to the PEG and CFG formalisms.
Since their introduction in 2004, Parsing Expression Grammars (PEGs for short) have been gaining widespread adoption both in industry and academia. More than 400 subsequent works cite B. Ford's original paper, while a total of 29 implementations in 14 different programming languages are reported in active use. Nevertheless reviewing PEG-related bibliography reveals that the original argumentation in favor of PEGs has actually been weakened by subsequent work, regarding basic parsing features such as (a) recursion handling and (b) associativity support. To this day all proposed enhancements either address these issues in isolation or in implementation specific ways. It is still unclear if there is a single way to parse PEGs without facing these issues or introducing implementation directives external to the formalism. Our subsequent analysis takes us a step further, questioning the very core of the initial PEG proposal: (c) by design unambiguous grammars. We then discuss why a form of ordered choice and conditional operators that PEGs advocate are worth saving, but only within a wider synthesis that could address the aforementioned issues. To this end we present our on-going effort with the Gray algorithm and MOGs (Multi-Ordered Grammars), a possible alternative to the PEG and CFG formalisms.