{"title":"Management Stance Patterns","authors":"Thomas Epping","doi":"10.1145/3147704.3147707","DOIUrl":"https://doi.org/10.1145/3147704.3147707","url":null,"abstract":"Situations repeat in every organisation. While some of them may constitute a reassuring structure, others may constitute an irritating obstacle in daily routine. Repeating situations may emerge quickly or slowly, they may be stable over time or volatile, and they may have minor or major consequences within an organisation. Either way, they are likely to affect each and every person within an organisation in one way or another. This raises the question if, in turn, one may influence repeating situations by adequate means. In this work, we try to provide such means and propose three management stances that constitute an approach to address repeating situations. We provide examples of use and mention their limits before codifying them into a pattern format as it is used within the pattern community.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"339 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115400702","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}
Tiago Boldt Sousa, H. Ferreira, F. F. Correia, Ademar Aguiar
{"title":"Engineering Software for the Cloud: Messaging Systems and Logging","authors":"Tiago Boldt Sousa, H. Ferreira, F. F. Correia, Ademar Aguiar","doi":"10.1145/3147704.3147720","DOIUrl":"https://doi.org/10.1145/3147704.3147720","url":null,"abstract":"Software business continues to expand globally, highly motivated by the reachability of the Internet and possibilities of Cloud Computing. While widely adopted, development for the cloud has some intrinsic properties to it, making it complex to any newcomer. This research is capturing those intricacies using a pattern catalog, with this paper contributing with three of those patterns: Messaging System, a message bus for abstracting service placement in a cluster and orchestrating messages between multiple services; Preemptive Logging, a design principle where services and servers continuously output relevant information to log files, making them available for later debugging failures; and Log Aggregation, a technique to aggregate logs from multiple services and servers in a centralized location, which indexes and provides them in a queryable, user friendly format. These patterns are useful for anyone designing software for the cloud, either to guide or validate their design decisions.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123547080","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":"A Pattern Language for High-Performance Computing Resilience","authors":"Saurabh Hukerikar, C. Engelmann","doi":"10.1145/3147704.3147718","DOIUrl":"https://doi.org/10.1145/3147704.3147718","url":null,"abstract":"High-performance computing systems (HPC) provide powerful capabilities for modeling, simulation, and data analytics for a broad class of computational problems. They enable extreme performance of the order of quadrillion floating-point arithmetic calculations per second by aggregating the power of millions of compute, memory, networking and storage components. With the rapidly growing scale and complexity of HPC systems for achieving even greater performance, ensuring their reliable operation in the face of system degradations and failures is a critical challenge. System fault events often lead the scientific applications to produce incorrect results, or may even cause their untimely termination. The sheer number of components in modern extreme-scale HPC systems and the complex interactions and dependencies among the hardware and software components, the applications, and the physical environment makes the design of practical solutions that support fault resilience a complex undertaking. To manage this complexity, we developed a methodology for designing HPC resilience solutions using design patterns. We codified the well-known techniques for handling faults, errors and failures that have been devised, applied and improved upon over the past three decades in the form of design patterns. In this paper, we present a pattern language to enable a structured approach to the development of HPC resilience solutions. The pattern language reveals the relations among the resilience patterns and provides the means to explore alternative techniques for handling a specific fault model that may have different efficiency and complexity characteristics. Using the pattern language enables the design and implementation of comprehensive resilience solutions as a set of interconnected resilience patterns that can be instantiated across layers of the system stack.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"180 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132239084","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}
S. Joshi, Padmalata V. Nistala, Hetal Jani, Prachi Sakhardande, Trevor D'Souza
{"title":"User-Centered Design Journey for Pattern Development","authors":"S. Joshi, Padmalata V. Nistala, Hetal Jani, Prachi Sakhardande, Trevor D'Souza","doi":"10.1145/3147704.3147730","DOIUrl":"https://doi.org/10.1145/3147704.3147730","url":null,"abstract":"Digital information is widely accessed through tangible mediums such as desktop, tablets, smart phones, and so on. It is important to make the digitized information easily as well as effectively perceivable and interactive, through user interfaces on these devices. There are several challenges and complexities involved in designing interfaces to ensure good user experience. This paper describes the journey of a user experience designer in effectively selecting a user interface design based on User-Centered Design approach. In this journey, we address multiple aspects: understanding user as well as business perspectives, challenges faced by end-user and designer, evaluation of various design solutions in problem context, selecting the most apt solution and formulation of a design pattern appropriate to the problem. The paper illustrates this journey through a case study and also describes the final pattern manifestation - 'Progressive disclosure' pattern. The progressive disclosure pattern enables user to focus on a task at hand by reducing clutter and confusion, and at the same time providing means to deep dive into details. The case study helps to understand how the non-linear nature of the journey is accommodative and flexible of the newly identified problems or ideas for solution, which eventually helped in creating robust and long-lasting patterns.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130055532","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":"The Container Manager Pattern","authors":"M. Syed, E. Fernández","doi":"10.1145/3147704.3147735","DOIUrl":"https://doi.org/10.1145/3147704.3147735","url":null,"abstract":"A container manager orchestrates and manages distributed environments composed of groups or clusters of software containers. Virtual machines have long been the option when it comes to virtualization solutions in clouds but containers provide a more portable, reusable and lightweight alternative. Containers provide operating system level virtualization where applications are executed in isolated environments sharing a host operating system, binaries, and libraries with other containers. Software containers although not new, have become very important to support convenient, and low overhead applications. Containers facilitate application deployment and distribution across computing environments. Containers are not the only components in the environment but work closely with other components that manage and support them. We present a pattern for a Container Manager which describes these components along with the required functions of this manager.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126586746","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}
Julio C. Caiza, Y. Martín, J. D. Álamo, Danny S. Guamán
{"title":"Organizing Design Patterns for Privacy: A Taxonomy of Types of Relationships","authors":"Julio C. Caiza, Y. Martín, J. D. Álamo, Danny S. Guamán","doi":"10.1145/3147704.3147739","DOIUrl":"https://doi.org/10.1145/3147704.3147739","url":null,"abstract":"There has recently been an upsurge of legislative, technical and organizational frameworks in the field of privacy which recommend, and even mandate the need to consider privacy issues in the design of information systems. Privacy design patterns have been acknowledged as a useful tool to support engineers in this complex task, as they leverage best-practices which are already available in the engineering community. There are currently different privacy pattern catalogs coexisting, however, an ongoing effort is being made to unify these scattered contributions into one comprehensive system of patterns. To this end, the relationships between the privacy patterns must be expressed consistently. However, the catalogs available describe pattern relationships at different, incompatible levels of detail, or do not describe them at all. To solve this problem, this paper presents a taxonomy of types of relationships that can be used to describe the relationships between privacy patterns. This taxonomy has been validated against each individual catalog to ensure its applicability in the unified privacy pattern system.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130738085","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":"Service Decoupler: Full Dynamic Decoupling in Service Invocation","authors":"Dionysis Athanasopoulos","doi":"10.1145/3147704.3147716","DOIUrl":"https://doi.org/10.1145/3147704.3147716","url":null,"abstract":"According to the service loose-coupling principle, service-oriented software should not be coupled to concrete services. To help developers in implementing dynamic decoupling in service invocation, the patterns of service adapter and abstraction have been adopted by the literature. However, these patterns do not necessarily offer full dynamic-decoupling, since adapters expose specific interfaces and abstractions suffer from the antipattern of abstraction-without-decoupling. To overcome the limitations of the related patterns, we propose a new compound pattern called Service Decoupler. We contribute by specifying the structure and the implementation details of the proposed pattern.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116986487","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}
Uwe van Heesch, Theo Theunissen, O. Zimmermann, Uwe Zdun
{"title":"Software Specification and Documentation in Continuous Software Development: A Focus Group Report","authors":"Uwe van Heesch, Theo Theunissen, O. Zimmermann, Uwe Zdun","doi":"10.1145/3147704.3147742","DOIUrl":"https://doi.org/10.1145/3147704.3147742","url":null,"abstract":"We have been observing an ongoing trend in the software engineering domain towards development practices that rely heavily on verbal communication and small, closely-interacting teams. Among others, approaches like Scrum, Lean Software Development, and DevOps fall under this category. We refer to such development practices as Continuous Software Development (ConSD). Some core principles of ConSD are working in short iterations with frequent delivery, striving for an optimal balance between effectiveness and efficiency, and amplify learning in the development team. In such a context, many traditional patterns of software specification, documentation and knowledge preservation are not applicable anymore. To explore relevant topics, opinions, challenges and chances around specification, documentation and knowledge preservation in ConSD, we conducted a workshop at the 22nd European Conference on Pattern Languages of Programs (EuroPLoP), held in Germany in July 2017. The workshop participants came from the industry and academia. In this report, we present the results of the workshop. Among others, we elaborate on the difference between specification and documentation, the special role of architecture in ConSD in general, and architecture decision documentation in particular, and the importance of tooling that combines aspects of development, project management, and quality assurance. Furthermore, we describe typical issues with documentation and identify means to efficiently and effectively organize specification and documentation tasks in ConSD.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131055417","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":"Anti-Patterns in End-User Documentation","authors":"R. Laue","doi":"10.1145/3147704.3147726","DOIUrl":"https://doi.org/10.1145/3147704.3147726","url":null,"abstract":"The purpose of technical documentation for end-users (in printed or on-screen form) is to enable people to achieve their goals by working with a product effectively, efficiently and in a safe manner. Technical documentation that has to be read by end users provides a special demand because the way of thinking and the vocabulary of a typical end user is different from that of a technical expert. Six documentation anti-patterns are discussed in this paper. They address the structure of the documentation, the organization of the access to its contents and the language used in the documentation. In addition to the discussion of anti-patterns, the article contains suggestions for better solutions.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"91 6","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132026098","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":"Aspect Frames: Describing Cross-Cutting Concerns in Aspect-Oriented Requirements Engineering","authors":"Rene Meis, M. Heisel","doi":"10.1145/3147704.3147732","DOIUrl":"https://doi.org/10.1145/3147704.3147732","url":null,"abstract":"Cross-cutting concerns often arise when non-functional requirements are operationalized, because non-functional requirements are themselves cross-cutting. In the field of aspect-oriented requirements engineering (AORE), functional requirements that cross-cut multiple other functional requirements are called aspects. An aspect describes in most cases a solution for a non-functional requirement and how this solution can be integrated into the realization of the functional requirements it cross-cuts. Examples for cross-cutting concerns are logging, encryption, and access control. We observed that aspects often share a basic structure, behavior, and the way of how they have to be integrated into the realization of the functional requirements they cross-cut. We propose in this paper aspect frames. An aspect frame is a kind of pattern for aspects that share a common concern, behavior, and way how they are integrated into the realization of the functional requirements they cross-cut. These aspect frames support requirements engineers to describe concrete aspects that fit to an aspect frame.","PeriodicalId":171324,"journal":{"name":"Proceedings of the 22nd European Conference on Pattern Languages of Programs","volume":"8 16","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132580890","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}