Abstract
The complexity of error diagnosis in requirements specifications, already high, is increased when requirements refer to various system components, on whose interaction the system’s aims depend. Further, finding causes of error, and ways of overcoming them, cannot easily be achieved without a systematic methodology. This has led researchers to explore the combined use of verification and machine-learning to support automated software analysis and repair. However, existing approaches have been limited by using formalisms in which modularity and compositionality cannot be explicitly expressed. In this paper we overcome this limitation. We define a translation from a representative process algebra, Finite State Processes, into the action language \(\mathcal{C}+\). This enables forms of verification not supported by previous methods. We then use a logic-programming equivalent of \(\mathcal{C}+\), to which we apply inductive logic programming for learning repairs to system components while ensuring no new errors are introduced and interactions with other components are maintained. These two phases are iterated until a correct specification is reached, enabling rigorous and scalable support for automated analysis and repair of component-based specifications.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Alrajeh, D., et al.: Elaborating requirements using model checking and inductive learning. IEEE Trans. Software Eng. 39(3), 361–383 (2013)
Borges, R., et al.: Learning and representing temporal knowledge in recurrent networks. IEEE TNN 22(12) (2011)
Clark, K.: Negation as failure. In: Readings in Nonmonotonic Reasoning, pp. 311–325 (1978)
Clarke, E., Kroning, D., Ouaknine, J., Strichman, O.: Completeness and complexity of bounded model checking. In: Steffen, B., Levi, G. (eds.) VMCAI 2004. LNCS, vol. 2937, pp. 85–96. Springer, Heidelberg (2004)
Corapi, D., et al.: Inductive logic programming as abductive search. In: Proc. ICLP 2010, pp. 54–63 (2010)
Craven, R.: Execution mechanisms for the action language \(\mathcal{C}+\). PhD thesis. Imperial College London (2007)
D’Ippolito, N., et al.: Synthesis of live behaviour models for fallible domains. In: Proc. ICSE 2011, pp. 211–220 (2011)
Filieri, A., et al.: A formal approach to adaptive software: continuous assurance of non-functional requirements. Formal Aspects of Computing 24, 163–186 (2012)
Gelfond, M., Lifschitz, V.: The stable model semantics for logic programming. In: Proc. ICLP 1988, pp. 1070–1080 (1988)
Gelfond, M., Lifschitz, V.: Classical negation in logic programs and disjunctive databases. New Generation Computing 9, 365–385 (1991)
Gelfond, M., Lifschitz, V.: Action languages. Electron. Trans. Artif. Intell. 2, 193–210 (1998)
Giunchiglia, E., et al.: Nonmonotonic causal theories. Artif. Intell. 153(1-2), 49–104 (2004)
Hoare, C.: Communicating Sequential Processes. Commun. ACM 21(8), 666–677 (1978)
Johnson, K., et al.: An incremental verification framework for component-based software systems. In: Proc. CBSE 2013, pp. 33–42 (2013)
Keller, R.: Formal verification of parallel programs. CACM 19(7), 371–384 (1976)
Kowalski, R., Sergot, M.: A logic-based calculus of events. New Generation Computing 4, 67–95 (1986)
Krka, I., et al.: Synthesizing partial component-level behavior models from system specifications. In: Proc. ESEC/FSE, pp. 305–314 (2009)
Lamport, L.: The temporal logic of actions. ACM Trans. Program. Lang. Syst. 16(3), 872–923 (1994)
Letier, E., et al.: Deriving event-based transition systems from goal-oriented requirements models. Autom. Softw. Eng. 15(2), 175–206 (2008)
Magee, J., Kramer, J.: Concurrency: state models and java programs. John Wiley and Sons (1999)
Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer-Verlag New York, Inc. (1992)
Milner, R.: A Calculus of Communicating Systems. Springer, New York (1982)
Muggleton, S., Raedt, L.D.: Inductive logic programming: theory and methods. Journal of Log. Program. 19(20), 629–679 (1994)
Pasareanu, C., et al.: Learning to divide and conquer: applying the l* algorithm to automate assume-guarantee reasoning. Formal Methods in System Design 32, 175–205 (2008)
Russo, A., Miller, R., Nuseibeh, B., Kramer, J.: An abductive approach for analysing event-based requirements specifications. In: Stuckey, P.J. (ed.) ICLP 2002. LNCS, vol. 2401, pp. 22–37. Springer, Heidelberg (2002)
Sibay, G.E., Uchitel, S., Braberman, V., Kramer, J.: Distribution of modal transition systems. In: Giannakopoulou, D., Méry, D. (eds.) FM 2012. LNCS, vol. 7436, pp. 403–417. Springer, Heidelberg (2012)
Sergot, M., Craven, R.: Some Logical Properties of Nonmonotonic Causal Theories. In: Baral, C., Greco, G., Leone, N., Terracina, G. (eds.) LPNMR 2005. LNCS (LNAI), vol. 3662, pp. 198–210. Springer, Heidelberg (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Alrajeh, D., Craven, R. (2014). Automated Error-Detection and Repair for Compositional Software Specifications. In: Giannakopoulou, D., Salaün, G. (eds) Software Engineering and Formal Methods. SEFM 2014. Lecture Notes in Computer Science, vol 8702. Springer, Cham. https://doi.org/10.1007/978-3-319-10431-7_9
Download citation
DOI: https://doi.org/10.1007/978-3-319-10431-7_9
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-10430-0
Online ISBN: 978-3-319-10431-7
eBook Packages: Computer ScienceComputer Science (R0)