Abstract
Compositional reuse of software libraries is important for productivity. To promote reliability and correctness, there must also be a way to compose specifications for reuse. However, specifications cannot be adapted by the use of wrappers in the same ways as code, which leads to specifications being copied and modified. This copying and modification of specifications leads to poor maintainability and technical debt. We propose a system, Spekl, that solves these problems and makes compositional reuse of specifications possible in a way independent of the choice of specification languages and tools. We provide a detailed description of our system as well as provide details on our domain specific language for creating new tools, provide details on how to author new specifications, and demonstrate how Spekl facilitates compositional reuse through specification layering.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
The name Spekl comes from the abbreviation of Spekkoek, a cake originating in the Netherlands that is densely layered.
- 2.
The disadvantage of Spekl’s technique is the use of more disk space than sharing a single installation of each tool.
References
Ayewah, N., Hovemeyer, D., Morgenthaler, J., Penix, J., Pugh, W.: Using static analysis to find bugs. IEEE Softw. 25(5), 22–29 (2008)
Banerjee, A., Naumann, D.A., Rosenberg, S.: Expressive declassification policies and modular static enforcement. In: Proceedings of the 2008 IEEE Symposium on Security and Privacy, SP 2008, pp. 339–353. IEEE Computer Society, Washington, DC, USA (2008). http://dx.doi.org/10.1109/SP.2008.20
Burdy, L., Cheon, Y., Cok, D.R., Ernst, M.D., Kiniry, J.R., Leavens, G.T., Leino, K.R.M., Poll, E.: An overview of JML tools and applications. Int. J. Softw. Tools Technol. Transf. (STTT) 7(3), 212–232 (2005). http://link.springer.com/article/10.1007/s10009-004-0167-4
Carter, K., Foltzer, A., Hendrix, J., Huffman, B., Tomb, A.: SAW: the software analysis workbench. In: Proceedings of the 2013 ACM SIGAda Annual Conference on High Integrity Language Technology, HILT 2013, pp. 15–18. ACM, New York, NY, USA (2013). http://doi.acm.org/10.1145/2527269.2527277
Coutts, D., Potoczny-Jones, I., Stewart, D.: Haskell: batteries included. In: Proceedings of the First ACM SIGPLAN Symposium on Haskell, Haskell 2008, pp. 125–126. ACM, New York, NY, USA (2008). http://doi.acm.org/10.1145/1411286.1411303
Craigen, D.: Formal methods adoption: what’s working, what’s not! In: Dams, D., Gerth, R., Leue, S., Massink, M. (eds.) Theoretical and Practical Aspects of SPIN Model Checking. Lecture Notes in Computer Science, vol. 1680, pp. 77–91. Springer, Heidelberg (1999). http://link.springer.com/chapter/10.1007/3-540-48234-2_6
Ernst, M.D., Just, R., Millstein, S., Dietl, W., Pernsteiner, S., Roesner, F., Koscher, K., Barros, P.B., Bhoraskar, R., Han, S., Vines, P., Wu, E.X.: Collaborative verification of information flow for a high-assurance app store. In: Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security. pp. 1092–1104. ACM, New York, NY, USA (2014). http://doi.acm.org/10.1145/2660267.2660343
Gouw, S., Rot, J., Boer, F.S., Bubel, R., Hähnle, R.: OpenJDK’s Java.utils.Collection.sort() Is broken: the good, the bad and the worst case. In: Kroening, D., Păsăreanu, C.S. (eds.) Computer Aided Verification, pp. 273–289. Springer International Publishing (2015). http://link.springer.com/chapter/10.1007/978-3-319-21690-4_16
Hickey, R.: The clojure programming language. In: Proceedings of the 2008 Symposium on Dynamic Languages, DLS 2008, pp. 1:1–1:1. ACM, New York, NY, USA (2008). http://doi.acm.org/10.1145/1408681.1408682
Ignatiev, A., Janota, M., Marques-Silva, J.: Towards efficient optimization in package management systems. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pp. 745–755. ACM, New York, NY, USA (2014). http://doi.acm.org/10.1145/2568225.2568306
Jones, I.: The Haskell Cabal, a common architecture for building applications and libraries (2005)
Leavens, G.T., Baker, A.L., Ruby, C.: Preliminary design of JML: a behavioral interface specification language for java. SIGSOFT Softw. Eng. Notes 31(3), 1–38 (2006). http://doi.acm.org/10.1145/1127878.1127884
Luqi, Goguen, J.A.: Formal methods: promises and problems. IEEE Softw. 14(1), 73–85 (1997). http://dx.doi.org/10.1109/52.566430
Mens, T.: A state-of-the-art survey on software merging. IEEE Trans. Softw. Eng. 28(5), 449–462 (2002)
Ram, K.: Git can facilitate greater reproducibility and increased transparency in science. Source Code Biol. Med. 8(1), 7 (2013). http://www.scfbm.org/content/8/1/7/abstract
Stanisic, L., Legrand, A., Danjean, V.: An effective Git and org-mode based workflow for reproducible research. SIGOPS Oper. Syst. Rev. 49(1), 61–70 (2015). http://doi.acm.org/10.1145/2723872.2723881
Tucker, C., Shuffelton, D., Jhala, R., Lerner, S.: OPIUM: optimal package install/uninstall manager. In: Proceedings of the 29th International Conference on Software Engineering, ICSE 2007, pp. 178–188. IEEE Computer Society, Washington, DC, USA (2007). http://dx.doi.org/10.1109/ICSE.2007.59
Vouillon, J., Di Cosmo, R.: Broken sets in software repository evolution. In: Proceedings of the 2013 International Conference on Software Engineering, ICSE 2013, pp. 412–421. IEEE Press, Piscataway, NJ, USA (2013). http://dl.acm.org/citation.cfm?id=2486788.2486843
Apt - Debian Wiki. https://wiki.debian.org/Apt, https://wiki.debian.org/Apt
Yum (Yellowdog Updater, Modified). https://www.phy.duke.edu/~rgb/General/yum_HOWTO/yum_HOWTO/, https://www.phy.duke.edu/~rgb/General/yum_HOWTO/yum_HOWTO/
Acknowledgments
The work of both authors was supported in part by NSF grants CCF0916350 and CNS1228695, and CCF1518897. The work of Leavens was also supported by NSF grants CCF0916715, CCF1017262. The authors would like to thank Rochelle Elva, Faraz Hussain, and Luke Myers for their comments on earlier drafts of this paper.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG
About this paper
Cite this paper
Singleton, J.L., Leavens, G.T. (2018). A Layered Approach to Specification Authoring, Sharing, and Usage. In: Rubin, S., Bouabana-Tebibel, T. (eds) Quality Software Through Reuse and Integration. FMI IRI 2016 2016 2016. Advances in Intelligent Systems and Computing, vol 561. Springer, Cham. https://doi.org/10.1007/978-3-319-56157-8_8
Download citation
DOI: https://doi.org/10.1007/978-3-319-56157-8_8
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-56156-1
Online ISBN: 978-3-319-56157-8
eBook Packages: EngineeringEngineering (R0)