Skip to main content

A Layered Approach to Specification Authoring, Sharing, and Usage

  • Conference paper
  • First Online:
Quality Software Through Reuse and Integration (FMI 2016, IRI 2016 2016)

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 129.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    The name Spekl comes from the abbreviation of Spekkoek, a cake originating in the Netherlands that is densely layered.

  2. 2.

    The disadvantage of Spekl’s technique is the use of more disk space than sharing a single installation of each tool.

References

  1. Ayewah, N., Hovemeyer, D., Morgenthaler, J., Penix, J., Pugh, W.: Using static analysis to find bugs. IEEE Softw. 25(5), 22–29 (2008)

    Article  Google Scholar 

  2. 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

  3. 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

    Article  Google Scholar 

  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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. Jones, I.: The Haskell Cabal, a common architecture for building applications and libraries (2005)

    Google Scholar 

  12. 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

    Article  Google Scholar 

  13. Luqi, Goguen, J.A.: Formal methods: promises and problems. IEEE Softw. 14(1), 73–85 (1997). http://dx.doi.org/10.1109/52.566430

    Article  Google Scholar 

  14. Mens, T.: A state-of-the-art survey on software merging. IEEE Trans. Softw. Eng. 28(5), 449–462 (2002)

    Article  Google Scholar 

  15. 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

    Article  Google Scholar 

  16. 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

    Article  Google Scholar 

  17. 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

  18. 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

  19. Apt - Debian Wiki. https://wiki.debian.org/Apt, https://wiki.debian.org/Apt

  20. 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/

Download references

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

Authors

Corresponding author

Correspondence to Gary T. Leavens .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics