Abstract
In recent years, we are witnessing a growing interest in large-scale situated systems, such as those falling under the umbrella of pervasive computing, Cyber-Physical Systems, and the Internet of Things. The actor model is a natural choice for designing and implementing such systems, thanks to the ability of actors to address distribution, autonomy of control, and asynchronous communication: namely, it is convenient to view the pervasive cyberspace as an environment densely inhabited by mobile situated actors. But how can an actor-centric development approach be fruitfully used to engineer a complex coordination strategy, where a myriad of devices/actors performs adaptive distributed sensing/processing/acting?
Aggregate computing has been proposed as an emerging paradigm that faces this general problem by adopting a global, system-level stance, allowing to specify and functionally compose collective behaviours by operating on diffused data structures, known as “computational fields”. In this paper, we develop on the idea of integrating the actor model and aggregate computing, presenting a software framework where declarative global-level system specifications are automatically turned into an underlying system of Scala/Akka actors carrying complex coordination tasks involving large sets of devices spread over the pervasive computing system.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
- 2.
Injection of new code clearly raises security concerns which we do not address here: we simply assume that all the devices participating to the same aggregate application can be trusted.
- 3.
The simulation is publicly available at the following repository: https://bitbucket.org/metaphori/demo-aggregate-agere16.
References
Akka. http://akka.io. Accessed 1 Feb 2017
Agha, G.: Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge (1986)
Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf, Raleigh (2007)
Beal, J., Bachrach, J.: Infrastructure for engineered emergence in sensor/actuator networks. IEEE Intell. Syst. 21, 10–19 (2006)
Beal, J., Dulman, S., Usbeck, K., Viroli, M., Correll, N.: Organizing the aggregate: languages for spatial computing. CoRR, abs/1202.5509 (2012)
Beal, J., Pianini, D., Viroli, M.: Aggregate programming for the Internet of Things. IEEE Comput. 48(9), 22–30 (2015)
Beal, J., Viroli, M.: Space–time programming. Phil. Trans. R. Soc. Lond. A Math. Phys. Eng. Sci. 373(2046) (2015). https://doi.org/10.1098/rsta.2014.0220
Beal, J., Viroli, M., Pianini, D., Damiani, F.: Self-adaptation to device distribution changes. In: Cabri, G., Picard, G., Suri, N. (eds.) 10th IEEE International Conference on Self-Adaptive and Self-Organizing Systems, SASO 2016, Augsburg, Germany, 12–16 September 2016, pp. 60–69 (2016). Best paper of IEEE SASO 2016
Callsen, C.J., Agha, G.: Open heterogeneous computing in actorspace. J. Parallel Distrib. Comput. 21(3), 289–300 (1994)
Casadei, R., Viroli, M.: Towards aggregate programming in Scala. In: First Workshop on Programming Models and Languages for Distributed Computing, PMLDC 2016, pp. 5:1–5:7. ACM, New York (2016)
Damiani, F., Viroli, M.: Type-based self-stabilisation for computational fields. Log. Methods Comput. Sci. 11(4), 1–53 (2015)
Damiani, F., Viroli, M., Pianini, D., Beal, J.: Code mobility meets self-organisation: a higher-order calculus of computational fields. In: Graf, S., Viswanathan, M. (eds.) FORTE 2015. LNCS, vol. 9039, pp. 113–128. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-19195-9_8
Derler, B.P., Lee, E.A., Vincentelli, A.S.: Modeling cyber physical systems. Proc. IEEE 100(1), 13–28 (2012)
Fernandez-Marquez, J.L., Serugendo, G.D.M., Montagna, S., Viroli, M., Arcos, J.L.: Description and composition of bio-inspired design patterns: a complete overview. Nat. Comput. 12(1), 43–67 (2013)
Haubenwaller, A.M., Vandikas, K.: Computations on the edge in the Internet of Things. Procedia Comput. Sci. 52, 29–34 (2015)
Hiesgen, R., Charousset, D., Schmidt, T.C.: Embedded actors - towards distributed programming in the IoT. In: 2014 IEEE Fourth International Conference on Consumer Electronics Berlin (ICCE-Berlin), pp. 371–375. IEEE (2014)
Latronico, E., Lee, E.A., Lohstroh, M., Shaver, C., Wasicek, A., Weber, M.: A vision of swarmlets. IEEE Internet Comput. 19(2), 20–28 (2015)
Mamei, M., Zambonelli, F.: Programming pervasive and mobile computing applications: the TOTA approach. ACM Trans. Softw. Eng. Methodol. 18(4), 1–56 (2009)
Mrissa, M., Médini, L., Jamont, J.-P., Le Sommer, N., Laplace, J.: An avatar architecture for the web of things. IEEE Internet Comput. 19(2), 30–38 (2015)
Ngu, A.H., Gutierrez, M., Metsis, V., Nepal, S., Sheng, Q.Z.: IoT middleware: a survey on issues and enabling technologies. IEEE Internet Things J. 4(1), 1–20 (2017)
Ni, Y., Kremer, U., Stere, A., Iftode, L.: Programming ad-hoc networks of mobile and resource-constrained devices. ACM SIGPLAN Not. 40(6), 249–260 (2005)
Odersky, M., et al.: An overview of the Scala programming language. Technical report (2004)
Persson, P., Angelsmark, O.: Calvin-merging cloud and IoT. Procedia Comput. Sci. 52, 210–217 (2015)
Pianini, D., Viroli, M., Beal, J.: Protelis: practical aggregate programming. In: Proceedings of ACM SAC 2015, Salamanca, Spain, pp. 1846–1853. ACM (2015)
Reppy, J., Samuels, L.: Bulk-synchronous communication mechanisms in Diderot (2015)
Sivieri, A., Mottola, L., Cugola, G.: Building Internet of Things software with ELIoT. Comput. Commun. 89, 141–153 (2016)
Valiant, L.G.: A bridging model for parallel computation. Commun. ACM 33(8), 103–111 (1990)
Vallejos, J., Gonzalez Boix, E., Bainomugisha, E., Costanza, P., De Meuter, W., Tanter, É.: Towards resilient partitioning of pervasive computing services. In: Proceedings of the 3rd Workshop on Software Engineering for Pervasive Services (SEPS 2008), pp. 15–20, January 2008
Van Cutsem, T., et al.: AmbientTalk: programming responsive mobile peer-to-peer applications with actors. Comput. Lang. Syst. Struct. 40(3), 112–136 (2014)
Vernon, V.: Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka, 1st edn. Addison-Wesley Professional, Boston (2015)
Viroli, M., Audrito, G., Damiani, F., Pianini, D., Beal, J.: A higher-order calculus of computational fields. CoRR, abs/1610.08116 (2016)
Viroli, M., Beal, J., Damiani, F., Pianini, D.: Efficient engineering of complex self-organising systems by self-stabilising fields. In: IEEE Self-Adaptive and Self-Organizing Systems 2015, pp. 81–90. IEEE, September 2015
Viroli, M., Casadei, R., Pianini, D.: On execution platforms for large-scale aggregate computing. In: Workshop on Collective Adaptation in Very Large Scale Ubicomp: Towards a Superorganism of Wearables, Ubicomp 2016. ACM, New York (2016)
Zambonelli, F.: Key abstractions for IoT-oriented software engineering. IEEE Softw. 34(1), 38–45 (2017)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this chapter
Cite this chapter
Casadei, R., Viroli, M. (2018). Programming Actor-Based Collective Adaptive Systems. In: Ricci, A., Haller, P. (eds) Programming with Actors. Lecture Notes in Computer Science(), vol 10789. Springer, Cham. https://doi.org/10.1007/978-3-030-00302-9_4
Download citation
DOI: https://doi.org/10.1007/978-3-030-00302-9_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-00301-2
Online ISBN: 978-3-030-00302-9
eBook Packages: Computer ScienceComputer Science (R0)