Skip to main content

Modular Programming and Reasoning for Living with Uncertainty

  • Conference paper
  • First Online:
Software Technologies (ICSOFT 2018)

Part of the book series: Communications in Computer and Information Science ((CCIS,volume 1077))

Included in the following conference series:

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.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    We focused on the design and implementation of an uncertainty-aware model checker in our previous work [49]. In this paper, we discuss on not only uncertainty-aware reasoning including the model checker but also uncertainty-aware programming by extending our preliminary work [20, 21, 52]. We show the world of uncertainty-aware software development and demonstrate the effectiveness of our approach using a concrete usage scenario.

  2. 2.

    http://www.doc.ic.ac.uk/ltsa/, Last accessed 18 November 2018.

  3. 3.

    https://www.cs.ox.ac.uk/projects/fdr/, Last accessed 18 November 2018.

  4. 4.

    http://www.cprover.org/cbmc/, Last accessed 18 November 2018.

  5. 5.

    https://github.com/javapathfinder/, Last accessed 18 November 2018.

  6. 6.

    http://posl.github.io/iArch/, Last accessed 18 November 2018.

  7. 7.

    https://junit.org/, Last accessed 18 November 2018.

  8. 8.

    https://www.eclipse.org/aspectj/, Last accessed 18 November 2018.

  9. 9.

    https://eclipse.org/Xtext/, Last accessed 18 November 2018.

  10. 10.

    https://www.eclipse.org/modeling/emf/, Last accessed 18 November 2018.

  11. 11.

    https://www.eclipse.org/graphiti/, Last accessed 18 November 2018.

References

  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. 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_6

    Chapter  Google Scholar 

  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. 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. 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. 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)

    Article  Google Scholar 

  7. Clements, P., Northrop, L.: Software Product Lines. Addision-Wesley, Boston (2001)

    Google Scholar 

  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. 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. 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. 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. 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. 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. 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_9

    Chapter  Google Scholar 

  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. 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. 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_41

    Chapter  Google Scholar 

  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. Fitzgerald, J., Larsen, G.P.: Modeling Systems, Practical Tools and Techniques in Software Development. Cambridge University Press, Cambridge (1998)

    MATH  Google Scholar 

  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. 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. 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. 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_4

    Chapter  Google Scholar 

  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. 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. 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_29

    Chapter  Google Scholar 

  27. Hoare, C.A.R.: Communicating Sequential Processes. Prentice Hall, Upper Saddle River (1985)

    MATH  Google Scholar 

  28. Kang, K.C., Lee, J., Donohoe, P.: Feature-oriented product line engineering. IEEE Softw. 9(4), 58–65 (2002)

    Article  Google Scholar 

  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/BFb0053381

    Chapter  Google Scholar 

  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_18

    Chapter  Google Scholar 

  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. 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. 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. Magee, J., Kramer, J.: Concurrency: State Models & Java Programs, 2nd edn. Wiley, Hoboken (2006)

    MATH  Google Scholar 

  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. 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. Milner, R.: Communication and Concurrency. Prentice Hall, Upper Saddle River (1989)

    MATH  Google Scholar 

  38. Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)

    Article  Google Scholar 

  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. Raccoon, Dog: Unknownness. ACM SIGSOFT Softw. Eng. Notes 38(5), 8–17 (2013)

    Google Scholar 

  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. 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. Salay, R., Chechik, M., Horkoff, J., Sandro, A.D.: Managing requirements uncertainty with partial models. Requirements Eng. 18(2), 107–128 (2013)

    Article  Google Scholar 

  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_3

    Chapter  Google Scholar 

  45. Sommerville, I.: Integrated requirements engineering: a tutorial. IEEE Softw. 22(1), 16–23 (2005)

    Article  Google Scholar 

  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. 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. 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. 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. 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. 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)

    Article  Google Scholar 

  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. 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)

    Article  Google Scholar 

  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. 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_10

    Chapter  Google Scholar 

  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

Download references

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.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Naoyasu Ubayashi .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Ubayashi, N., Kamei, Y., Sato, R. (2019). Modular Programming and Reasoning for Living with Uncertainty. In: van Sinderen, M., Maciaszek, L. (eds) Software Technologies. ICSOFT 2018. Communications in Computer and Information Science, vol 1077. Springer, Cham. https://doi.org/10.1007/978-3-030-29157-0_10

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-29157-0_10

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-29156-3

  • Online ISBN: 978-3-030-29157-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics