Papers

Here are all conference drafts for EuroPLoP 2002. There's a total of 37 papers. We have organized the papers into five workshops: Software Architecture&Design, Distributed Computing/Web Patterns, Security&Access, Human Communication&Collaboration and Ressources&Optimization.

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.

Dyson Paul & Longshaw Andy

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.

 

Haase Arno

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.

This paper presents a pattern language of eleven Java idioms which serve as a framework for using exceptions. The patterns help to balance the forces that the overall complexity must be limited, that the code must be modifyable and extensible, the source code must be clear and the overall system must be robust.

 

Marquardt Klaus

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.

 

Marquardt Klaus

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.

 

Marquardt Klaus

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.

Schütz Dietmar
 

Broadcast Trigger

 

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

Buschmann Frank and Henney Kevlin

A Distributed Computing Pattern Language Part I: Distribution Infrastructure and Application Infrastrucure Patterns (zip includes also Part II and Part III)

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 distribution infrastructure patterns and application infrastructure patterns: Broker, Layers, Pipes and Filters, Blackboard, Model-View-Controller, Presentation-Abstraction-Control, Reflection, and Microkernel.

 

Buschmann Frank and Henney Kevlin

A Distributed Computing Pattern Language Part II: Concurrency Patterns (is included in "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. The focus of this paper are the language’s concurrency patterns: Half-Sync/Half-Async, Leader/Followers, Active Object, and Monitor Object.

 

Buschmann Frank and Henney Kevlin

A Distributed Computing Pattern Language Part III: Event Handling Patterns (is included in "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. 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.

Graham Ian

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.

 

Rossi Gustavo & Koch Nora

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

Hofman Aaldert & Elsinga Ben

Controlled Access Patterns

 

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.

 

Lehtonen Sami & Parssinen Juha

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.

 

Parssinen Juha & Turunen Markku

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.

 

Riehle Dirk

Password patterns

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 

 

Romanosky Sasha

Enterprise Security Patterns

 

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
environment; the implementation of which may define or refine an existing enterprise security policy.

 

 

Schumacher Markus

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.

 

Sorensen Kristian Elof

Sessions

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
system users in the case of system break downs and scheduled system
shutdowns.

 

Workshop D: Human Communication & Collaboration (WorkshopD.zip)
 
Author Title / Abstract

Bergin Joe

Introvert-Extrovert

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.

 

Coldewey Jens

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

 

Eckstein Jutta, Joe Bergin &Helen Sharp

Feedback patterns

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

 

Manns Mary Lynn & Rising Linda

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.

 

Rüping Andreas

2D History

Think of a family who have a health insurance contract. A new-born child
is automatically covered by the contract from the moment he or she is born.. But since parents have better things to do than call their insurance company the very moment the child is born, the company doesn't learn about the new child immediately. This should not represent a problem to the insurance company: they must be able to cope with a change that has already been in effect for a while at the time they are informed of it.
Or think of a discussion with your boss after you completed a difficult project successfully in mid February. Your boss might agree to give you a pay raise for the entire year. Congratulations! Hopefully your company is able to deal with retroactive pay raises, so that you get the increased pay for January. Or imagine you are moving to a different place. You want to make sure that your mail reaches you safely, so you inform your bank well in advance that you are going to relocate. Your bank must be able to store your new address but must not use it yet, so as to make sure that no letters are sent to your new address before you even live there. We can see from these examples that in many application domains, mostly in financial information systems, we need to distinguish between the moment a change becomes effective and the moment we learn about the change. This is what two-dimensional history, and the patterns in this paper, are about.

 

Markus Völter

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

Fernandez Eduardo B. & Liu Ying

The Account Analysis Pattern

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.

 

Fernandez Eduardo B. & Dai Fei

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.

 

Kircher Michael and Jain Prashant

Pooling

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.

 

Kircher Michael

Eager Acquisition

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.

 

Jain Prashant

Coordinator

 

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.

 

Saridakis Titos

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.

 

Sommerlad Peter

Optimization Patterns

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

Static (Real-time) Scheduler

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.