Common and special test inputs can be created to exercise some common and special behavior of the class under test, respectively. Although manually created tests are valuable, programmers often overlook some special t...
详细信息
ISBN:
(纸本)1581138334
Common and special test inputs can be created to exercise some common and special behavior of the class under test, respectively. Although manually created tests are valuable, programmers often overlook some special test inputs. If programmers write down specifications, special or common tests can be automatically generated and selected by tools. However, specifications are not commonly written in practice. This research develops a novel approach for automatically identifying common and special unit tests for a class without requiring any specification. Given a class, our approach automatically generates test inputs and identifies common and special tests among the generated tests. Programmers can inspect these identified tests and use them to augment existing (manual) tests. Our approach is based on statistical algebraic abstractions, program properties (in the form of algebraic specifications) dynamically inferred from test executions. We use statistical algebraic abstractions to characterize program behavior. A test is identified to be common if the test exercises a behavior that is universally or commonly exercised by generated tests, or to be special if the test violates a behavior that is commonly exercised by generated tests.
We propose a heap compaction algorithm appropriate for modern computing environments. Our algorithm is targeted at SMP platforms. It demonstrates high scalability when running in parallel but is also extremely efficie...
详细信息
ISBN:
(纸本)1581138318
We propose a heap compaction algorithm appropriate for modern computing environments. Our algorithm is targeted at SMP platforms. It demonstrates high scalability when running in parallel but is also extremely efficient when running single-threaded on a uniprocessor. Instead of using the standard forwarding pointer mechanism for updating pointers to moved objects, the algorithm saves information for a pack of objects. It then does a small computation to process this information and determine each object's new location. In addition, using a smart parallel moving strategy, the algorithm achieves (almost) perfect compaction in the lower addresses of the heap, whereas previous algorithms achieved parallelism by compacting within several predetermined segments. Next, we investigate a method that trades compaction quality for a further reduction in time and space overhead. Finally, we propose a modern version of the two-finger compaction algorithm. This algorithm fails, thus, re-validating traditional wisdom asserting that retaining the order of live objects significantly improves the quality of the compaction. The parallel compaction algorithm was implemented on the IBM production Java Virtual Machine. We provide measurements demonstrating high efficiency and scalability. Subsequently, this algorithm has been incorporated into the IBM production JVM.
The modeling and enactment of business processes is being recognized as key to modern information management. The expansion of Web services has increased the attention given to processes, because processes are how ser...
详细信息
ISBN:
(纸本)1581138334
The modeling and enactment of business processes is being recognized as key to modern information management. The expansion of Web services has increased the attention given to processes, because processes are how services are composed and put to good use. However, current approaches are inadequate for flexibly modeling and enacting processes. These approaches take a logically centralized view of processes, treating a process as an implementation of a composed service. They provide low-level scripting languages to specify how a service may be implemented, rather than what interactions are expected from it. Consequently, existing approaches fail to adequately accommodate the essential properties of the business partners in a process (the partners would be realized via services)-their autonomy (freedom of action), heterogeneity (freedom of design), and dynamism (freedom of configuration). Flexibly represented protocols can provide a more natural basis for specifying processes. Protocols specify what rather than how;thus they naturally maximize the autonomy, heterogeneity, and dynamism of the interacting parties. We are developing an approach for modeling and enacting business processes based on protocols. This paper describes some elements of (1) a conceptual model of processes that will incorporate abstractions based on protocols, roles, and commitments;(2) the semantics or mathematical foundations underlying the conceptual model and mapping global views of processes to the local actions of the parties involved;(3) methodologies involving rule-based reasoning to specify processes in terms of compositions of protocols.
Code instrumentation is a mechanism that allows modules of programs to be completely rewritten at runtime. With the advent of virtual machines, this type of functionality is becoming more and more interesting because ...
详细信息
ISBN:
(纸本)1581138334
Code instrumentation is a mechanism that allows modules of programs to be completely rewritten at runtime. With the advent of virtual machines, this type of functionality is becoming more and more interesting because it allows the introduction of new functionality after an application has been deployed, easy implementation of aspect-orientedprogramming, performing security verifications, dynamic software upgrading, among others. The Runtime Assembly Instrumentation Library (RAIL) is one of the first frameworks to implement code instrumentation in the .NET platform. It specifically addresses the limitations that exist between the reflection capabilities of .NET and its code emission functionalities. RAIL gives the programmer an object-oriented vision of the code of an application, allowing assemblies, modules, classes, references and even intermediate code to be easily manipulated. This paper addresses the design of an implementation of RAIL along with the difficulties and lessons learnt in building a framework for code instrumentation in .NET.
Java 1.5 will include a type system (called JSR-14) that supports parametric polymorphism, or generic classes. This will bring many benefits to Java programmers, not least because current Java practice makes heavy use...
详细信息
ISBN:
(纸本)1581138318
Java 1.5 will include a type system (called JSR-14) that supports parametric polymorphism, or generic classes. This will bring many benefits to Java programmers, not least because current Java practice makes heavy use of logically-generic classes, including container classes. Translation of Java source code into semantically equivalent JSR14 source code requires two steps: parameterization (adding type parameters to class definitions) and instantiation (adding the type arguments at each use of a parameterized class). Parameterization need be done only once for a class, whereas instantiation must be performed for each client, of which there are potentially many more. Therefore, this work focuses on the instantiation problem. We present a technique to determine sound and precise JSR-14 types at each use of a class for which a generic type specification is available. Our approach uses a precise and context-sensitive pointer analysis to determine possible types at allocation sites, and a set-constraint-based analysis (that incorporates guarded, or conditional, constraints) to choose consistent types for both allocation and declaration sites. The technique handles all features of the JSR-14 type system, notably the raw types that provide backward compatibility. We have implemented our analysis in a tool that automatically inserts type parameters into Java code, and we report its performance when applied to a number of real-world Java programs.
The proceedings contain 9 papers. The topics discussed include: migrating legacy engineering applications to Java;hitting the target: adding interaction design to agile software development;a common multi-platform har...
ISBN:
(纸本)1581134711
The proceedings contain 9 papers. The topics discussed include: migrating legacy engineering applications to Java;hitting the target: adding interaction design to agile software development;a common multi-platform hardware object model;extreme embedded a report from the front line;designing a web services project for maximum value: the 90 day challenge;transformation of an application data layer;agile techniques to avoid firefighting at a start-up;making RUP agile;and defining and implementing a scientific analysis software architecture.
Beneath the buzz around methodologies, languages and technologies, the last seventeen years at oopsla have seen countless object-oriented success and failure stories, large and small. Last year at oopsla there was gre...
详细信息
ISBN:
(纸本)1581137516
Beneath the buzz around methodologies, languages and technologies, the last seventeen years at oopsla have seen countless object-oriented success and failure stories, large and small. Last year at oopsla there was great enthusiasm over the telling of object-oriented success stories. However, we believe that one often learns more from failures than successes. This fishbowl will provide oopsla attendees to bear witness to these failure stories, and tell these tales at last.
F-Script is a Smalltalk-like interactive scripting language based on the Mac OS X object model. F-Script provides scripting and interactive access to Mac OS X frameworks and custom objects. It also introduces an innov...
详细信息
ISBN:
(纸本)1581137516
F-Script is a Smalltalk-like interactive scripting language based on the Mac OS X object model. F-Script provides scripting and interactive access to Mac OS X frameworks and custom objects. It also introduces an innovative high-level object-orientedprogramming model based on APL-like array programming principles.
暂无评论