Dependability Patterns: A Survey †
Abstract
:1. Introduction
- Survey and enumerate dependability patterns. We tried to see what is available and detect if they cover a broad set of topics;
- Classify these patterns in groups and relate them using pattern diagrams. This classification is important to see the coverage of topics and to understand how these patterns relate to each other;
- Evaluate the suitability of existing patterns to build dependable systems. We found that many patterns need completion or refactoring to have a practical catalog;
- Survey methodologies for systematic development of dependable systems. These are important to use the patterns in building dependable systems;
- Provide a list of directions for research. These are intended to guide future work and indicate aspects that need more work.
2. Background
2.1. Patterns
2.2. Dependability
3. Classification of Dependability Patterns
4. Reliability, Fault Tolerance, and Availability Patterns
5. Safety Patterns
6. Specialized Patterns and Related Artifacts
6.1. Hybrid Patterns
6.2. Webservices and Cloud Patterns
6.3. Recovery and Audit Patterns
6.4. Auxiliary Patterns
7. Methodologies, Metamodels, Architectures, Tactics, and Arguments
8. Dependability Patterns
9. Evaluation of Selected Patterns
10. Directions for Research
- Build a catalog of dependability patterns. This implies converting all of the patterns in Table 1 to POSA style, except those that already have this format. A template similar to that we used for security patterns in [1] would be appropriate, although some work should be performed first to see if this template can be improved.
- In Section 8, we ignored some patterns mentioned in the survey because their descriptions were insufficient or we did not have time to read these papers in detail; for example, Mahemoff presented 18 patterns [68]. Add them to Section 8 and Section 9. Try to find new patterns in the related literature.
- The lists of tactics include some that have not been realized by patterns, e.g., the ones in the report of Scott and Kazman that contain several availability tactics [125].
- There are very few cloud reliability patterns; write more of them. Recovery and auditing are also areas where there are few patterns.
- Combinations of patterns are interesting ideas. They can be used to solve several related problems, as shown in Daniels et al. [39].
- Write patterns for automotive embedded systems. Safety and reliability patterns are needed for these applications. New areas that do not have any dependability patterns are machine learning, virtual networks, and multi-edge computing.
- Several papers have models that, although not defined as patterns, are very close to being patterns, e.g., De la Vara [118], Choi [33], and Bernardi et al. [111]. These papers may contain architectures, metamodels, or a classification of approaches that could become patterns once transformed using a template.
11. Results
- Survey and enumerate dependability patterns. We tried to see what is available and detect if they cover a broad set of topics. We identified a suitable number of patterns that cover the common problems of dependability. We identify how security can affect dependability.
- Classify these patterns in groups and relate them using pattern diagrams. This classification is important to see the coverage of topics and to understand how these patterns relate to each other. We defined a new classification and created a UML class model and three pattern diagrams that make explicit the relationships between these patterns, thus facilitating their use.
- Evaluate the suitability of existing patterns to build dependable systems. We found that many patterns need completion or refactoring to be used in a practical catalog. We made a table indicating the necessary modifications to make these patterns useful to practitioners.
- Survey methodologies for systematic development of dependable systems. These are important to use the patterns in building dependable systems. We identified several methodologies to build dependable systems.
- Provide a list of directions for research. We indicate 10 possible directions.
12. Discussion
13. Related Work
14. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- Fernandez, E.B. Security Patterns in Practice: Building Secure Architectures Using Software Patterns; Wiley Series on Software Design Patterns, 2013; Available online: https://www.amazon.sg/Security-Patterns-Practice-Designing-Architectures/dp/1119998948 (accessed on 14 July 2023).
- Uzunov, A.V.; Fernandez, E.B.; Falkner, K. Securing distributed systems using patterns: A survey. Comput. Secur. 2012, 31, 681–703. [Google Scholar] [CrossRef]
- Avizienis, A.; Laprie, J.C.; Randell, B.; Landwehr, C. Basic Concepts and Taxonomy of Dependable and Secure Computing. Proc. IEEE Trans. Dependable Secur. Comput. 2004, 1, 11–33. [Google Scholar] [CrossRef]
- Buckley, I.A.; Fernandez, E.B. Patterns Combing Reliability and Security. In Proceedings of the Third International Conferences on Pervasive Patterns and Applications, 25–30 September 2011. [Google Scholar]
- Fernandez, E.B.; Yoshioka, N.; Washizaki, H.; Yoder, J. Abstract security patterns for requirements specification and analysis of secure systems. In Proceedings of the WER 2014 Conference, a Track of the 17th Ibero-American Conference on Software Engineering (CIbSE 2014), Pucon, Chile, 23–25 April 2014. [Google Scholar]
- Fernandez, E.B.; Astudillo, H.; Pedraza-Garcia, G. Revisiting architectural tactics for security. In Proceedings of the 9th European Conference on Software Architecture (ECSA 2015), Cavtat, Croatia, 5–7 September 2015; pp. 55–69. [Google Scholar]
- Gollmann, D. Computer Security, 3rd ed.; Wiley: New York, NY, USA, 2011; ISBN 978-0-470-74115-3. [Google Scholar]
- Uzunov, A.V.; Fernandez, E.B.; Falkner, K. Engineering Security into Distributed Systems: A Survey of Methodologies. J. Univers. Comput. Sci. 2013, 18, 2920–3006. [Google Scholar] [CrossRef]
- Buschmann, F.; Meunier, R.; Rohnert, H.; Sommerlad, P.; Stal, M. A System of Patterns: Pattern-Oriented Software Architecture; John Wiley & Sons: Hoboken, NJ, USA, 1996; ISBN 978-0471958697. [Google Scholar]
- Gamma, E.; Helm, R.; Johnson, R.; Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software; Addison Wesley: Boston, MA, USA, 1994; ISBN 978-0201633610. [Google Scholar]
- Fowler, M. Analysis Patterns: Reusable Object Models; Addison-Wesley: Upper Saddle River, NJ, USA, 1997; ISBN 978-0134186054. [Google Scholar]
- Warmer, J.; Kleppe, A. The Object Constraint Language, 2nd ed.; Addison-Wesley: Upper Saddle River, NJ, USA, 2003; ISBN 978-0321179364. [Google Scholar]
- Avgeriou, P. Describing, instantiating and evaluating a reference architecture: A case study. Enterp. Archit. J. 2003, 342, 1–24. [Google Scholar]
- Bass, L.; Clements, P.; Kazman, R. Software Architecture in Practice, 3rd ed.; Addison-Wesley: Upper Saddle River, NJ, USA, 2012; ISBN 978-0321815736. [Google Scholar]
- Harrison, N.; Avgeriou, P. Incorporating Fault Tolerance Tactics in Software Architecture Patterns. In Proceedings of the RISE/EFTS Joint International Workshop on Software Engineering for Resilient Systems, Newcastle upon Tyne, UK, 17–19 November 2008. [Google Scholar] [CrossRef]
- Kelly, T.P.; McDermid, J.A. Safety case construction and reuse using patterns. In Proceedings of the 16th Int. Conference on Computer Safety, Reliability and Security (SAFECOMP’97), York, UK, 7–10 September 1997; pp. 55–69. [Google Scholar] [CrossRef]
- Laprie, J.C.; Arlat, J.; Beounes, C.; Kanoun, K. Definition and analysis of hardware- and software-fault-tolerant architectures. Computer 1990, 23, 39–51. [Google Scholar] [CrossRef]
- von Neumann, J. Probabilistic logics and the synthesis of reliable organism from unreliable components. In Automata Studies; Princeton University Press: Princeton, NJ, USA, 1956; pp. 43–98. [Google Scholar]
- Nelson, V.P. Fault-Tolerant Computing: Fundamental Concepts. IEEE Comput. 1990, 3, 19–25. [Google Scholar] [CrossRef]
- Saridakis, T. A System of Patterns for Fault Tolerance. In Proceedings of the EuroPLoP, Irsee, Germany, 3–7 July 2002. [Google Scholar]
- Saridakis, T. Design Patterns for Fault Containment. In Proceedings of the EuroPLoP, Irsee, Germany, 25–29 June 2003. [Google Scholar]
- Saridakis, T. Design Patterns for Checkpoint-Based Rollback Recovery. In Proceedings of the EuroPLoP, Irsee, Germany, 25–29 June 2003. [Google Scholar]
- Saridakis, T. Design Patterns for Graceful Degradation. In Proceedings of the Transactions on Pattern Languages of Programs, Chicago, IL, USA, 28–30 August 2009; pp. 67–93. [Google Scholar] [CrossRef]
- Ferreira, L.L.; Rubira, C.M.F.; Rubira, M.F. The Reflective State Pattern. In Proceedings of the PLoP’98, Monticello, IL, USA, 11–14 August 1998. [Google Scholar]
- Ferreira, L.L.; Rubira, C.M.F. Reflective design patterns to implement fault tolerance. In Proceedings of the OOPSLA Workshop on Reflective Programming, Vancouver, BC, Canada, 18 October 1998; Available online: https://www.csq.is.titech.ac.jp/~chiba/oopsla98/ferreira.pdf (accessed on 14 July 2023).
- Leme, N.G.M.; Martins, E.; Rubira, C.M.F. A Software Fault Injection Pattern System. In Proceedings of the PLoP, Park Monticello, IL, USA, 11–15 September 2001. [Google Scholar]
- Martins, E.; Rubira, C.M.F.; Leme, N.G.M. A reflective fault injection tool based on patterns. In Proceedings of the International Dependable Systems and Networks (DSN’02), Washington, DC, USA, 23–26 June 2002. [Google Scholar]
- Buckley, I.A.; Fernandez, E.B. Three patterns for fault tolerance. In Proceedings of the OOPSLA MiniPLoP, Orlando, FL, USA, 26 October 2009. [Google Scholar]
- Mwelwa, C.; Pont, M.J. Two Simple Patterns to Support the Development of Reliable Embedded Systems. In Proceedings of the of Viking PLoP, Ikaalinen, Finland, March 2013. [Google Scholar]
- Konrad, S.; Cheng, B.H.C. Requirements patterns for embedded systems. In Proceedings of the IEEE Joint International Conference on Requirements Engineerinh (RE’02), Essen, Germany, 9–13 September 2002. [Google Scholar] [CrossRef]
- Kim, S.; Kim, D.; Lu, L.; Park, S. Quality-driven architecture development using architectural tactics. J. Syst. Softw. 2009, 82, 1211–1231. [Google Scholar] [CrossRef]
- Buckley, I.A.; Fernandez, E.B. Failure patterns: A new way to analyze failures. In Proceedings of the First International Symposium on Software Architecture and Patterns in Conjunction with the 10th Latin American and Caribbean Conference for Engineering and Technology, Panama City, Panama, 23–27 July 2012. [Google Scholar]
- Ahluwalia, K.S.; Jain, A. High Availability Design Patterns. In Proceedings of the PLoP ‘06, Portland, OR, USA, 21–23 October 2006. [Google Scholar]
- Jiménez-Peris, R.; Patiño-Martínez, M.; Kemme, B.; Perez-Sorrosal, F.; Serrano, D. A System of Architectural Patterns for Scalable, Consistent and Highly Available Multi-Tier Service-Oriented Infrastructures. In Proceedings of the WADS2008, Tokyo, Japan, 28 August–1 September 2023; pp. 1–23. [Google Scholar] [CrossRef]
- Kumar, S.P.; Ramaiah, P.S.; Khanaa, V. Architectural patterns to design software safety-based safety-critical systems. In Proceedings of the ICCCS’11, Rourkela Odisha, India, 12–14 February 2011; pp. 620–623. [Google Scholar] [CrossRef]
- Hanmer, R.S. Patterns for Fault Tolerant Software. Wiley Series in Software Design Patterns; 2007; ISBN 978-0470319796. Available online: https://www.oreilly.com/library/view/patterns-for-fault/9780470319796/ (accessed on 14 July 2023).
- Hanmer, R.S.; Lane, L. N-Version Programming. In Proceedings of the PLoP, Chicago, IL, USA, 28–30 August 2009. [Google Scholar]
- Hanmer, R.S. Software rejuvenation. In Proceedings of the PLoP, Salvador, Bahia, Brazil, 23–26 September 2010; pp. 1–13. [Google Scholar] [CrossRef]
- Daniels, F.; Kim, K.; Vouk, M.A. The Reliable Hybrid pattern—A generalized software fault tolerant design pattern. In Proceedings of the PLoP’97, 1997; Available online: https://hillside.net/plop/plop97/Proceedings/daniels.pdf (accessed on 14 July 2023).
- Armoush, A.; Salewski, F.; Kowalewski, S. Design Pattern Representation for Safety-Critical Embedded Systems. J. Softw. Eng. Appl. 2009, 2, 1–12. [Google Scholar] [CrossRef]
- Liu, C. A general framework for software fault tolerance. In Proceedings of the Workshop on Fault-Tolerant Parallel and Distributed Systems, Amherst, MA, USA, 6 July 1992. [Google Scholar]
- Ding, K.; Morozov, A.; Klaus, J. Classification of Hierarchical Fault-Tolerant Design Patterns. Available online: https://www.researchgate.net/publication/324179369_Classification_of_Hierarchical_Fault-Tolerant_Design_Patterns (accessed on 14 July 2023).
- Hoeller, A.; Rauter, T.; Iber, J.; Kreiner, C. Patterns for automated software diversity. In Proceedings of the 20th European Conference on Pattern Languages of Programs (EuroPLoP 2015), Kaufbeuren, Germany, 8–12 July 2015. [Google Scholar] [CrossRef]
- Dyson, P.; Logshaw, A. Patterns for high-availability Internet systems. In Proceedings of the EuroPLoP, Irsee, Germany, 3–7 July 2002. [Google Scholar]
- Adams, M.; Coplien, J.; Gamboke, R.; Hanmer, R.; Keeve, F.; Nicodemus, K. Fault-Tolerant Telecommunication System Patterns. In Proceedings of the Pattern Languages of Program Design 2; Addison-Wesley Longman Publishing Co.: Upper Saddle River, NJ, USA, 1996; pp. 549–562. [Google Scholar]
- Islam, N.; Devarakonda, M. An essential design pattern for fault-tolerant distributed state sharing. Commun. ACM 1996, 39, 65–74. [Google Scholar] [CrossRef]
- Iliasov, A.; Romanovsky, A. Refinement Patterns for Fault Tolerant Systems. In Proceedings of the 2008 Seventh European Dependable Computing Conference EDCC, Kaunas, Lithuania, 7–9 May 2008; pp. 167–176. [Google Scholar] [CrossRef]
- Douglass, B.F. Doing Hard-Time: Using Object-Oriented Programming and Software Patterns in Real-Time Applications; Addison-Wesley: Upper Saddle River, NJ, USA, 1998; ISBN 978-0321774934. [Google Scholar]
- Douglass, B.F. Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems; Addison-Wesley Professional: Upper Saddle River, NJ, USA, 2003; ISBN 978-0201699562. [Google Scholar]
- Lau, A.; Seviora, R.E. Design Patterns for Software Health Monitoring. In Proceedings of the 10th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS’05), Shanghai, China, 16–20 June 2005. [Google Scholar] [CrossRef]
- Gumzej, R.; Halang, W.A. A safety shell for UML-RT project structure and methods of the corresponding UML pattern. Innov. Syst. Softw. Eng. 2009, 5, 97–105. [Google Scholar] [CrossRef]
- Gumzej, R.; Colnaric, M.; Halang, W.A. A reconfiguration pattern for distributed embedded systems. Proc. Softw. Syst. Model. (Sym.) 2009, 8, 145–161. [Google Scholar] [CrossRef]
- Subramanian, S.; Tsai, W. Backup Pattern: Designing Redundancy in Object-Oriented Software. In Pattern Languages of Program Design; Addison-Wesley: Upper Saddle River, NJ, USA, 1996. [Google Scholar]
- Kang, E.; Jackson, D. Patterns for building dependable systems with trusted bases. In Proceedings of the 17th Conference on Pattern Languages of Programs (PLOP ‘10), Reno, NE, USA, 16–18 October 2010. [Google Scholar] [CrossRef]
- Preschern, C.; Kajtazovic, N.; Kreiner, C. Building a Safety Architecture PatternSystem. In Proceedings of the 18th European Conference on Pattern Languages of Program, Irsee, Germany, 10–14 July 2015. [Google Scholar] [CrossRef]
- Fernandez, E.B.; Hamid, B. Two safety patterns: Safety Assertion and Safety Assertion Enforcer. In Proceedings of the 23rd European Conference on Pattern Languages of Programs (EuroPLoP), Irsee, Germany, 12–16 July 2017. [Google Scholar]
- Rauhamaki, J.; Kuikka, S. A few patterns to implement protective measures. In Proceedings of the 20th European Conf. on Pattern Languages of Programs (EuroPLoP), Kaufbeuren, Germany, 8–12 July 2015; pp. 1–13. [Google Scholar] [CrossRef]
- Rauhamaki, J. Patterns for safety system bus architecture. In Proceedings of the Viking PLoP, Leerdam, The Netherlands, 7–10 April 2016; pp. 1–8. [Google Scholar] [CrossRef]
- Rauhamäki, J. Designing Functional Safety Systems: A Pattern Language Approach. Trans. Pattern Lang. Program. IV 2017, 1478, 100–138. [Google Scholar] [CrossRef]
- Hansen, K.; Gullesen, I. Utilizing UML and Patterns for Safety Critical Systems. 2002. Available online: https://www.researchgate.net/publication/238477117_Utiliing_UML_and_patterns_for_safety_critical_systems (accessed on 14 July 2023).
- Hauge, A.A.; Stølen, K. SACS: A pattern language for safe adaptive control software. In Proceedings of the 18th Conference on Pattern Languages of Programs (PLoP ‘11), Portland, OR, USA, 21–23 October 2011. [Google Scholar] [CrossRef]
- Hauge, A.A.; Stølen, K. A pattern-based method for safe control systems exemplified within nuclear power production. In Proceedings of the SAFECOMP, Magdeburg, Germany, 25–28 September 2012; pp. 13–24. [Google Scholar] [CrossRef]
- Hauge, A.A.; Stølen, K. Developing safe control systems using patterns for assurance. In Proceedings of the Third Int. Conf. on Performance, Safety and Robustness in Complex Systems and Applications (PESARO 2013), Opatija, Croatia, 20–24 May 2013. [Google Scholar]
- Hauge, A.A.; Stølen, K. An analytic evaluation of the saCS pattern language—Including explanations of major design choices. In Proceedings of the PATTERNS, Moscow, Russia, 23–28 June 2014; pp. 79–88. [Google Scholar]
- Olivera, A. Taim: A Safety Pattern Repository. Bachelor’s Thesis, Federal University of Rio Grande do Sul, São Lourenço do Sul, Brazil, 2012. [Google Scholar]
- Ljosland, I. BUCS: Patterns and Robustness. Master’s Thesis, Norwegian University of Science and Technology, Trondheim, Norway, 2006. [Google Scholar]
- Gleirscher, M.; Kugele, S. A Study of Safety Patterns: First Results; Institut fur Informatik, Technical University of Munich: Munich, Germany, 2016. [Google Scholar] [CrossRef]
- Mahemoff, M.; Hussey, A.; Johnston, L. Pattern-based reuse of successful designs: Usability of safety-critical systems. In Proceedings of the Australian Software Engineering Conference, Canberra, ACT, Australia, 27–28 August 2001. [Google Scholar] [CrossRef]
- Daramola, O.; Sindre, G.; Stålhane, T. Pattern-based security requirements specification using ontologies and boilerplates. In Proceedings of the Second International Workshop on Requirements Patterns (RePa ’12), Chicago, IL, USA, 24 September 2012; pp. 54–59. [Google Scholar] [CrossRef]
- Delmas, K.; Delmas, R.; Pagetti, C. Automatic Architecture Hardening Using Safety Patterns. In Proceedings of the International Conference on Computer Safety, Reliability, and Security (Safecomp), Delft, The Netherlands, 23–25 September 2015; pp. 283–296. [Google Scholar] [CrossRef]
- Pont, M.J. Designing and Implementing Reliable Embedded Systems Using Patterns. In Proceedings of the EuroPLoP, Irsee, Germany, 7–11 July 1999; pp. 257–290. [Google Scholar]
- Pont, M.J.; Banner, M.P. Designing embedded systems using patterns: A case study. J. Syst. Softw. 2004, 71, 201–213. [Google Scholar] [CrossRef]
- Luo, Y.; Saberi, A.K.; Bijlsma, T.; Lukkien, J.J.; van den Brand, M. An architecture pattern for safety critical automated driving applications: Design and analysis. In Proceedings of the Annual IEEE International Systems Conference (SysCon), Montreal, QC, Canada, 24–27 April 2017; pp. 1–7. [Google Scholar] [CrossRef]
- Khalil, M.; Prieto, A.; Hölzl, F. A Pattern-Based Approach towards the Guided Reuse of Safety Mechanisms in the Automotive Domai. In Proceedings of the IMBSA 2014, Munich, Germany, 27–29 October 2014; pp. 137–151. [Google Scholar] [CrossRef]
- Khalil, M. Design Patterns to the rescue: Guided model-based reuse for automotive solutions. In Proceedings of the PLoP, Irsee, Germany, 24–26 October 2018. [Google Scholar]
- Fernandez, E.B.; VanHilst, M.; LaRed, D.; Mujica, S. An extended reference monitor for security and safety. In Proceedings of the 5th Iberoamerican Conference on Information Security (CIBSI 2009), Jakarta, Indonesia, 5–7 December 2017. [Google Scholar]
- Amorim, T.; Martin, H.; Ma, Z.; Schmittner, C.; Schneider, D.; Macher, G.; Winkler, B.; Krammer, M.; Kreiner, C. Systematic Pattern Approach for Safety and Security Co-engineering in the Automotive Domain. In Proceedings of the SAFECOMP, Trento, Italy, 12–15 September 2017; pp. 329–342. [Google Scholar]
- Reiter, M.K.; Birman, K.P.; van Renesse, R. A secure architecture for fault-tolerant systems. Proc. ACM Trans. Comput. Syst. 1994, 12, 340–371. [Google Scholar] [CrossRef]
- Maffeis, S. The Object Group Design Pattern—An Object Behavioural Pattern for Fault-Tolerance and Group Communication in Distributed Systems. Available online: https://ecommons.cornell.edu/bitstream/handle/1813/7227/96-1570.pdf?sequence=1 (accessed on 13 July 2023).
- Kreiner, C. Essential architectural views for dependable system design. In Proceedings of the 20th European Conference on Pattern Languages of Programs (EuroPLoP), Kaufbeuren, Germany, 8–12 July 2015. [Google Scholar]
- Kruchten, P. The 4+1 view model of architecture. IEEE Softw. 1995, 12, 42–50. [Google Scholar] [CrossRef]
- Hafiz, M. Unique atomic chunks—A pattern for security and reliability. In Proceedings of the PLoP, Allerton Park in Monticello, IL, USA, 8–12 September 2004. [Google Scholar]
- Montesi, F.; Weber, J. From the decorator patterns to circuit breakers in microservices. In Proceedings of the 33rd Annual ACM Symposium (SAC 2018), Pau, France, 9–13 April 2018; pp. 1733–1735. [Google Scholar] [CrossRef]
- Asnar, Y.; Massacci, F.; Saïdane, A.; Riccucci, C.; Felici, M.; Tedeschi, A.; ElKhoury, P.; Li, K.; Seguran, M.; Zannone, N. Organizational Patterns for Security and Dependabiity: FromDesign to Application. Int. J. Secur. Softw. Eng. 2011, 2, 22. [Google Scholar] [CrossRef]
- Castellanos, C.; Vergnaud, T.; Borde, E.; Derive, T.; Pautet, L. Formalization of design patterns for security and dependability. In Proceedings of the 4th ACM Sigsoft International Symposium on Architecting Critical Systems (ISARCS), Vancouver, BC, Canada, 17–21 June 2013; pp. 17–26. [Google Scholar] [CrossRef]
- Gawand, H.; Mundada, R.S.; Swaminathan, P. Design Patterns to Implement Safety and Fault Tolerance. Int. J. Comput. Appl. 2011, 18, 6–13. [Google Scholar] [CrossRef]
- Buckley, I.A.; Fernandez, E.B.; Rossi, G.; Sadjadi, M. Web services reliability patterns. In Proceedings of the 21st International Conference on Software Engineering and Knowledge Engineering (SEKE’2009), Boston, MA, USA, 1–3 July 2009; pp. 4–9. [Google Scholar]
- Buckley, I.A.; Fernandez, E.B.; Anisetti, M.; Ardagna, C.A.; Sadjadi, M.; Damiani, E. Towards Pattern-based Reliability Certification of Services. In Proceedings of the 1st International Symposium on Secure Virtual Infrastructures (DOA-SVI’11), Crete, Greece, 17–19 October 2011; Springer Lecture Notes in Computer Science; p. 7045. [Google Scholar] [CrossRef]
- Faridoon, S.; Pantea, N. Propound Solutions for Increase Fault Tolerance in Web Services CompositionInt. J. Syst. Soft.Eng. 2013, 1, 17–22. [Google Scholar]
- Thaisongsuwan, T.; Senivongse, T. Applying software fault tolerance patterns to WS-BPEL processes. In Proceedings of the Eighth International Joint Conference on Computer Science and Software Engineering (JCSSE), Nakhonpathom, Thailand, 11–13 May 2011; pp. 269–274. [Google Scholar] [CrossRef]
- Hanmer, R.S. Patterns for Fault Tolerant Cloud Software. In Proceedings of the PLoP, Monticello, IL, USA, 14–17 September 2014; Available online: https://hillside.net/plop/2014/papers/Security/hanmer.pdf (accessed on 14 July 2023).
- Shunmugasundaram, S. Architecting for Reliability Series. Available online: https://medium.com/becloudy/architecting-for-reliability-part-1-concepts-17028343089 (accessed on 14 July 2023).
- Sousa, T.B.; Ferreira, H.S.; Correia, F.F.; Aguiar, A. Engineering Software for the Cloud: External Monitoring and Failure Injection. In Proceedings of the 23rd European Conference on Pattern Languages of Programs (EuroPLoP ‘18), Irsee, Germany, 4–8 July 2018; Volume 7, pp. 1–8. [Google Scholar] [CrossRef]
- Bulkhead Pattern. Available online: https://learn.microsoft.com/en-us/azure/architecture/patterns/bulkhead (accessed on 12 July 2023).
- Reliability Patterns. Available online: https://docs.mulesoft.com/mule-runtime/4.4/reliability-patterns (accessed on 12 July 2023).
- Xie, Z.; Sun, H.; Saluja, K. A Survey of Fault Tolerance Techniques. Available online: http://www.pld.ttu.ee/IAF0030/Paper_4.pdf (accessed on 12 July 2023).
- Retry Pattern. Available online: https://learn.microsoft.com/en-us/azure/architecture/patterns/retry (accessed on 26 August 2023).
- Health Endpoint Monitoring pattern. Available online: https://learn.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring (accessed on 12 July 2023).
- Grand, M. Patterns in Java Volume 1: A Catalog of Reusable Design Patterns Illustrated with UML; Addison-Wesley: Upper Saddle River, NJ, USA, 1998; ISBN 0471258393. [Google Scholar]
- Davies, C.T. Data processing sphers of control. IBM Syst. J. 1978, 17, 179–198. [Google Scholar] [CrossRef]
- Fayad, M.; Rajagopalan, J.; Hamza, H. Recovery design pattern. In Proceedings of the IEEE International Conference on Info. Reuse and Integration (IRI 2003), Las Vegas, NV, USA, 27–29 October 2003. [Google Scholar] [CrossRef]
- Zghurskyi, O. Backpressure Patterns in Practice. Available online: https://www.zghurskyi.com/backpressure/2019 (accessed on 12 July 2023).
- Tichy, M. Pattern Based Synthesis of Fault Tolerant Embedded Systems. In Proceedings of the SIGSOFT, Portland, ON, USA, 5–11 November 2006. [Google Scholar]
- Grunske, L. Transformational Patterns for the Improvement of Safety Properties in architectural Specifications. In Proceedings of the Viking PLoP, Ikaalinen, Finland, 21–24 March 2013. [Google Scholar]
- Fowler, M. Refactoring—Improving the Design of Existing Code; Addison-Wesley: Upper Saddle River, NJ, USA, 1999; ISBN 978-0201485677. [Google Scholar]
- Lakhani, F.N.; Pont, M.J. Applying Design Patterns to Improve the Reliability of Embedded Systems through a Process of Architecture Migration. In Proceedings of the Computing and Communication & IEEE International Conference on Embedded Software and Systems, Liverpool, UK, 25–27 June 2012; pp. 1563–1570. [Google Scholar] [CrossRef]
- Gribov, V.; Voos, H. Safety oriented software engineering process for autonomous robots. In Proceedings of the 2013 IEEE 18th Conference on Emerging Technologies & Factory Automation (ETFA), Cagliari, Italy, 10–13 September 2013; pp. 1–8. [Google Scholar] [CrossRef]
- Gribov, V.; Voos, H. A multilayer software architecture for safe autonomous robots. In Proceedings of the IEEE Emerging Tech. and Factory Automation, Barcelona, Spain, 16–19 September 2014. [Google Scholar] [CrossRef]
- Trad, A.; Trad, C. Audit, control and monitoring design patterns (ACMDP) for autonomous robust systems (ARS). Int. J. Adv. Robot. Syst. 2005, 2, 25–38. [Google Scholar] [CrossRef]
- Bernardi, S.; Merseguer, J.; Petriu, D.C. A dependability profile within MARTE. Softw. Syst. Model 2011, 10, 313–336. [Google Scholar] [CrossRef]
- Bernardi, S.; Merseguer, J.; Petriu, D.C. Dependability modeling and analysis of software systems specified with UML. ACM Comput. Surv. 2012, 45, 1–48. [Google Scholar] [CrossRef]
- Garbinat, B.; Guerraoui, R. An Open Framework for Reliable Distributed Computing. ACM Comput. Surv. 2000, 32, 22–26. [Google Scholar] [CrossRef]
- Choi, Y. Early Safety Analysis: From Use Cases to—Component-based Software Development. J. Object Technol. 2007, 6, 185–203. Available online: https://www.jot.fm/issues/issue_2007_09/article4 (accessed on 25 March 2023).
- Webel, C.; Fliege, I.; Geraldy, A.; Gotzhein, R. Developing Reliable Systems with SDL Design Patterns and Design Components. In Proceedings of the ISSRE04 Workshop on Integrated-Reliability with Telecommunications and UML Languages, 2004; Available online: https://www.sdl-forum.org/issre04witul/papers/witul04_developing_reliable_systems.pdf (accessed on 14 July 2023).
- Wood, W.G. A Practical Example of Applying Attribute-Driven Design (ADD), version 2.0; Software Engineering Institute, Carnegie Mellon University: Pittsburgh, PA, USA, 2007. [Google Scholar] [CrossRef]
- Macher, G.; Hoeller, A.; Armengaud, E.; Kreiner, C. Safety-critical embedded system multi-core migration pattern. In Proceedings of the 20th European Conference on Pattern Languages of Programs (EuroPLoP’15), Kaufbeuren, Germany, 8–12 July 2015. [Google Scholar]
- Yuan, L.; Dong, J.S.; Sun, J.; Basit, H.A. Generic Fault Tolerant Software Architecture Reasoning and Customization. Proc. IEEE Trans. Reliab. 2006, 55, 421–435. [Google Scholar] [CrossRef]
- De la Vara, J.L.; Nair, S.; Verhulst, E.; Studzizba, J.; Pepek, P.; Lambourg, J.; Sabetzadeh, M. Towards a model-based evolutionary chain of evidence for compliance with safety standards. In Proceedings of the Workshop Next Generation Syst. Assurance Approaches Safety-Critical Syst. Workshop; 2012; pp. 64–78. Available online: https://people.svv.lu/sabetzadeh/pub/SASSUR12.pdf (accessed on 12 July 2023).
- Ancona, M.; Clematis, A.; Dodero, G.; Fernandez, E.B.; Gianuzzi, V. System Architecture for Fault Tolerance in Concurrent Systems. IEEE Comput. 1990, 23, 23–32. [Google Scholar] [CrossRef]
- Clematis, A.; Ancona, T.; Dodero, G.; Gianuzzi, V.; Lisbôa, M.L. An object-oriented approach to fault-tolerant software. In Proceedings of the Euromicro Workshop on Parallel and Distributed Processing, San Remo, Italy, 25–27 January 1995. [Google Scholar] [CrossRef]
- Gensh, R.; Rafiev, A.; Romanovsky, A.B.; Garcia, A.F.; Xia, F.; Yakovlev, A. Architecting Holistic Fault Tolerance. In Proceedings of the HASE, Singapore, 12–14 January 2017; pp. 5–8. [Google Scholar] [CrossRef]
- Rytter, M.; Jørgensen, B.N. Enhancing NetBeans with Transparent Fault Tolerance Using Meta-Level Architecture. J. Object Technol. 2010, 9, 55–73. [Google Scholar] [CrossRef]
- Kindler, E.; Shasha, D. Verifying a design pattern for the fault-tolerant execution of parallel program. In Technical Report; New York University: New York, NY, USA, 2000. [Google Scholar]
- Lopatkin, I.; Iliasov, A.; Romanovsky, A.B.; Prokhorova, Y.; Troubitsyna, E. Patterns for Representing FMEA in Formal Specification of Control Systems. In Proceedings of the HASE’11, Nanjing, China, 3–5 December 2008; pp. 146–151. [Google Scholar]
- Scott, J.; Kazman, R. Realizing and refining architectural tactics: Availability. In Technical Report; Software Engineering Institute, Carnegie Mellon University: Pittsburgh, PA, USA, 2009. [Google Scholar] [CrossRef]
- Harrison, N.; Avgeriou, P.; Zdun, U. On the Impact of Fault Tolerance Tactics on Architecture. In Proceedings of the ACM SERENE 2010, London, UK, 13–16 April 2010. [Google Scholar] [CrossRef]
- Wu, W.; Kelly, T. Safety tactics for software architecture design. In Proceedings of the 28th Annual International Conference of Computer Software and Applications, Hong Kong, China, 28–30 September 2004; pp. 368–375. [Google Scholar] [CrossRef]
- Hawkins, R.; Clegg, K.; Alexander, R.; Kelly, T. Using a Software Safety Argument Pattern Catalogue: Two Case Studies. In Proceedings of the SAFECOMP, Naples, Italy, 19–22 September 2011; pp. 185–198. [Google Scholar] [CrossRef]
- De Oliveira, A.L.; Braga, R.T.V.; Masiero, P.C.; Habli, I.; Kelly, T. A pattern to argue the compliance of system safety requirements decomposition. In Proceedings of the 10th Conference on Pattern Languages of Programs (SugarLoafPLoP), Sagadi Manor, Estonia, 9–12 November 2014. [Google Scholar]
- Ayoub, A.; Kim, B.G.I.; Sokolsky, O. A safety case pattern for model-based development approach. In Proceedings of the NASA Formal Methods Symposium, Norfolk, VA, USA, 3–5 April 2012. [Google Scholar]
- Gleirscher, M.; Kugele, S. Assurance of system safety: A survey of design and argument patterns. arXiv 2019, arXiv:1902.05537. [Google Scholar] [CrossRef]
- Holzner, S. Design Patterns: Simply. Available online: http://sourcemaking.com/design_patterns/mediator (accessed on 13 July 2023).
- Circuit Breaker Pattern. Available online: https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker (accessed on 12 July 2023).
- Teifel, J. Self-voting dual-modular-redundancy circuits for single event transient mitigation. Proc. IEEE Trans. Nucl. Sci. 2008, 55, 3435–3439. [Google Scholar] [CrossRef]
- Golander, A.; Weiss, S.; Ronen, R. DDMR: Dynamic and Scalable Dual Modular Redundancy with Short Validation Intervals. Proc. IEEE Comput. Archit. Lett. 2008, 7, 65–68. [Google Scholar] [CrossRef]
- Microsoft, Failover Cluster. Available online: https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff650328(v=pandp.10) (accessed on 13 July 2023).
- Nierstrasz, O. Safety Patterns. Available online: https://sgb.unibe.ch/download/cp/04SafetyPatterns.pdf (accessed on 14 July 2023).
- Gamoke, R. Pattern: Leaky Bucket Counters. 1995. Available online: https://www.researchgate.net/publication/242361940_Fault-tolerant_telecommunication_system_patterns (accessed on 14 July 2023).
- Kalinsky, D. Design Patterns for High Availability. Available online: https://www.design-reuse.com/articles/3671/design-patterns-for-high-availability.html (accessed on 13 July 2023).
- IBM, Non-Functional Requirements: High Availability: Runtime Patterns. Available online: http://www.ibm.com/developerworks/patterns/edge/at1-runtime.html. (accessed on 13 July 2023).
- Wakerly, J.F. Microcomputer Reliability Improvement Using Triple Modular Redundancy. IEEE Trans. Comput. 1976, 64, 889–895. [Google Scholar] [CrossRef]
- Laverdiere, M.; Mourad, A.; Hanna, A.; Debbabi, M. Security design patterns: Survey and evaluation. In Proceedings of the Canadian Conference on Electrical and Computer Engineering (CCECE’06), Ottawa, ON, Canada, 7–10 May 2006; pp. 1605–1608. [Google Scholar] [CrossRef]
Pattern | Dependability Property | Quality Indicator |
---|---|---|
Reliability Patterns: | ||
| Alerting Error Detection Redundancy Error Masking Fault Containment |
|
| Error Masking Redundancy |
|
| Error Detection Redundancy Error Masking |
|
| Alerting Error Detection Redundancy Error Masking Fault Containment |
|
| Redundancy Error Masking |
|
| Redundancy Error Masking |
|
| Redundancy Error Detection Error Masking |
|
| Error Detection Redundancy Error Masking |
|
| Diversity |
|
| Error Detection Error Masking Fault Containment |
|
| Error Detection Alert |
|
| Error Detection |
|
| Redundancy Error Masking |
|
| Error Detection |
|
| Error Detection Redundancy Error Masking Recovery |
|
Safety Patterns: | ||
| Error Masking See definition |
|
| Policy |
|
Web Service Patterns: | ||
| Error Detection Alert Error Masking |
|
| Error Detection Alert Error Masking |
|
Hybrid Reliability/Security Patterns: | ||
| Redundancy Error Masking |
|
| Redundancy Error Masking |
|
Auxiliary Patterns: | ||
| Error Detection Fault Containment |
|
| Diversity Error Masking |
|
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2023 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Buckley, I.A.; Fernandez, E.B. Dependability Patterns: A Survey. Computers 2023, 12, 214. https://doi.org/10.3390/computers12100214
Buckley IA, Fernandez EB. Dependability Patterns: A Survey. Computers. 2023; 12(10):214. https://doi.org/10.3390/computers12100214
Chicago/Turabian StyleBuckley, Ingrid A., and Eduardo B. Fernandez. 2023. "Dependability Patterns: A Survey" Computers 12, no. 10: 214. https://doi.org/10.3390/computers12100214
APA StyleBuckley, I. A., & Fernandez, E. B. (2023). Dependability Patterns: A Survey. Computers, 12(10), 214. https://doi.org/10.3390/computers12100214