Advertisement

Modular Programming and Reasoning for Living with Uncertainty

  • Naoyasu UbayashiEmail author
  • Yasutaka Kamei
  • Ryosuke Sato
Conference paper
Part of the Communications in Computer and Information Science book series (CCIS, volume 1077)

Abstract

Embracing uncertainty in software development is one of the crucial research topics in software engineering. In most projects, we have to deal with uncertain concerns by using informal ways such as documents, mailing lists, or issue tracking systems. This task is tedious and error-prone. Especially, uncertainty in programming is one of the challenging issues to be tackled, because it is difficult to verify the correctness of a program when there are uncertain user requirements, unfixed design choices, and alternative algorithms. If uncertainty can be dealt with modularly, we can add or delete uncertain concerns to/from code whenever they arise or are fixed to certain concerns. This paper proposes a new programming and reasoning style based on Modularity for Uncertainty. The iArch-U IDE (Integrated Development Environment) is developed to support uncertainty-aware software development. The combined usage of a type checker and a model checker in iArch-U plays an important role in verifying whether or not some important properties are guaranteed even if uncertainty remains in a program. Our model checker is based on LTSA (Labelled Transition System Analyzer) and is implemented as an Eclipse plug-in. Agile methods embrace change to accept changeable user requirements. On the other hand, our approach embraces uncertainty to support exploratory software development.

Keywords

Uncertainty Known Unknowns Partial model Modular uncertainty representation Modular reasoning Type checking Model checking State explosion problem 

Notes

Acknowledgments

We thank Syunya Nakamura, Keisuke Watanabe, and Takuya Fukamachi for their great contributions. They were students of Naoyasu Ubayashi. This work was supported by JSPS KAKENHI Grant Numbers JP26240007.

References

  1. 1.
    Allen, R., Garlan, D.: Formalizing architectural connection. In: Proceedings of the 16th International Conference on Software Engineering (ICSE 1994), pp. 71–80 (1994)Google Scholar
  2. 2.
    Autili, M., Cortellessa, V., Di Ruscio, D., Inverardi, P., Pelliccione, P., Tivoli, M.: Integration architecture synthesis for taming uncertainty in the digital space. In: Calinescu, R., Garlan, D. (eds.) Monterey Workshop 2012. LNCS, vol. 7539, pp. 118–131. Springer, Heidelberg (2012).  https://doi.org/10.1007/978-3-642-34059-8_6CrossRefGoogle Scholar
  3. 3.
    Ba̧k, K., Diskin, Z., Antkiewicz, M., Czarnecki, K., Wa̧sowski, A.: Clafer: unifying class and feature modeling. Softw. Syst. Model. 15(3), 811–845 (2016)Google Scholar
  4. 4.
    Bornholt, J., Mytkowicz, T., McKinley, K.S.: Uncertain\(<T>\): a first-order type for uncertain data. In: Proceedings of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2014), pp. 51–66 (2014)Google Scholar
  5. 5.
    Cheng, S.-W., Garlan, D.: Handling uncertainty in autonomic systems. In: Proceedings of the International Workshop on Living with Uncertainties (IWLU 2007) (2007)Google Scholar
  6. 6.
    Classen, A., Cordy, M., Heymans, P., Legay, A., Schobbens, P.Y.: Model checking software product lines with SNIP. Int. J. Softw. Tools Technol. Transfer 14(5), 589–612 (2012)CrossRefGoogle Scholar
  7. 7.
    Clements, P., Northrop, L.: Software Product Lines. Addision-Wesley, Boston (2001)Google Scholar
  8. 8.
    Devaraj, A., Mishra, K., Trivedi, K.S.: Uncertainty propagation in analytic availability models. In: Proceedings of the Symposium on Reliable Distributed Systems (SRDS 2010), pp. 121–130 (2010)Google Scholar
  9. 9.
    Egyed, A., Letter, E., Finkelstein, A.: Generating and evaluating choices for fixing inconsistencies in UML design models. In: Proceedings of the 23rd International Conference on Automated Software Engineering (ASE 2008), pp. 99–108 (2008)Google Scholar
  10. 10.
    Elbaum, S., Rosenblum, D.S.: Known Unknowns: testing in the presence of uncertainty. In: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2014), pp. 833–836 (2014)Google Scholar
  11. 11.
    Eramo, R., Pierantonio, A., Rosa, G.: Uncertainty in bidirectional transformations. In: Proceedings of the 6th International Workshop on Modeling in Software Engineering (MiSE 2014), pp. 37–42 (2014) Google Scholar
  12. 12.
    Esfahani, N., Kouroshfar, E., Malek, S.: Taming uncertainty in self-adaptive software. In: Proceedings of the 8th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2011), pp. 234–244 (2011)Google Scholar
  13. 13.
    Esfahani, N., Razavi, K., Malek, S.: Dealing with uncertainty in early software architecture. In: Proceedings of the 20th International Symposium on the Foundations of Software Engineering (FSE 2012), pp. 21:1–21:4 (2012)Google Scholar
  14. 14.
    Esfahani, N., Malek, S.: Uncertainty in self-adaptive software systems. In: de Lemos, R., Giese, H., Müller, H.A., Shaw, M. (eds.) Software Engineering for Self-Adaptive Systems II. LNCS, vol. 7475, pp. 214–238. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-35813-5_9CrossRefGoogle Scholar
  15. 15.
    Esfahani, N., Malek, S., Razavi, K.: GuideArch: guiding the exploration of architectural solution space under uncertainty. In: Proceedings of the 35th International Conference on Software Engineering (ICSE 2013), pp. 43–52 (2013)Google Scholar
  16. 16.
    Famelis, M., Salay, R., Chechik, M.: Partial models: towards modeling and reasoning with uncertainty. In: Proceedings of the 34th International Conference on Software Engineering (ICSE 2012), pp. 573–583 (2012)Google Scholar
  17. 17.
    Famelis, M., Salay, R., Di Sandro, A., Chechik, M.: Transformation of models containing uncertainty. In: Moreira, A., Schätz, B., Gray, J., Vallecillo, A., Clarke, P. (eds.) MODELS 2013. LNCS, vol. 8107, pp. 673–689. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-41533-3_41CrossRefGoogle Scholar
  18. 18.
    Famelis, M., Ben-David, N., Sandro, A.D., Salay, R., Chechik, M.: MU-MMINT: an IDE for model uncertainty. In: Proceedings of the 37th International Conference on Software Engineering (ICSE 2015), Demonstrations Track, pp. 697–700 (2015)Google Scholar
  19. 19.
    Fitzgerald, J., Larsen, G.P.: Modeling Systems, Practical Tools and Techniques in Software Development. Cambridge University Press, Cambridge (1998)zbMATHGoogle Scholar
  20. 20.
    Fukamachi, T., Ubayashi, N., Hosoai, S., Kamei, Y.: Conquering uncertainty in Java programming. In: Proceedings of the 37th International Conference on Software Engineering (ICSE 2015), Poster Track, pp. 823–824 (2015)Google Scholar
  21. 21.
    Fukamachi, T., Ubayashi, N., Hosoai, S., Kamei, Y.: Modularity for uncertainty. In: Proceedings of the 7th International Workshop on Modelling in Software Engineering (MiSE 2015), pp. 7–12 (2015)Google Scholar
  22. 22.
    Garlan, D.: Software engineering in an uncertain world. In: Proceedings of FSE/SDP Workshop on Future of Software Engineering Research (FoSER 2010), pp. 125–128 (2010)Google Scholar
  23. 23.
    Ghezzi, C., Sharifloo, A.M.: Quantitative verification of non-functional requirements with uncertainty. In: Zamojski, W., Kacprzyk, J., Mazurkiewicz, J., Sugier, J., Walkowiak, T. (eds.) Dependable Computer Systems. AINSC, vol. 97, pp. 47–62. Springer, Heidelberg (2011).  https://doi.org/10.1007/978-3-642-21393-9_4CrossRefGoogle Scholar
  24. 24.
    Ghezzi, C., Sharifloo, A.M.: Verifying non-functional properties of software product lines: towards an efficient approach using parametric model checking. In: Proceedings of the 15th Software Product Line Conference (SPLC 2011), pp. 170–174 (2011)Google Scholar
  25. 25.
    Goseva-Popstojanova, K., Kamavaram, S.: Assessing uncertainty in reliability of component-based software systems. In: Proceedings of the 14th International Symposium on Software Reliability Engineering (ISSRE 2003), pp. 307–320 (2003)Google Scholar
  26. 26.
    Hinton, A., Kwiatkowska, M., Norman, G., Parker, D.: PRISM: a tool for automatic verification of probabilistic systems. In: Hermanns, H., Palsberg, J. (eds.) TACAS 2006. LNCS, vol. 3920, pp. 441–444. Springer, Heidelberg (2006).  https://doi.org/10.1007/11691372_29CrossRefGoogle Scholar
  27. 27.
    Hoare, C.A.R.: Communicating Sequential Processes. Prentice Hall, Upper Saddle River (1985)zbMATHGoogle Scholar
  28. 28.
    Kang, K.C., Lee, J., Donohoe, P.: Feature-oriented product line engineering. IEEE Softw. 9(4), 58–65 (2002)CrossRefGoogle Scholar
  29. 29.
    Kiczales, G., et al.: Aspect-oriented programming. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997).  https://doi.org/10.1007/BFb0053381CrossRefGoogle Scholar
  30. 30.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–354. Springer, Heidelberg (2001).  https://doi.org/10.1007/3-540-45337-7_18CrossRefGoogle Scholar
  31. 31.
    Lago, P., Vliet, H.: Explicit assumptions enrich architectural models. In: Proceedings of the 27th International Conference on Software Engineering (ICSE 2005), pp. 206–214 (2005)Google Scholar
  32. 32.
    Letier, E., Stefan, D., Barr, E.T.: Uncertainty, risk, and information value in software requirements and architecture. In: Proceedings of the 36th International Conference on Software Engineering (ICSE 2014), pp. 883–894 (2014)Google Scholar
  33. 33.
    Llerena, Y.R.S.: Dealing with uncertainty in verification of nondeterministic systems. In: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2014), pp. 787–790 (2014)Google Scholar
  34. 34.
    Magee, J., Kramer, J.: Concurrency: State Models & Java Programs, 2nd edn. Wiley, Hoboken (2006)zbMATHGoogle Scholar
  35. 35.
    Massey, A., Rutledge, R., Antón, A., Swire, P.: Identifying and classifying ambiguity for regulatory requirements. In: Proceedings of the 22nd International Requirements Engineering Conference (RE 2014), pp. 83–92 (2014)Google Scholar
  36. 36.
    Meedeniya, I., Moser, I., Aleti, A., Grunske, L.: Architecture-based reliability evaluation under uncertainty. In: Proceedings of the 7th International ACM Sigsoft Conference on the Quality of Software Architectures (QoSA 2011), pp. 85–94 (2011)Google Scholar
  37. 37.
    Milner, R.: Communication and Concurrency. Prentice Hall, Upper Saddle River (1989)zbMATHGoogle Scholar
  38. 38.
    Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  39. 39.
    Perez-Palacin, D., Mirandola, R.: Uncertainties in the modeling of self-adaptive systems: a axonomy and an example of availability evaluation. In: Proceedings of the 5th ACM/SPEC International Conference on Performance Engineering (ICPE 2014), pp. 3–14 (2014)Google Scholar
  40. 40.
    Raccoon, Dog: Unknownness. ACM SIGSOFT Softw. Eng. Notes 38(5), 8–17 (2013)Google Scholar
  41. 41.
    Rodrigues, P., Lupu, E., Kramer, J.: LTSA-PCA: tool support for compositional reliability analysis. In: ICSE Companion 2014 Companion Proceedings of the 36th International Conference on Software Engineering (ICSE 2014), pp. 548–551 (2014)Google Scholar
  42. 42.
    Rosenblum, D.: Probability and uncertainty in software engineering. In: Keynote Talk at the 2013 National Software Application Conference (NASAC 2013) (2013). http://www.slideshare.net/dsrosenblum/nasac-2013
  43. 43.
    Salay, R., Chechik, M., Horkoff, J., Sandro, A.D.: Managing requirements uncertainty with partial models. Requirements Eng. 18(2), 107–128 (2013)CrossRefGoogle Scholar
  44. 44.
    Salay, R., Gorzny, J., Chechik, M.: Change propagation due to uncertainty change. In: Cortellessa, V., Varró, D. (eds.) FASE 2013. LNCS, vol. 7793, pp. 21–36. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-37057-1_3CrossRefGoogle Scholar
  45. 45.
    Sommerville, I.: Integrated requirements engineering: a tutorial. IEEE Softw. 22(1), 16–23 (2005)CrossRefGoogle Scholar
  46. 46.
    Trubiani, C., Meedeniya, I., Cortellessa, V., Aleti, A., Grunske, L.: Model-based performance analysis of software architectures under uncertainty. In: Proceedings of the 9th International ACM SIGSOFT Conference on the Quality of Software Architectures (QoSA 2013), pp. 69–78 (2013)Google Scholar
  47. 47.
    Ubayashi, N., Nomura, J., Tamai, T.: Archface: a contract place where architectural design and code meet together. In: Proceedings of the 32nd International Conference on Software Engineering (ICSE 2010), pp. 75–84 (2010)Google Scholar
  48. 48.
    Ubayashi, N., Ai, D., Li, P., Li, Y., Hosoai, S., Kamei, Y.: Abstraction-aware verifying compiler for yet another MDD. In: Proceedings of the 29th International Conference on Automated Software Engineering (ASE 2014), pp. 557–562 (2014)Google Scholar
  49. 49.
    Ubayashi, N., Kamei, Y., Sato, R.: iArch-U/MC: an uncertainty-aware model checker for embracing known unknowns. In: Proceedings of the 13th International Conference on Software Technologies (ICSOFT 2018), pp. 176–184 (2018)Google Scholar
  50. 50.
    Uchitel, S., Kramer, J., Magee, J.: Modelling undefined behaviour in scenario synthesis. In: Proceedings of the 2nd International Workshop on Scenarios and State Machines: Models, Algorithms, and Tools at ICSE 2003 (2003)Google Scholar
  51. 51.
    Walker, W.E., et al.: Defining uncertainty. A conceptual basis for uncertainty management in model-based decision support. Integr. Assess. 4(1), 5–17 (2003)CrossRefGoogle Scholar
  52. 52.
    Watanabe, K., Ubayashi, N., Fukamachi, T., Nakamura, S., Muraoka, H., Kamei, Y.: iArch-U: interface-centric integrated uncertainty-aware development environment. In: Proceedings of the 9th International Workshop on Modelling in Software Engineering (MiSE 2017) (Workshop at ICSE 2017), pp. 40–46 (2017)Google Scholar
  53. 53.
    Whittle, J., Sawyer, P., Bencomo, N., Cheng, B.H.C., Bruel, J.-M.: Relax: a language to address uncertainty in self-adaptive systems requirement. Requirements Eng. 15(2), 177–196 (2010)CrossRefGoogle Scholar
  54. 54.
    Yang, W., Xu, C., Liu, Y., Cao, C., Ma, X., Lu, J.: Verifying self-adaptive applications suffering uncertainty. In: Proceedings of the 29th International Conference on Automated Software Engineering (ASE 2014), pp. 199–210 (2014)Google Scholar
  55. 55.
    Ziadi, T., Hélouët, L., Jézéquel, J.-M.: Towards a UML profile for software product lines. In: van der Linden, F.J. (ed.) PFE 2003. LNCS, vol. 3014, pp. 129–139. Springer, Heidelberg (2004).  https://doi.org/10.1007/978-3-540-24667-1_10CrossRefGoogle Scholar
  56. 56.
    Ziv, H., Richardson, D.J., Klösch, R.: The uncertainty principle in software engineering (1996). http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.8700

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  • Naoyasu Ubayashi
    • 1
    Email author
  • Yasutaka Kamei
    • 1
  • Ryosuke Sato
    • 1
  1. 1.Kyushu UniversityFukuokaJapan

Personalised recommendations