I'm not sure you take the good way. In the pgfmanual, you can see that centers of the different parts are not given. I think the center of a part for example "one" is $(1.west)!.5!(1.one split)$. I write rapidly the next code and it's possible to write something more elegant.
Update version 2 : I found a way to create the coordinates of the centers for each part but I can't find how to create the circles with the style. (c1 3) désigne the center of the first part of the node (3). There are some modifications in the code like at end
\input tikz
\usetikzlibrary{arrows,shapes.multipart,calc}
\tikzset{
font=\tt,
>= stealth,
every picture/.style={thick},
box/.style={at end,
draw,
inner sep=2ex,
fill=black!10,
rounded corners,
rectangle,
rectangle split,
rectangle split parts=2,
rectangle split ignore empty parts=false,
rectangle split horizontal,
append after command={%
\pgfextra{%
\let\mainnode=\tikzlastnode}
coordinate (c1 \mainnode) at ($(\mainnode.west)!.5!(\mainnode.one split)$)
coordinate (c2 \mainnode) at ($(\mainnode.one split)!.5!(\mainnode.east)$)}}}
\tikzpicture
\node[box] (1) {};
\draw[->] (c1 1) -- +(0,-1) node[anchor=north,box] (2) {};
\draw[->] (c1 2) -- +(0,-1) node[anchor=north] {1};
\draw[->] (c2 2) -- +(0,-1) node[anchor=north] {2};
\draw[->] (c2 1) -- +(1,0) node[anchor=west,box] (3) {};
\draw[->] (c1 3) -- +(0,-1) node[anchor=north] {3};
\draw[->] (c2 3) -- +(0,-1) node[anchor=north] {4};
\foreach \i in {1,2,3}{\draw[fill=black] (c1 \i)circle(2pt) (c2 \i)circle(2pt);}
\endtikzpicture
\bye

Difference with Marc's solution
\node[box] (1) { };
\draw[] (1.one|-1.west) circle(2pt);
\draw[fill=black] ($(1.west)!.5!(1.one split)$)circle(2pt);
gives 
Update version 3. It's possible to draw the circle directly but in this case you can't draw the arrows at the same time. The code is interesting and perhaps someone can find a good idea for the arrows (only arrows when we use box)
\input tikz
\usetikzlibrary{arrows,shapes.multipart,calc}
\tikzset{
font=\tt,
>= stealth,
every picture/.style={thick},
box/.style={
draw,
inner sep=2ex,
fill=black!10,
rounded corners,
rectangle,
rectangle split,
rectangle split parts=2,
rectangle split ignore empty parts=false,
rectangle split horizontal,
append after command={%
\pgfextra{\let\mainnode=\tikzlastnode
\coordinate (c1 \mainnode) at ($(\mainnode.west)!.5!(\mainnode.one split)$);
\coordinate (c2 \mainnode) at ($(\mainnode.one split)!.5!(\mainnode.east)$);
\draw[fill=black] (c1 \mainnode)circle(2pt) (c2 \mainnode)circle(2pt);}
}}}
\tikzpicture
\node[box] (1) {};
\path (c1 1) -- +(0,-1) node[anchor=north,box] (2) {};
\draw[->] (c1 2) -- +(0,-1) node[anchor=north] {1};
\draw[->] (c2 2) -- +(0,-1) node[anchor=north] {2};
\path (c2 1) -- +(1,0) node[anchor=west,box] (3) {};
\draw[->] (c1 3) -- +(0,-1) node[anchor=north] {3};
\draw[->] (c2 3) -- +(0,-1) node[anchor=north] {4};
\draw[->] (c1 1) -- (2.north);
\draw[->] (c2 1) -- (3.west);
\endtikzpicture
\bye
We get the same result.