TL;DR: A new open-source software tool, SciMAT, which performs science mapping analysis within a longitudinal framework that provides different modules that help the analyst to carry out all the steps of the science mapping workflow.
TL;DR: A toolset for automatic testing and fault localization, dubbed GZoltar, which hosts techniques for (regression) test suite minimization and automatic fault diagnosis (namely, spectrum-based fault localization).
Abstract: Testing and debugging is the most expensive, error-prone phase in the software development life cycle. Automated testing and diagnosis of software faults can drastically improve the efficiency of this phase, this way improving the overall quality of the software. In this paper we present a toolset for automatic testing and fault localization, dubbed GZoltar, which hosts techniques for (regression) test suite minimization and automatic fault diagnosis (namely, spectrum-based fault localization). The toolset provides the infrastructure to automatically instrument the source code of software programs to produce runtime data. Subsequently the data was analyzed to both minimize the test suite and return a ranked list of diagnosis candidates. The toolset is a plug-and-play plug-in for the Eclipse IDE to ease world-wide adoption.
TL;DR: This comparative summarizes the steps an organization would have to go through in order to make the best possible choice when selecting the right software development life cycle (SDLC).
Abstract: Organizations that are developing software solution are faced with the difficult choice of picking the right software development life cycle (SDLC). The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases. The V-model represents a software development process which may be considered an extension of the waterfall model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape Agile Modeling is a practice-based methodology for modelling and documentation of software-based systems. It is intended to be a collection of values, principles, and practices for modelling software that can be applied on a software development project in a more flexible manner than traditional Modelling methods. This comparative summarizes the steps an organization would have to go through in order to make the best possible choice.
TL;DR: A literature survey and attribute-based bibliography of the current state of the art in robotic middleware design is presented to assist roboticmiddleware researchers in evaluating the strengths and weaknesses of current approaches and their appropriateness for their applications.
Abstract: Autonomous robots are complex systems that require the interaction between numerous heterogeneous
components (software and hardware). Because of the increase in complexity of robotic
applications and the diverse range of hardware, robotic middleware is designed to manage the
complexity and heterogeneity of the hardware and applications, promote the integration of new
technologies, simplify software design, hide the complexity of low-level communication and the
sensor heterogeneity of the sensors, improve software quality, reuse robotic software infrastructure
across multiple research efforts, and to reduce production costs. This paper presents a literature
survey and attribute-based bibliography of the current state of the art in robotic middleware design.
The main aim of the survey is to assist robotic middleware researchers in evaluating the
strengths and weaknesses of current approaches and their appropriateness for their applications.
Furthermore, we provide a comprehensive set of appropriate bibliographic references that are classified
based on middleware attributes.
TL;DR: This work shows how a graph-based characterization of a software system can be used to capture its evolution and facilitate development, by helping to estimate bug severity, prioritize refactoring efforts, and predict defect-prone releases.
Abstract: We exploit recent advances in analysis of graph topology to better understand software evolution, and to construct predictors that facilitate software development and maintenance. Managing an evolving, collaborative software system is a complex and expensive process, which still cannot ensure software reliability. Emerging techniques in graph mining have revolutionized the modeling of many complex systems and processes. We show how we can use a graph-based characterization of a software system to capture its evolution and facilitate development, by helping us estimate bug severity, prioritize refactoring efforts, and predict defect-prone releases. Our work consists of three main thrusts. First, we construct graphs that capture software structure at two different levels: (a) the product, i.e., source code and module level, and (b) the process, i.e., developer collaboration level. We identify a set of graph metrics that capture interesting properties of these graphs. Second, we study the evolution of eleven open source programs, including Firefox, Eclipse, MySQL, over the lifespan of the programs, typically a decade or more. Third, we show how our graph metrics can be used to construct predictors for bug severity, high-maintenance software parts, and failure-prone releases. Our work strongly suggests that using graph topology analysis concepts can open many actionable avenues in software engineering research and practice.
TL;DR: This introductory article to the special section “Software Diversity—Modeling, Analysis and Evolution” provides an overview of the current state of the art in diverse systems development and discusses challenges and potential solutions.
Abstract: Diversity is prevalent in modern software systems to facilitate adapting the software to customer requirements or the execution environment. Diversity has an impact on all phases of the software development process. Appropriate means and organizational structures are required to deal with the additional complexity introduced by software variability. This introductory article to the special section "Software Diversity--Modeling, Analysis and Evolution" provides an overview of the current state of the art in diverse systems development and discusses challenges and potential solutions. The article covers requirements analysis, design, implementation, verification and validation, maintenance and evolution as well as organizational aspects. It also provides an overview of the articles which are part of this special section and addresses particular issues of diverse systems development.
TL;DR: An overview of how context affects empirical research and how empirical software engineering research can be better `contextualized' in order to provide a better understanding of what works for whom, where, when, and why is provided.
Abstract: Context is a central concept in empirical software engineering. It is one of the distinctive features of the discipline and it is an in-dispensable part of software practice. It is likely responsible for one of the most challenging methodological and theoretical problems: study-to-study variation in research findings. Still, empirical software engineering research is mostly concerned with attempts to identify universal relationships that are independent of how work settings and other contexts interact with the processes important to software practice. The aim of this paper is to provide an overview of how context affects empirical research and how empirical software engineering research can be better 'contextualized' in order to provide a better understanding of what works for whom, where, when, and why. We exemplify the importance of context with examples from recent systematic reviews and offer recommendations on the way forward.
TL;DR: The verification community has performed competitions in various areas in the past, and SV-COMP'12 is the first competition of verification tools that take software programs as input and run a fully automatic verifying of a given safety property.
Abstract: This report describes the definitions, rules, setup, procedure, and results of the 1st International Competition on Software Verification. The verification community has performed competitions in various areas in the past, and SV-COMP'12 is the first competition of verification tools that take software programs as input and run a fully automatic verifica- tion of a given safety property. This year's competition is organized as a satellite event of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS).
TL;DR: Dynamic software product lines extend existing product line engineering approaches by moving their capabilities to runtime, helping to ensure that system adaptations lead to desirable properties.
Abstract: Dynamic software product lines extend existing product line engineering approaches by moving their capabilities to runtime, helping to ensure that system adaptations lead to desirable properties.
TL;DR: A tool, LogEnhancer, is described that automatically “enhances” existing logging code to aid in future post-failure debugging and can dramatically reduce the set of potential root failure causes that must be considered while imposing negligible overheads.
Abstract: Diagnosing software failures in the field is notoriously difficult, in part due to the fundamental complexity of troubleshooting any complex software system, but further exacerbated by the paucity of information that is typically available in the production setting. Indeed, for reasons of both overhead and privacy, it is common that only the run-time log generated by a system (e.g., syslog) can be shared with the developers. Unfortunately, the ad-hoc nature of such reports are frequently insufficient for detailed failure diagnosis. This paper seeks to improve this situation within the rubric of existing practice. We describe a tool, LogEnhancer that automatically “enhances” existing logging code to aid in future post-failure debugging. We evaluate LogEnhancer on eight large, real-world applications and demonstrate that it can dramatically reduce the set of potential root failure causes that must be considered while imposing negligible overheads.
TL;DR: This paper presents some of the findings of an empirical study based on 13 interviews with software architects that addresses questions such as: who decides the NFRs, what types of N FRs matter to architects, how are NFR's documented, and how areNFRs validated.
Abstract: Dealing with non-functional requirements (NFRs) has posed a challenge onto software engineers for many years. Over the years, many methods and techniques have been proposed to improve their elicitation, documentation, and validation. Knowing more about the state of the practice on these topics may benefit both practitioners' and researchers' daily work. A few empirical studies have been conducted in the past, but none under the perspective of software architects, in spite of the great influence that NFRs have on daily architects' practices. This paper presents some of the findings of an empirical study based on 13 interviews with software architects. It addresses questions such as: who decides the NFRs, what types of NFRs matter to architects, how are NFRs documented, and how are NFRs validated. The results are contextualized with existing previous work.
TL;DR: In this article, the authors present and evaluate a framework aimed at finding the most appropriate deployment architecture for a distributed software system with respect to multiple, possibly conflicting QoS dimensions, and provide a set of tailorable algorithms for improving a system's deployment.
Abstract: A distributed system's allocation of software components to hardware nodes (i.e., deployment architecture) can have a significant impact on its quality of service (QoS). For a given system, there may be many deployment architectures that provide the same functionality, but with different levels of QoS. The parameters that influence the quality of a system's deployment architecture are often not known before the system's initial deployment and may change at runtime. This means that redeployment of the software system may be necessary to improve the system's QoS properties. This paper presents and evaluates a framework aimed at finding the most appropriate deployment architecture for a distributed software system with respect to multiple, possibly conflicting QoS dimensions. The framework supports formal modeling of the problem and provides a set of tailorable algorithms for improving a system's deployment. We have realized the framework on top of a visual deployment architecture modeling and analysis environment. The framework has been evaluated for precision and execution-time complexity on a large number of simulated distributed system scenarios, as well as in the context of two third-party families of distributed applications.
TL;DR: This paper has done research on software vulnerability techniques, including static analysis, Fuzzing, penetration testing and vulnerability discovery models as an example of software vulnerability analysis methods which go hand in hand with vulnerability discovery techniques.
Abstract: Software vulnerabilities are the root cause of computer security problem. How people can quickly discover vulnerabilities existing in a certain software has always been the focus of information security field. This paper has done research on software vulnerability techniques, including static analysis, Fuzzing, penetration testing. Besides, the authors also take vulnerability discovery models as an example of software vulnerability analysis methods which go hand in hand with vulnerability discovery techniques. The ending part of the paper analyses the advantages and disadvantages of each technique introduced here and talks about the future direction of this field.
TL;DR: In this article, the authors present an approach for mapping software design to power consumption and present empirical results of the approach on different software implementations, comparing the power profiles of software using design patterns against software not using design pattern as a way to explore how high-level design decisions affect an application's energy usage.
Abstract: As the use of computers has grown, so too has concern about the amount of power they consume. Data centers, for example, are limited in scalability as they struggle with soaring energy costs from many large companies relying on fast, reliable, and round-the-clock computing services. On large-scale computing clusters, like data centers, even a small drop in power consumption can have large effects. Across computing contexts, reducing power consumed by computers has become a major focus. In this paper, we present a new approach for mapping software design to power consumption and present empirical results of the approach on different software implementations. In particular, we compare the power profiles of software using design patterns against software not using design patterns as a way to explore how high-level design decisions affect an application's energy usage. We show how mappings between software design and power consumption profiles can provide software designers and developers with useful information about the power behavior of the software they are developing. The goal is for software engineers to use this information in designing and developing more energy efficient solutions.
TL;DR: This paper surveys the current software product line testing approaches by defining a reference SPL testing processes and identifying, based on them, key research perspectives that are important in SPL testing.
Abstract: Software product line (SPL) testing consists of two separate but closely related test engineering activities: domain testing and application testing. Various software product line testing approaches have been developed over the last decade, and surveys have been conducted on them. However, thus far none of them deeply addressed the questions of what researches have been conducted in order to overcome the challenges posed by the two separate testing activities and their relationships. Thus, this paper surveys the current software product line testing approaches by defining a reference SPL testing processes and identifying, based on them, key research perspectives that are important in SPL testing. Through this survey, we identify the researches that addressed the challenges and also derive open research opportunities from each perspective.
TL;DR: This book is helpful for undergraduate students and professionals who are interested in studying how ontologies and related semantic reasoning can be applied to the software development process and for postgraduate students, professionals and researchers who are going to embark on their research in areas related to ontology or software engineering.
Abstract: This book is about a significant step forward in software development. It brings state-of-the-art ontology reasoning into mainstream software development and its languages. Ontology Driven Software Development is the essential, comprehensive resource on enabling technologies, consistency checking and process guidance for ontology-driven software development (ODSD). It demonstrates how to apply ontology reasoning in the lifecycle of software development, using current and emerging standards and technologies. You will learn new methodologies and infrastructures, additionally illustrated using detailed industrial case studies. The book will help you: Learn how ontology reasoning allows validations of structure models and key tasks in behavior models. Understand how to develop ODSD guidance engines for important software development activities, such as requirement engineering, domain modeling and process refinement. Become familiar with semantic standards, such as the Web Ontology Language (OWL) and the SPARQL query language. Make use of ontology reasoning, querying and justification techniques to integrate software models and to offer guidance and traceability supports. This book is helpful for undergraduate students and professionals who are interested in studying how ontologies and related semantic reasoning can be applied to the software development process. In addition, itwill also be useful for postgraduate students, professionals and researchers who are going to embark on their research in areas related to ontology or software engineering.
TL;DR: This work presents RCE and shows how its software components are reused in two aerospace applications, allowing the integration of different domain-specific tools from local and remote locations into one overall calculation.
Abstract: The DLR developed the open source software framework RCE to support the collaborative and distributed work in the shipyard industry. From a technology side of view a software from the shipbuilding field has many requirements in common with aerospace software projects. Accordingly, RCE has become the basis for further projects within the DLR. Over the last years of usage a subset of frequently used software components could be derived and are provided by the RCE framework. In particular, the workflow engine, allowing the integration of different domain-specific tools from local and remote locations into one overall calculation has become important for various projects. We present RCE and show how its software components are reused in two aerospace applications.
TL;DR: The first International Competition on Software Verification (SV-COMP'12) as discussed by the authors was organized as a satellite event of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS).
Abstract: This report describes the definitions, rules, setup, procedure, and results of the 1st International Competition on Software Verification. The verification community has performed competitions in various areas in the past, and SV-COMP'12 is the first competition of verification tools that take software programs as input and run a fully automatic verification of a given safety property. This year's competition is organized as a satellite event of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS).
TL;DR: This work presents a family-based approach of deductive verification to prove the correctness of a software product line efficiently and shows that the theorem prover KeY can be used off-the-shelf for this task, without any modifications.
Abstract: A software product line is a set of similar software products that share a common code base. While software product lines can be implemented efficiently using feature-oriented programming, verifying each product individually does not scale, especially if human effort is required (e.g., as in interactive theorem proving). We present a family-based approach of deductive verification to prove the correctness of a software product line efficiently. We illustrate and evaluate our approach for software product lines written in a feature-oriented dialect of Java and specified using the Java Modeling Language. We show that the theorem prover KeY can be used off-the-shelf for this task, without any modifications. Compared to the individual verification of each product, our approach reduces the verification time needed for our case study by more than 85%.
TL;DR: A probabilistic model based on design structure matrix (DSM) is established to evaluate the risk of change propagation from requirements to software architecture and helps software project managers make a choice between different architecture candidates based on requirement changes.
TL;DR: In this paper, an evolutionary testing approach based on Genetic Algorithms is proposed to explore the configuration space of a software product line feature model in order to automatically generate test suites, which is able to generate test suite of O(n) size complexity as opposed to O(2n).
Abstract: Product line-based software engineering is a paradigm that models the commonalities and variabilities of different applications of a given domain of interest within a unique framework and enhances rapid and low cost development of new applications based on reuse engineering principles. Despite the numerous advantages of software product lines, it is quite challenging to comprehensively test them. This is due to the fact that a product line can potentially represent many different applications; therefore, testing a single product line requires the test of its various applications. Theoretically, a product line with n software features can be a source for the development of 2n application. This requires the test of 2n applications if a brute-force comprehensive testing strategy is adopted. In this paper, we propose an evolutionary testing approach based on Genetic Algorithms to explore the configuration space of a software product line feature model in order to automatically generate test suites. We will show through the use of several publicly-available product line feature models that the proposed approach is able to generate test suites of O(n) size complexity as opposed to O(2n) while at the same time form a suitable tradeoff balance between error coverage and feature coverage in its generated test suites.
TL;DR: A catalog of “software sustainability guidelines” to support project managers, software architects, and developers during system design, development, operation, and maintenance is created and how selected techniques from them were applied in two industrial case studies are described.
Abstract: Economically sustainable software systems must be able to cost-effectively evolve in response to changes in their environment, their usage profile, and business demands. However, in many software development projects, sustainability is treated as an afterthought, as developers are driven by time-to-market pressure and are often not educated to apply sustainability-improving techniques. While software engineering research and practice has suggested a large amount of such techniques, a holistic overview is missing and the effectiveness of individual techniques is often not sufficiently validated. On this behalf we created a catalog of “software sustainability guidelines” to support project managers, software architects, and developers during system design, development, operation, and maintenance. This paper describes how we derived these guidelines and how we applied selected techniques from them in two industrial case studies. We report several lessons learned about sustainable software development.
TL;DR: In this paper, an application software installation method and an application installation apparatus are used to solve problems of operation complexity and high implementation difficulty in an existing installation process of application software, which includes mounting mirror data of a virtual machine, and mapping the mirror data as one virtual disk in a local file system.
Abstract: An application software installation method and an application software installation apparatus are used to solve problems of operation complexity and high implementation difficulty in an existing installation process of application software. The method includes: mounting mirror data of a virtual machine, and mapping the mirror data as one virtual disk in a local file system; updating a registry file in a virtual disk according to registry change record data in an application software package; and updating a file structure in the virtual disk according to the file change record data and the file in the application software package, thereby implementing installation of the application software in the virtual machine. In the process of installing the application software, a user of the virtual machine does not need to perform complex operations, thereby reducing software installation difficulty.
TL;DR: The first exploratory empirical study, where eight interviews with blind software developers were conducted to identify aspects of software development that are a challenge, suggests that visually impaired software developers face challenges, for instance, when using screen readers to look up information when writing code.
Abstract: As a research community, we currently know very little about the challenges faced by blind software developers. Without knowing what those challenges are, the community cannot effectively address these challenges. In this paper, we describe the first exploratory empirical study, where we conducted eight interviews with blind software developers to identify aspects of software development that are a challenge. Our results suggest that visually impaired software developers face challenges, for instance, when using screen readers to look up information when writing code. We discuss a variety of implications, including that blind software developers need additional support in discovering relevant software development tools.
TL;DR: Fundamentals of Dependable Computing for Software Engineers presents the essential elements of computer system dependability and provides a framework for engineers to reason and make decisions about software and its dependability.
Abstract: Fundamentals of Dependable Computing for Software Engineers presents the essential elements of computer system dependability. The book describes a comprehensive dependability-engineering process and explains the roles of software and software engineers in computer system dependability. Readers will learn: Why dependability matters What it means for a system to be dependable How to build a dependable software system How to assess whether a software system is adequately dependable The author focuses on the actions needed to reduce the rate of failure to an acceptable level, covering material essential for engineers developing systems with extreme consequences of failure, such as safety-critical systems, security-critical systems, and critical infrastructure systems. The text explores the systems engineering aspects of dependability and provides a framework for engineers to reason and make decisions about software and its dependability. It also offers a comprehensive approach to achieve software dependability and includes a bibliography of the most relevant literature. Emphasizing the software engineering elements of dependability, this book helps software and computer engineers in fields requiring ultra-high levels of dependability, such as avionics, medical devices, automotive electronics, weapon systems, and advanced information systems, construct software systems that are dependable and within budget and time constraints.
TL;DR: A survey with a wide variety of companies and experts that are involved in software testing in order to identify the current practices and opportunities for improvement of STMTs revealed five important findings.
Abstract: To develop high-quality software, it is essential to use software testing methods and tools (STMTs) effectively and efficiently. The authors conducted a survey with a wide variety of companies and experts that are involved in software testing in order to identify the current practices and opportunities for improvement of STMTs. The survey results revealed five important findings regarding the current practices of STMTs and opportunities for improvement: low usage rate of STMTs, difficulties owing to alack of STMTs, use of testing tools in a limited manner, demand for interoperability support between methods and tools of software development and testing, and need for guidance to evaluate STMTs or to describe the capabilities of STMTs. These findings and other related results from the survey will be useful for improving STMTs practices and developing software testing tools.
TL;DR: The principal purpose of this book is to change the way software developers approach their task at programming-in-the-small level, with a view to improving code quality.
Abstract: The focus of this book is on bridging the gap between two extreme methods for developing software On the one hand, there are texts and approaches that are so formal that they scare off all but the most dedicated theoretical computer scientists On the other, there are some who believe that any measure of formality is a waste of time, resulting in software that is developed by following gut feelings and intuitions Kourie and Watson advocate an approach known as correctness-by-construction, a technique to derive algorithms that relies on formal theory, but that requires such theory to be deployed in a very systematic and pragmatic way First they provide the key theoretical background (like first-order predicate logic or refinement laws) that is needed to understand and apply the method They then detail a series of graded examples ranging from binary search to lattice cover graph construction and finite automata minimization in order to show how it can be applied to increasingly complex algorithmic problems The principal purpose of this book is to change the way software developers approach their task at programming-in-the-small level, with a view to improving code quality Thus it coheres with both the IEEEs Guide to the Software Engineering Body of Knowledge (SWEBOK) recommendations, which identifies themes covered in this book as part of the software engineers arsenal of tools and methods, and with the goals of the Software Engineering Method and Theory (SEMAT) initiative, which aims to refound software engineering based on a solid theory
TL;DR: A novel model to predict software effort from use case diagrams using a cascade correlation neural network approach that can be used with promising results as an alternative approach to predictSoftware effort is proposed.
Abstract: Software cost estimation is a crucial element in project management. Failing to use a proper cost estimation method might lead to project failures. According to the Standish Chaos Report, 65% of software projects are delivered over budget or after the delivery deadline. Conducting software cost estimation in the early stages of the software life cycle is important and this would be helpful to project managers to bid on projects. In this paper, we propose a novel model to predict software effort from use case diagrams using a cascade correlation neural network approach. The proposed model was evaluated based on the MMER and PRED criteria using 214 industrial and 26 educational projects against a multiple linear regression model and the Use Case Point model. The results show that the proposed cascade correlation neural network can be used with promising results as an alternative approach to predict software effort.
TL;DR: We study the relation between specifications of component behaviors and contracts providing means to specify assumptions on environments as well as component guarantees.
TL;DR: The proposed method is based on a text classification approach that aims to show an appropriate way to suggest the right design pattern(s) to developers for solving each given design problem.