Ralph Johnson, Co-author of Design Patterns and led the development of the first automated refactoring tool.

Ralph Johnson, Co-author of Design Patterns and led the development of the first automated refactoring tool.![]() |
Presentation: "Living and working with aging software"Time: Thursday 09:00 - 10:00 Location: Fleming Room
Abstract:
Most programmers work on software projects that they did not start. For them, software development is the process of converting one version of software into the next. However, our theories of software development often ignore this fact. How does software development change if we consider software evolution to be normal and creating software "de novo" to be unusual? This talk will describe principles, practices, and some tools (mostly from research) that follow from assuming that most programmers work on old software.It will either help you deal with your current project or give you insight into the future. Keywords: Software evolution, process Target audience: Architects, programmers, managers Presentation: "A Pattern Language for Parallel Programming"
Track:
The Concurrency Challenge
Time: Friday 14:00 - 15:00 Location: Fleming Room
Abstract:
Parallel programming is not just a new library or a new set of language features. It is a new way of designing and programming, and often requires new algorithms. Thus, the pattens of parallel programming are different from traditional programming patterns. I'll describe my work, with a large group of other people, on a pattern language for parallel programming. This pattern language starts with large-scale software architecture patterns and algorithmic patterns, which set the stage for parallelism but are mostly independent of it.
Then it includes patterns about parallel algorithm strategy, which is the main place where parallelism is introduced. There are a large number of lower level patterns that are used to implement these algorithms, including programming styles like SIMD or SPMD, data structures like shared queues and distributed arrays, and coordination patterns like barriers, mutual exclusion, or transactions. Sometimes these patterns are built-in to a language or a library, but often they are implemented by an application. In either case, you need to know these patterns if you are going to use them or to understand systems that use them. Our pattern language is large, so I will not be able to teach it to you in one hour. Parallel programming is hard, so it would be surprising if I could However, I will explain the overall structure, what kinds of problems it solves, and tell you how you can learn more about it. The web site for our pattern language is here Keywords: Multicore, C++, Java, Threaded Building Blocks.data parallelism Target Audience: Developers interested in parallel programming who want to understand its impact on their software architecture |
![]() |
||