Executable Domain-Specific Modeling languages (xDSMLs) are typically defined by metamodels that specify their abstract syntax, and model interpreters or compilers that define their execution semantics. To face the pro...
详细信息
ISBN:
(纸本)9781538634929
Executable Domain-Specific Modeling languages (xDSMLs) are typically defined by metamodels that specify their abstract syntax, and model interpreters or compilers that define their execution semantics. To face the proliferation of xDSMLs in many domains, it is important to provide language engineering facilities for opportunistic reuse, extension, and customization of existing xDSMLs to ease the definition of new ones. Current approaches to language reuse either require to anticipate reuse, make use of advanced features that are not widely available in programminglanguages, or are not directly applicable to metamodel-based xDSMLs. In this paper, we propose a new language implementation pattern, named REVISITOR, that enables independent extensibility of the syntax and semantics of metamodel-based xDSMLs with incremental compilation and without anticipation. We seamlessly implement our approach alongside the compilation chain of the Eclipse Modeling Framework, thereby demonstrating that it is directly and broadly applicable in various modeling environments. We show how it can be employed to incrementally extend both the syntax and semantics of the fUML language without requiring anticipation or re-compilation of existing code, and with acceptable performance penalty compared to classical handmade visitors.
With the spread of mobile communication nodes such as smartphones and wireless communication technologies, the demand for the use of networks has been increasing. In the case of IPv4 networks, exhaustion of global IP ...
详细信息
ISBN:
(纸本)9784907626310
With the spread of mobile communication nodes such as smartphones and wireless communication technologies, the demand for the use of networks has been increasing. In the case of IPv4 networks, exhaustion of global IP addresses has been a serious problem. As a short-term solution for this problem, the use of NAT is quite common. However, there exists a problem which associated with NAT as well. Namely, we cannot make communication from the global network side to the private network side behind NAT. As a long-term solution for the IPv4 address exhaustion problem, it is necessary to migrate from IPv4 to IPv6 network environment. However, there is no compatibility between these networks, and thus, IPv6 is not widely spread at all. Because of the above-said problem, the mixed environment of IPv4 and IPv6 networks seems to last for a long period of time. Accordingly, \"connectivity\" is required so that communication can be maintained regardless of the connected network environment. Furthermore, the communication node cannot continue its communication when it moves to another network, owing to the change of its IP Address. Therefore, \"mobility\" is required so that the node can continue communication even if the network is switched to another network.
This paper explores adding capabilities to java with the objective of tightening security management for access to resources both within the java Class Library and java applications. Code can only access resources if ...
详细信息
ISBN:
(数字)9783319712376
ISBN:
(纸本)9783319712376
This paper explores adding capabilities to java with the objective of tightening security management for access to resources both within the java Class Library and java applications. Code can only access resources if it is given explicit capabilities, allowing replacement of the use of doPrivileged blocks. Capabilities provide restricted access to their implementing object - like an interface - but when a capability is created, it has a more restrictive dynamic type than its implementing object, and hence access to the full facilities of the implementing object (e.g. via down casting) are precluded. We used the Annotation Processing Tool to track the declaration and use of capabilities.
The component-based software development enables to construct applications from reusable components providing particular functionalities and simplifies application evolution. To ensure the correct functioning of a giv...
详细信息
ISBN:
(纸本)9788394625375
The component-based software development enables to construct applications from reusable components providing particular functionalities and simplifies application evolution. To ensure the correct functioning of a given component-based application and its preservation across evolution steps, it is necessary to test not only the functional properties of the individual components but also the correctness of their mutual interactions and cooperation. This is complicated by the fact that third-party components often come without source code and/or documentation of functional and interaction properties. In this paper, we describe an approach for performing rigorous semi-automated testing of software components with unavailable source code. Utilizing an automated analysis of the component interfaces, scenarios invoking methods with generated parameter values are created. When they are performed on a stable application version and their runtime effects (component interactions) are recorded, the resulting scenarios with recorded effects can be used for accurate regression testing of newly installed versions of selected components. Our experiences with a prototype implementation show that the approach has acceptable demands on manual work and computational resources.
Reflection, which is widely used in practice and abused by many security exploits, poses a significant obstacle to program analysis. Reflective calls can be analyzed statically or dynamically. Static analysis is more ...
详细信息
ISBN:
(纸本)9781538609415
Reflection, which is widely used in practice and abused by many security exploits, poses a significant obstacle to program analysis. Reflective calls can be analyzed statically or dynamically. Static analysis is more sound but also more imprecise (by introducing many false reflective targets and thus affecting its scalability). Dynamic analysis can be precise but often miss many true reflective targets due to low code coverage. We introduce MIRROR, the first automatic reflection analysis for java that increases significantly the code coverage of dynamic analysis while keeping false reflective targets low. In its static analysis, a novel reflection-oriented slicing technique is applied to identify a small number of small path-based slices for a reflective call so that different reflective targets are likely exercised along these different paths. This preserves the soundness of pure static reflection analysis as much as possible, improves its scalability, and reduces substantially its false positive rate. In its dynamic analysis, these slices are executed with automatically generated test cases to report the reflective targets accessed. This significantly improves the code coverage of pure dynamic analysis. We evaluate MIRROR against a state-of-the-art dynamic reflection analysis tool, TAMIFLEX, by using 10 large real-world java applications. MIRROR detects 12.5% - 933.3% more reflective targets efficiently (in 362.8 seconds on average) without producing any false positives. These new targets enable 5 - 174949 call-graph edges to be reachable in the application code.
Current automatic program repair techniques often produce overfitting patches. Such a patch passes the test suite but does not actually repair the bug. In this paper, we propose two techniques to address the patch ove...
详细信息
ISBN:
(纸本)9781538615898
Current automatic program repair techniques often produce overfitting patches. Such a patch passes the test suite but does not actually repair the bug. In this paper, we propose two techniques to address the patch overfitting problem. First, we propose an automatic repair technique that performs syntactic code search to leverage bug-related code from a code database to produce patches that are likely to be correct. Due to the weak and incomplete program specification encoded in the test suite, a patch is still possible to be overfitting. We next propose a patch testing technique which generates test inputs uncovering the semantic differences between a patch and its original faulty program, tests if the patch is overfitting, and if so, generates test cases. Such overfitting-indicative test cases could be added to the test suite to make it stronger.
In this paper we introduce CECOTOOL, a tool that analyzes the energy behavior of alternative collection implementations and provides potentially useful recommendations about good implementation options. We applied it ...
详细信息
ISBN:
(纸本)9781538615898
In this paper we introduce CECOTOOL, a tool that analyzes the energy behavior of alternative collection implementations and provides potentially useful recommendations about good implementation options. We applied it to two real-world software systems from the DaCapo suite [1], Xalan and Tomcat. With no prior knowledge of the application domains, we were able to reduce the energy consumption up to 4.37%.
In this paper we introduce a backward simulation of machine code program and report results of reduction methods of its processing time. It may be efficient to analyze a program by tracing back from the final result f...
详细信息
We survey the use of Abstract State Machines in the area of programminglanguages, namely to define behavioural properties of programs at source, intermediate and machine levels in a way that is amenable to mathematic...
详细信息
Machine learning techniques have been used in compilers to automatically determine which optimizations are best for each method of a program developed in javalanguage to reduce the execution time of the program. Prof...
详细信息
暂无评论