The design of integrated sensing and communication (ISAC) systems has drawn recent attention for its capacity to solve a number of challenges. Indeed, ISAC can enable numerous benefits, such as the sharing of spectrum resources, hardware, and software, and improving the interoperability of sensing and communication. In this article, we seek to provide a thorough investigation of ISAC. We begin by reviewing the paradigms of sensing-centric design, communication-centric design, and co-design of sensing and communication. We then explore the enabling techniques that are viable for ISAC (i.e., transmit waveform design, environment modeling, sensing source, signal processing, and data processing). We also present some emergent smart-world applications that could benefit from ISAC. Furthermore, we describe some prominent tools used to collect sensing data and publicly available sensing data sets for research and development, as well as some standardization efforts. Finally, we highlight some challenges and new areas of research in ISAC, providing a helpful reference for ISAC researchers and practitioners, as well as the broader research and industry communities.