Modified Condition / Decision Coverage (MC/DC) is the second strongest coverage criterion in white-box testing. According to DO178C/RTCA criterion it is mandatory to achieve Level A certification for MC/DC. Concolic t...
详细信息
ISBN:
(纸本)9788360810903
Modified Condition / Decision Coverage (MC/DC) is the second strongest coverage criterion in white-box testing. According to DO178C/RTCA criterion it is mandatory to achieve Level A certification for MC/DC. Concolic testing is the combination of Concrete and Symbolic execution. It is a systematic technique that performs symbolic execution but uses randomly generated test inputs to initialize the search and to allow the tool to execute programs when symbolic execution fails. In this paper, we extend concolic testing by computing MC/DC using the automatically generated test cases. On the other hand Feedback Directed Random Test Generation builds inputs incrementally by randomly selecting a method call to apply and find arguments from among previously-constructed inputs. As soon as the input is built, it is executed and checked against a set of contracts and filters. In our proposed work, we combine feedback-directed test cases generation with concolic testing to form java-Hybrid Concolic Testing (java-HCT). java-HCT generates more number of test cases since it combines the features of both Feedback Directed Random Test and Concolic Testing. Hence, through java-HCT, we achieve high MC/DC. Combinations of approaches represent different tradeoffs of completeness and scalability. We develop java-HCT using RANDOM', jCUTE, and COPECA. Combination of RANDOOP and JCUTE creates more test cases. COPECA is used to measure MC/DC% using the generated test cases. Experimental study shows that java-HCT produces better MC/DC% than individual testing techniques(feedback-directed random testing and concolic testing). We have improved MC/DC by x1.62 and by x1.26 for feedback-directed random testing and concolic testing respectively.
This paper presents a framework for real-time reactive stream processing. The approach is to extend the proposed java 9 Reactive Streams model and integrate it with the Real-Time Specification for java. The approach l...
详细信息
ISBN:
(纸本)9781467390323
This paper presents a framework for real-time reactive stream processing. The approach is to extend the proposed java 9 Reactive Streams model and integrate it with the Real-Time Specification for java. The approach leverages a real-time version of the java 8 Stream processing framework. Our approach addresses the major issue when using Reactive Streams in real-time: there is no way to set the timeout. Our evaluation shows there is significant improvement in the predictability of stream processing with our framework over that of one implemented using regular java.
Refactoring means that a program is changed without changing its behaviour from an observer's point of view. Does the change of behaviour also imply that the security of the program is not affected by the changes?...
详细信息
ISBN:
(纸本)9783319298832;9783319298825
Refactoring means that a program is changed without changing its behaviour from an observer's point of view. Does the change of behaviour also imply that the security of the program is not affected by the changes? Using Myers and Liskov's distributed information flow control model DLM and its java implementation Jif, we explore this question practically on common patterns of Refactoring as known from Fowler. We first illustrate on an example the "Extract method" refactoring and how it can endanger confidentiality. We then show how to construct a secure version of this major refactoring pattern by employing Jif to control information flows. Finally, we can show that security leaks as encountered at the outset are not possible anymore.
Programmers commonly search the Web to find code examples that can help them solve a specific programming task. While some novice programmers may be willing to spend as much time as needed to understand a found code e...
详细信息
ISBN:
(纸本)9781509014286
Programmers commonly search the Web to find code examples that can help them solve a specific programming task. While some novice programmers may be willing to spend as much time as needed to understand a found code example, more experienced ones want to spend as little time as possible. They want to get a quick overview of the example's operation, so they can start working with it immediately. Getting this overview is often non-trivial and requires a tedious and manual inspection process. In this paper, we introduce a technique called Multi-staging to Understand, which streamlines this inspection process by distilling the essence of code examples. The essence of a code example conveys the most important aspects of the example's intended function. Our technique automatically decomposes the code in an example into code stages that can be explored non-sequentially;enabling fast exploratory learning. We discuss the key components of our technique and describe empirical results based on actual code examples on StackOverflow.
The choice of the first programminglanguage and the corresponding programming paradigm is an important part of the software development process. Knowing the advantages and constraints of individual programming paradi...
详细信息
ISBN:
(纸本)9789532330885
The choice of the first programminglanguage and the corresponding programming paradigm is an important part of the software development process. Knowing the advantages and constraints of individual programming paradigms is important as it can be crucial for successful software implementation. In this paper we conduct an empirical comparison of functional and object oriented programminglanguages using analog examples in C#, F#, Haskell, and java. Three algorithms were implemented: algorithm for solving N queens problem, algorithm for generating n-th left-truncatable prime and merge sort algorithm in C#, F#, Haskell and java programming languages. An overview of programminglanguages efficiency is given by measuring two basic parameters: number of lines of code and program execution speed. Also, system resource usage is monitored during execution. Limited experiments showed that the programminglanguagejava is faster than the other three languages whose performances were measured. java was surprisingly fast on these problems that are more suitable for functional programminglanguages. Haskell was less memory intensive (up to two times less than java) with similar execution times, while .NET languages were slower up to four times in comparison to java. Object-oriented languages C# and java had significantly more lines of code for all three algorithms when compared to functional programminglanguage Haskell and the hybrid one F#.
Refactorings often require semantic correctness conditions that amount to software model checking. However, IDEs such as Eclipse's java Development Tools implement far simpler checks on the structure of the code. ...
详细信息
ISBN:
(纸本)9783319471662;9783319471655
Refactorings often require semantic correctness conditions that amount to software model checking. However, IDEs such as Eclipse's java Development Tools implement far simpler checks on the structure of the code. This leads to the phenomenon that a seemingly innocuous refactoring can change the behaviour of the program. In this paper we demonstrate our technique of introducing runtime checks for two particular refactorings for the java programming language: Extract And Move Method, and Extract Local Variable. These checks can, in combination with unit tests, detect changed behaviour and allow identification of which specific refactoring step introduced the deviant behaviour.
This paper offers a personal reflection on a number of attempts over the past decade to apply a variety of approaches to construct a product line for solitaire card games implemented in java. A product line shares a c...
详细信息
ISBN:
(纸本)9783319471662;9783319471655
This paper offers a personal reflection on a number of attempts over the past decade to apply a variety of approaches to construct a product line for solitaire card games implemented in java. A product line shares a common set of features developed from a common set of software artifacts. A feature is a unit of functionality within a system that is visible to an end-user and can be used to differentiate members of the product line. The ultimate research goal is to assemble a product line by selecting a configuration of a set of pre-designed modular units and developing new units as necessary for individual members;in short, incorporating configuration into routine development. A secondary goal was to develop a suitable tool chain that could be integrated with existing IDEs to achieve widespread acceptance of the approach. We compare progress against by-hand development in java. During this period we investigated a number of approaches from the research literature, including components, aspects, and layers;these efforts led to a productive collaboration supported by type theory.
Structured prediction algorithms-used when applying machine learning to tasks like natural language parsing and image understanding-present some opportunities for fine-grained parallelism, but also have problem-specif...
详细信息
ISBN:
(纸本)9781509038671
Structured prediction algorithms-used when applying machine learning to tasks like natural language parsing and image understanding-present some opportunities for fine-grained parallelism, but also have problem-specific serial dependencies. Most implementations exploit only simple opportunities such as parallel BLAS, or embarrassing parallelism over input examples. In this work we explore an orthogonal direction: using the fact that these algorithms can be described as specialized forward-chaining theorem provers [1], [2], and implementing fine-grained parallelization of the forward-chaining mechanism. We study context-free parsing as a simple canonical example, but the approach is more general.
To meet the social development, the bilingual teaching model is gradually introduced in undergraduate teaching for computer science specialty. Firstly, the importance of the creation of bilingual teaching for "Ja...
详细信息
We present short programs that demonstrate the unsoundness of java and Scala's current type systems. In particular, these programs provide parametrically polymorphic functions that can turn any type into any type ...
详细信息
暂无评论