Fog computing is an emergent approach that tries to overcome challenges the cloud faces by introducing a fog tier in between the cloud and the edge of the network. With the advent of the cloud, computing power shifted back again to centralized locations. In past decades, we have seen an alternation between centralization and decentralization. Although the cloud is highly scalable and performant, it exhibits limitations such as real-time capabilities. Fog computing is an approach that tries to overcome these shortcomings. The implementation guidelines for fog computing system are vague to be implemented in real-world applications. Smart objects at the edge benefit from low latency responses, location awareness, and higher availability provided by fog computing. In this paper, we present Fogxy, an architectural pattern for fog computing. It serves as an implementation guidance that describes a solution to a recurring problem in a given context. Fogxy is composed of different patterns and is based on the idea of the proxy pattern. Fogxy gives an overview of the implementation of fog computing applications and takes into account the integration of cloud computing and Internet of Things (IoT) technologies.
{"title":"Fogxy","authors":"Andreas Seitz, Felix Thiele, Bernd Bruegge","doi":"10.1145/3282308.3282342","DOIUrl":"https://doi.org/10.1145/3282308.3282342","url":null,"abstract":"Fog computing is an emergent approach that tries to overcome challenges the cloud faces by introducing a fog tier in between the cloud and the edge of the network. With the advent of the cloud, computing power shifted back again to centralized locations. In past decades, we have seen an alternation between centralization and decentralization. Although the cloud is highly scalable and performant, it exhibits limitations such as real-time capabilities. Fog computing is an approach that tries to overcome these shortcomings. The implementation guidelines for fog computing system are vague to be implemented in real-world applications. Smart objects at the edge benefit from low latency responses, location awareness, and higher availability provided by fog computing. In this paper, we present Fogxy, an architectural pattern for fog computing. It serves as an implementation guidance that describes a solution to a recurring problem in a given context. Fogxy is composed of different patterns and is based on the idea of the proxy pattern. Fogxy gives an overview of the implementation of fog computing applications and takes into account the integration of cloud computing and Internet of Things (IoT) technologies.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121727968","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}
Frank J. Frey, Victor Sauermann, Michael Kopf, Michael Pöttker
Most companies developing an operating software systems reach a point of time when the architecture of one or more systems is questioned. Triggers are, for example, serious operational issues, like inconsistent data, failures, or high complexity of the system leading to costly workarounds and slow time-to-market. Furthermore, companies thriving for a higher efficiency by standardizing processes and the technology stack may consider compliance reviews of the systems' architectures as a useful means. Both motivations, current issues and conformity checks, are covered by two patterns introduced in this paper. They are supposed to introduce different objectives for architectural reviews and provide practical guidance for organizing and setting up architecture reviews. Thus, the patterns rather focus on motivation and organizational aspects than on details of architectural analysis. The target group entails IT architects, IT managers, chief developers and interested people from industry and academia. There exist other methods and patterns concerning architecture reviews. Some of them are considered or referenced, but this paper does not contain a comprehensive comparison. The authors would like to discuss commonalities, differences, insights from practical application, and potential links between of the introduced and existing architecture review patterns within the pattern community. This discussion may lead to a better overview or, on the long run, even to a pattern language for architecture reviews.
{"title":"Architecture Reviews in Software Development Organizations","authors":"Frank J. Frey, Victor Sauermann, Michael Kopf, Michael Pöttker","doi":"10.1145/3282308.3282339","DOIUrl":"https://doi.org/10.1145/3282308.3282339","url":null,"abstract":"Most companies developing an operating software systems reach a point of time when the architecture of one or more systems is questioned. Triggers are, for example, serious operational issues, like inconsistent data, failures, or high complexity of the system leading to costly workarounds and slow time-to-market. Furthermore, companies thriving for a higher efficiency by standardizing processes and the technology stack may consider compliance reviews of the systems' architectures as a useful means. Both motivations, current issues and conformity checks, are covered by two patterns introduced in this paper. They are supposed to introduce different objectives for architectural reviews and provide practical guidance for organizing and setting up architecture reviews. Thus, the patterns rather focus on motivation and organizational aspects than on details of architectural analysis. The target group entails IT architects, IT managers, chief developers and interested people from industry and academia. There exist other methods and patterns concerning architecture reviews. Some of them are considered or referenced, but this paper does not contain a comprehensive comparison. The authors would like to discuss commonalities, differences, insights from practical application, and potential links between of the introduced and existing architecture review patterns within the pattern community. This discussion may lead to a better overview or, on the long run, even to a pattern language for architecture reviews.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"16 7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125763356","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}
Searching is one of the fundamental tasks in Computer Science. An intuitive way to search is to do it linearly, that is, start at the beginning of the dataset and continue till the searched-for item is found or nothing is found. However, as the volume of data increases, the response time of linear search is no longer acceptable. Indexes are designed to search through massive datasets quickly. There are a number of different ways of building complex and advanced indexes. Appropriate selection and modification of indexing structures according to dynamic business requirements is crucial for data-intensive applications. In this work, we present a few basic reusable indexing structures. These structures can be used to create advanced and complex indexing structures with lesser effort and time.
{"title":"Patterns for Indexing Large Datasets","authors":"Garima Gaur, S. Kalra, Arnab Bhattacharya","doi":"10.1145/3282308.3282314","DOIUrl":"https://doi.org/10.1145/3282308.3282314","url":null,"abstract":"Searching is one of the fundamental tasks in Computer Science. An intuitive way to search is to do it linearly, that is, start at the beginning of the dataset and continue till the searched-for item is found or nothing is found. However, as the volume of data increases, the response time of linear search is no longer acceptable. Indexes are designed to search through massive datasets quickly. There are a number of different ways of building complex and advanced indexes. Appropriate selection and modification of indexing structures according to dynamic business requirements is crucial for data-intensive applications. In this work, we present a few basic reusable indexing structures. These structures can be used to create advanced and complex indexing structures with lesser effort and time.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130448949","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}
This paper extends our Magic Backlog Patterns collection with three additional patterns for managing the work of a program- or rather how to deal with coordinating the work of projects which are part of a larger program and where there may be dependencies and shared deployment. While teams within a program may work fairly independently, their work still needs to be coordinated to produce a product. These three patterns, which represent alternative strategies for structuring the backlog of work, are introduced through a story of the correspondence of a business analyst as her hypothetical program moves through different backlog management strategies.
{"title":"A Program Backlog Story with Patterns: Expanding the Magic Backlog Pattern Collection","authors":"Lise B. Hvatum, R. Wirfs-Brock","doi":"10.1145/3282308.3282338","DOIUrl":"https://doi.org/10.1145/3282308.3282338","url":null,"abstract":"This paper extends our Magic Backlog Patterns collection with three additional patterns for managing the work of a program- or rather how to deal with coordinating the work of projects which are part of a larger program and where there may be dependencies and shared deployment. While teams within a program may work fairly independently, their work still needs to be coordinated to produce a product. These three patterns, which represent alternative strategies for structuring the backlog of work, are introduced through a story of the correspondence of a business analyst as her hypothetical program moves through different backlog management strategies.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129417795","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
Cloud software continues to expand globally, highly motivated by how widespread the Internet is and the possibilities it unlocks with cloud computing. Still, cloud development has some intrinsic properties to it, making it complex to unexperienced developers. This research is capturing those intricacies in the form of a pattern language that gathers ten patterns for engineering software for the cloud. This paper elaborates on that research by contributing with two new patterns: AUTOMATED RECOVERY, which checks if a container is working properly, automatically recovering it in case of failure and SCHEDULER, which periodically executes actions within the infrastructure. The described patterns are useful for anyone designing software for the cloud, either to bootstrap or to validate their design decisions with the end goal of enabling them to create better software for the cloud.
{"title":"Engineering Software for the Cloud: Automated Recovery and Scheduler","authors":"Tiago Boldt Sousa, H. Ferreira, F. F. Correia, Ademar Aguiar","doi":"10.1145/3282308.3282315","DOIUrl":"https://doi.org/10.1145/3282308.3282315","url":null,"abstract":"Cloud software continues to expand globally, highly motivated by how widespread the Internet is and the possibilities it unlocks with cloud computing. Still, cloud development has some intrinsic properties to it, making it complex to unexperienced developers. This research is capturing those intricacies in the form of a pattern language that gathers ten patterns for engineering software for the cloud. This paper elaborates on that research by contributing with two new patterns: AUTOMATED RECOVERY, which checks if a container is working properly, automatically recovering it in case of failure and SCHEDULER, which periodically executes actions within the infrastructure. The described patterns are useful for anyone designing software for the cloud, either to bootstrap or to validate their design decisions with the end goal of enabling them to create better software for the cloud.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124946033","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}
This paper integrates previously published patterns (many of them documented by the author) for open source businesses through narratives. An open source business employs open source as a strategy to strengthen its business model. The paper makes three contributions: it links patterns by creating narratives of how they have been applied by different companies; it documents pattern sequences for each example; and it proposes a way to group the patterns that reflects how strategic open source is to a business.
{"title":"Business of Open Source: A Case Study of Integrating Existing Patterns Through Narratives","authors":"M. Weiss","doi":"10.1145/3282308.3282332","DOIUrl":"https://doi.org/10.1145/3282308.3282332","url":null,"abstract":"This paper integrates previously published patterns (many of them documented by the author) for open source businesses through narratives. An open source business employs open source as a strategy to strengthen its business model. The paper makes three contributions: it links patterns by creating narratives of how they have been applied by different companies; it documents pattern sequences for each example; and it proposes a way to group the patterns that reflects how strategic open source is to a business.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114151115","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}
Data type composition is used in programming languages to build complex data types (known as compound types) from simpler ones. Various programming languages of ten use common approaches to type composition, but their particular implementation and provided opportunities may differ between languages. The paper uses the patterns methodology to describe three recurring themes in data type composition: traversing a set of values (the Traversable Once pattern), providing a slot to assign a value (the Assignable Once pattern) and variables that do not have to contain a value (the Optional Value pattern). These patterns are general cases of a number of constructs used for building compound data types in various programming languages. The described patterns may be used by designers of programming languages, libraries and frameworks to support the corresponding data type composition mechanisms directly in the language or their replacement at a higher level. Users of languages, libraries and frameworks may use the description of the patterns to understand underlying mechanisms and related benefits and liabilities.
{"title":"Three Patterns of Data Type Composition in Programming Languages","authors":"R. Batdalov, O. Ņikiforova","doi":"10.1145/3282308.3282341","DOIUrl":"https://doi.org/10.1145/3282308.3282341","url":null,"abstract":"Data type composition is used in programming languages to build complex data types (known as compound types) from simpler ones. Various programming languages of ten use common approaches to type composition, but their particular implementation and provided opportunities may differ between languages. The paper uses the patterns methodology to describe three recurring themes in data type composition: traversing a set of values (the Traversable Once pattern), providing a slot to assign a value (the Assignable Once pattern) and variables that do not have to contain a value (the Optional Value pattern). These patterns are general cases of a number of constructs used for building compound data types in various programming languages. The described patterns may be used by designers of programming languages, libraries and frameworks to support the corresponding data type composition mechanisms directly in the language or their replacement at a higher level. Users of languages, libraries and frameworks may use the description of the patterns to understand underlying mechanisms and related benefits and liabilities.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121758933","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}
P. Inventado, Sharris Gayle Francisco Inventado, Noboru Matsuda, Yeping Li, P. Scupelli, Korinn S. Ostrow, N. Heffernan, S. Tu, C. Mason, Mary Logue, Patrick McGuire
Experienced teachers effectively address student misconceptions and learning difficulties by employing high-quality pedagogical strategies that they have developed through experience. It is difficult to discover effective strategies because it takes a lot of trial and error before a teacher can conclude that a particular approach improves student learning. Researchers have used educational design patterns to encapsulate high-quality strategies that facilitate the transfer of pedagogical knowledge. In this work, we investigated the feasibility of utilizing three educational design patterns as a teaching tool for math preservice teacher education: Feedback Sandwich, Pitfall Diagnosis and Prevention, and Worked Examples. Specifically, we used design patterns to investigate how preservice teachers provided feedback to students who gave common wrong answers to a given math problem and compared their feedback before and after they were introduced to educational design patterns. Results indicated that design patterns helped preservice teachers consider other aspects of feedback such as students' self-regard, common misconceptions, and prior knowledge into their feedback for common wrong answers on math problems. The limited set of three design patterns introduced in the study focused on feedback presentation. Results also indicated preservice teachers may benefit from design patterns that address other aspects of feedback such as content granularity, feedback length, and presentation medium. Implications of this study, including the potential of using educational design patterns to improve preservice teacher education, are discussed.
{"title":"Using Design Patterns for Math Preservice Teacher Education","authors":"P. Inventado, Sharris Gayle Francisco Inventado, Noboru Matsuda, Yeping Li, P. Scupelli, Korinn S. Ostrow, N. Heffernan, S. Tu, C. Mason, Mary Logue, Patrick McGuire","doi":"10.1145/3282308.3282340","DOIUrl":"https://doi.org/10.1145/3282308.3282340","url":null,"abstract":"Experienced teachers effectively address student misconceptions and learning difficulties by employing high-quality pedagogical strategies that they have developed through experience. It is difficult to discover effective strategies because it takes a lot of trial and error before a teacher can conclude that a particular approach improves student learning. Researchers have used educational design patterns to encapsulate high-quality strategies that facilitate the transfer of pedagogical knowledge. In this work, we investigated the feasibility of utilizing three educational design patterns as a teaching tool for math preservice teacher education: Feedback Sandwich, Pitfall Diagnosis and Prevention, and Worked Examples. Specifically, we used design patterns to investigate how preservice teachers provided feedback to students who gave common wrong answers to a given math problem and compared their feedback before and after they were introduced to educational design patterns. Results indicated that design patterns helped preservice teachers consider other aspects of feedback such as students' self-regard, common misconceptions, and prior knowledge into their feedback for common wrong answers on math problems. The limited set of three design patterns introduced in the study focused on feedback presentation. Results also indicated preservice teachers may benefit from design patterns that address other aspects of feedback such as content granularity, feedback length, and presentation medium. Implications of this study, including the potential of using educational design patterns to improve preservice teacher education, are discussed.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"61 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123778725","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}
Xiwei Xu, C. Pautasso, Liming Zhu, Q. Lu, I. Weber
Blockchain is an emerging technology that enables new forms of decentralized software architectures, where distributed components can reach agreements on shared system states without trusting a central integration point. Blockchain provides a shared infrastructure to execute programs, called smart contracts, and to store data. Since blockchain technologies are at an early stage, there is a lack of a systematic and holistic view on designing software systems that use blockchain. We view blockchain as part of a bigger system, which requires patterns for using blockchain in the design of their software architecture. In this paper, we collect a list of patterns for blockchain-based applications. The pattern collection is categorized into four types, including interaction with external world patterns, data management patterns, security patterns and contract structural patterns. Some patterns are designed considering the nature of blockchain and how it can be specifically introduced within real-world applications. Others are variants of existing design patterns applied in the context of blockchain-based applications and smart contracts.
{"title":"A Pattern Collection for Blockchain-based Applications","authors":"Xiwei Xu, C. Pautasso, Liming Zhu, Q. Lu, I. Weber","doi":"10.1145/3282308.3282312","DOIUrl":"https://doi.org/10.1145/3282308.3282312","url":null,"abstract":"Blockchain is an emerging technology that enables new forms of decentralized software architectures, where distributed components can reach agreements on shared system states without trusting a central integration point. Blockchain provides a shared infrastructure to execute programs, called smart contracts, and to store data. Since blockchain technologies are at an early stage, there is a lack of a systematic and holistic view on designing software systems that use blockchain. We view blockchain as part of a bigger system, which requires patterns for using blockchain in the design of their software architecture. In this paper, we collect a list of patterns for blockchain-based applications. The pattern collection is categorized into four types, including interaction with external world patterns, data management patterns, security patterns and contract structural patterns. Some patterns are designed considering the nature of blockchain and how it can be specifically introduced within real-world applications. Others are variants of existing design patterns applied in the context of blockchain-based applications and smart contracts.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"396 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131679546","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}
With multiple parallel running software development initiatives and products, the overview of what is going on has to be kept in sight to derive suitable architectural and technical decisions. In an environment without a proper decision-making process in several development teams, or without a clear definition of roles and responsibilities a centralized architecture board makes no sense. There is need of dedicated maturity steps to traverse through to reach the goal of a distributed realization environment with as few as possible bottlenecks due to mutual discussions with a centralized responsibility to gather knowledge about on goings even considering existing technical debts. This paper is worth considered by CTOs, chief or enterprise architects within greater software development organizations.
{"title":"Architecture Board: Extension to Architecture Management Overview paper on EuroPLoP'17","authors":"Victor Sauermann, Frank J. Frey, Michael Kopf","doi":"10.1145/3282308.3282328","DOIUrl":"https://doi.org/10.1145/3282308.3282328","url":null,"abstract":"With multiple parallel running software development initiatives and products, the overview of what is going on has to be kept in sight to derive suitable architectural and technical decisions. In an environment without a proper decision-making process in several development teams, or without a clear definition of roles and responsibilities a centralized architecture board makes no sense. There is need of dedicated maturity steps to traverse through to reach the goal of a distributed realization environment with as few as possible bottlenecks due to mutual discussions with a centralized responsibility to gather knowledge about on goings even considering existing technical debts. This paper is worth considered by CTOs, chief or enterprise architects within greater software development organizations.","PeriodicalId":136534,"journal":{"name":"Proceedings of the 23rd European Conference on Pattern Languages of Programs","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133386920","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}