I am trying to write a tex code that output a table like below:

I wrote the following code:
\newcounter{NumberReqF}
\newcommand{\ReqF}{\stepcounter{NumberReqF}\theNumberReqF ~- }
\newcounter{NumberReqNF}[NumberReqF]
\newcommand{\ReqNF}{\stepcounter{NumberReqNF}\theNumberReqF .\theNumberReqNF ~- }
\setcounter{NumberReqF}{0}
\setcounter{NumberReqNF}{0}
\noindent \begin{table}[h!]
\begin{tabular}{|p{0.40\columnwidth}|p{0.15\columnwidth}|p{0.15\columnwidth}|c|c|}
\hline
\multicolumn{3}{|p{0.70\columnwidth}|}{\ReqF Requisito Funcional} & \multicolumn{2}{p{0.30\columnwidth}|}{Oculto ()}\tabularnewline
\hline
\multicolumn{5}{|p{\columnwidth}|}{Aqui vai a descrição do requisito funcional, falando como ele funciona e tal mais algo. Pra testa o espaço vo coloca mais esse text pra que veja como a tabela se comporta}\tabularnewline
\hline
\multicolumn{5}{|p{\columnwidth}|}{\centering Requisitos Não-Funcionais}\tabularnewline
\hline
Nome & Restrição & Categoria & Desejável & \multicolumn{1}{c|}{Permanente}\tabularnewline
\hline
\ReqNF nome do resquisito não-funcional & & & & \multicolumn{1}{c|}{}\tabularnewline
\hline
\ReqNF nome do resquisito não-funcional & & & & \multicolumn{1}{c|}{}\tabularnewline
\hline
\end{tabular}
\end{table}
it outputs:

But the code is so complex How could I improve it? Making it easy to read, write new rows. I intend to add many table like it. I was thinking about create a new command also but I have no idea how.
