![]() ![]() Using JAttack, we have found six critical bugs that were confirmed by Oracle developers. While JAttack could be used to test various compiler features, we demonstrate its capabilities in helping test just-in-time (JIT) Java compilers, whose optimizations occur at runtime after a sufficient number of executions. ![]() Additionally, we introduce several optimizations to reduce JAttack's generation cost. JAttack generates programs by executing templates and filling each hole by randomly choosing expressions and values (available within the search space defined by the hole). An eAST node defines the search space for the hole, i.e., a set of expressions and values. Each hole, written using a domain-specific language, constructs a node within an extended abstract syntax tree (eAST). A developer writes a template program in the host language (Java) that contains holes to be filled by JAttack. Such a framework enables developers to incorporate their domain knowledge on testing compilers, giving a basic program structure that allows for exploring complex programs that can trigger sophisticated compiler optimizations. Using JAttack, a developer writes a template program that describes a set of programs to be generated and given as test inputs to a compiler. We present JAttack, a framework that enables template-based testing for compilers. While the experimentation relies on Eiffel and its advanced tool support, such as automated proving and testing, each idea underpinning the approach scales conceptually to any statically typed object-oriented programming language with genericity and elementary support for contracts. Each experiment illustrates a problem through an example, proposes a general solution, and shows how the solution fixes the problem. The experiments rely on several examples, some of which are used as benchmarks in the requirements literature. The dissertation reflects on several experiments and shows that the new approach promotes requirements' verifiability, reusability and understandability while keeping expressiveness at an acceptable level. Object-oriented software construction becomes the method for requirements specification, validation and reuse Design by Contract becomes the method for verifying correctness of implementations against the requirements. Concrete seamless object-oriented requirements inherit from these templates and become clients of the specified software. The most significant reusable technical contribution of the dissertation is a ready-to-use Eiffel library of template classes that capture recurring software requirement patterns. The exploration confirms the hypothesis and results in a collection of tool-supported methods for specifying, validating, verifying and reusing object-oriented requirements. The dissertation explores the Martin Glinz' hypothesis that software requirements should be objects to support seamlessness. While multirequirements focus on traceability and understandability, the Seamless Object-Oriented Requirements approach presented in the dissertation takes care of verifiability, reusability and understandability. This approach has motivated and inspired the work on the present thesis. Bertrand Meyer, in his multirequirements method, accepts the challenge and proposes to express individual requirements on three layers: declarative subset of an object-oriented programming language, natural language and a graphical notation. ![]() Promoting the problematic qualities without inhibiting the expressiveness too much introduces a challenge. ![]() Specifying requirements still relies on the natural language, which has an enormous expressive power, but inhibits requirements' traceability, verifiability, reusability and understandability. This progress had little effect on software requirements, however. Continuous integration, delivery and deployment, also known as DevOps, made a huge progress in making software processes responsive to change. This creates strong demand for seamlessness of the software processes. The constantly changing customers' and users' needs require fast response from software teams. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |