Programming Languages and Software Engineering

Programming Languages & Software Engineering


Programming languages and software engineering lie at the heart of the development of computer systems and applications. The development of high-level programming languages and software engineering techniques was a fundamental factor in allowing the construction of applications of significant size, complexity, and flexibility. Research into programming languages, software engineering techniques, and supporting tools continues to be a key driver in the development of increasingly sophisticated software systems. IBM Research's many critical contributions in these areas include:
  • The development of several important programming languages, including APL and Fortran.
  • The development of key programming language technologies, including work on code optimization, work on the development of parallelizing compilers, advanced algorithms for global flow analysis and register allocation, and work on Java™, J2EE™, and XML technologies.
  • The investigation of key software engineering technologies, including Design Patterns.

Today's software systems are very large and complex entities, and creating, maintaining, integrating, troubleshooting, and evolving these systems in a demonstrably correct manner presents significant challenges. Defining the languages and technologies that allow people to create software, and reducing and managing the complexity of engineering such systems, are key goal of current work on both programming languages and software engineering at IBM's Watson Research Laboratory in New York, Haifa Research Laboratory in Israel, and Tokyo Research Laboratory in Japan. Our work covers the entire software lifecycle, from requirements definition, specification, architecture, design, implementation, and configuration management, to analysis, verification, testing, maintenance, and evolution. Some of our highlighted research includes:
  • Aspect-oriented software development using multi-dimensional separation of concerns, which provides new ways of managing software complexity by supporting the decomposition of software according to multiple concerns (including viewpoints and aspects), and the composition and integration of separate concerns.
  • Advanced compilation and runtime technologies, along with sophisticated program analysis techniques for Java, provide just-in-time compilation, enhanced runtime optimization, and analysis capabilities for Java software.
  • The Jikes™ Research Virtual Machine (RVM) provides the research community with a flexible open testbed to prototype virtual machine technologies and experiment with a large variety of design alternatives. It includes state-of-the-art virtual machine technologies for dynamic compilation, adaptive optimization, garbage collection, thread scheduling, and synchronization.
  • XML has emerged as a significant technology for data management, and we have developed advanced search techniques for XML documents using XPath.
  • New concepts for fine-grained configuration management provide capabilities required to address the increasing complexity of software development.
  • Advanced testing technologies allow software systems to be validated to ensure that they realize the required capabilities and meet customers' quality requirements.

IBM researchers have been, and continue to be, among the worldwide leaders in software engineering and programming languages. Being part of IBM gives us rare opportunities to have our research affect both the state-of-the-art and the state-of-the-practice. We advance the state-of-the-art by publishing in leading journals and conferences, engaging in active participation in standards bodies, producing numerous patents, and collaborating with researchers from top-ranked academic institutions. We affect the state of the practice through significant engagements, both with business units that make up IBM, and also with key IBM customers.


ConTest

Re-executing tests using ConTest

Related Publications  

Supporting Aggregation in Fine Grained Software Configuration Management, Mark C. Chu-Carroll, James Wright, David Shields, FSE 2002

F.E. Allen and J. Cocke. A Program Data Flow Analysis Procedure. Communications of the ACM. 1976.

Composing Dataflow Analyses and Transformations, Sorin Lerner , David Grove and Craig Chambers, POPL 2002

E. Gamma, R. Helm, R. Johnson and J. Vlissides. Design Patterns. Addison-Wesley, 1995.

Preference-Directed Graph Coloring, Akira Koseki, Hideaki Komatsu, Toshio Nakatani, PLDI 2002

A Parallel, Incremental and Concurrent GC for Servers, Yoav Ossia, Ori Ben-Yitzhak, Irit Goft, Elliot K. Kolodner, Victor Leikehman, Avi Owshanko, PLDI 2002

Effective Sign Extension Elimination, Motohiro Kawahito, Hideaki Komatsu, Toshio Nakatani, PLDI 2002

Deriving Specialized Program Analyses for Certifying Component-Client Conformance, G. Ramalingam, Alex Warshavsky, John Field, Deepak Goyal, Mooly Sagiv, PLDI 2002

Exploiting Prolific Types for Memory Management and Optimizations Yefim Shuf, Manish Gupta, Rajesh Bordawekar and Jaswinder Pal Singh, POPL 2002

Mixin' Up Components, Vugranam C. Sreedhar, ICSE 2002

Efficient and Precise Datarace Detection for Multithreaded Object-Oriented Programs, Jong-Deok Choi, Keunwoo Lee, Alexey Loginov, Robert O'Callahan, Vivek Sarkar, Manu Sridharan, PLDI 2002


Rate this article

 


Related Research