{"title":"Deferred cancellation: a behavioral pattern","authors":"Philipp Bachmann","doi":"10.1145/1753196.1753218","DOIUrl":"https://doi.org/10.1145/1753196.1753218","url":null,"abstract":"People who design their own pool of worker threads [33, pp 290--298] or processes have to consider how to shut down the workers again or how to dynamically adapt the number of workers to varying load. Especially with regard to application termination you may have the choice between an immediate destruction of the pool and a more graceful shutdown. The pattern proposed helps to portably implement such termination and load adaptation mechanisms that assume you voted for the second choice. The main area of application are the internals of active objects [40] and similar designs that delegate work to a pool of threads or processes to execute service requests asynchronously from their actual invocation. For the pattern proposed we identified usage examples in popular existing applications or libraries. Both a real world example and sample code accompany the pattern presentation. This sample code is in C++. The presentation of the pattern follows the style well known from [11] and [44]. This pattern is based upon other patterns. Typographic conventions for references to other patterns are similar to [3]. A Glossary provides thumbnails of many of these patterns.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"108 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127019867","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Patterns for understanding frameworks","authors":"Nuno H. Flores, Ademar Aguiar","doi":"10.1145/1753196.1753206","DOIUrl":"https://doi.org/10.1145/1753196.1753206","url":null,"abstract":"Learning and understanding a framework is usually a major obstacle to its effective reuse. Before being able to use a framework successfully, users often go through a steep learning curve by spending a lot of effort understanding its underlying architecture and design principles. This is mainly due to users having to understand not only single isolated classes, but also complex designs of several classes whose instances collaborate for many different purposes, and using many different mechanisms. In addition, frameworks are also full of delocalized plans, and use inheritance and delegation intensively, which makes their design more difficult to grasp. How to obtain the necessary information from the framework itself and its accompanying documentation is the main problem with framework understanding. Considering its importance, this paper presents an initial attempt to capture, in the pattern form, a set of proven solutions to recurrent problems of understanding frameworks. The fundamental objective of this work is to help non-experts on being more effective when trying to learn and understand object-oriented frameworks.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132395509","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Patterns for monitoring scenarios to handle state based crosscutting concerns","authors":"M. Mahoney, T. Elrad","doi":"10.1145/1753196.1753220","DOIUrl":"https://doi.org/10.1145/1753196.1753220","url":null,"abstract":"This paper describes two patterns, Scenario Monitor and Bind Completed Scenario to Event. The first allows scenarios to be monitored. The second uses scenario monitoring to address state based crosscutting concerns in traditional data transformational systems. Crosscutting concerns are tangled with core application concerns and scattered throughout a system. Core concerns are monitored for scenarios that represent events of interest to a crosscutting concern. When the monitored scenarios complete an event is injected into a crosscutting state machine that may react by introducing additional behavior. These patterns permit the monitoring and subsequent behavioral reaction in a minimally invasive way with loose coupling. No special tools or languages are required. An example using the approach is presented.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"114 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127142581","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Abstract security patterns","authors":"E. Fernández, H. Washizaki, Nobukazu Yoshioka","doi":"10.1145/1753196.1753201","DOIUrl":"https://doi.org/10.1145/1753196.1753201","url":null,"abstract":"We introduce the concept of \"abstract\" security patterns that deal with abstract security mechanisms, rather than concrete implementations. We also show an organization of abstract security patterns and concrete ones into hierarchies.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"164 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133867139","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Fundamental banking patterns","authors":"L. Sesera","doi":"10.1145/1753196.1753215","DOIUrl":"https://doi.org/10.1145/1753196.1753215","url":null,"abstract":"The paper describes analysis patterns of software systems for banking. These patterns address complexity of banking products, effectiveness of computing account balances, and customer-orientation. The patterns are abstracted from real-world systems. Together, they form a fundamental pattern language.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"85 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126040610","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Learning and studying interaction design through design patterns","authors":"Miguel Carvalhais","doi":"10.1145/1753196.1753210","DOIUrl":"https://doi.org/10.1145/1753196.1753210","url":null,"abstract":"The creation of a course on Interaction Design at the School of Fine-Arts of the University of Porto presented a good context for the deployment of a pedagogical program built around the study and the writing of design patterns for Interaction Design. This paper presents a report of this experience, of why design patterns were used and how they were studied and created by students.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125085753","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"DEQUALITE: building design-based software quality models","authors":"Foutse Khomh, Yann-Gaël Guéhéneuc","doi":"10.1145/1753196.1753199","DOIUrl":"https://doi.org/10.1145/1753196.1753199","url":null,"abstract":"Object-oriented software quality models usually use metrics of classes or of relationships between classes to measure internal attributes of systems. However, the quality of these systems does not depend on classes solely: It also depends on the organisation of classes, i.e., their design. We propose DEQUALITE, a method to build models to measure the quality of systems taking into account both their internal attributes and their designs. Our method uses a machine learning approach and also allows combining different models to improve the quality prediction. In this paper, we justify the use of patterns to build quality models, we illustrate our method on a set of systems implementing design patterns and on the quality model QMOOD from Bansiya et al. We discuss the advantages and limitations of this method, we then present a validation of a resulting quality model on a set of systems. We conclude on the advantages of using patterns to build models and the difficulty of doing so.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127698320","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Freeway patterns for SOA systems","authors":"N. Sarma, Srinivas Bhagavatula","doi":"10.1145/1753196.1753204","DOIUrl":"https://doi.org/10.1145/1753196.1753204","url":null,"abstract":"Business processes typically contain multiple process steps. In a service oriented landscape, these process steps are realized as services. An implementation of a business process is hence composed of multiple service invocations. In a service oriented landscape, a process model doesn't exist in isolation; it is supplemented by other paradigms which allow the process model to be executed. This paper presents all of these as patterns, and describes how these can be tied together to create a dynamic service oriented landscape. The patterns that this paper describes are: - Service orchestration -- the modeling of a business process as a set of process steps - Service registry -- a mapping of process steps to service endpoints - Service monitor -- a mechanism to monitor the health of an endpoint","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128839480","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Continuous feedback pedagogical patterns","authors":"K. A. Larson, Frances P. Trees, D. Weaver","doi":"10.1145/1753196.1753211","DOIUrl":"https://doi.org/10.1145/1753196.1753211","url":null,"abstract":"Successful teachers recognize there is more to teaching than mastering content. Concern for student learning is the central theme. Over time, teachers develop a repertoire of best practices, classroom skills, and methods that have proven effective for them. The teaching patterns presented here were gathered from our collective experience in the classroom and those we have observed among our colleagues. The patterns presented in this paper focus on continuous feedback. Some patterns involve direct feedback from the teacher to the student while others involve feedback from the students to the teacher. Several of the patterns can be adapted for use in classrooms ranging from kindergarten to adult learning and to seminars and workshops in the business and industrial communities.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124381195","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Patterns for ADT optimisation","authors":"David J. Pearce, J. Noble","doi":"10.1145/1753196.1753227","DOIUrl":"https://doi.org/10.1145/1753196.1753227","url":null,"abstract":"Operations on abstract data types can be classified as either queries or updates --- those that either query the current state, or update it. Modern object-oriented programming languages require classes/interfaces to support a predefined set of such operations. This presents a challenge for software designers, since a fixed interface can severely restrict the opportunities for optimisation. In this paper, we present two common patterns --- Specific Query Optimisation and Generalised Query Optimisation --- for optimising such operations. The first requires specific knowledge of which operation to optimise beforehand, whilst the latter provides more leeway in this regard. These patterns are commonly occurring in software, and we find numerous instances of them within the Java standard libraries.","PeriodicalId":332993,"journal":{"name":"Proceedings of the 15th Conference on Pattern Languages of Programs","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129339213","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}