If you have a paper at the conference, you'll find that your paper has been assigned to one of these five writers' workshops. Please take the time to read the other papers assigned to that workshop before the conference (one or two days before the conference is best), so that we can have a lively discussion of all papers at the conference. Take some notes on what you liked about the papers and what you felt needed improvement -- just as a memory aid for yourself.
If you don't have a paper of your own, reading papers in advance still is a good idea.
Everybody should read Kevlin Henney's paper Null Object. It will be discussed in the demo writers' workshop in the welcome session.
You can download individual papers, or all papers assigned to one workshop. The paper formats are PDF, PostScript, or MS Word.
Workshop
A: Software Architecture & Design (WorkshopA.zip)
| Author | Title / Abstract |
| Adamczyk Paul, Bader Atef and Elrad Tzilla
|
Quantitative
Pattern System
This paper combines various software design and architectural patterns into one pattern system. The software patterns in the quantitative pattern system are indexed and analyzed from the perspective of the generic design problems that they solve. Our work demonstrates that it would be more practical to compare patterns based on how they solve specific problems, rather than on other perceived similarities, such as their scope, type, structure, or problem category. Software patterns document the best architectural and design practices, but their inappropriate application may produce software systems that are hard to comprehend, maintain, and evolve. This paper presents a practical approach that software engineers can apply to determine the optimal pattern for their needs. |
|
Patterns for Internet Architecture Many internet-based systems follow similar architectures (multi-server hardware architecture, application server software, DMZ between web-servers and application servers, and so on). Such similarity provides an environment rich for pattern mining. This paper sets out a pattern language that considers the common structures and elements identified in internet-based systems we have been involved in building and reviewing.
|
|
|
Java Idioms - Exception Handling Exceptions are a powerful feature for the propagation and handling of
failure of operations. Naive use of exceptions however introduces subtle
complexity into a system due to the non-local nature of throwing an exception.
|
|
|
Patterns for the Treatment of System Dependencies
Large software
systems and projects have an internal dependency structure that covers
the software design, the process and the organisation. Some of these dependencies
may have been introduced intentionally, others grew undetected and prevent
the system or project to evolve in an optimal manner. A software architect
may detect these dependencies and try to cure the system from them. The
presented patterns are therapies from a broad range of aspects.
|
|
|
Diagnoses from Software Organizations
Large software
systems and projects have an internal dependency structure that covers
the software design, the process and the organisation. Some of these dependencies
may have been introduced intentionally, others grew undetected and prevent
the system or project to evolve in an optimal manner. A software architect
may detect these dependencies and try to cure the system from them. The
presented patterns describe non-technical dependencies, and focus on their
diagnoses, causes and therapies.
|
|
|
Principles of Performance Tuning Every software engineer has used techniques to increase the execution speed of the system under development. Some of these are purely technical, like using a more efficient algorithm. Others focus on correct distribution of tasks among different system parts, or on feature avoidance. Engineers working in different areas are used to apply specific techniques, but all these different and occasionally unique techniques follow the same basic principles. The principles and a number of their applications are presented here. |
|
|
The "Broadcast Trigger" design patterns focuses on the co-ordination of distributed autonomous components, which are co-operating in order to accomplish a common task, for example a robot assembling a mobile phone. The patterns enables a central co-ordinator to control the distributed consecutive actions using a time-optimised interaction scheme. Actions are prepared from "aside the critical path" during auxiliary process time, by sending them to the responsible component, guarded by a precondition.
|
Workshop B: Distributed Computing/Web
Patterns (WorkshopB.zip)
| Author | Title / Abstract |
|
A
Distributed Computing Pattern Language Part I: Distribution Infrastructure
and Application Infrastrucure Patterns This paper
contains parts of a pattern language for Distributed Computing. Using
the Alexandrian form this language weaves together the patterns from the
Pattern-Oriented Software Architecture series [POSA1] [POSA2],the Gang-of-Four
[GoF95], and others, regarding this specific topic.
|
|
|
A Distributed
Computing Pattern Language Part II: Concurrency Patterns This paper
contains parts of a pattern language for Distributed Computing. Using
the Alexandrian form this language weaves together the patterns from the
Pattern-Oriented Software Architecture series [POSA1] [POSA2], the Gang-of-Four
[GoF95], and others, regarding this specific topic. The focus of this
paper are the language’s concurrency patterns: Half-Sync/Half-Async,
Leader/Followers, Active Object, and Monitor Object.
|
|
|
A Distributed
Computing Pattern Language Part III: Event Handling Patterns This paper
contains parts of a pattern language for Distributed Computing. Using
the Alexandrian form this language weaves together the patterns from the
Pattern-Oriented Software Architecture series [POSA1] [POSA2], the Gang-of-Four
[GoF95], and others, regarding this specific topic. The focus of this
paper are the language’s event handling patterns: Reactor, Proactor,
and Asynchronous Completion Token.
|
|
|
Cranmore Arabella, Ure Jenny, Dewar Rick, Lloyd Ashley& Pooley Rob |
Capacity Planning for e-Business This paper describes three related, high-level, strategic patterns that deal with the issue of capacity planning for an e-Business facility. The first, "Build-in Redundancy" suggests that extra capacity is needed in Web service provision to account for increases in demand and component downtime. "Avoid Overbuild" then tempers the consequences of redundancy and, finally, "Share Resources" proposes that costs can be controlled using "partnerships" with others. |
|
Three Patterns from a pattern language concerning web usability
WU is a simple pattern language that guides designers toward making their web sites more usable. There are currently 79 patterns organized as a network and written in a strict Alexandrian style. The workshop will examine the hierarchical structure in outline and three of the patterns in detail.
|
|
|
Patterns for Adaptive Web Applications In this paper we present some patterns for adaptive web applications, i..e. those web applications that may change their behaviour regarding the current user. These patterns complement the coarser grained personalization patterns in [Rossi01], also focusing on how adaptation (personalization) patterns can be implemented through the manipulation of nodes (content and presentation of the nodes) and links. We first introduce the problem of building adaptive web applications; next we introduce Personalized Anchor Notation, Anchor Selection, Sorting of Anchors and Conditional Fragments.
|
|
| Zdun Uwe & Vogel Oliver |
Content Conversion and Generalisation on the Web: A Pattern Language Content transformation and generation is required by many interactive, web-based applications. Simplistic implementations of content converters, builders, and templates often cannot satisfy typical requirements such as high performance, end-user customizability, personalization, dynamic system updates, integration with multiple channels. We present a pattern language resolving the main forces in this context. A Generic Content Format can be used to represent content from any content source. Publisher and Gatherer are central instances to convert to and from the Generic Content Format, and to handle other central content management tasks. Conversions are performed by Content Converters. There are three alternative patterns to generate content on request: Content Format Builders, Fragments, and Content Format Templates. A Content Cache is used to store and retrieve the content in a central repository. |
Workshop C: Security & Access
(WorkshopC.zip)
| Author | Title / Abstract |
|
This paper on patterns regarding controlled access addresses the problem of lacking or insufficient control on access to information and services by providing a set of consistent proven solutions that enable an organisation to implement controlled access based on business and organisational requirements. Access control is a difficult issue, often to be solved in applications. Patterns can be used to mitigate risks and design secure applications. However, these solutions have to be based on business and organisational requirements. Therefore this set of patterns addresses controlled access from the business all the way through the design of secure applications. Since our submission exceeds 10 pages, we ask feedback to be given on the pattern language as a whole, but not on specific details.
|
|
|
Pattern Language for Cryptographic Key Management Many services in a distributed public network - like the Internet - require secure communications. Security in communications consists of integrity, authenticity, confidentiality and non-repudiability. These aims can be achieved with cryptography. Key management plays a fundamental role in secure communications, as it is the basis of all cryptographic functions. This paper describes a pattern language for key management. Ten patterns are described: Secure Communication, Cryptographic Key Generation, Session Key Exchange with Public Keys, Public Key Exchange, Public Key, Database, Session Key Exchange with Server-side Certificate, Session Key Exchange with Certificates, Certificate Authority, Cryptographic Smart Card and Certificate Revocation. These patterns are designed to answer basic key management requirements in respect of secure communications.
|
|
|
Pattern
Language for Specification of Communication Protocols This paper
presents the pattern language for specification of communication protocols..
The pattern language contains patterns for communication protocol structure
and messages. Several existing patterns, e.g. the Layers, are used together
with new ones to explain protocol structure. After patterns for protocol
structure are considered, patterns for communication protocol messages
are presented. These patterns are most important part of this pattern
language, and also most important part of any communication protocol specification.
|
|
|
This password pattern language presents a set of concise patterns for determining your passwords. Patterns are written up in short form and linked to each other in a hypertext way with the ultimate goal of making them a pattern language. A shepherd should be willing to work with me (and possibly the other authors) on the pattern language through its web location
|
|
|
The patterns described in this essay (along with the
ones already published) represent a collection of security best practices.
Here, we introduce the following four patterns: Authoritative Source of
Data, Layered Security, Risk Assessment and Management and Enterprise
Partner Communication, The Security Provider. The reader is encouraged
to review the patterns and recognize those that are relevant to their
|
|
|
Security Pattern and Security Standards Security should be a mandatory feature of any distributed business application. Nevertheless we can observe that the same errors are made over and over again (e.g. buffer overflows or default passwords). Whereas coding faults can basically be detected automatically, security at the design level is difficult to get it right. Security patterns seem to be an ideal solution for the described problem. In this paper we briefly introduce recent security patterns and show some open issues. The main focus of this document is how authors of security patterns can benefit from security standards such as the Common Criteria. Based on that we refinea security pattern template introduced at PLoP 2001. As a proof of concept we show some example patterns that have been written according to our approach.
|
|
|
This is a small pattern language for state-full multi-user systems. Central
to the language is the pattern Sessions that describes a widespread way
of implementing statefullness in a multiuser system. In Session Scope
a mechanism is presented for storing session specific data on the server
and accessing it from code in a way that minimizes the risk of mixing
up data from several sessions. Session Timeout is a pattern for guarding
against session specific data stored in a server growing to fill up all
available memory and disk. Session Failover describes a way to keep Session
related state available to the users of the system, even in the case of
system shutdown or breakdowns. This pattern requires that Load Balancer
be implemented. Load Balancer describes a common solution to the problem
of how to spread a server application over several computers to handle
more load than a single computer is capable of and to provide uninterrupted
service to
|
Workshop D: Human Communication &
Collaboration (WorkshopD.zip)
| Author | Title / Abstract |
|
Students and novices in technical fields often forget that a large part of the job is communication. Often the person with the best ideas is not the one whose ideas prevail. A person willing to put ideas forward forcefully will often see their ideas implemented while a person not so willing will not. The "Introvert - Extrovert" pattern speaks to those who believe themselves to be shy and introverted but whose circumstances in the world of business demands them to be bold and extroverted. On the other hand, "Shout It From The Rooftops" gives educators advice about how they can help guide their students in effective communication.
|
|
|
Interaction Patterns of Agile Development
According to the Agile Manifesto, agile projects value "individuals and interactions over processes and tools". This sounds nice. However, what does it mean to value interaction? The patterns of this paper form the start of a pattern language that might help a team to find reasonable ways to balance the need for interaction and collaboration with the overhead of meetings as opposed to "real work".
|
|
|
This pattern language under construction contains patterns from the Pedagogical Patterns effort, which were revised and rewritten in Alexandrian form in order to support the integration into a pattern language. The focal point of these patterns is giving and obtaining feedback while teaching and learning.
|
|
|
Fernández Alejandro , Holmer Torsten, Rubart Jessica&
Schümmer Till |
Three Groupware Patterns from the Activity Awareness Family A pattern language for groupware facilitates communication within the development team, between the development team and end users, and between end users. It assists practitioners in becoming familiar with the research area. A pattern language for groupware provides proven solutions that are expressed independently from the chosen technology. This paper presents three patterns from one family of groupware patterns called activity awareness patterns. These are "remote target indicator", "remote selection", and "remote viewport".
|
|
Introducing Patterns (or any new idea) into Organizations When the software community began studying the ideas of Christopher Alexander, interest in patterns began to spread throughout the software development industry in the 1990s. However, efforts to introduce patterns into organizations have had mixed success. The patterns presented here are part of an ever-evolving pattern language whose focus is the introduction of patterns into an organization, with the long-term goal of developing a patterns culture. The contributors are from organizations all over the world. We have found a close connection between our experiences, which is reflected in the patterns we have written.
|
|
|
Think of a family who have a health insurance contract. A new-born child
|
|
|
Hope, Belief and Wizardry - Three different perspectives on project management Running a large software project usually involves different parties, or teams, that all have different views on the project because they have different responsibilites in the project. And sometimes, these views cannot be readily understood by the other parties… This paper contains a small pattern language about the management perspective of software projects, seen from the perspective of a developer or architect. WARNING: the patterns are written ironic and cynical, because the described “management techinques” are obviously quite ridiculous, but nevertheless, the are regularly used in large projects. |
Workshop E: Resources & Optimization
(WorkshopE.zip)
| Author | Title / Abstract |
|
We describe a pattern to keep track of customer accounts in institutions, where the customers can perform transactions of different types on these accounts. This is a Semantic Analysis Pattern, intended to capture the semantics of a significant portion of a complex system and realizing a few use cases. We consider static and dynamic aspects of accounts.
|
|
|
Request and Allocation of Limited Resources This pattern is intended to answer the question: How to allocate limited resources between several requests, both fairly and efficiently? This is a semantic analysis pattern, that realizes a few basic use cases in such a way that the model has a wide range of applicability. We consider static and dynamic aspects.
|
|
|
Many systems require fast and predictable access to resources. Besides providing fast and predictable access to resources, such systems also require that the solution scales across the number of resources used, as well as the number of resource users. The Pooling pattern presents a solution for managing different kind of resources. The pattern describes how resources can be managed by grouping them to serve user needs quickly and efficiently. Existing literature only documents resource-specific approaches to a problem that is actually common to many resources. This pattern is at its core independent from those specifics, but gives concrete examples on how to apply the solution.
|
|
|
A common demand in many telecom and industry systems is to perform application tasks aligned to Quality-of-Service constraints. More and more applications have real-time constraints, such as predictability and low latency in execution of operations. The Eager Acquisition pattern describes how run-time acquisition of resources, including memory, threads, and network connections, can be made predictable and fast by eagerly acquiring and initializing resources before their actual usage.
|
|
|
Many systems execute tasks that involve multiple participants. Each participant executes part of the task in a sequence. If the work performed by some of the participants succeeds while that performed by performed by one or more fails, the system can be left in an inconsistent state. This is because the participants that succeed can introduce persistent changes to the system. However, the participant(s) that fail would not be able to make the necessary changes to the system. As a result, inconsistent changes would be made to the system. The Coordinator pattern presents a solution such that either the work done by all of the participants is completed or none are. It therefore ensures that the system always stays in a consistent state.
|
|
|
A System of Reliability Patterns
Many widely used fault tolerance techniques that have been applied and improved over the past three decades represent general solutions to recurring problems in the design of reliable computer systems. In this document, a selection of such fault tolerance techniques are formatted as a set of reliability patterns. In addition, a classification scheme is presented which organizes the set of reliability patterns as a system of patterns. This system of reliability patterns reveals the relations among the reliability patterns and delineates a number of ways in which reliability patterns can be used to refine other reliability patterns. In turn, these refinement relations create design frameworks for the development of reliable systems with different efficiency and complexity characteristics.
|
|
|
Today many developers and software architects are shielded from the low-level consequences of their doings that they no longer can be aware of the performance issues. Several factors have created such a situation: low-level programming is "uncool", because often the abstractions provided by an operating system are toocumbersome to use efficiently. moore's law makes hardware faster and faster popular high-level languages, tools and libraries provide a lot of useful functionality without giving awareness of performance implications. And some tool architectures really are slow. In the early days of mass-market internet users connected via relatively slow modems and the bandwidth of the connection was the limited factor of an application server's performance. Today broadband access is becoming more and more popular and slow response times and high latency not only annoy even patient users but also limit effeciency in web-based work places. Bad performance is a problem for developers creating server applications that need to server either a large number of concurrent users or users that expect immediate responses from their applications. Not only performance, but also predictability of behavior is becoming important in a 24x7 operating condition. First, crashes and recognizable down-times become less acceptable. Second, multiple services on a single machine call for predictable behavior in terms of resource utilization, so that one service running under heavy load doesn't block another on the same hardware. Third, often application servers provide new means of integrating legacy systems. Mainframe systems now need to server an unprecedented number of external users in addition to running the business critical applications. An application server fronting such crucial systems must throttle the load produced by external users to allow the critical business succeed (ThrottlePattern), These patterns cover some old folk wisdom with AvoidSystemCallsPattern and its specialization MinimizeLockingPattern.. In addition it introduces a new one for multi-threaded server architectures with ThreadLocalMemoryPoolPattern that in turn specializes MinimizeLockingPattern in the area of heap-memory allocation.
|
|
| Wuchner Egon |
The Real-time Priority Scheduler architectural pattern concerns real-time systems and introduces several scheduling classes representing different criticality levels for all activities of modern real-time applications. Scheduling is done according to the activities priorities and scheduling policies having to guarantee the execution of the most critical activities first and some fairness criteria, too. Furthermore, the Scheduler is responsible for dispatching a newly started, even more critical activity by pre-empting the running, less eligible activity. |