Slicing algebraic specifications

Abstract This paper reports an investigation into the application of slicing techniques to OBJ, an algebraic specification notation. A general method for slicing an OBJ specification based on its abstract syntax tree is described and examples of slices produced are presented. A tool that slices OBJ specifications is reported together with the results of applying this tool to several published specifications. The results show that slices of algebraic specifications can provide the same benefit as slices of imperative programs, namely reduced length, thus leading to ease of comprehension and future maintenance. However, slice-based metrics that have been suggested for determining the cohesion of modules in imperative languages do not give an obvious indication of quality in the context of an OBJ module.

[1]  Pankaj Jalote,et al.  Automated testcase generation for data abstraction , 1988, Proceedings COMPSAC 88: The Twelfth Annual International Computer Software & Applications Conference.

[2]  Luc Duponcheel,et al.  An algebraic data type specification language and its rapid prototyping environment , 1989, ICSE '89.

[3]  Thomas Leo McCluskey,et al.  The Construction of Formal Specifications; An Introduction to the Model-Based and Algebraic Approaches , 1994 .

[4]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[5]  Derek Coleman,et al.  UMIST OBJ: A Language for Executable Program Specifications , 1989, Comput. J..

[6]  Mark Harman,et al.  Amorphous program slicing , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[7]  Stephen J. Garland,et al.  Debugging Larch Shared Language Specifications , 1990, IEEE Trans. Software Eng..

[8]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[9]  M. R. Woodward,et al.  Assessing the quality of specification-based testing , 1996 .

[10]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[11]  W. B. Samson,et al.  Predictive software metrics based on a formal specification , 1987 .

[12]  M. R. Woodward,et al.  Errors in algebraic specifications and an experimental mutation testing tool , 1993, Softw. Eng. J..

[13]  Pankaj Jalote Specification and Testing of Abstract Data Types , 1992, Comput. Lang..

[14]  Richard G. Hamlet,et al.  Data Abstraction, Implementation, Specification, and Testing , 1981, TOPL.

[15]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[16]  D. Coleman,et al.  The design of a rewrite rule interpreter from algebraic specifications , 1987 .

[17]  Frank Tip,et al.  Generic Techniques for Source-Level Debugging and Dynamic Program Slicing , 1995, TAPSOFT.

[18]  Hartmut Ehrig,et al.  ACT ONE - An Algebraic Specification Language with two Levels of Semantics , 1983, ADT.

[19]  Laurent Fribourg,et al.  Test sets generation from algebraic specifications using logic programming , 1986, J. Syst. Softw..

[20]  Tornohiro ODA,et al.  Specification slicing in formal methods of software development , 1993, Proceedings of 1993 IEEE 17th International Computer Software and Applications Conference COMPSAC '93.

[21]  Linda M. Ott,et al.  Slice based metrics for estimating cohesion , 1993, [1993] Proceedings First International Software Metrics Symposium.

[22]  Hartmut Ehrig,et al.  Introduction to Algebraic Specification. Part 1: Formal Methods for Software Development , 1992, Comput. J..

[23]  David A. Duce,et al.  Formal Specification - A Comparison of Two Techniques , 1987, Comput. J..

[24]  Marie-Claude Gaudel,et al.  Software testing based on formal specifications: a theory and a tool , 1991, Softw. Eng. J..

[25]  Derek Coleman,et al.  Formal Specification and Design Time Testing , 1990, IEEE Trans. Software Eng..

[26]  Hartmut Ehrig,et al.  Introduction to Algebraic Specification. Part 2: From Classical View to Foundations of System Specifications , 1992, Comput. J..

[27]  F. D. Rolland Programming with VDM , 1992 .

[28]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[29]  Linda M. Ott,et al.  The relationship between slices and module cohesion , 1989, ICSE '89.

[30]  Mariam Kamkar,et al.  An overview and comparative classification of program slicing techniques , 1995, J. Syst. Softw..

[31]  Frank Tip,et al.  Dynamic dependence in term rewriting systems and its application to program slicing , 1994, Inf. Softw. Technol..

[32]  Michel Bidoit,et al.  How to Make Algebraic Specifications More Understandable: An Experiment with the PLUSS Specification Language , 1989, Sci. Comput. Program..

[33]  Frank Tip,et al.  Parametric program slicing , 1995, POPL '95.

[34]  I. M. Bradley Notes on algebraic specifications , 1989 .

[35]  James M. Bieman,et al.  Measuring Functional Cohesion , 1994, IEEE Trans. Software Eng..

[36]  Uli H. Chi Formal Specification of User Interfaces: A Comparison and Evaluation of Four Axiomatic Approaches , 1985, IEEE Transactions on Software Engineering.

[37]  Rod Ellis Data abstraction and program design , 1991 .