Automated Software Engineering

, Volume 8, Issue 1, pp 7–30 | Cite as

Industrial Applications of Software Synthesis via Category Theory—Case Studies Using Specware

  • Keith Williamson
  • Michael Healy
  • Richard Barker


Over the last two years, we have demonstrated the feasibility of applying category-theoretic methods in specifying, synthesizing, and maintaining industrial strength software systems. We have been using a first-of-its-kind tool for this purpose, Kestrel's SpecwareTM software development system. In this paper, we describe our experiences and give an industrial perspective on what is needed to make this technology have broader appeal to industry. Our overall impression is that the technology does work for industrial strength applications, but that it needs additional work to make it more usable. We believe this work marks a turning point in the use of mathematically rigorous approaches to industrial strength software development and maintenance.

It is interesting to note that when this technology is applied to software systems whose outputs are designs for airplane parts, the design rationale that is captured is not only software engineering design rationale, but also design rationale from other engineering disciplines (e.g., mechanical, material, manufacturing, electrical, human factors, etc.). This suggests the technology provides an approach to general systems engineering that enables one to structure and reuse engineering knowledge broadly.

category theory software synthesis specware systems engineering 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Bjorner, D. and Jones, C. 1982. Formal Specification & Software Development. Prentice-Hall International, Englewood Cliffs, New Jersey.Google Scholar
  2. Blaine, L. and Goldberg, A. 1991. DTRE—A semi-automatic transformation system. In B. Moller, editor, Constructing Programs from Specifications. North Holland, New York, New York.Google Scholar
  3. Burstall, R.M. and Goguen, J.A. 1980. The semantics of clear, a specification language. In Proceedings of the 1979 Copenhagen Winter School on Abstract Software Specification. Lecture Notes in Computer Science, vol. 86, Springer-Verlag.Google Scholar
  4. Crole, R. 1993. Categories for Types. Cambridge University Press, New York, New York.Google Scholar
  5. Gannon, J, et al. 1994. Software Specification—A Comparison of Formal Methods. Ablex Publishing, Norwood, New Jersey.Google Scholar
  6. Goguen, J.A. 1970. Mathematical representation of hierarchically organized systems. Global Systems Dynamics. In E. Attinger and S. Karger, editors, pp. 112-128.Google Scholar
  7. Goguen, J.A. 1999. An introduction to algebraic semiotics, with applications to user interface design. In C. Nehaniv, editor, Computation for Metaphor, Analogy and Agents. Springer Lecture Notes in Artificial Intelligence.Google Scholar
  8. Goguen, J.A. and Burstall, R.M. 1992. Institutions: Abstract model theory for specification and programming. Journal of the Association of Computing Machinery, 39(1):95-195.Google Scholar
  9. Gruber, T. et al. 1994. An ontology for engineering mathematics. In Proceedings of the Fourth International Conference on Principles of Knowledge Representation and Reasoning. Morgan Kauffman.Google Scholar
  10. Human Engineering Program—Processes and Procedures. 1996. US Department of Defense, Handbook MIL-HDBK-46855A.Google Scholar
  11. Jullig, R. and Srinivas, Y.V. 1993. Diagrams for software synthesis. In Proceedings of the 8th Knowledge-Based Software Engineering Conference, Chicago, IL.Google Scholar
  12. MacLanc, S. 1971. Categories for the Working Mathematician. Springer-Verlag, New York, New York.Google Scholar
  13. Mayhew, D.J. 1999. The Usability Engineering Lifecycle, Academic Press/Morgan Kauffman, New York, New York.Google Scholar
  14. Meseguer, J. 1989. General logics. In Ebbinghaus et al., editors, Logic Colloquium '87. Elsevier Science Publishers, New York, New York.Google Scholar
  15. Pierce, B.C. 1994. Basic Category Theory for Computer Scientists. MIT Press, Cambridge, Mass.Google Scholar
  16. Rogers, Y. et al. 1992. Models in the Mind—Theory, Perspective, and Application, Academic Press, New York, New York.Google Scholar
  17. Smith, D. 1991. KIDS: A knowledge based software development system. In M. Lowry and R. McCartney, editors Automating Software Design. MIT Press, Cambridge, Mass.Google Scholar
  18. Smith, D. 1991. Mechanizing the development of software. In M. Broy, editor, Calculational System Design, NATO ASI series, IOS Press.Google Scholar
  19. Spivey, J.M. 1992. The Z Notation: A Reference Manual. Prentice-Hall, New York.Google Scholar
  20. Srinivas, Y.V. and Jullig, R. 1995. Specware: Formal support for composing software. In Proceedings of the Conference of Mathematics of Program Construction. Kloster Irsee, Germany.Google Scholar
  21. Waldinger, R. et al. 1996. Specware Language Manual 2.0.1, Suresoft, Inc.Google Scholar
  22. Wang, T.C. and Goldberg, A. 1991. A mechanical verifier for supporting the design of reliable reactive systems. In International Symposium on Software Reliability Engineering, Austin, Texas.Google Scholar
  23. Williamson, K. and Healy, M. 1997. Formally specifying engineering design rationale. In Proceedings of the Automated Software Engineering Conference.Google Scholar
  24. Williamson, K. and Healy, M. 2000. Deriving engineering software from requirements. International Journal of Intelligent Manufacturing, Kluwer Academic Publishers, Hingham, MA, 11(1):3-28.Google Scholar

Copyright information

© Kluwer Academic Publishers 2001

Authors and Affiliations

  • Keith Williamson
    • 1
  • Michael Healy
    • 1
  • Richard Barker
    • 2
  1. 1.The Boeing CompanySeattle, WashingtonUSA
  2. 2.EC WiseSan FransiscoUSA

Personalised recommendations