Evolution of software often decreases desired properties like readability and maintainability of the evolved code. The process of refactoring aims at increasing the same desired properties by restructuring the code. N...
详细信息
The Killer Examples workshops are highly interactive workshops, held annually at oopsla since 2002. The workshop goals are to bring together educators and developers to share their object-oriented expertise, and provi...
详细信息
The Killer Examples workshops are highly interactive workshops, held annually at oopsla since 2002. The workshop goals are to bring together educators and developers to share their object-oriented expertise, and provide a forum for discussion of teaching techniques and pedagogical goals. The theme of last year's workshop was process in the pedagogy of object orientation;the theme of this year's workshop is pedagogically sound examples for object orientation: examples which are structured to support student learning. The workshop solicits examples which can be used in the teaching of object orientation. Submitters present their examples at the workshop;participants in the workshop will critique the examples and actively engage in refining the examples in a way that they support a clear and sound pedagogy. The workshop accepts walk-ins if space permits and walk-ins are determined to have adequate interest and background in the workshop theme to contribute positively to the discussions.
This article presents our refactoring plug-in for the Groovy-Eclipse Plug-in. Refactoring is a very important technique for every software engineer to ensure the healthiness of his code and a cornerstone of agile soft...
详细信息
This article presents our refactoring plug-in for the Groovy-Eclipse Plug-in. Refactoring is a very important technique for every software engineer to ensure the healthiness of his code and a cornerstone of agile software development. In our project we introduce refactoring support for Groovy-Eclipse, with six automated refactorings as well as a source code formatter. Since Java and Groovy are that closely related we also analyzed and documented the options to introduce crosslanguage refactorings between Java and Groovy.
X10 is a modem object-oriented language designed for productivity and performance in concurrent and distributed systems. In this setting, dependent types offer significant opportunities for detecting design errors sta...
详细信息
ISBN:
(纸本)9781605582153
X10 is a modem object-oriented language designed for productivity and performance in concurrent and distributed systems. In this setting, dependent types offer significant opportunities for detecting design errors statically, documenting design decisions, eliminating costly run-time checks (e.g., for array bounds, null values), and improving the quality of,generated code. We present the design and implementation of constrained types, a natural, simple, clean, and expressive extension to object-orientedprogramming: A type C{c} names a class or interface C and a constraint c on the immutable state of C and in-scope final variables. Constraints may also be associated with class definitions (representing class invariants) and with method and constructor definitions (representing preconditions). Dynamic casting is permitted. The system is parametric on the underlying constraint system: the compiler supports a simple equality-based constraint system but, in addition, supports extension with new constraint systems using compiler plugins.
When restructuring variabilities in Software Product Lines (SPL), due to the great variety of existing mechanisms - such as Inheritance, Configuration Files, Aspect-orientedprogramming etc, developers may spend time ...
详细信息
Prevailing wisdom assumes that there are well-defined, effective and efficient methods for accessing Deep Web content. Unfortunately, there are a host of technical and nontechnical factors that call this assumption in...
详细信息
Prevailing wisdom assumes that there are well-defined, effective and efficient methods for accessing Deep Web content. Unfortunately, there are a host of technical and nontechnical factors that call this assumption into question. In this paper, we present the findings from work on a software system, which was commissioned by the British Broadcasting Corporation (BBC). The system requires stable and periodic extraction of Deep Web content from a number of online data sources. The insight from the project brings an important issue to the forefront and underscores the need for further research into access technology for the Deep Web.
Transparent persistence promises to integrate programminglanguages and databases by allowing programs to access persistent data with the same ease as non-persistent data. In this work we demonstrate the feasibility o...
详细信息
ISBN:
(纸本)9781605582153
Transparent persistence promises to integrate programminglanguages and databases by allowing programs to access persistent data with the same ease as non-persistent data. In this work we demonstrate the feasibility of optimizing transparently persistent programs by extracting queries to efficiently prefetch required data. A static analysis derives query structure and conditions across methods that access persistent data. Using the static analysis, our system transforms the program to execute explicit queries. The transformed program composes queries across methods to handle method calls that return persistent data. We extend an existing Java compiler to implement the static analysis and program transformation, handling, recursion and parameterized queries. We evaluate the effectiveness of query extraction on the OO7 and TORPEDO benchmarks. This work is focused on programs written in the current version of Java, without languages changes. However, the techniques developed here may also be of value in conjunction with object-orientedlanguages extended with high-level query syntax.
IntelliJ IDEA was one of the first Java IDEs to cross the Refactoring Rubicon [1], by implementing the Extract Method refactoring for Java in early 2001. Since that time, IntelliJ IDEA has evolved greatly to support a...
详细信息
Testing multi-threaded systems is challenging, especially due to their inherent non-determinism. As a result, considering the same test, we can have success and failure results for different test executions. This may ...
详细信息
Testing multi-threaded systems is challenging, especially due to their inherent non-determinism. As a result, considering the same test, we can have success and failure results for different test executions. This may happen due to bugs that are only revealed on certain thread interleavings, and which are difficult to reproduce. However, this may also be caused by a problem with the test. When the latter case happens, developers may waste a lot of time searching a bug that does not exist, or theymay lose trust in the test, maybe not investigating real *** this work, we want to support tests development through an approach to avoid test failures caused by a common problem with multi-threaded systems testing: assertions performed too early or too late. The approach's basic idea is to use thread monitoring and other techniques to avoid such problems during the development of tests and hence increase the developers' confidence in test results.
Aspect-oriented mechanisms are characterized by their join point models, which define join points (meaningful points in a program's representation), pointcuts (means of specifying a set of join points), and advice...
详细信息
Aspect-oriented mechanisms are characterized by their join point models, which define join points (meaningful points in a program's representation), pointcuts (means of specifying a set of join points), and advice (means of affecting the bahaviour of selected join points). Dynamic join point models define join points as the meaningful points in program execution. Pointcuts select a set of join points of interest, each of which is selected and advised individually and independently. That is, the relationships between join points are not taken into account in join point selection and advice, except in a limited predefined way (e.g. cflow). However, there are natural situations in which join points should only be selected if they play a specific role in a defined relationship with other join points. We propose a new join point model that takes join point interrelationships into account and allows designation of arbitrary computations as join points.
暂无评论