  Heterogeneous computing is one of the most important computational solutions
to meet rapidly increasing demands on system performance. It typically allows
the main flow of applications to be executed on a CPU while the most
computationally intensive tasks are assigned to one or more accelerators, such
as GPUs and FPGAs. The refactoring of systems for execution on such platforms
is highly desired but also difficult to perform, mainly due the inherent
increase in software complexity. After exploration, we have identified a
current need for a systematic approach that supports engineers in the
refactoring process -- from CPU-centric applications to software that is
executed on heterogeneous platforms. In this paper, we introduce a decision
framework that assists engineers in the task of refactoring software to
incorporate heterogeneous platforms. It covers the software engineering
lifecycle through five steps, consisting of questions to be answered in order
to successfully address aspects that are relevant for the refactoring
procedure. We evaluate the feasibility of the framework in two ways. First, we
capture the practitioner's impressions, concerns and suggestions through a
questionnaire. Then, we conduct a case study showing the step-by-step
application of the framework using a computer vision application in the
automotive domain.
