Abstract
This article is a tutorial on how to achieve software evolution and adaptation in a dependable manner, by systematically applying formal modelling and verification. It shows how software can be designed upfront to tolerate different sources of uncertainty that cause continuous future changes. If possible changes can be predicted, and their occurrence can be detected, it is possible to design the software to be self-adaptable. Otherwise, continuous evolution has to be supported and continuous flow into operation has to be ensured. In cases where systems are designed to be continuously running, it is necessary to support safe continuous software deployment that guarantees correct operation in the presence of dynamic reconfigurations. The approaches we survey here have been mainly developed in the context of the SMScom project, funded by the European Commission –Programme IDEAS-ERC (http://erc-smscom.dei.polimi.it/.) – and lead by the author. It is argued that these approaches fit well the current agile methods for development and operations that are popularized as DevOps.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Note that this is often expressed as \(\mathcal {P}_{\bowtie p} F \varPhi \), using the finally operator.
- 2.
Actually we discussed the computation of the probability associated with the property, to which the constraint \(\bowtie p\) has to be applied.
- 3.
A proof can be found in [18].
References
Althoen, S.C., McLaughlin, R.: Gauss-Jordan reduction: a brief history. Am. Math. Monthly 94(2), 130–142 (1987)
Baier, C., Katoen, J.-P.: Principles of Model Checking. The MIT Press, Cambridge (2008)
Baresi, L., Di Nitto, E., Ghezzi, C.: Toward open-world software: issue and challenges. Computer 39(10), 36–43 (2006)
Belady, L.A., Lehman, M.M.: A model of large program development. IBM Syst. J. 15(3), 225–252 (1976)
Bojanczyk, A.: Complexity of solving linear systems in different models of computation. SIAM J. Numer. Anal. 21(3), 591–603 (1984)
Epifani, I., Ghezzi, C., Mirandola, R., Tamburrelli, G.: Model evolution by run-time adaptation. In: Proceedings of the 31st International Conference on Software Engineering, pp. 111–121. IEEE Computer Society (2009)
Filieri, A., Ghezzi, C., Tamburrelli, G.: Run-time efficient probabilistic model checking. In: Proceedings of the 33rd International Conference on Software Engineering (2011)
Filieri, A., Tamburrelli, G., Ghezzi, C.: Supporting self-adaptation via quantitative verification and sensitivity analysis at run time. IEEE Trans. Softw. Eng. 42(1), 75–99 (2016)
Ghezzi, C., Tamburrelli, G.: Reasoning on non-functional requirements for integrated services. In: Proceedings of the 17th International Requirements Engineering Conference, pp. 69–78. IEEE Computer Society (2009)
Grinstead, C., Snell, J.: Introduction to probability. Amer Mathematical Society, Providence (1997)
Hahn, E.M., Hermanns, H., Zhang, L.: Probabilistic reachability for parametric markov models. In: Păsăreanu, C.S. (ed.) Model Checking Software. LNCS, vol. 5578, pp. 88–106. Springer, Heidelberg (2009)
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)
Jackson, M., Zave, P.: Deriving specifications from requirements: an example. In: ICSE 1995: Proceedings of the 17th international conference on Software engineering, pp. 15–24, New York, NY, USA. ACM (1995)
Kephart, J.O., Chess, D.M.: The vision of autonomic computing. IEEE Comput. 36(1), 41–50 (2003)
Kramer, J., Magee, J.: The evolving philosophers problem: dynamic change management. IEEE Trans. Softw. Eng. 16(11), 1293–1306 (1990)
Kwiatkowska, M., Norman, G., Parker, D.: Prism 2.0: a tool for probabilistic model checking. In: Proceedings of First International Conference on the, Quantitative Evaluation of Systems, QEST 2004, pp. 322–323 (2004)
Lehman, M.M., Belady, L.A. (eds.): Program Evolution: Processes of Software Change. Academic Press Professional Inc., Cambridge (1985)
Ma, X., Baresi, L., Ghezzi, C., Manna, V.P.L., Lu, J.: Version-consistent dynamic reconfiguration of component-based distributed systems. In: ESEC/FSE 2011: The 19th ACM SIGSOFT Symposium on the Foundations of Software Engineering and the 13rd European Software Engineering Conference, pp. 245–255. ACM (2011)
Meyer, B.: Agile!: The Good, the Hype and the Ugly. Springer Science and Business Media, Berlin (2014)
Vandewoude, Y., Ebraert, P., Berbers, Y., D’Hondt, T.: Tranquility: a low disruptive alternative to quiescence for ensuring safe dynamic updates. IEEE Trans. Softw. Eng. 33(12), 856–868 (2007)
Zave, P., Jackson, M.: Four dark corners of requirements engineering. ACM Trans. Softw. Eng. Methodol. 6(1), 1–30 (1997)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2016 Springer International Publishing Switzerland
About this chapter
Cite this chapter
Ghezzi, C. (2016). Dependability of Adaptable and Evolvable Distributed Systems. In: Bernardo, M., De Nicola, R., Hillston, J. (eds) Formal Methods for the Quantitative Evaluation of Collective Adaptive Systems. SFM 2016. Lecture Notes in Computer Science(), vol 9700. Springer, Cham. https://doi.org/10.1007/978-3-319-34096-8_2
Download citation
DOI: https://doi.org/10.1007/978-3-319-34096-8_2
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-34095-1
Online ISBN: 978-3-319-34096-8
eBook Packages: Computer ScienceComputer Science (R0)