Skip to main content

Intrinsic Redundancy for Reliability and Beyond

  • Chapter
  • First Online:
Present and Ulterior Software Engineering

Abstract

Software redundancy is an essential mechanism in engineering. Different forms of redundant design are the core technology of well-established reliability and fault-tolerant mechanisms in traditional engineering as well as in software engineering. In this chapter, we discuss intrinsic software redundancy, a type of redundancy that is not added explicitly at design time to improve runtime reliability but is natively present in modern software system due to independent design and development decisions. We introduce the concept of intrinsic redundancy, discuss its diffusion and the reasons for its presence in modern software systems, indicate how it can be automatically identified, and present some current and future applications of such form of redundancy to produce more reliable software systems at affordable costs.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Arcuri, A., Yao, X.: A novel co-evolutionary approach to automatic software bug fixing. In: Proceedings of IEEE Congress on Evolutionary Computation, CEC’08, pp. 162–168. IEEE Computer Society, Washington (2008)

    Google Scholar 

  2. Baresi, L., Guinea, S., Pasquale, L.: Self-healing BPEL processes with dynamo and the JBoss rule engine. In: International Workshop on Engineering of Software Services for Pervasive Environments, ESSPE’07, pp. 11–20 (2007)

    Google Scholar 

  3. Barr, E.T., Harman, M., McMinn, P., Shahbaz, M., Yoo, S.: The oracle problem in software testing: a survey. IEEE Trans. Softw. Eng. 41(5), 507–525 (2015)

    Article  Google Scholar 

  4. Bauer, V., Eckhardt, J., Hauptmann, B., Klimek, M.: An exploratory study on reuse at google. In: Proceedings of the 1st International Workshop on Software Engineering Research and Industrial Practices, SER&IPs 2014, pp. 14–23. ACM, New York (2014)

    Google Scholar 

  5. Carzaniga, A., Gorla, A., Pezzè, M.: Fault handling with software redundancy. In: de Lemos, R., Fabre, J., Gacek, C., Gadducci, F., ter Beek, M. (eds.) Architecting Dependable Systems VI, pp. 148–171. Springer, Berlin (2009)

    Google Scholar 

  6. Carzaniga, A., Gorla, A., Perino, N., Pezzè, M.: Automatic workarounds for web applications. In: Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE’10, pp. 237–246. ACM, New York (2010)

    Google Scholar 

  7. Carzaniga, A., Gorla, A., Perino, N., Pezzè, M.: RAW: runtime automatic workarounds. In: ICSE’10: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (Tool Demo), pp. 321–322. ACM, New York (2010)

    Google Scholar 

  8. Carzaniga, A., Gorla, A., Mattavelli, A., Pezzè, M., Perino, N.: Automatic recovery from runtime failures. In: Proceedings of the International Conference on Software Engineering, ICSE’13, pp. 782–791. IEEE Computer Society, Washington (2013)

    Google Scholar 

  9. Carzaniga, A., Goffi, A., Gorla, A., Mattavelli, A., Pezzè, M.: Cross-checking oracles from intrinsic software redundancy. In: Proceedings of the International Conference on Software Engineering, ICSE’14, pp. 931–942. ACM, New York (2014)

    Google Scholar 

  10. Carzaniga, A., Gorla, A., Perino, N., Pezzè, M.: Automatic workarounds: exploiting the intrinsic redundancy of web applications. ACM Trans. Softw. Eng. Methodol. 24(3), 16 (2015)

    Article  Google Scholar 

  11. Carzaniga, A., Mattavelli, A., Pezzè, M.: Measuring software redundancy. In: Proceedings of the 37th International Conference on Software Engineering, ICSE’15, pp. 156–166. IEEE Computer Society, Washington (2015)

    Google Scholar 

  12. Chen, L., Avizienis, A.: N-version programming: a fault-tolerance approach to reliability of software operation. In: International Symposium on Fault-Tolerant Computing, FTCS’78, pp. 113–119 (1978)

    Google Scholar 

  13. Chen, T.Y., Cheung, S.C., Yiu, S.M.: Metamorphic testing: a new approach for generating next test cases. Tech. rep., Department of Computer Science, Hong Kong University of Science and Technology (1998)

    Google Scholar 

  14. Cox, B., Evans, D., Filipi, A., Rowanhill, J., Hu, W., Davidson, J., Knight, J., Nguyen-Tuong, A., Hiser, J.: N-variant systems: a secretless framework for security through diversity. In: Proceedings of the Conference on USENIX Security Symposium, SEC’06. USENIX Association, Berkeley (2006)

    Google Scholar 

  15. Doong, R.K., Frankl, P.G.: The ASTOOT approach to testing object-oriented programs. ACM Trans. Softw. Eng. Methodol. 3(2), 101–130 (1994)

    Article  Google Scholar 

  16. Fraser, G., Arcuri, A.: Evosuite: automatic test suite generation for object-oriented software. In: Proceedings of the European Software Engineering Conference held jointly with the ACM SIGSOFT International Symposium on Foundations of Software Engineering, ESEC/FSE’11, pp. 416–419. ACM, New York (2011)

    Google Scholar 

  17. Gabel, M., Su, Z.: A study of the uniqueness of source code. In: Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE’10, pp. 147–156. ACM, New York (2010)

    Google Scholar 

  18. Ghosn, M., Moses, F.: NCHRP report 406: redundancy in highway bridge superstructures. Tech. rep., National Cooperative Highway Research Program (NCHRP), Transportation Research Board (1998). http://onlinepubs.trb.org/onlinepubs/nchrp/nchrp_rpt_406.pdf

    Google Scholar 

  19. Ghosn, M., Yang, J.: NCHRP report 776: bridge system safety and redundancy. Tech. rep., National Cooperative Highway Research Program (NCHRP), Transportation Research Board (2014). http://onlinepubs.trb.org/onlinepubs/nchrp/nchrp_rpt_776.pdf

    Book  Google Scholar 

  20. Goffi, A.: Automatic generation of cost-effective test oracles. In: ICSE’14: Proceedings of the 36th International Conference on Software Engineering, pp. 678–681. ACM, New York (2014)

    Google Scholar 

  21. Goffi, A., Gorla, A., Mattavelli, A., Pezzè, M., Tonella, P.: Search-based synthesis of equivalent method sequences. In: Proceedings of the ACM SIGSOFT International Symposium on the Foundations of Software Engineering, FSE’14, pp. 366–376. ACM, New York (2014)

    Google Scholar 

  22. Hamming, R.W.: Error detecting and error correcting codes. Bell Syst. Tech. J. 29(2), 147–160 (1950)

    Article  MathSciNet  Google Scholar 

  23. Harman, M., Langdon, W.B., Jia, Y., White, D.R., Arcuri, A., Clark, J.A.: The gismoe challenge: constructing the pareto program surface using genetic programming to find better programs (keynote paper). In: Proceedings of the International Conference on Automated Software Engineering, ASE’12, pp. 1–14. ACM, New York (2012)

    Google Scholar 

  24. Hindle, A., Barr, E.T., Su, Z., Gabel, M., Devanbu, P.: On the naturalness of software. In: Proceedings of the International Conference on Software Engineering, ICSE’12, pp. 837–847. ACM, New York (2012)

    Google Scholar 

  25. Hosek, P., Cadar, C.: Varan the unbelievable: an efficient n-version execution framework. In: Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS’15, pp. 339–353. ACM, New York (2015)

    Google Scholar 

  26. Huang, Y., Kintala, C.M.R.: Software implemented fault tolerance technologies and experience. In: Proceedings of the 23rd Annual International Symposium on Fault-Tolerant Computing, FTSC’93, pp. 2–9. IEEE Computer Society, Washington (1993)

    Google Scholar 

  27. Huang, W.C., Knottenbelt, W.J.: Self-adaptive containers: building resource-efficient applications with low programmer overhead. In: Proceedings of the International Symposium on Software Engineering for Adaptive and Self-Managing Systems, SEAMS’13, pp. 123–132. IEEE Computer Society, Washington (2013)

    Google Scholar 

  28. IEEE Recommended Practice on Software Reliability (2008)

    Google Scholar 

  29. Jiang, L., Su, Z.: Automatic mining of functionally equivalent code fragments via random testing. In: Proceedings of the International Symposium on Software Testing and Analysis, ISSTA’09, pp. 81–92. ACM, New York (2009)

    Google Scholar 

  30. Kawrykow, D., Robillard, M.P.: Improving API usage through automatic detection of redundant code. In: Proceedings of the International Conference on Automated Software Engineering, ASE’09, pp. 111–122. IEEE Computer Society, Washington (2009)

    Google Scholar 

  31. Le Goues, C., Nguyen, T., Forrest, S., Weimer, W.: Genprog: a generic method for automatic software repair. IEEE Trans. Softw. Eng. 38, 54–72 (2012)

    Article  Google Scholar 

  32. Liu, W.D., Ghosn, M., Moses, F.: NCHRP report 458: redundancy in highway bridge substructures. Tech. rep., National Cooperative Highway Research Program (NCHRP), Transportation Research Board (2001). http://onlinepubs.trb.org/onlinepubs/nchrp/nchrp_rpt_458-a.pdf

    Google Scholar 

  33. Mattavelli, A.: Software redundancy: what, where, how. Ph.D. thesis, Università della Svizzera italiana (USI) (2016)

    Google Scholar 

  34. Mattavelli, A., Goffi, A., Gorla, A.: Synthesis of equivalent method calls in Guava. In: Proceedings of the 7th International Symposium on Search-Based Software Engineering, SSBSE’15, pp. 248–254. Springer, Berlin (2015)

    Chapter  Google Scholar 

  35. Misailovic, S., Sidiroglou, S., Hoffmann, H., Rinard, M.: Quality of service profiling. In: Proceedings of the International Conference on Software Engineering, ICSE’10, pp. 25–34. ACM, New York (2010)

    Google Scholar 

  36. Patterson, D.A., Gibson, G., Katz, R.H.: A case for redundant arrays of inexpensive disks (RAID). SIGMOD Record 17(3), 109–116 (1988)

    Article  Google Scholar 

  37. Randell, B.: System structure for software fault tolerance. SIGPLAN Notes 10(6), 437–449 (1975)

    Article  Google Scholar 

  38. Reed, I.S., Solomon, G.: Polynomial codes over certain finite fields. J. Soc. Ind. Appl. Math. 8(2), 300–304 (1960)

    Article  MathSciNet  Google Scholar 

  39. Sadjadi, S.M., McKinley, P.K.: Using transparent shaping and Web services to support self-management of composite systems. In: Proceedings of the International Conference on Autonomic Computing, ICAC’05, pp. 76–87. IEEE Computer Society, Washington (2005)

    Google Scholar 

  40. Salamat, B., Jackson, T., Gal, A., Franz, M.: Orchestra: intrusion detection using parallel execution and monitoring of program variants in user-space. In: Proceedings of the ACM SIGOPS EuroSys European Conference on Computer Systems, EuroSys’09, pp. 33–46. ACM, New York (2009)

    Google Scholar 

  41. Shvachko, K., Kuang, H., Radia, S., Chansler, R.: The hadoop distributed file system. In: Proceedings of the 2010 IEEE Symposium on Mass Storage Systems and Technologies, MSST’10, pp. 1–10. IEEE Computer Society, Washington (2010)

    Google Scholar 

  42. Sidiroglou-Douskos, S., Lahtinen, E., Long, F., Rinard, M.: Automatic error elimination by horizontal code transfer across multiple applications. In: Proceedings of the Conference on Programming Language Design and Implementation, PLDI’15, pp. 43–54. ACM, New York (2015)

    Google Scholar 

  43. Somani, A.K., Vaidya, N.H.: Understanding fault tolerance and reliability. IEEE Comput. 30(4), 45–50 (1997)

    Article  Google Scholar 

  44. Subramanian, S., Thiran, P., Narendra, N.C., Mostefaoui, G.K., Maamar, Z.: On the enhancement of BPEL engines for self-healing composite web services. In: Proceedings of the International Symposium on Applications and the Internet, SAINT’08, pp. 33–39. IEEE Computer Society, Washington (2008)

    Google Scholar 

  45. Taher, Y., Benslimane, D., Fauvet, M.C., Maamar, Z.: Towards an approach for Web services substitution. In: Proceedings of the International Database Engineering and Applications Symposium, IDEAS’06, pp. 166–173. IEEE Computer Society, Washington (2006)

    Google Scholar 

  46. Trachsel, O., Gross, T.R.: Variant-based competitive parallel execution of sequential programs. In: Proceedings of the ACM International Conference on Computing Frontiers, CF’10, pp. 197–206. ACM, New York (2010)

    Google Scholar 

  47. Weyuker, E.J.: On testing non-testable programs. Comput. J. 25(4), 465–470 (1982)

    Article  Google Scholar 

  48. Xue, H., Dautenhahn, N., King, S.T.: Using replicated execution for a more secure and reliable web browser. In: Proceedings of the Annual Network and Distributed System Security Symposium, NDSS’12. The Internet Society, Reston (2012)

    Google Scholar 

  49. Yeh, Y.C.: Triple-triple redundant 777 primary flight computer. In: Proceedings of the IEEE Aerospace Applications Conference, vol. 1, pp. 293–307 (1996)

    Google Scholar 

Download references

Acknowledgements

This work was supported in part by the Swiss National Science Foundation with projects SHADE (grant n. 200021-138006), ReSpec (grant n. 200021-146607), WASH (grant n. 200020-124918), and SHADE (grant n. 200021-138006), by the European Union FP7-PEOPLE-COFUND project AMAROUT II (grant n. 291803), by the Spanish Ministry of Economy project DEDETIS, and by the Madrid Regional Government project N-Greens Software (grant n. S2013/ICE-2731).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Alberto Goffi .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2017 Springer International Publishing AG

About this chapter

Cite this chapter

Goffi, A., Gorla, A., Mattavelli, A., Pezzè, M. (2017). Intrinsic Redundancy for Reliability and Beyond. In: Mazzara, M., Meyer, B. (eds) Present and Ulterior Software Engineering. Springer, Cham. https://doi.org/10.1007/978-3-319-67425-4_10

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-67425-4_10

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-67424-7

  • Online ISBN: 978-3-319-67425-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics