\begin{tikzpicture}[
  -latex,
  entity/.style = {
    draw=lightGray,
    top color=lightGray,
    bottom color=white,
    rectangle,
    shading=axis,
    minimum width=2cm,
  },
  nop/.style = {
    draw=none,
  },
  frame/.style = {
    draw,
    -,
    dashed,
    thick,
    rounded corners,
  },
  label/.style = {
    draw=none,
  },
]
  % Software and hardware
  \node[entity] (hardware) at (0,0) {hardware};
  \node[entity, above=12pt of hardware] (software) {software};
  \node[nop] at ($ (software) !.5! (hardware) $) {+};
  \coordinate (l) at ($ (current bounding box.west)  + (-0.5,  0  ) $);
  \coordinate (r) at ($ (current bounding box.east)  + ( 0.5,  0  ) $);
  \coordinate (b) at ($ (current bounding box.south) + ( 0,   -0.5) $);
  \coordinate (t) at ($ (current bounding box.north) + ( 0,    0.5) $);
  \path[frame]
    (l) |- (t)
      node[label,below]{computer system} -|
    (r) |- (b) -| (l);

  % User and data
  \node[nop, above=of t] (user) {\includegraphics[width=1cm]{img/user}};
  \node[nop, above=-10pt of user] {user};
  \draw[latex-latex] (user) -- node[label,right]{data} ($ (t) + (0, 0.25) $);
\end{tikzpicture}
