Perspectives and Challenges of iOS Developers in Using Reactive Programming with RxSwift
Resumo
Reactive programming, which deals with asynchronous data streams and events, is gaining popularity but remains underexplored as a research topic. In the iOS ecosystem, RxSwift stands out as a widely used framework for reactive programming despite its challenges. This study investigates the difficulties faced by iOS developers when using RxSwift. Semi-structured interviews were conducted, and a code comprehension questionnaire was applied to map developers’ perspectives and the main challenges encountered. The paradigm shift was identified as the primary obstacle, with specific difficulties in creating streams, managing memory, and handling concurrency. Architectural patterns and learning resources were also cited as significant barriers. This research provides an overview of reactive development with RxSwift in iOS, proposing ways to optimize the learning journey and maximize the benefits of this approach.
Palavras-chave:
Reactive Programming, Reactive Extensions, Mobile Applications
Referências
[n. d.]. Combine framework. [link]
[n. d.]. Github. [link]
[n. d.]. Observation framework. [link]
[n. d.]. The Reactive Manifesto. [link]
[n. d.]. RxSwift GitHub. [link]
[n. d.]. RxSwift Reference. [link]
[n. d.]. SoSci Survey. [link]
[n. d.]. Stack OverFlow. [link]
Engineer Bainomugisha, Andoni Lombide Carreton, Tom Van Cutsem, Stijn Mostinckx, and Wolfgang De Meuter. 2012. A survey on reactive programming. ACM Computing Survey (2012).
Sebastian Baltes and Paul Ralph. 2022. Sampling in software engineering research: A critical review and guidelines. Empirical Software Engineering 27, 4 (2022), 94.
Clive Roland Boddy. 2016. Sample size for qualitative research. Qualitative market research: An international journal 19, 4 (2016), 426–432.
Moritz Dinser. 2021. An Empirical Study on Reactive Programming. Master’s thesis, Technische Universität Darmstadt. [link]
Niko Holopainen. 2022. Reactive iOS Development with RxSwift. Master’s thesis, Metropolia University of Applied Sciences. [link]
Kennedy Kambona, Elisa Gonzalez Boix, and Wolfgang De Meuter. 2013. An evaluation of reactive programming and promises for structuring collaborative web applications. In Proceedings of the 7th Workshop on Dynamic Languages and Applications. 1–9.
Tim May. 2002. Qualitative Research in Action. SAGE Publications.
Tim May. 2002. Qualitative research in action. Sage.
Alejandro R Mosteo. 2020. Reactive programming in Ada 2012 with RxAda. Journal of Systems Architecture 110 (2020), 101784.
Matti Määttä. 2017. Reactive Programming in iOS Application Development. Master’s Thesis, Tampere University of Technology. [link]
Chi Nguyen Huu Ngoc. 2017. Functional Reactive Programming in React Application. Bachelor’s Thesis, Metropolia University of Applied Sciences.
Tomasz Nurkiewicz and Ben Christensen. 2016. Reactive programming with RxJava: creating asynchronous, event-based applications. " O’Reilly Media, Inc.".
Alessandra Pereira, Carlos Zimmerle, Kiev Gama, and Fernando Castor. 2023. Reactive Programming with Swift Combine: An Analysis of Problems Faced by Developers on Stack Overflow. (2023).
Alessandra Luana Nascimento Pereira. 2022. Um Estudo Sobre O Uso Do Framework Combine Através Da Mineração De Publicações Do Stack Overflow. Bachelor’s Thesis, Universidade Federal de Pernambuco. [link]
Florent Pillet, Junior Bontognali, and Marin Todorova nand Scott Gardner. 2019. RxSwift. Reactive Programming with Swift. Razeware LLC.
Johnny Saldaña. 2011. Fundamentals of Qualitative Research - understanding Qualitative Research. Oxford University Press, Inc.
Johnny Saldaña. 2013. The coding manual for qualitative research. SAGE Publications.
Guido Salvaneschi, Joscha Drechsler, and Mira Mezini. 2013. Towards distributed reactive programming. In Coordination Models and Languages: 15th International Conference, COORDINATION 2013, Held as Part of the 8th International Federated Conference on Distributed Computing Techniques, DisCoTec 2013, Florence, Italy, June 3-5, 2013. Proceedings 15. Springer, 226–235.
Guido Salvaneschi, Gerold Hintz, and Mira Mezini. 2014. REScala: Bridging between object-oriented and functional style in reactive applications. In Proceedings of the 13th international conference on Modularity. ACM, 25–36.
Guido Salvaneschi, Alessandro Margara, and Giordano Tamburrelli. 2015. Reactive Programming: A Walkthrough. (2015).
Guido Salvaneschi, Sebastian Proksch, Sven Amann, Sarah Nadi, and Mira Mezini. 2017. On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study. IEEE Transactions on Software Engineering PP(99):1-1 (2017).
Carlos Zimmerle, Kiev Gama, Fernando Castor, and José Murilo Filho. 2022. Mining the Usage of Reactive Programming APIs: A Study on GitHub and Stack Overflow. (2022).
[n. d.]. Github. [link]
[n. d.]. Observation framework. [link]
[n. d.]. The Reactive Manifesto. [link]
[n. d.]. RxSwift GitHub. [link]
[n. d.]. RxSwift Reference. [link]
[n. d.]. SoSci Survey. [link]
[n. d.]. Stack OverFlow. [link]
Engineer Bainomugisha, Andoni Lombide Carreton, Tom Van Cutsem, Stijn Mostinckx, and Wolfgang De Meuter. 2012. A survey on reactive programming. ACM Computing Survey (2012).
Sebastian Baltes and Paul Ralph. 2022. Sampling in software engineering research: A critical review and guidelines. Empirical Software Engineering 27, 4 (2022), 94.
Clive Roland Boddy. 2016. Sample size for qualitative research. Qualitative market research: An international journal 19, 4 (2016), 426–432.
Moritz Dinser. 2021. An Empirical Study on Reactive Programming. Master’s thesis, Technische Universität Darmstadt. [link]
Niko Holopainen. 2022. Reactive iOS Development with RxSwift. Master’s thesis, Metropolia University of Applied Sciences. [link]
Kennedy Kambona, Elisa Gonzalez Boix, and Wolfgang De Meuter. 2013. An evaluation of reactive programming and promises for structuring collaborative web applications. In Proceedings of the 7th Workshop on Dynamic Languages and Applications. 1–9.
Tim May. 2002. Qualitative Research in Action. SAGE Publications.
Tim May. 2002. Qualitative research in action. Sage.
Alejandro R Mosteo. 2020. Reactive programming in Ada 2012 with RxAda. Journal of Systems Architecture 110 (2020), 101784.
Matti Määttä. 2017. Reactive Programming in iOS Application Development. Master’s Thesis, Tampere University of Technology. [link]
Chi Nguyen Huu Ngoc. 2017. Functional Reactive Programming in React Application. Bachelor’s Thesis, Metropolia University of Applied Sciences.
Tomasz Nurkiewicz and Ben Christensen. 2016. Reactive programming with RxJava: creating asynchronous, event-based applications. " O’Reilly Media, Inc.".
Alessandra Pereira, Carlos Zimmerle, Kiev Gama, and Fernando Castor. 2023. Reactive Programming with Swift Combine: An Analysis of Problems Faced by Developers on Stack Overflow. (2023).
Alessandra Luana Nascimento Pereira. 2022. Um Estudo Sobre O Uso Do Framework Combine Através Da Mineração De Publicações Do Stack Overflow. Bachelor’s Thesis, Universidade Federal de Pernambuco. [link]
Florent Pillet, Junior Bontognali, and Marin Todorova nand Scott Gardner. 2019. RxSwift. Reactive Programming with Swift. Razeware LLC.
Johnny Saldaña. 2011. Fundamentals of Qualitative Research - understanding Qualitative Research. Oxford University Press, Inc.
Johnny Saldaña. 2013. The coding manual for qualitative research. SAGE Publications.
Guido Salvaneschi, Joscha Drechsler, and Mira Mezini. 2013. Towards distributed reactive programming. In Coordination Models and Languages: 15th International Conference, COORDINATION 2013, Held as Part of the 8th International Federated Conference on Distributed Computing Techniques, DisCoTec 2013, Florence, Italy, June 3-5, 2013. Proceedings 15. Springer, 226–235.
Guido Salvaneschi, Gerold Hintz, and Mira Mezini. 2014. REScala: Bridging between object-oriented and functional style in reactive applications. In Proceedings of the 13th international conference on Modularity. ACM, 25–36.
Guido Salvaneschi, Alessandro Margara, and Giordano Tamburrelli. 2015. Reactive Programming: A Walkthrough. (2015).
Guido Salvaneschi, Sebastian Proksch, Sven Amann, Sarah Nadi, and Mira Mezini. 2017. On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study. IEEE Transactions on Software Engineering PP(99):1-1 (2017).
Carlos Zimmerle, Kiev Gama, Fernando Castor, and José Murilo Filho. 2022. Mining the Usage of Reactive Programming APIs: A Study on GitHub and Stack Overflow. (2022).
Publicado
30/09/2024
Como Citar
FARIAS, Elaine Cruz; ZIMMERLE, Carlos; GAMA, Kiev.
Perspectives and Challenges of iOS Developers in Using Reactive Programming with RxSwift. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 38. , 2024, Curitiba/PR.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2024
.
p. 609-615.
DOI: https://doi.org/10.5753/sbes.2024.3569.