[Tex/LaTex] TikZ arrow drawing and node positions

tikz-arrowstikz-pgf

I just started using TikZ, I want to draw exactly like this picture,enter image description here

I tried, and this is what I getenter image description here, which is not exactly what I want, how can I achieve the wanted result?
Thanks

My MWE:

\documentclass{article}
\usepackage{tikz}
\begin{document}
            \tikzstyle{block} = [draw,text centered, minimum height=2.8em,minimum width=12em]
        \tikzstyle{block1} = [text centered, minimum height=2.8em,minimum width=12em]   
    \begin{tikzpicture}
    \node [block] at (0,0) (1) {\textbf{Abstract Specification ($R_{0}$)}};
    \node [block] at (1.7,-2) (2) {\textbf{Refined Specification($R_{1}$)}};
    \node [block1] at (3.5,-3.8) (3) {.........};
    \node [block] at (6,-6) (4) {\textbf{Refined Specification ($R_{N}$)}};
    \node [block] at (7.5,-8) (5) {\textbf{Executable Program}};
        % arroows
 \draw [-latex,thick] (1.south) --  node [right] {\small{$Refinement$}} (2.north) ;
 \draw [-latex,thick] (2.south) --  node [right] {\small{$Refinement$}} (3.north) ;
  \draw [-latex,thick] (3.south) --  node [right] {\small{$Refinement$}} (4.north) ;
  \draw [-latex,thick] (4.south) --  node [right] {\small{$Refinement$}} (5.north) ;
    \end{tikzpicture}
\end{document}

Best Answer

A first fix is to get rid of .north and .south, so that the arrows will point to the center. (tikz is clever enough to don't "show" the arrow that connects the paths inside them)

But to have really parallel arrows you need to fix the coordinates to exact steps:

\documentclass{article}
\usepackage{tikz}

\begin{document}
            \tikzstyle{block} = [draw,text centered, minimum height=2.8em,minimum width=12em]
        \tikzstyle{block1} = [text centered, minimum height=2.8em,minimum width=12em]   
    \begin{tikzpicture}
    \node [block] at (0,0) (1) {\textbf{Abstract Specification ($R_{0}$)}};
    \node [block] at (1.7,-2) (2) {\textbf{Refined Specification($R_{1}$)}};
    \node [block1] at (3.4,-4) (3) {.........};
    \node [block] at (5.1,-6) (4) {\textbf{Refined Specification ($R_{N}$)}};
    \node [block] at (6.8,-8) (5) {\textbf{Executable Program}};
        % arroows
 \draw [-latex,thick] (1) --  node [right] {\small{$Refinement$}} (2) ;
 \draw [-latex,thick] (2) --  node [right] {\small{$Refinement$}} (3) ;
  \draw [-latex,thick] (3) --  node [right] {\small{$Refinement$}} (4) ;
  \draw [-latex,thick] (4) --  node [right] {\small{$Refinement$}} (5) ;
    \end{tikzpicture}
\end{document}

Output:

enter image description here

A next step is to use bm package to make bold the math too...

\documentclass{article}
\usepackage{tikz}
\usepackage{bm}

\begin{document}
            \tikzstyle{block} = [draw,text centered, minimum height=2.8em,minimum width=12em]
        \tikzstyle{block1} = [text centered, minimum height=2.8em,minimum width=12em]   
    \begin{tikzpicture}
    \node [block] at (0,0) (1) {\textbf{Abstract Specification ($\bm{R_{0}}$)}};
    \node [block] at (1.7,-2) (2) {\textbf{Refined Specification ($\bm{R_{1}}$)}};
    \node [block1] at (3.4,-4) (3) {.........};
    \node [block] at (5.1,-6) (4) {\textbf{Refined Specification (\bm{$R_{N}}$)}};
    \node [block] at (6.8,-8) (5) {\textbf{Executable Program}};
        % arroows
 \draw [-latex,thick] (1) --  node [right] {\small{$Refinement$}} (2) ;
 \draw [-latex,thick] (2) --  node [right] {\small{$Refinement$}} (3) ;
  \draw [-latex,thick] (3) --  node [right] {\small{$Refinement$}} (4) ;
  \draw [-latex,thick] (4) --  node [right] {\small{$Refinement$}} (5) ;
    \end{tikzpicture}
\end{document}

Output: The same with bold math.

Something last is if you want to make ultra thick the arrows and thick the rectangles (So that it will be more close to a flow diagram by emphasize the flow and the separate steps)

\documentclass{article}
\usepackage{tikz}

\begin{document}
            \tikzstyle{block} = [draw,thick,text centered, minimum height=2.8em,minimum width=12em]
        \tikzstyle{block1} = [text centered, minimum height=2.8em,minimum width=12em]   
    \begin{tikzpicture}
    \node [block] at (0,0) (1) {\textbf{Abstract Specification ($\bm{R_{0}}$)}};
    \node [block] at (1.7,-2) (2) {\textbf{Refined Specification ($\bm{R_{1}}$)}};
    \node [block1] at (3.4,-4) (3) {.........};
    \node [block] at (5.1,-6) (4) {\textbf{Refined Specification (\bm{$R_{N}}$)}};
    \node [block] at (6.8,-8) (5) {\textbf{Executable Program}};
        % arroows
 \draw [-latex,ultra thick] (1) --  node [right] {\small{$Refinement$}} (2) ;
 \draw [-latex,ultra thick] (2) --  node [right] {\small{$Refinement$}} (3) ;
  \draw [-latex,ultra thick] (3) --  node [right] {\small{$Refinement$}} (4) ;
  \draw [-latex,ultra thick] (4) --  node [right] {\small{$Refinement$}} (5) ;
    \end{tikzpicture}
\end{document}

Output:

enter image description here

It is a matter of taste after that (and may be before :P )