Downloadable software
Asset Locator. A low cost, low maintenance scalable solution for managing development resources in the enterprise, which support search and reuse, collaboration, knowledge sharing, and impact analysis.
Jikes RVM. Open source Research Virtual Machine. Provided a flexible open testbed to prototype virtual machine technologies and experiment with a large variety of design alternatives.
Combinatorial Testing Services. A software library for generation and manipulation of testing input data or configurations. CTS lets the user generate small test suites with strong coverage properties, choose regression suites and perform other useful operations for the creation of systematic software test plans.
Focus. A tool that implements the functional coverage methodology and improves testing of applications by providing detailed coverage information on the areas in which testing is lacking.
HyperJ. A tool that supports advanced "multi-dimensional" separation and integration of concerns in standard JavaTM software. This support facilitates improved modularization, adaptation, composition, integration and even non-invasive remodularization of Java software components.
Design and requirements
Design patterns. Discovers and documents common solutions to problems in object-oriented software design.
Performance programming. Presents techniques for the design, writing, and tuning of programs to sustain near-peak performance.
Maintenance and legacy
Mastery. Program understanding via logical model recovery. The objective was to develop tools for recovering higher-level logical models from legacy applications. Logical models assist programmers in understanding large, complex applications and enable them to plan and carry out various commonly recurring program transformation tasks.
Programming models, environments and languages
Concern manipulation environment. An Eclipse-based project that supports aspect-oriented software developers (end users), tool providers and researchers. It offers end users a suite of tools for use in creating, manipulating and evolving aspect-oriented software, across the full software lifecycle.
XML Analysis, Optimization, and Stuff (XAOS). XPath, an integral component of XML standards such as SQLX, XQuery and XSLT, is a language for addressing portions of an XML document. The goal of the XAOS project was to support the use of XPath in large scale, real-world applications by developing efficient techniques for processing XPath.
Compiler technology for Pacific Blue. Project explored compiler technology for the Pacific Blue supercomputer. Delivered to the Lawrence Livermore National Laboratory in October 1999.
Distributed Application Partitioning (DAP). These tools help programmers decide where to place each object or component of a distributed application within a client-server or n-tier network topology in order to achieve best overall performance.
Enterprise Builder. A high-level, visual language for describing and envisioning business processes: essentially computerized red tape.
Feedback Directed Program Restructuring (FDPR-Pro). A feedback-based post-link optimization tool. It optimizes the executable image of a program by collecting information on the behavior of the program while the program is used for some typical workload, and then creating a new version of the program that is optimized for that workload.
Gnosis. Most existing implementations of context-sensitive analysis are algorithmically expensive, which limits their scalability. The Gnosis project seeks to overcome this limitation by investigating staged analyses.
HyperJ. A tool that supports advanced "multi-dimensional" separation and integration of concerns in standard JavaTM software. This support facilitates improved modularization, adaptation, composition, integration and even non-invasive remodularization of Java software components.
Java Just-in-Time Compiler. Project addressed the development of various techniques for the Java Just-In-Time Compiler, which allows much faster execution by compiling bytecodes into native machine code on the fly.
Java static analysis. Project goal was to support program understanding, code evaluation, testing, reviewing and re-engineering of Java programs.
JAX: An application extractor for Java. Project was concerned with reducing the size of Java applications in order to reduce download time.
Jikes: IBM Open Source Java(TM) Compiler. Compiler that translates Java source files as defined in The Java Language Specification into the bytecoded instruction set and binary format defined in The Java Virtual Machine Specification. Features include extremely fast compile speed and built-in dependence analysis, allowing incremental compilation and automatic makefile generation. See Jikes RVM.
Multi-dimensional separation of concerns using hyperspaces. This project developed a new approach to separation of concerns, supporting construction, evolution and integration of software.
Numerically intensive Java: NINJA. Project worked to make Java competitive with Fortran and C++ in the domain of technical computing. This was done by benchmarking to find Java performance bottlenecks and then developing and implementing optimization techniques to remove bottlenecks.
Subject-oriented programming tools and methodology (SOP). A program-composition technology that supports building object-oriented systems as compositions of subjects. A subject is a collection of classes or class fragments whose hierarchy models its domain in its own, subjective way.
XEENA: An editing environment for XML documents derived from valid DTDs. A generic Java application from the IBM Haifa Research Laboratory for editing valid XML documents derived from any valid DTD.
XML and security. Project focused on research and development related to such XML security issues.
XML authoring tool: FREEDOM. Project developed technologies that are based on emerging XML (eXtensible Markup Language) standards. The technologies are applicable to the user interface design of web applications as well as web content authoring.
Runtimes and dynamic analysis
Jikes RVM. Open source Research Virtual Machine. Provided a flexible open testbed to prototype virtual machine technologies and experiment with a large variety of design alternatives.
Leakbot Memory Analysis. An automated, adaptive, and scalable tool for diagnosing memory leaks.
Jinsight: Visualizing the execution of Java programs. A program for analyzing the dynamic behavior of Java programs. The project focused on visualization, pattern extraction, database query and multidimensional analysis techniques to problems of performance analysis, memory leak diagnosis, debugging and general program understanding.
Program Visualizer (PV). A tool that provides graphical, animated views of activity at all levels (application, runtime-library, operating-system, hardware) of running programs. Developed for the AIX operating system.
Software components, configuration and asset management
Asset Locator. A low cost, low maintenance scalable solution for managing development resources in the enterprise, which support search and reuse, collaboration, knowledge sharing, and impact analysis.
Stellation: Developing collaborative programming environments. Projected worked developed programming environments that support collaboration between members of programming teams. The goal was to change the way people program by creating a new model of software development that allows them to collaborate more effectively.
Component, Annotation, Verification and Stuff: CANVAS. Project sought to make component matching and reuse easier. It allowed component designers to specify component conformance constraints in a natural (yet still formal) way, while providing automated certification tools to determine whether the client satisfies the component's conformance constraints.
MessageCentral. Project intended to develop technology to enable the widespread use of component-based software -- software built by interconnection of software components.
Numerial Analysis Objects (NAO). Researchers implemented a set of abstract base classes for objects such as geometrical regions, functions, operators, algorithms and problems. These defined how a user interacts with these objects: what information can be obtained and how the object may be manipulated.
Software quality, validation and verification
Leakbot Memory Analysis. An automated, adaptive, and scalable tool for diagnosing memory leaks.
Combinatorial Testing Services. A software library for generation and manipulation of testing input data or configurations. CTS lets the user generate small test suites with strong coverage properties, choose regression suites and perform other useful operations for the creation of systematic software test plans.
ConTest: A tool for testing multi-threaded Java applications. Project focused on developing an advanced testing solution whose main use was to expose and eliminate concurrency-related bugs in parallel and distributed software.
Focus. A tool that implements the functional coverage methodology and improves testing of applications by providing detailed coverage information on the areas in which testing is lacking.
Software research centers and groups
Advanced enterprise middleware group. Worked on developing new technologies in the field of middleware for supporting enterprise applications.
Dynamic optimization group. Researchers were interested in virtual machine technologies. The group helped developed the open source Jikes Research Virtual Machine, the VM formerly known as Jalapeņo.
High productivity tools research group. Project encompassed several projects in the area of high performance, grid, parallel and distributed tools to enhance productivity.
Program analysis and transformation. Several projects.
Runtime subsystems for advanced memory management. Focused on high availability solutions for IBM middleware, high throughput messaging technologies and -- in the Java execution environment -- the Java Virtual Machine (JVM), in particular, the memory management services the Java language provides.
Center for software engineering. Group sought to advance the state of the art in technology and practice of software engineering in industry.
Last updated January 21, 2008
