Problema resolvido para quem usa, para quem constroe e para o dono (owner)
- Comum a quem usa e constroi (o que)
- requisitos da função - o que a função é capaz de fazer, exemplo e
teste de aceitação
- parametros - informações que são passadas para a função e retornadas pela função
- Quem usa (como)
- teste de usabilidade
- teste de documentação
- Quem constroe (como)
- código da função
- relacionamento com outras funções - ambiente em que será
inserida a função
- efeito colateral - como contornar a mudança de estado no
programa
- teste unitário da função
- teste integrado da função
- Quem é o dono (porque, quando e onde)
- necessidade - origem da solução
Requisitos da função
Deve ser capaz de atribuir um
valor a elementos de um conjunto na visualização de uma pagina qualquer
do apoie.org.
Exemplo: Não mostrar na pagina
apoie.org o indice
valor= falso elementos=indice conjunto=expandir
Teste de aceitação: http://apoie.org#atribuir(false, 'Expandir', ' indice
');
Parametros
- O que
- O que será atribuido ao elemento de um conjunto Ex.: false ou
true
- Conjunto
- Ação sobre o conjunto Ex.: 'Expandir'
- Elementos
- Nome do elemento de um conjunto Ex.: 'indice'
Function atribuir
function atribuir (valor, conjunto,
elementos) //atribui um valor a
elementos de um conjunto
{var re, str;
re = /\s*(\w+)\s+(\w+)/; //move conteudo dos parametros para re
str = elementos, id = '';
while (re.test(str)) str = str.replace(re, "$1,$2"); //processa todos ?????
str = str.replace(/\s*/g, "");
if (str === '') return; //retorna ???? quando ????
array = str.split(",");
for (id in array) eval(conjunto +"['" + array[id] +
"'] = " + valor);}
Relacionamentos com outras funções

Teste unitário da função
- Teste funcional
- Teste de documentação
- TDD
- testador de expressão regular
Teste integrado da função
Teste Usabilidade
- Na Url
http://apoie.org#atribuir(false, 'Expandir', ' indice
');
http://apoie.org/Scrum.html#Preparar.geral="Chave.documentacao=true;";Acabar.geral="atribuir(false,
'Chave', ' documentacao moldura ');";
- Dentro de outra função
function Inic(xml) {
try
{atribuir(false, 'Chave', ChaveApag);} catch (err5) { }
try
{atribuir(false, 'Expandir', ExpandirApag);} catch (err7) { }
if (xml !== '') Iniciar(xml);
if (PrimeiraVez++ === 0) {
try
{eval(window.location.hash.substr(1));}
catch (err34){} }
document.getElementsByTagName('body')[0].style.display= 'block';
F5('Inic'); }
function FiltroNaUrl(fim)
{ var id, aux, Lig,
Apag, txt;
aux = Lig = Apag = txt = '';
for (id in Chave) {
if (pertence(id, ChaveApag)) {if
(ver(id)) Lig += ' ' + id;}
else if (!ver(id)) Apag += ' ' +
id;}
if (Lig !== '') txt += "atribuir(true, 'Chave', '" +
Lig + " ');" + fim;
if (Apag !== '') txt += "atribuir(false, 'Chave', '"
+ Apag + " ');" + fim;
Lig = Apag = '';
for (id in Expandir) {
if (pertence(id, ExpandirApag)) {
if
(verDet(id)) Lig += ' ' + id;}
else if (!verDet(id)) Apag += ' '
+ id;}
if (Lig !== '') txt
+= "atribuir(true, 'Expandir', '" + Lig + " ');" + fim;
if (Apag !==
'') txt += "atribuir(false, 'Expandir', '" + Apag + " ');" + fim;
return txt;}