Jim Coplien Bell Labs Lucent (USA)

Jim Coplien is a member of the Software Production Research Department in Bell Laboratories. He holds a BS in Electrical and Computer Engineering, and an MS in Computer Science, both from the University of Wisconsin at Madison. His early career work includes applied research in software development environments, version and configuration management models, and in object- oriented design and programming.
He is currently studying organization communication patterns to help guide process evolution. This research has already created a generative pattern language that has successfully been used for business process engineering in corporations worldwide. His other research areas include multi-paradigm design and architectural patterns of telecommunication software.
He is author of "C++ Programming Styles and Idioms," the foremost high-end C++ book in the industry, and of "Multi-Paradigm Design for C++." He was co-editor of two volumes of "Pattern Languages of Program Design." He writes a patterns column for the C++ Report. He is a Member Emeritus of the Hillside Group, a small consortium of industry leaders providing industry-wide leadership and support in the pattern discipline. He was program chair of ACM OOPSLA '96.

Keynote: "Design after Modernism: Beyond the Object", with apologies to John Thackara

The object paradigm, ostensibly a programming phenomenon, has been a force to reckon with for about 15 years. A little known fact to most software designers is that the object movement in software echoed an earlier modernist movement in the broader field of design, a movement based on a preoccupation with real-world objects. But about the same time objects were coming on the field in software, design was moving into post-modern territory. Contemporary studies in linguistics and even software itself point to a need for richer design expressions than objects afford. In particular, we need language that expresses multiple partitioning criteria, and which captures relationships between parts as part of the seamless fabric of a whole. Many techniques have emerged as suitors to the challenge: aspect-oriented programming, generative programming, intensional programming and, last but not least, multi-paradigm design. This talk will explore the broader new paradigm of which all these techniques form a part and will try to gain a perspective on the state of the practice in software design.

Tutorial: Multi-Paradigm-Design

C++ is a programming language that supports multiple paradigms: classes, overloaded functions, templates, modules, procedural programming and more. Despite the language's flexibility and richness, however, there has previously been little effort to create a design method to support multiple paradigms within a single application.

This tutorial explores a coherent framework for mutli-pardigm design, offering an advanced set of design practices that form the foundation for a formal multi-paradigm design method. Attendees will gain an understanding of domain engineering methods that support multi-paradigm design. The presentation reveals how to analyze the application domain using principles of commonality and variation to define subdomains according to the most appropriate paradigm for each. The course explores deep questions of design to address fundamental issues of software abstraction.

Download