|
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. |
| 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. |