Abstract
N-version programming is one of the approach ensuring high reliability and fault-tolerance of software on the basis of program redundancy and diversity. This approach ensures that faults of one of the versions of an N-version software module will not result in malfunction of the module operation process. N-version software realization, as a rule, depends upon capacities and preferences of the teams of designers and developers. This work is an attempt to denote basic requirements, which should be met at the design of N-version software to minimize the occurrence of possible program faults and influence of the modules versions on one another. The requirements to versions (program modules) of N-version software allow to ensure high-level reliability and fault-tolerance due to the elimination of the possible influence of separate versions on each other. A special attention has been paid to their interaction, which should not have any impact on the operation of the other components. For realization and research of N-version software developed taking into account the defined requirements an N-version software execution environment has been developed. Testing of the N-version software execution environment has demonstrated expediency of a component architecture application and high efficiency of N-version programming as a method of fault-tolerant software development.
References
Carzaniga, A., Gorla, A., Pezze, M.: Handling software faults with redundancy. In: Architecting Dependable Systems VI. LNCS, vol. 5835, pp. 148–171. Springer, Heidelberg (2009)
Aidemark, J., Vinter, J., Folkesson, P., Karlsson, J.: Experimental evaluation of time-redundant execution for a brake-by-wire application. In: 2002 International Conference on Dependable Systems and Networks, pp. 210–215. IEEE, Washington D.C. (2002)
Avizienis, A., Chen, L.: On the implementation of N-version programming for software fault tolerance during execution. In: IEEE COMPSAC 1977, Chicago, pp. 149–155 (1977)
Avizienis, A.: The methodology of N-version programming. In: Liu, M. (ed.) Software Fault Tolerance. Wiley, Chichester (1995)
Chernigovskiy, A.S., Tsarev, R.Y., Knyazkov, A.N.: Hu’s algorithm application for task scheduling in N-version software for satellite communications control systems. In: 2015 International Siberian Conference on Control and Communications, pp. 1–4. IEEE (2015)
Sommerville, I.: Software Engineering, 9th edn. Addison Wesley Pearson, New York (2011)
Westphal, L.C.: Handbook of Control Systems Engineering. Springer, New York (2012)
Hosek, P., Cadar, C.: VARAN the unbelievable: an efficient N-version execution framework. In: International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 339–353. ACM, New York (2015)
Kopetz, H., Damm, A., Koza, C., Mulazzani, M., Schwabl, W., Senft, C., Zainlinger, R.: Distributed fault-tolerant real-time systems: the mars approach. IEEE Micro. 9, 25–40 (1989)
Amza, C., Cox, A.L., Dwarkadas, S., Keleher, P., Lu, H., Rajamony, R., Yu, W., Zwaenepoel, W.: TreadMarks: shared memory computing on networks of workstations. Computer 29, 18–28 (1996)
Gruzenkin, D.V., Tsarev, R.Y., Pupkov, A.N.: Technique of selecting multiversion software system structure with minimum simultaneous module version usage. Adv. Intell. Syst. Comput. 465, 375–386 (2016)
Baudry, B., Monperrus, M.: The multiple facets of software diversity: recent developments in year 2000 and beyond. ACM Comput. Surv. 48, 16 (2015)
Creeger, M.: Multicore CPUs for the Masses. ACM Queue 3, 64-ff (2005)
Chen, Y., Cheng, D.K.W., Lee, Y.S.: A hot-swap solution for paralleled power modules by using current-sharing interface circuits. IEEE Trans. Power Electr. 21, 1564–1571 (2006)
Buxton, J.N., Randell, B.: Software engineering techniques report. In: Conference sponsored by the NATO Science Committee, pp. 27–31. Scientific Affairs Division, Brussels (1969)
Hastings, R., Joyce, B.: Purify: fast detection of memory leaks and access errors. In: Proceedings of the Winter 1992 USENIX Conference, pp. 125–138. USENIX Association, Berkeley (1991)
Koren, I., Krishna, C.M.: Fault-tolerant Systems. Morgan Kaufmann, San Francisco (2007)
Burns, A., Wellings, A.: Real-Time Systems and Programming Languages. Addison-Wesley Longman, Harlow (1997)
Adams, J.C.: Fortran 95 Handbook: Complete ISO/ANSI Reference. MIT press, Cambridge (1997)
Norvig, P.: Paradigms of Artificial Intelligence Programming: Case Studies in Common LISP. Morgan Kaufmann, San Francisco (1992)
Box, D.: Essential COM. Addison-Wesley, Menlo Park (1998)
Natella, R., Cotroneo, D., Duraes, J.A., Madeira, H.S.: On fault representativeness of software fault injection. IEEE Trans. Softw. Eng. 39, 80–96 (2013)
Winter, S., Tretter, M., Sattler, B., Suri, N.: SimFI: from single to simultaneous software fault injections. In: International Conference on Dependable Systems and Networks, pp. 1–12. IEEE Computer Society, Washington D.C. (2013)
Tsarev, R.Y., Chernigovskiy, A.S., Shtarik, E.N., Shtarik, A.V., Durmus, M.S., Ustoglu, I.: Modular integrated probabilistic model of software reliability estimation. Informatica 40, 125–132 (2016)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG
About this paper
Cite this paper
Gruzenkin, D.V., Chernigovskiy, A.S., Tsarev, R.Y. (2018). N-version Software Module Requirements to Grant the Software Execution Fault-Tolerance. In: Silhavy, R., Silhavy, P., Prokopova, Z. (eds) Cybernetics Approaches in Intelligent Systems. CoMeSySo 2017. Advances in Intelligent Systems and Computing, vol 661. Springer, Cham. https://doi.org/10.1007/978-3-319-67618-0_27
Download citation
DOI: https://doi.org/10.1007/978-3-319-67618-0_27
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-67617-3
Online ISBN: 978-3-319-67618-0
eBook Packages: EngineeringEngineering (R0)