Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3609025.3609479acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article
Open access

Phases in Software Architecture

Published: 31 August 2023 Publication History

Abstract

The large-scale structure of executing a computation can often be thought of as being separated into distinct phases. But the most natural form in which to specify that computation may well have a different and conflicting structure. For example, the computation might consist of gathering data from some locations, processing it, then distributing the results back to the same locations; it may be executed in three phases—gather, process, distribute—but mostly conveniently specified orthogonally—by location. We have recently shown that this multi-phase structure can be expressed as a novel applicative functor (also known as an idiom, or lax monoidal functor). Here we summarize the idea from the perspective of software architecture. At the end, we speculate about applications to choreography and multi-tier architecture.

References

[1]
Richard S. Bird. 1984. Using Circular Programs to Eliminate Multiple Traversals of Data. Acta Informatica, 21 (1984), 239–250. https://doi.org/10.1007/BF00264249
[2]
Paolo Capriotti and Ambrus Kaposi. 2014. Free Applicative Functors. In Mathematically Structured Functional Programming (EPTCS, Vol. 153). 2–30. https://doi.org/10.4204/EPTCS.153.2
[3]
Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. 2006. Links: Web Programming Without Tiers. In Formal Methods for Components and Objects (LNCS, Vol. 4709). Springer, 266–296. https://doi.org/10.1007/978-3-540-74792-5_12
[4]
Brian Day. 1970. On Closed Categories of Functors. In Reports of the Midwest Category Seminar IV (Lecture Notes in Mathematics, Vol. 137). Springer-Verlag, 1–38. https://doi.org/10.1007/BFb0060438
[5]
Noah Easterly. 2019. Functions and Newtype Wrappers for Traversing Trees: rampion/tree-traversals. https://github.com/rampion/tree-traversals
[6]
Jeremy Gibbons and Bruno César dos Santos Oliveira. 2009. The Essence of the Iterator Pattern. JFP, 19, 3,4 (2009), 377–402. https://doi.org/10.1017/S0956796809007291
[7]
Jeremy Gibbons, Donnacha Oisín Kidney, Tom Schrijvers, and Nicolas Wu. 2022. Breadth-First Traversal Via Staging. In Mathematics of Program Construction (LNCS, Vol. 13544). Springer, 1–33. https://doi.org/10.1007/978-3-031-16912-0_1
[8]
Michael A. Jackson. 1975. Principles of Program Design. Academic Press.
[9]
Geraint Jones and Jeremy Gibbons. 1993. Linear-time Breadth-first Tree Algorithms: An Exercise in the Arithmetic of Folds and Zips. IFIP WG2.1. http://www.cs.ox.ac.uk/publications/publication2363-abstract.html
[10]
Conor McBride and Ross Paterson. 2008. Applicative Programming with Effects. JFP, 18, 1 (2008), 1–13. https://doi.org/10.1017/S0956796807006326
[11]
Eugenio Moggi. 1991. Notions of Computation and Monads. Information and Computation, 93, 1 (1991), 55–92. https://doi.org/10.1016/0890-5401(91)90052-4
[12]
Chris Okasaki. 2000. Breadth-First Numbering: Lessons from a Small Exercise in Algorithm Design. In International Conference on Functional Programming. ACM, 131–136. https://doi.org/10.1145/351240.351253
[13]
Alberto Pettorossi and Andrzej Skowron. 1987. Higher Order Generalization in Program Derivation. In Theory and Practice of Software Development (LNCS, Vol. 250). Springer, 182–196. https://doi.org/10.1007/BFb0014981
[14]
Alberto Pettorossi and Andrzej Skowron. 1989. The Lambda Abstraction Strategy for Program Derivation. Fundamenta Informaticae, XII (1989), 541–562. https://doi.org/10.3233/FI-1989-12407
[15]
Exequiel Rivas and Mauro Jaskelioff. 2017. Notions of Computation as Monoids. JFP, 27 (2017), e21. https://doi.org/10.1017/S0956796817000132
[16]
Gan Shen, Shun Kashiwa, and Lindsey Kuper. 2023. HasChor: Functional Choreographic Programming for All (Functional Pearl). arxiv:2303.00924.
[17]
Walid Taha. 2003. A Gentle Introduction to Multi-stage Programming. In Domain-Specific Program Generation (LNCS, Vol. 3016). Springer, 30–50. https://doi.org/10.1007/978-3-540-25935-0_3
[18]
Philip Wadler. 1992. Monads for Functional Programming. In Program Design Calculi: Proceedings of the Marktoberdorf Summer School (NATO ASI Series F, Vol. 118). Springer, 233–264. https://doi.org/10.1007/978-3-662-02880-3_8

Index Terms

  1. Phases in Software Architecture

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    FUNARCH 2023: Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture
    August 2023
    62 pages
    ISBN:9798400702976
    DOI:10.1145/3609025
    This work is licensed under a Creative Commons Attribution 4.0 International License.

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 31 August 2023

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. applicative functor
    2. choreography
    3. fusion
    4. multi-tier
    5. phase separation
    6. traversal

    Qualifiers

    • Research-article

    Conference

    FUNARCH '23
    Sponsor:

    Upcoming Conference

    ICFP '25
    ACM SIGPLAN International Conference on Functional Programming
    October 12 - 18, 2025
    Singapore , Singapore

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 370
      Total Downloads
    • Downloads (Last 12 months)260
    • Downloads (Last 6 weeks)35
    Reflects downloads up to 18 Nov 2024

    Other Metrics

    Citations

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media