Advertisement

Domain Engineering the Magnolia Way

  • Magne Haveraaen
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10742)

Abstract

Domain engineering can be seen as the process of identifying a domain API, providing its semantics, and structuring it. The domain API is a natural framework for software product line requirements and development. Magnolia is an integrated programming and algebraic specification language. As such it gives a strong focus on API design. The Magnolia way to domain engineering can be scaled from a lightweight to a formalistic heavyweight approach. Defined APIs can easily be extended as more of the domain is investigated. This paper summarises the Magnolia domain engineering process.

Notes

Acknowledgment

This research has in part been financed by The Research Council of Norway through the project Design of a Mouldable Programming Language (DMPL). The Magnolia IDE and compiler was implemented by Anya Bagge during her postdoc for DMPL.

References

  1. 1.
    Bagge, A.H., David, V., Haveraaen, M.: Testing with axioms in C++ 2011. J. Object Technol. 10(10), 1–32 (2011).  https://doi.org/10.5381/jot.2011.10.1.a10 Google Scholar
  2. 2.
    Beck, K.: Test-Driven Development: By Example. Addison-Wesley, Boston (2002)Google Scholar
  3. 3.
    Bergstra, J.A., Tucker, J.: Algebraic specifications of computable and semicomputable data types. Theor. Comput. Sci. 50, 137–181 (1987).  https://doi.org/10.1016/0304-3975(87)90123-X MathSciNetCrossRefzbMATHGoogle Scholar
  4. 4.
    Bernardy, J.-P., Jansson, P., Claessen, K.: Testing polymorphic properties. In: Gordon, A.D. (ed.) ESOP 2010. LNCS, vol. 6012, pp. 125–144. Springer, Heidelberg (2010).  https://doi.org/10.1007/978-3-642-11957-6_8 CrossRefGoogle Scholar
  5. 5.
    Bjørner, D.: The Vienna Development Method (VDM). In: Blum, E.K., Paul, M., Takasu, S. (eds.) Mathematical Studies of Information Processing. LNCS, vol. 75, pp. 326–359. Springer, Heidelberg (1979).  https://doi.org/10.1007/3-540-09541-1_33 CrossRefGoogle Scholar
  6. 6.
    Bjørner, D.: Manifest domains: analysis and description. Formal Aspects Comput. 29(2), 1–51 (2016).  https://doi.org/10.1007/s00165-016-0385-z MathSciNetGoogle Scholar
  7. 7.
    Favre, J.-M., Lämmel, R., Schmorleiz, T., Varanovich, A.: 101companies: a community project on software technologies and software languages. In: Furia, C.A., Nanz, S. (eds.) TOOLS 2012. LNCS, vol. 7304, pp. 58–74. Springer, Heidelberg (2012).  https://doi.org/10.1007/978-3-642-30561-0_6 CrossRefGoogle Scholar
  8. 8.
    Foust, G., Järvi, J., Parent, S.: Generating reactive programs for graphical user interfaces from multi-way dataflow constraint systems. In: Kästner, C., Gokhale, A.S. (eds.) Proceedings of GPCE 2015, Pittsburgh, PA, USA, 26–27 October 2015, pp. 121–130. ACM (2015).  https://doi.org/10.1007/978-3-642-30561-0_6
  9. 9.
    Goguen, J.A.: Reusing and interconnecting software components. Computer 19(2), 16–28 (1986).  https://doi.org/10.1109/MC.1986.1663146 CrossRefGoogle Scholar
  10. 10.
    Goguen, J.A., Burstall, R.M.: Institutions: abstract model theory for specification and programming. J. ACM 39(1), 95–146 (1992).  https://doi.org/10.1145/147508.147524 MathSciNetCrossRefzbMATHGoogle Scholar
  11. 11.
    Haveraaen, M., Friis, H.A., Johansen, T.A.: Formal software engineering for computational modelling. Nordic J. Comput. 6(3), 241–270 (1999)Google Scholar
  12. 12.
    Hjørland, B.: Domain analysis in information science: Eleven approaches - traditional as well as innovative. J. Doc. 58(4), 422–462 (2002).  https://doi.org/10.1108/00220410210431136 CrossRefGoogle Scholar
  13. 13.
    Hoare, C.A.R.: Proof of correctness of data representations. In: Bauer, F.L., Dijkstra, E.W., Ershov, A., Griffiths, M., Hoare, C.A.R., Wulf, W.A., Samelson, K. (eds.) Language Hierarchies and Interfaces. LNCS, vol. 46, pp. 183–193. Springer, Heidelberg (1976).  https://doi.org/10.1007/3-540-07994-7_54 CrossRefGoogle Scholar
  14. 14.
    Robertson, J.: Eureka! Why analysts should invent requirements. IEEE Softw. 19(4), 20–22 (2002).  https://doi.org/10.1109/MS.2002.1020281 CrossRefGoogle Scholar
  15. 15.
    Stepanov, A., McJones, P.: Elements of Programming, 1st edn. Addison-Wesley Professional, Boston (2009)Google Scholar
  16. 16.
    Terho, H., Suonsyrjä, S., Jaaksi, A., Mikkonen, T., Kazman, R., Chen, H.: Lean startup meets software product lines: Survival of the fittest or letting products bloom? In: Nummenmaa, J., Sievi-Korte, O., Mäkinen, E. (eds.) Proceedings of SPLST 2015. CEUR Workshop Proceedings, vol. 1525, pp. 134–148. CEUR-WS.org (2015). http://ceur-ws.org/Vol-1525/paper-10.pdf
  17. 17.
    Tüzün, E., Tekinerdogan, B.: Analyzing impact of experience curve on ROI in the software product line adoption process. Inf. Softw. Technol. 59, 136–148 (2015).  https://doi.org/10.1016/j.infsof.2014.09.008 CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG 2018

Authors and Affiliations

  1. 1.Bergen Language Design Laboratory, Department of Computer ScienceUniversity of BergenBergenNorway

Personalised recommendations