Quantum communication (QC) systems harness modern physics through state-of-the-art optical engineering to provide revolutionary capabilities. An important concern for QC engineering is designing and prototyping these systems to evaluate the proposed capabilities. We apply the paradigm of software-defined communication for engineering QC systems to facilitate rapid prototyping and prototype comparisons. We detail how to decompose QC terminals into functional layers defining hardware, software, and middleware concerns, and we describe how each layer behaves. Using the superdense coding protocol as an example, we describe implementations of both the transmitter and receiver, and we present results from numerical simulations of the behavior. We conclude that the software-defined QC provides a robust framework in which to explore the large design space offered by this new regime of communication.