Making cities smarter help improve city services and increase citizens'
quality of life. Information and communication technologies (ICT) are
fundamental for progressing towards smarter city environments. Smart City
software platforms potentially support the development and integration of Smart
City applications. However, the ICT community must overcome current significant
technological and scientific challenges before these platforms can be widely
used. This paper surveys the state-of-the-art in software platforms for Smart
Cities. We analyzed 23 projects with respect to the most used enabling
technologies, as well as functional and non-functional requirements,
classifying them into four categories: Cyber-Physical Systems, Internet of
Things, Big Data, and Cloud Computing. Based on these results, we derived a
reference architecture to guide the development of next-generation software
platforms for Smart Cities. Finally, we enumerated the most frequently cited
open research challenges, and discussed future opportunities. This survey gives
important references for helping application developers, city managers, system
operators, end-users, and Smart City researchers to make project, investment,
and research decisions.Comment: Accepted for publication in ACM Computing Survey