Ralph Johnson is a co-author of the now-legendary book, "Design Patterns" (Addison-Wesley, 1995). He is on the faculty of the Department of Computer Science at the University of Illinois, where he is the leader of the UIUC patterns/Software Architecture Group and active in the Illinois Universal Parallel Computing Research Center. He wrote the first paper that used the word "refactoring", and his research group developed the first automated refactoring tools. He also has explored the use of the "Adaptive Object Model" architectural style for building domain models. His current interest is in documenting patterns for parallel programming and in tools for automating large-scale software changes.
Presentation: "Living and working with aging software"
Time: Thursday 09:00 - 10:00
Location: Fleming Room
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
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