Last active
August 29, 2015 14:02
-
-
Save diraol/c639e9595f2bee7e01e0 to your computer and use it in GitHub Desktop.
Macro para Requisitos de Engenharia de Software em LaTeX
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
! Misplaced \noalign. | |
\hline ->\noalign | |
{\ifnum 0=`}\fi \let \hskip \vskip \let \vrule \hrule \let... | |
l.10 \PrintRequisitos | |
I expect to see \noalign only after the \cr of | |
an alignment. Proceed, and I'll ignore this case. | |
! You can't use `\hrule' here except with leaders. | |
\vline ->\vrule | |
\@width \arrayrulewidth | |
l.10 \PrintRequisitos | |
To put a horizontal rule in an hbox or an alignment, | |
you should use \leaders or \hrulefill (see The TeXbook). | |
! Missing number, treated as zero. | |
<to be read again> | |
} | |
l.10 \PrintRequisitos | |
A number should have been here; I inserted `0'. | |
(If you can't figure out why I needed to see a number, | |
look up `weird error' in the index to The TeXbook.) | |
! Illegal unit of measure (pt inserted). | |
<to be read again> | |
} | |
l.10 \PrintRequisitos | |
Dimensions can be in units of em, ex, in, pt, pc, | |
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! | |
I'll assume that you meant to say pt, for printer's points. | |
To recover gracefully from this error, it's best to | |
delete the erroneous units; e.g., type `2' to delete | |
two letters. (See Chapter 27 of The TeXbook.) | |
[14 | |
pdfTeX warning (ext4): destination with the same identifier (name{table.3.2}) h | |
as been already used, duplicate ignored | |
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox | |
\fi \fi | |
l.65 | |
pdfTeX warning (ext4): destination with the same identifier (name{table.3. | |
3}) has been already used, duplicate ignored | |
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox | |
\fi \fi | |
l.65 | |
] | |
\hyperlink {RF\theindiceFuncional }{RF\theindiceFuncional } & \CmdReqNome \\ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%%01 | |
\vfill | |
\begin{Requisito} | |
\ReqTipo{funcional}%Tipo | |
\ReqNome{Cadastrar usuário}%Nome | |
%\ReqLabel{cadUsu}%Label | |
\ReqDescr{O usuário realiza seu cadastro na plataforma.}%Desc. | |
\ReqPrioridade{alta}%Prioridade | |
\ReqStatus{aprovado}%Status | |
\ReqEstabilidade{alta}%Estabilidade | |
\ReqOrigem{interna}%Origem | |
\ReqRationale{Permite realizar um ``tracking'' do histórico dos usuários para oferecer informações mais precisas, além de permitir que o usuário utilize o ``game'', que demanda um acúmulo de participação na plataforma.}%Rationale | |
\ReqAssoc{}%Assoc | |
\end{Requisito} | |
%%02 | |
\vfill | |
\begin{Requisito} | |
\ReqTipo{funcional}%Tipo | |
\ReqNome{Realizar login}%Nome | |
%\ReqLabel{login}%Label | |
\ReqDescr{O usuário deve fazer login para ter acesso ao sistema, impedindo que pessoas não autorizadas tenham acesso a certas funções do sistema.}%Desc. | |
\ReqPrioridade{alta}%Prioridade | |
\ReqStatus{aprovado}%Status | |
\ReqEstabilidade{alta}%Estabilidade | |
\ReqOrigem{usuario}%Origem | |
\ReqRationale{Método que previne que pessoas não autorizadas tenham acesso às funcionalidades do sistema, em especial as que alteram o banco de dados.}%Rationale | |
\ReqAssoc{Realizar login social}%Assoc | |
\end{Requisito} | |
\begin{table}[H] | |
\centering | |
\caption{Requisitos funcionais gerais} | |
\label{tab:reqFuncGeral} | |
\PrintRequisitos | |
\end{table} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% REQUISITOS %% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% USO %% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
% | |
%\begin{Requisito} | |
% \ReqTipo{<ARGUMENTO 1>} | |
% \ReqNome{<ARGUMENTO 2>} | |
% \ReqLabel{<LABEL>} | |
% \ReqDescr{<ARGUMENTO 3>} | |
% \ReqPrioridade{<ARGUMENTO 4>} | |
% \ReqStatus{<ARGUMENTO 5>} | |
% \ReqEstabilidade{<ARGUMENTO 6>} | |
% \ReqOrigem{<ARGUMENTO 7>} | |
% \ReqRationale{<ARGUMENTO 8>} | |
% \ReqAssoc{<ARGUMENTO 9>} | |
%\end{Requisito} | |
% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% DESCRIÇÃO DOS ARGUMENTOS %% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% *** Nenhum argumento pode conter caracteres especiais, como o 'underscore' *** | |
% <LABEL>: Label a ser usada para referencias internas do documento | |
% <ARGUMENTO 1>: TIPO: ´Funcional´ (funcional) ou ´Nao Funcional´ (nao funcional) | |
% <ARGUMENTO 2>: Nome do requisito | |
% <ARGUMENTO 3>: Descrição do Requisito | |
% <ARGUMENTO 4>: Prioridade [alta, media, baixa] | |
% <ARGUMENTO 5>: Status [proposto, aprovado, incorporado, validado] | |
% <ARGUMENTO 6>: Estabilidade [alta, media, baixa] | |
% <ARGUMENTO 7>: Origem [usuario, interna, externa] | |
% <ARGUMENTO 8>: Rationale - texto extenso | |
% <ARGUMENTO 9>: Requisitos Associados - por enquanto tem que listar na mão | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
% | |
% | |
% CONTADORES DOS REQUISITOS | |
\newcounter{indiceFuncional} | |
\newcounter{indiceNaoFuncional} | |
% | |
% | |
%% New job (that is, file) | |
\newwrite\ans | |
\immediate\openout\ans=\jobname-temp | |
% | |
% | |
%% Usamos unexpanded... mas eu não sei porque. No meu | |
%% computador não funciona se removo o unexpanded. Acho | |
%% que deve ter algo haver com o `\\` dentro da expressão. | |
%% (Aliás, isso é muito provável, já que o significado | |
%% de `\\` é diferente no texto e em um ambiente tabular; | |
%% sua expansão tem que ser postergada para o momento em | |
%% que a tabela está sendo impressa (`PrintVolunteers`). | |
\newcommand{\AppendRequisito}[2]{% | |
\immediate\write\ans{\unexpanded{\hyperlink{#1}{#1} & #2\\}}% | |
} | |
% | |
\newcommand{\PrintRequisitos}{% | |
\begin{tabular}{|c|l|}% | |
\hline | |
\textbf{Identificação} & \textbf{Requisito} \\% | |
\hline% | |
\immediate\closeout\ans\input{\jobname-temp}% | |
\hline% | |
\end{tabular}% | |
} | |
% | |
% | |
%%%%% | |
\newenvironment{Requisito}{}{% | |
\CriaRequisito% | |
} | |
% | |
% | |
% FUNÇÕES INTERNAS | |
\newcommand{\CmdReqTipo}{}% | |
\newcommand{\CmdReqLabel}{}% | |
\newcommand{\CmdReqNome}{}% | |
\newcommand{\CmdReqDescr}{}% | |
\newcommand{\CmdReqPrioridade}{}% | |
\newcommand{\CmdReqStatus}{}% | |
\newcommand{\CmdReqEstabilidade}{}% | |
\newcommand{\CmdReqOrigem}{}% | |
\newcommand{\CmdReqRationale}{}% | |
\newcommand{\CmdReqAssoc}{}% | |
% | |
% | |
% | |
%FUNÇÕES USER FRIENDLY | |
\newcommand{\ReqTipo}[1]{% | |
\ifstrequal{#1}{funcional}{% | |
\stepcounter{indiceFuncional}% | |
\ReqLabel{RF\theindiceFuncional}% | |
\renewcommand{\CmdReqTipo}{\multicolumn{3}{|l|}{\textbf{No:} RF\theindiceFuncional \hypertarget{\CmdReqLabel}{}} & (X) Funcional & ( ) Não Funcional \\} | |
\AppendRequisito{RF\theindiceFuncional}{\CmdReqNome} | |
}{% | |
\stepcounter{indiceNaoFuncional}% | |
\ReqLabel{RNF\theindiceFuncional}% | |
\renewcommand{\CmdReqTipo}{\multicolumn{3}{|l|}{\textbf{No:} RN\theindiceNaoFuncional} & ( ) Funcional & (X) Não Funcional \\} | |
\AppendRequisito{RNF\theindiceNaoFuncional}{\CmdReqNome} | |
} | |
} | |
\newcommand{\ReqLabel}[1]{\renewcommand{\CmdReqLabel}{#1}}% | |
\newcommand{\ReqNome}[1]{\renewcommand{\CmdReqNome}{#1}}% | |
\newcommand{\ReqDescr}[1]{\renewcommand{\CmdReqDescr}{#1}}% | |
\newcommand{\ReqPrioridade}[1]{% | |
\ifstrequal{#1}{alta}{% | |
\renewcommand{\CmdReqPrioridade}{(X) Alta & ( ) Média & ( ) Baixa & \\} | |
}{% | |
\ifstrequal{#1}{media}{% | |
\renewcommand{\CmdReqPrioridade}{( ) Alta & (X) Média & ( ) Baixa & \\} | |
}{% | |
\renewcommand{\CmdReqPrioridade}{( ) Alta & ( ) Média & (X) Baixa & \\} | |
} | |
} | |
} | |
\newcommand{\ReqStatus}[1]{ | |
\ifstrequal{#1}{proposto}{% | |
\renewcommand{\CmdReqStatus}{(X) Proposto & ( ) Aprovado & ( ) Incorporado & ( ) Válido \\} | |
}{ | |
\ifstrequal{#1}{aprovado}{% | |
\renewcommand{\CmdReqStatus}{( ) Proposto & (X) Aprovado & ( ) Incorporado & ( ) Válido \\} | |
}{ | |
\ifstrequal{#1}{incorporado}{% | |
\renewcommand{\CmdReqStatus}{( ) Proposto & ( ) Aprovado & (X) Incorporado & ( ) Válido \\} | |
}{ | |
\renewcommand{\CmdReqStatus}{( ) Proposto & ( ) Aprovado & ( ) Incorporado & (X) Válido \\} | |
}% | |
}% | |
} | |
}% | |
\newcommand{\ReqEstabilidade}[1]{ | |
\ifstrequal{#1}{alta}{% | |
\renewcommand{\CmdReqEstabilidade}{(X) Alta & ( ) Média & ( ) Baixa & \\} | |
}{% | |
\ifstrequal{#1}{media}{% | |
\renewcommand{\CmdReqEstabilidade}{( ) Alta & (X) Média & ( ) Baixa & \\} | |
}{% | |
\renewcommand{\CmdReqEstabilidade}{( ) Alta & ( ) Média & (X) Baixa & \\} | |
} | |
} | |
} | |
\newcommand{\ReqOrigem}[1]{ | |
\ifstrequal{#1}{usuario}{% | |
\renewcommand{\CmdReqOrigem}{(X) Usuário & ( ) Interna & ( ) Externa \\}% | |
}{% | |
\ifstrequal{#1}{interna}{% | |
\renewcommand{\CmdReqOrigem}{( ) Usuário & (X) Interna & ( ) Externa \\}% | |
}{ | |
\renewcommand{\CmdReqOrigem}{( ) Usuário & ( ) Interna & (X) Externa \\}% | |
}% | |
}% | |
} | |
\newcommand{\ReqRationale}[1]{\renewcommand{\CmdReqRationale}{#1}}% | |
\newcommand{\ReqAssoc}[1]{\renewcommand{\CmdReqAssoc}{#1}}% | |
% | |
% | |
%Função Requisito - utilizada indiretamente pelo ambiente Requisito | |
\newcommand{\CriaRequisito}{ | |
\begin{table}[!h] | |
\begin{tabular}{|lllll|}% | |
\hline% | |
\CmdReqTipo% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Requisito:} \CmdReqNome%#2% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Descrição:} \CmdReqDescr%#3% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\textbf{Prioridade:} & \CmdReqPrioridade% | |
\hline% | |
\textbf{Status:} & \CmdReqStatus% | |
\hline% | |
\textbf{Estabilidade:} & \CmdReqEstabilidade% | |
\hline% | |
\textbf{Origem:} & \CmdReqOrigem% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Rationale:} \CmdReqRationale%#8% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Requisitos Associados:} \CmdReqAssoc%#9% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\end{tabular} | |
\end{table} | |
}% FIM DO COMMAND CriaRequisito | |
% |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% REQUISITOS %% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% USO %% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
% | |
%\begin{Requisito} | |
% \ReqTipo{<ARGUMENTO 1>} | |
% \ReqNome{<ARGUMENTO 2>} | |
% \ReqLabel{<LABEL>} | |
% \ReqDescr{<ARGUMENTO 3>} | |
% \ReqPrioridade{<ARGUMENTO 4>} | |
% \ReqStatus{<ARGUMENTO 5>} | |
% \ReqEstabilidade{<ARGUMENTO 6>} | |
% \ReqOrigem{<ARGUMENTO 7>} | |
% \ReqRationale{<ARGUMENTO 8>} | |
% \ReqAssoc{<ARGUMENTO 9>} | |
%\end{Requisito} | |
% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% DESCRIÇÃO DOS ARGUMENTOS %% | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% *** Nenhum argumento pode conter caracteres especiais, como o 'underscore' *** | |
% <LABEL>: Label a ser usada para referencias internas do documento | |
% <ARGUMENTO 1>: TIPO: ´Funcional´ (funcional) ou ´Nao Funcional´ (nao funcional) | |
% <ARGUMENTO 2>: Nome do requisito | |
% <ARGUMENTO 3>: Descrição do Requisito | |
% <ARGUMENTO 4>: Prioridade [alta, media, baixa] | |
% <ARGUMENTO 5>: Status [proposto, aprovado, incorporado, validado] | |
% <ARGUMENTO 6>: Estabilidade [alta, media, baixa] | |
% <ARGUMENTO 7>: Origem [usuario, interna, externa] | |
% <ARGUMENTO 8>: Rationale - texto extenso | |
% <ARGUMENTO 9>: Requisitos Associados - por enquanto tem que listar na mão | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
% | |
% | |
% CONTADORES DOS REQUISITOS | |
\newcounter{indiceFuncional} | |
\newcounter{indiceNaoFuncional} | |
% | |
% | |
%%%%% | |
\newenvironment{Requisito}{}{% | |
\CriaRequisito% | |
} | |
% | |
% | |
% FUNÇÕES INTERNAS | |
\newcommand{\CmdReqTipo}{}% | |
\newcommand{\CmdReqLabel}{}% | |
\newcommand{\CmdReqNome}{}% | |
\newcommand{\CmdReqDescr}{}% | |
\newcommand{\CmdReqPrioridade}{}% | |
\newcommand{\CmdReqStatus}{}% | |
\newcommand{\CmdReqEstabilidade}{}% | |
\newcommand{\CmdReqOrigem}{}% | |
\newcommand{\CmdReqRationale}{}% | |
\newcommand{\CmdReqAssoc}{}% | |
% | |
% | |
% | |
%FUNÇÕES USER FRIENDLY | |
\newcommand{\ReqTipo}[1]{% | |
\ifstrequal{#1}{funcional}{% | |
\stepcounter{indiceFuncional}% | |
\ReqLabel{RF\theindiceFuncional}% | |
\renewcommand{\CmdReqTipo}{\multicolumn{3}{|l|}{\textbf{No:} RF\theindiceFuncional \hypertarget{\CmdReqLabel}{}} & (X) Funcional & ( ) Não Funcional \\} | |
}{% | |
\stepcounter{indiceNaoFuncional}% | |
\ReqLabel{RNF\theindiceFuncional}% | |
\renewcommand{\CmdReqTipo}{\multicolumn{3}{|l|}{\textbf{No:} RN\theindiceNaoFuncional} & ( ) Funcional & (X) Não Funcional \\} | |
} | |
} | |
\newcommand{\ReqLabel}[1]{\renewcommand{\CmdReqLabel}{#1}}% | |
\newcommand{\ReqNome}[1]{\renewcommand{\CmdReqNome}{#1}}% | |
\newcommand{\ReqDescr}[1]{\renewcommand{\CmdReqDescr}{#1}}% | |
\newcommand{\ReqPrioridade}[1]{% | |
\ifstrequal{#1}{alta}{% | |
\renewcommand{\CmdReqPrioridade}{(X) Alta & ( ) Média & ( ) Baixa & \\} | |
}{% | |
\ifstrequal{#1}{media}{% | |
\renewcommand{\CmdReqPrioridade}{( ) Alta & (X) Média & ( ) Baixa & \\} | |
}{% | |
\renewcommand{\CmdReqPrioridade}{( ) Alta & ( ) Média & (X) Baixa & \\} | |
} | |
} | |
} | |
\newcommand{\ReqStatus}[1]{ | |
\ifstrequal{#1}{proposto}{% | |
\renewcommand{\CmdReqStatus}{(X) Proposto & ( ) Aprovado & ( ) Incorporado & ( ) Válido \\} | |
}{ | |
\ifstrequal{#1}{aprovado}{% | |
\renewcommand{\CmdReqStatus}{( ) Proposto & (X) Aprovado & ( ) Incorporado & ( ) Válido \\} | |
}{ | |
\ifstrequal{#1}{incorporado}{% | |
\renewcommand{\CmdReqStatus}{( ) Proposto & ( ) Aprovado & (X) Incorporado & ( ) Válido \\} | |
}{ | |
\renewcommand{\CmdReqStatus}{( ) Proposto & ( ) Aprovado & ( ) Incorporado & (X) Válido \\} | |
}% | |
}% | |
} | |
}% | |
\newcommand{\ReqEstabilidade}[1]{ | |
\ifstrequal{#1}{alta}{% | |
\renewcommand{\CmdReqEstabilidade}{(X) Alta & ( ) Média & ( ) Baixa & \\} | |
}{% | |
\ifstrequal{#1}{media}{% | |
\renewcommand{\CmdReqEstabilidade}{( ) Alta & (X) Média & ( ) Baixa & \\} | |
}{% | |
\renewcommand{\CmdReqEstabilidade}{( ) Alta & ( ) Média & (X) Baixa & \\} | |
} | |
} | |
} | |
\newcommand{\ReqOrigem}[1]{ | |
\ifstrequal{#1}{usuario}{% | |
\renewcommand{\CmdReqOrigem}{(X) Usuário & ( ) Interna & ( ) Externa \\}% | |
}{% | |
\ifstrequal{#1}{interna}{% | |
\renewcommand{\CmdReqOrigem}{( ) Usuário & (X) Interna & ( ) Externa \\}% | |
}{ | |
\renewcommand{\CmdReqOrigem}{( ) Usuário & ( ) Interna & (X) Externa \\}% | |
}% | |
}% | |
} | |
\newcommand{\ReqRationale}[1]{\renewcommand{\CmdReqRationale}{#1}}% | |
\newcommand{\ReqAssoc}[1]{\renewcommand{\CmdReqAssoc}{#1}}% | |
% | |
% | |
%Função Requisito - utilizada indiretamente pelo ambiente Requisito | |
\newcommand{\CriaRequisito}{ | |
\begin{table}[!h] | |
\begin{tabular}{|lllll|}% | |
\hline% | |
\CmdReqTipo% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Requisito:} \CmdReqNome%#2% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Descrição:} \CmdReqDescr%#3% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\textbf{Prioridade:} & \CmdReqPrioridade% | |
\hline% | |
\textbf{Status:} & \CmdReqStatus% | |
\hline% | |
\textbf{Estabilidade:} & \CmdReqEstabilidade% | |
\hline% | |
\textbf{Origem:} & \CmdReqOrigem% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Rationale:} \CmdReqRationale%#8% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\multicolumn{5}{|l|}{% | |
\begin{minipage}{1\textwidth}% | |
\espacoVert% | |
\textbf{Requisitos Associados:} \CmdReqAssoc%#9% | |
\espacoVert% | |
\end{minipage}% | |
} \\% | |
\hline% | |
\end{tabular} | |
\end{table} | |
}% FIM DO COMMAND CriaRequisito | |
% |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment