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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 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.
http://www.doc.ic.ac.uk/ltsa/, Last accessed 18 November 2018.
- 3.
https://www.cs.ox.ac.uk/projects/fdr/, Last accessed 18 November 2018.
- 4.
http://www.cprover.org/cbmc/, Last accessed 18 November 2018.
- 5.
https://github.com/javapathfinder/, Last accessed 18 November 2018.
- 6.
http://posl.github.io/iArch/, Last accessed 18 November 2018.
- 7.
https://junit.org/, Last accessed 18 November 2018.
- 8.
https://www.eclipse.org/aspectj/, Last accessed 18 November 2018.
- 9.
https://eclipse.org/Xtext/, Last accessed 18 November 2018.
- 10.
https://www.eclipse.org/modeling/emf/, Last accessed 18 November 2018.
- 11.
https://www.eclipse.org/graphiti/, Last accessed 18 November 2018.
References
Allen, R., Garlan, D.: Formalizing architectural connection. In: Proceedings of the 16th International Conference on Software Engineering (ICSE 1994), pp. 71–80 (1994)
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
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)
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)
Cheng, S.-W., Garlan, D.: Handling uncertainty in autonomic systems. In: Proceedings of the International Workshop on Living with Uncertainties (IWLU 2007) (2007)
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)
Clements, P., Northrop, L.: Software Product Lines. Addision-Wesley, Boston (2001)
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)
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)
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)
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)
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)
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)
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
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)
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)
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
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)
Fitzgerald, J., Larsen, G.P.: Modeling Systems, Practical Tools and Techniques in Software Development. Cambridge University Press, Cambridge (1998)
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)
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)
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)
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
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)
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)
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
Hoare, C.A.R.: Communicating Sequential Processes. Prentice Hall, Upper Saddle River (1985)
Kang, K.C., Lee, J., Donohoe, P.: Feature-oriented product line engineering. IEEE Softw. 9(4), 58–65 (2002)
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
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
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)
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)
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)
Magee, J., Kramer, J.: Concurrency: State Models & Java Programs, 2nd edn. Wiley, Hoboken (2006)
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)
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)
Milner, R.: Communication and Concurrency. Prentice Hall, Upper Saddle River (1989)
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)
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)
Raccoon, Dog: Unknownness. ACM SIGSOFT Softw. Eng. Notes 38(5), 8–17 (2013)
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)
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
Salay, R., Chechik, M., Horkoff, J., Sandro, A.D.: Managing requirements uncertainty with partial models. Requirements Eng. 18(2), 107–128 (2013)
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
Sommerville, I.: Integrated requirements engineering: a tutorial. IEEE Softw. 22(1), 16–23 (2005)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
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)