At the Rational conference last week, IBM Research got a bit of well-deserved attention via the Grady Booch keynote, the meetings with the press and analysts, and the alphaWorks exhibits. IBM Research does some cool stuff, and it also has a big impact that reaches beyond IBM.
I described some of the IBM Research activities in my blog last week
, (in which I also referenced the related alphaWorks Emerging technology demos
and aW's new Research topics
area). The press also gave IBM Research some coverage. (See for example the eWeek
article "IBM Research Is Software Group's Secret Weapon
" and the InfoWorld
article "IBM exec: Impending death of Moore's Law calls for software development changes
.") More recently, however, I obtained a document (thanks, Cas!) that has both a bit of background on IBM Research and highlights of key research projects that are shaping the future of software development. See below; I think it's worth a look:
----------Computer Science at IBM Research
In 1965, when computer science was still a new academic discipline, the first department of computer science was formed in the IBM Research Division at the Thomas J. Watson Research Center (Yorktown Heights, NY). The department's stated mission was "to create and test new concepts and techniques in computer systems design, and to identify and provide a first inroad into new areas of computer applications."
Since then, computer science has established itself across all the IBM Research labs worldwide: Almaden, Austin, China, Haifa, India, Tokyo, Watson, and Zurich. In the ensuing years, IBM Research has helped create important new areas of computer science research and to bring those research results to the marketplace. These include compiler optimization (FORTRAN), relational database (SQL and DB2), speech recognition (ViaVoice), Reduced Instruction Set Computer (RISC) architecture (RS/6000 and PowerPC), data encryption (DES), fractals, and scalable parallel systems (RS/6000 SP).
IBM Research's goal is to help create the future of computing. This includes inventing, developing, and applying technologies that will be vital to IBM's future success and obtaining fundamental results that influence the direction of computer science research. The Future of Software Development: Key ProjectsLeakbot
Leakbot is an automated, adaptive and scalable tool for diagnosing memory leaks. A memory leak occurs when a Java program inadvertently maintains references to objects that are no longer needed, preventing the garbage collector from reclaiming space. Eventually, a memory leak leads to an out-of-memory exception. Java memory leaks are among the most common problems facing customers, and among the hardest to find.
Leakbot discovers patterns by finding objects of the same data type that share similar context. The validation can either be performed by periodically matching the discovered patterns against snapshots of the running program, or by inserting lightweight probes that monitor changes to patterns as the program runs. Quality Software Checking (QSC)
As the complexity of programming environments increases, it becomes increasingly difficult for developers to write highly robust bug-free code. This is especially true as programmers now more than ever rely on large program libraries and object frameworks for sophisticated functions, such as presentation, data, transactional, and collaborative services.
To overcome these problems, QSC searches for code errors based on the context of the entire software program, rather than small segments of code like today's tools. It searches for known patterns, and carefully indicates to the programmer the nature of the problem, and will even suggest fixes for the problem when possible. It verifies the quality of Java applications based on best practices so on demand systems are achieving top quality and performance. It can be used interactively during the development process, or help to find bugs in code after the system has been deployed. With this new technology, developers can significantly reduce software bugs automatically so they can speed up the time it takes to create high-quality and high-performance applicationsMetronome
The Metronome project is developing real-time garbage collection and other associated technologies for Java. This allows Java's high-level programming model to be extended to real-time systems, which are an increasingly important segment of the computing landscape. The Metronome system is currently capable of providing worst-case latency of one millisecond for programs written in standard Java, roughly a factor of 100 faster than the nearest competitor.
Current research focuses on extending real-time capability to large-scale multiprocessors, providing "write once run anywhere" characteristics for timing behavior, supporting applications with microsecond-level response time requirements, and developing a stochastic theory of real-time behavior.Model-Based Analysis and Testing (MBAT)
One of the biggest challenges is to really know if an application conforms to the requirements of the various stakeholders for the application. IBM researchers are working on a tool that uses use cases and application domain information to automatically generate test cases. These test cases have complete coverage of all use case scenarios, and also target specific defect types that involve sequences of multiple use cases. It uses novel AI planning techniques to find the "best" sequences - those most likely to find coding errors if they exist. This tool will be a significant help in ensuring that software systems have high quality and conform to their functional requirements. It also provides flexibility for iterative development approaches, as test cases can be regenerated "on-demand" whenever required. The Architect's Workbench (AWB)
AWB is a tool that automates the process of linking requirements to architecture and architecture to development. This tool helps developers define the requirements, starting with English text, and moving all the way to more formal models (such as UML-based architectural diagrams). A novel aspect of AWB is that it preserves traceability across the development process, thereby ensuring that key requirements don't get lost. With the ultimate goal of reinventing the notion of process for software development, the AWB enables developers to keep track of what they have done, and what they need to do. It also points out flawed or problematic structures, and keeps track in a non-obtrusive way, of those aspects of the architecture that need to be addressed. By identifying problems at this very early stage in the software development process, it becomes less likely that there will be major development and deployment problems later in the lifecycle.Jazz
The Jazz research project grew out of the recognition that although software development is an inherently collaborative process in which teams of developers work together to design solutions and produce code, this collaboration is usually ad hoc and rarely supported by tools within the programmer's integrated development environment (IDE). As software development teams face greater time and resource constraints, there is a need for software development tools to support structured and unstructured communication and coordination of work.
The Jazz research project seeks to extend the Eclipse (http://www.eclipse.org
) software development environment with collaborative capabilities to support coordination, communication, and awareness among a small close-knit team of developers. This involves creating connections to server infrastructure for messaging, awareness, and source control, and integrating user interfaces for communication and awareness within the Eclipse environment to provide unobtrusive access to in-context team information.[Read More