\documentclass{standalone}
\renewcommand*{\familydefault}{\sfdefault}
\usepackage{preview}

\usepackage{tikz}
\usetikzlibrary{calc, positioning, arrows}

\newcommand{\selfcircle}[1]{
  \draw[<-,scale=1.8] ($(#1.north west) + (2mm, 0)$) -- ++(0, 2mm) -- ++(-4mm, 0mm) -- ++(0mm, -4mm) -- ++(2mm, 0mm);
}

\begin{document}
\begin{preview}
  \small
\begin{tikzpicture}[rectangle,
                    minimum height=1.5cm,
                    minimum width=3cm,
                    align=center,
                    node distance=4cm,
                    rounded corners=1mm,
                    very thick,
                    >=latex]

  \node[fill=green!20,draw=green!80] (t1s) {Solution\\Tier 1};
  \node[fill=orange!20,draw=orange!80,align=center, right of=t1s] (t1i) {Integration\\Qt Addon\\Tier 1};
  \node[fill=cyan!20,draw=cyan!80,align=center, right of=t1i] (t1f) {Functional\\Qt Addon\\Tier 1};

  \node[fill=green!40,draw=green!80, node distance=3cm, above of=t1s] (t2s) {Solution\\Tier 2};
  \node[fill=orange!40,draw=orange!80,align=center, right of=t2s] (t2i) {Integration\\Qt Addon\\Tier 2};
  \node[fill=cyan!40,draw=cyan!80,align=center, right of=t2i] (t2f) {Functional\\Qt Addon\\Tier 2};

  \node[fill=green!60,draw=green!80, node distance=3cm, above of=t2s] (t3s) {Solution\\Tier 3};
  \node[fill=orange!60,draw=orange!80,align=center, right of=t3s] (t3i) {Integration\\Qt Addon\\Tier 3};
  \node[fill=cyan!26,draw=cyan!80,align=center, right of=t3i] (t3f) {Functional\\Qt Addon\\Tier 3};

  \node[fill=orange!80,draw=orange!80,align=center, node distance=3cm, above of=t3i] (t4i) {Look \& Feel\\Consistency\\Tier 4};

  \node[fill=black,draw=black,circle, minimum size=1mm, inner sep=0mm] (pin) at ($(t3i) !0.5! (t4i)$) {};

  \node[fill=black!10,draw=black, minimum width=11cm,minimum height=1cm,node distance=2cm, below of=t1i] (t0) {OS, Qt, Wayland/X11, system libraries, cmake modules, $\dots$};

  % straight arrows from top to bottom
  \draw[->] (t3s) -- (t2s);
  \draw[->] (t2s) -- (t1s);
  \draw[->] (t4i) -- (t3i);
  \draw[->] (t3i) -- (t2i);
  \draw[->] (t2i) -- (t1i);
  \draw[->] (t3f) -- (t2f);
  \draw[->] (t2f) -- (t1f);

  \draw[->] (t1s.south) -- (t1s |- t0.north);
  \draw[->] (t1i.south) -- (t1i |- t0.north);
  \draw[->] (t1f.south) -- (t1f |- t0.north);

  % straight arrows from left to right
  \draw[->] (t3s) -- (t3i);
  \draw[->] (t3i) -- (t3f);

  % arrows from solution to integration, and integration to function
  \draw[->] (t2s) -| ($(t2s) !0.5! (t1i)$) |- (t1i);
  \draw[->] (t2i) -| ($(t2i) !0.5! (t1f)$) |- (t1f);

  % arrows from black circle
  \draw[->] (pin) -| (t3s);
  \draw[->] (pin) -| (t3f);

  % loops
  \selfcircle{t3s}
  \selfcircle{t3i}
  \selfcircle{t3f}
  \selfcircle{t4i}


\end{tikzpicture}
\end{preview}
\end{document}