[Tex/LaTex] Tikz diagram: subnodes

diagramstikz-pgf

I am trying to draw this diagram using tikz, but I am just a begginer and cant find out how to draw small nodes in those bigger. Anybody experienced in this? Text in image are not important, only shapes and arrows. Also I dont care about design so much, I mainly need shapes.

enter image description here

Best Answer

Here's a quick start. It uses the fit library and the node layering styles provided in Andrew Stacey's excellent answer here.

The styles lvl1, lvl2, etc. were created quickly (i.e., not matching your example) and can easily be modified to your tastes.

Code

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{fit,positioning}
\pgfdeclarelayer{l1}
\pgfdeclarelayer{l2}
\pgfsetlayers{l1,l2,main}

\makeatletter
\pgfkeys{%
  /tikz/node on layer/.code={
    \gdef\node@@on@layer{%
      \setbox\tikz@tempbox=\hbox\bgroup\pgfonlayer{#1}\unhbox\tikz@tempbox\endpgfonlayer\egroup}
    \aftergroup\node@on@layer
  },
  /tikz/end node on layer/.code={
    \endpgfonlayer\endgroup\endgroup
  }
}

\def\node@on@layer{\aftergroup\node@@on@layer}
\makeatother

\tikzset{
  lvl1/.style={draw,fill=blue!50,rounded corners=1.0cm,inner sep=12pt,node on layer=l1},
  lvl2/.style={draw,fill=blue!25,rounded corners=0.5cm,inner sep=8pt,node on layer=l2},
  lvl3/.style={draw=blue,fill=white,dashed,rounded corners=0.25cm,align=flush center,text width=12em,inner sep=4pt,minimum height=1.5cm},
  title/.style={node font=\LARGE},
  myarrow/.style={latex-latex,ultra thick,blue!80},
}

\begin{document}
\begin{tikzpicture}
  \node[lvl3] (1) {1. Analyze problem domain};
  \node[lvl3,right=of 1] (2) {2. Identify actores and organization structure}; 
  \node[lvl3,right=of 2] (3) {3. Identify and describe system objectives}; 
  \node[lvl3,below=of 1] (4) {4. Identify requirements in system objectives};
  \node[lvl3,right=of 4] (5) {5. Organize requirements and objectives};
  \node[lvl3,right=of 5] (6) {6. Gather and organize in System Requirements Document};
  \node[lvl2,fit=(1) (2) (3) (4) (5) (6)] (group1) {};
  \node[title,above=0.2cm of group1] (title1) {Requirements gathering};
  \node[lvl1,fit=(title1) (group1)] {};
  \node[lvl3,below=3cm of 4] (roleID) {Identification and description of Roles};
  \draw[myarrow] (roleID.north)--(4.south);
\end{tikzpicture}
\end{document}

Output

enter image description here