Lisa Sonnleithner, Bianca Wiesmayr, Virendra Ashiwal et al. · 2021
IEC 61499 emerged as a language for modeling distributed control systems. An Application is a platform-independent model that is comprised of modular components. High reusability of these components and high reconfigurability of the underlying system configuration can only be achieved with advanced design patterns. We show two example implementations of such designs and extended a pattern to foster reuse. All designs are compared based on a set of evaluation criteria. We show that our proposed design provides improved understandability and adaptability, while maintaining a slim library with highly reusable Function Block types.
Cited by 26
Tristan Kaleb Stoutenburg · Arizona State University Library Digital Repository (Arizona State University) · 2017
abstract: Implementing a distributed algorithm is more complicated than implementing a non-distributed algorithm. This is because distributed systems involve coordination of different processes each of which has a partial view of the global system state. The only way to share information in a distributed system is by message passing. Task that are straightforward in a non-distributed system, like deciding on the value of a global system state, can be quite complicated to achieve in a distributed system [1]. On top of the difficulties caused by the distributed nature of the computations, distributed systems typically need to be able to operate normally even if some of the nodes in the system are faulty which further adds to the uncertainty that processes have about the global state. Many factors make the implementation of a distributed algorithms difficult. Design patterns [2] are useful in simplifying the development of general algorithms. A design pattern describes a high level solution to a common, abstract problem that many systems may face. Common structural, creational, and behavioral problems are identified and elegantly solved by design patterns. By identifying features that an algorithm uses, and framing each feature as one of the common problems that a specific design pattern solves, designing a robust implementation of an algorithm becomes more manageable. In this way, design patterns can aid the implementation of algorithms. Unfortunately, design patterns are typically not discussed when developing distributed algorithms. Because correctly developing a distributed algorithm is difficult, many papers (eg. [1], [3], [4]) focus on verifying the correctness of the developed algorithm. Papers that are more practical ([5], [6]) establish the correctness of their algorithm and that their algorithm is efficient enough to be practical. However, papers on distributed algorithms usually make little mention of design patterns. The goal of this work was to gain experience implementing distributed systems including learning the application of design patterns and the application of related technical topics. This was achieved by implementing a currently unpublished algorithm that is tentatively called Bakery Consensus. Bakery Consensus is a replicated state-machine protocol that can tolerate servers with Byzantine faults, but assumes non-faulty clients. The algorithm also establishes non-skipping timestamps for each operation completed by the replicated state-machine. The design of the structure, communication, and creation of the different system parts depended heavily upon the book Design Patterns [2]. After implementing the system, the success of the in implementing its various parts was based upon their ability to satisfy the SOLID [7] principles as well as their ability to establish low coupling and high cohesion [8]. The rest of this paper is organized as follows. We begin by providing background information about distributed algorithms, including replicated state-machine protocols and the Bakery Consensus algorithm. Section 3 gives a background on several design patterns and software engineering principles that were used in the development process. Section 4 discusses the well designed parts of the system that used design patterns, and how these design patterns were chosen. Section 5 discusses well designed system parts that relied upon other technical topics. Section 6 discusses system parts that need redesign. The conclusion summarizes what was accomplished by the implementation process and the lessons learned about design patterns for distributed algorithms.
Cited by 0
Tristan Kaleb Stoutenburg · 2017
Cited by 0
Eduardo B. Fernández, María M. Larrondo-Petrie · Auerbach Publications eBooks · 2007
Cited by 0
Wang, Yun · PolyPublie (École Polytechnique de Montréal) · 2004
Cited by 0
Dutkowski, S. · Publikationsdatenbank der Fraunhofer-Gesellschaft (Fraunhofer-Gesellschaft) · 2000
Cited by 0
Gruia-Catalin Roman James, James C. Hu · 1998
Design patterns are a topic of great current interest within the object-oriented programming community. The motivation is both economical and intellectual. On one hand, there is a need to leverage off past experiences on new projects. On the other hand, there is the hope of establishing a common culture and language that fosters communication and growth in the software engineering field. While a community dominated by empiricism is seeking to achieve higher levels of formality by capturing its experiences in the form of catalogs of design patterns, another community, deeply rooted in formal thinking, is seeking to make its mark on the every day workings of the software engineering process. Distributed algorithms and the heuristics used by program derivation methods represent a large repository of fundamental knowledge that has been acquired over the years by the distributed computing community. Attempts to make this body of knowledge available to the broader community have b...
Cited by 0
Dmitri Soshnikov · 2003
With a very important role played by ontologies in many aspects of modern IT, the issues of ontology engineering deserve special attention. One of effective representation architectures for ontologies with dynamic knowledge in distributed environments is distributed frame hierarchy [1]. In this paper we present typical ontological design patterns that appear in connection to that architecture. Those patterns describe knowledge distribution configurations that can be effectively represented by supported interoperability, and thus encompass the range of problems that can be effectively solved in the given framework.
Cited by 1
Stephen A. Crane, Jeff Magee, Nat Pryce · 1995
The paper reports on the design patterns we have found useful in Regis, a toolkit for constructing distributed applications. Regis supports the construction of a system from a set of components. Components interact by accessing local and remote services. Access is implemented by one of a set of communication protocols. The protocol can be chosen and subsequently changed at runtime. Overall application construction is driven by a configuration description which specifies the application structure as a graph of interconnected components. This structure can also change at runtime. The design patterns we describe here have been used to satisfy the requirement for a flexible support environment which can accommodate multiple communication protocols and which satisfies the requirement for dynamic inter-component binding. The protocol structuring pattern and the associated binding pattern seamlessly integrate both firstparty (client) binding and third-party (manager) binding to services and h...
Cited by 7
Chaitanya K. Rudrabhatla · arXiv (Cornell University) · 2020
Micro service architecture has revolutionized the landscape for the development of web and mobile applications alike. Due to the stateless nature and loose coupling involved in the design of micro services, native mobile applications can be developed by utilizing the same backend services which feed the inputs to the web application front ends. Extending the same concept, a plethora of automated devices, thanks to the advancements in the field of IOT, have come into existence which can feed on the same set of micro services. This concept of build once and utilize for many use cases has become a new norm in the enterprise design patterns. To handle the horizontal scalability needs of so many calling clients, significant advancements have been made on the containerization and their orchestration strategies on the public cloud platforms. However, scalable design techniques have led to the increased exposure of backend services to unwanted entities. This broadened the attack surface and also the risk. On top of it the mix of heterogeneous technologies in MSA, their distinct logging strategies, makes the central logging difficult, which in turn loosens the security. Additionally, the complexity around building the resilience for fault tolerance across the decentralized networks, adds to the security loop holes. The simple security designs which were once used with traditional web applications cannot be used for Microservice based applications. This paper articulates the innovative approaches of handling the security needs involved in protection of distributed services in Microservice architecture.
Cited by 8Open access
Özalp Babaoğlu, Geoffrey Canright, Andreas Deutsch et al. · ACM Transactions on Autonomous and Adaptive Systems · 2006
Recent developments in information technology have brought about important changes in distributed computing. New environments such as massively large-scale, wide-area computer networks and mobile ad hoc networks have emerged. Common characteristics of these environments include extreme dynamicity, unreliability, and large scale. Traditional approaches to designing distributed applications in these environments based on central control, small scale, or strong reliability assumptions are not suitable for exploiting their enormous potential. Based on the observation that living organisms can effectively organize large numbers of unreliable and dynamically-changing components (cells, molecules, individuals, etc.) into robust and adaptive structures, it has long been a research challenge to characterize the key ideas and mechanisms that make biological systems work and to apply them to distributed systems engineering. In this article we propose a conceptual framework that captures several basic biological processes in the form of a family of design patterns. Examples include plain diffusion, replication, chemotaxis, and stigmergy. We show through examples how to implement important functions for distributed computing based on these patterns. Using a common evaluation methodology, we show that our bio-inspired solutions have performance comparable to traditional, state-of-the-art solutions while they inherit desirable properties of biological systems including adaptivity and robustness.
Cited by 301Open access
Montresor, Alberto · Institutional Research Information System (Università degli Studi di Trento) · 2005
Cited by 0
Alan Karp, Alan H. Karp, Kevin Smathers et al. · 2003
The computers we use are not secure, and they are even less so when connected to the Internet. A lot of blame has been put on lazy sysadmins for not applying patches promptly, but the fault is not entirely theirs. We believe that distributed systems should be designed to make attacks harder and to limit the damage done when attacks succeed. We propose three components of the system architecture that address these goals and make distributed systems easier to monitor and manage, while simplifying the task of writing secure applications. Following these guidelines won't make the system secure, but doing so will make it easier to build systems that are.
Cited by 2
O. Babaoglu, Geoffrey Canright, Andreas Deutsch, Gianni A. Di Caro et al. · 2006
Cited by 0
Jurnečka, Peter · Brno University of Technology Digital Library (Brno University of Technology)
This Ph.D. thesis describes proposed notation and method for working with parallel design patterns, which allowes proposing of automatic corrections to existing parallel source code with help of refactoring. In order to define the proposed notation, this work must cover areas of static code analysis, formal description of parallel design patterns and refactoring. Static code analysis is used to analyse the existing parallel source code for definition of places where you want to insert specified design pattern. Formal description of design pattern allows you to automatically apply the pattern to the existing source code. Finally, refactoring allows you to edit an existing source code without changing its functionality. The first part is devoted to the description of the current status in these three areas e.g. code analysis, design patterns and refactoring. The second part is devoted to a description of the methodology and experimental verification of its deployment.
Cited by 0
Karthik Soundararajan, Robert W. Brennan · 2007
Cited by 1
Ying Zhang, Mark Yim, Craig Eldershaw et al. · 2002
This paper proposes the Attribute/Service Model (ASM) and associated design patterns as a general and simple framework for applications that require programming with multiple tasks on multiple embedded processors. This model enables the programming of complex tasks with multiple sensors and actuators on highly distributed yet tightly coupled systems by: using a simple unified protocol for communication; allowing the access to attributes or the running of services to be independent of where such attributes or services reside; protecting shared resources, and simplifying the synchronization of multiple processes in multiple processors. Associated design patterns such as the event/trigger mechanism and general event-driven control are developed on ASM. ASM is designed for the coordination of distributed sensors, actuators and computational tasks on modular self-reconfigurable robots. However it may be used for any multi-threaded distributed embedded control network. Unlike the most existing distributed objects, ASM can be implemented on embedded systems with small footprints. ASM has been implemented both in C on top of VxWorks on the MPC555 embedded microprocessor, and in Java on PC. The Controller Area Network (CAN) has been used as the communication medium. It could be equally implemented on any real-time operating system using any communication media.
Cited by 0
Uwe Zdun, Michael Kircher, Markus Völter · IEEE Internet Computing · 2004
Patterns and pattern languages offer a practical means for distributed system developers to both gain a deeper understanding of the middleware they use and to convey their knowledge about it The proposed Remoting pattern language offers a systematic way to reuse software models, designs, and implementations to extend, integrate, customize, or build distributed object middleware solutions. This pattern language has rich dependencies with other patterns and pattern languages from related domains, including networking, concurrency, and resource management.
Cited by 14
Robert Ott · Figshare · 1997
This thesis presents results from studies on the design of distributed applications. After studying implementations of schemes for object sharing, and broker based systems, two new design patterns have been abstracted. The first pattern. Simple Shared Object, describes a client/server based system for sharing objects across address spaces. The pattern is implemented in C++ using an experimental class library for distributed programming. The second pattern. Deputy, is a contribution to multi-threaded programming techniques. The pattern describes a general way for delegating commands from one object to another by using multi-threading. The implementation of the pattern is shown using the Java programming language.
Cited by 0Open access
Daniel Burkhardt, Nana Agyei-Kena, Patrick Frey et al. · 2020
Data silos in many system landscapes complicate the creation of comprehensive information. Distributed Ledger Technology enables trust between assets via a distributed, secure and immutable storage of transactions. Deep Learning realizes intelligence to make decisions, conduct them and analyze their results based on the gathered data. In order to counteract the limitations of current system landscapes, an integrative implication of both Distributed Ledger Technology and Deep Learning is needed. Many considerations arise during the design of information systems integrating the named technologies. Transparency over the training and deployment of various Deep Learning methods on a distributed data landscape needs to be achieved. Using both a literature review and a qualitative research approach, this paper describes the development of design patterns and their selection criteria with different dimensions taken into consideration. The evaluation phase comprises of semi-structured interviews with experts from different disciplines. The result of this paper guides stakeholders in the selection of a suitable technical solution.
Cited by 0