Cloud computing concepts offer effective and efficient tools for addressing resource-hungry computational problems. While conventional methods, architectures, and processing techniques may limit cloud data center performance, software-defined cloud computing (SDCC) is an approach where virtualization services to all network resources in a dc are software-defined and where software-defined networking (SDN) and cloud computing go hand in hand. SDCC-related concepts change the previous state of affairs by promoting the centralized control of networking functions in a data center. A key objective of developing software-driven cloud infrastructure is that the networking hardware, software, storage, security, and network traffic management is open and interoperable. This facilitates easy installation and management of networking functions in the cloud infrastructure. Employing SDCC concepts to cloud data centers can improve resource administration challenges to a greater extent. This paper presents a survey on SDCC. We begin by introducing SDCC environments and explain its main architectural components. We identify the essential contributions of various developments to this field and discuss the implementation challenges and limitations faced in their adoption. We also explore the potential of SDCC in two domains, namely, resource orchestration and application development, as case studies of specific interest. In an attempt to anticipate the future evolution, we discuss the important research opportunities and challenges in this promising field.