  Practical quantum computing is rapidly becoming a reality. To harness quantum
computers' real potential in software applications, one needs to have an
in-depth understanding of all such characteristics of quantum computing
platforms (QCPs), relevant from the Software Engineering (SE) perspective.
Restrictions on copying, deletion, the transmission of qubit states, a hard
dependency on quantum algorithms are few, out of many, examples of QCP
characteristics that have significant implications for building quantum
software.
  Thus, developing quantum software requires a paradigm shift in thinking by
software engineers. This paper presents the key findings from the SE
perspective, resulting from an in-depth examination of state-of-the-art QCPs
available today. The main contributions that we present include i) Proposing a
general architecture of the QCPs, ii) Proposing a programming model for
developing quantum software, iii) Determining architecturally significant
characteristics of QCPs, and \textbf{iv)} Determining the impact of these
characteristics on various Quality Attributes (QAs) and Software Development
Life Cycle (SDLC) activities.
  We show that the nature of QCPs makes them useful mainly in specialized
application areas such as scientific computing. Except for performance and
scalability, most of the other QAs (e.g., maintainability, testability, and
reliability) are adversely affected by different characteristics of a QCP.
