Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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

Recommendations

Comments

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
  • 384
    Total Downloads
  • Downloads (Last 12 months)229
  • Downloads (Last 6 weeks)14
Reflects downloads up to 01 Jan 2025

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