Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
1
Relatório de aferição das características da ferram enta
RAD Softwell Maker.
Introdução
No subitem 4.13 do Anexo I do edital da tomada de preços 01/2008,
existe a previsão de que a empresa que forneça a ferramenta RAD com maior
valor de avaliação seja convocada para realizar testes com objetivo de aferir as
características ofertadas da ferramenta.
No Anexo nº 5 do mesmo edital existe o detalhamento de como a
ferramenta deve ser aferida. Neste detalhamento, no item 1.2 deste anexo
consta que o processo de aferição será acompanhado por comissão técnica
designada pelo Centro de Informática.
O Centro de Informática designou então os seguintes servidores para
comporem a comissão técnica responsáveis pela aferição da ferramenta RAD:
Alfredo Luiz Campos Júnior ponto 6636
Dryade de Carvalho Fontenele ponto 6657
Evando Tadeu Moreira ponto 6639
Marcos Abdo Raposo ponto 6647
Olival Gomes Barboza Junior ponto 6401
Ricardo da Silva Lima ponto 6403
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
2
Objetivo:
O presente relatório tem por objetivo documentar o resultado do
processo de aferição das características técnicas da ferramentas Softwell
Maker, realizado no período de 03/11/2008 a 13/11/2008, com objetivo se
subsidiar a Comissão Permanente de Licitação na tomada de preços 01 de
2008.
O processo de aferição foi realizado conforme descrito no Anexo nº 5 do
edital da tomada de preços 01/2008 e foi dividido em dois subprocessos, a
Aferição das Características e a Aferição do Desempenho.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
3
Avaliação das Características.
Segundo o edital da TP 01/2008, no item 2 do Anexo nº 5, a aferição de
características teve por objetivo verificar a conformidade da proposta técnica
com a ferramenta RAD.
Em atenção ao subitem 1.3 do Anexo no. 5 do Edital, a empresa
SoftWell indicou o Sr. Lourival Oliveira da Silva, CI 34111389-x SSP/SP como
sendo o técnico responsável pelo processo de aferição.
A Apresentação a que se refere o subitem 2.3 do Anexo nº 5 do Edital foi
realizada pelo Sr Lourival Oliveira da Silva, no dia 03/11/2008, das 15:00 as
17:30 na sala 1101 Anexo I da Câmara dos Deputados, para membros da
comissão técnica.
Nos dias 04/11/2008 a 13/11/2008, foram verificadas as conformidades
das características obrigatórias e pontuáveis ofertadas da ferramenta RAD,
conforme descrito a seguir.
Os trabalhos de aferição foram realizados na sala 1101 e na sala 1106,
e todos os produtos e demonstrações foram realizados pelo Sr. Lourival
Oliveira da Silva.
Avaliação das Características Obrigatórias
1. Ambiente de desenvolvimento compatível com as pl ataformas de
sistemas operacionais Windows 2000 e XP, bem como c om bancos de
dados Oracle 10G e MS SQL Server 2005.
Na página 31 do manual do desenvolvedor consta que o software é
compatível com os sistemas operacionais Windows 2000 e XP e com os
bancos de dados Oracle 10G e MS SQL Server 2005.
Para demonstrar a característica, o técnico da empresa efetuou a
instalação do software em ambiente Windows: XP, conforme registrado abaixo:
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
4
Figura 1 - Instalação do Maker.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
5
Figura 2 - Inicialização da Instalação
Figura 3 - Exibição do Contrato de Instalação.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
6
Figura 4 - Instalando o Maker.
Figura 5 - Conclusão da Instalação.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
7
Para demonstrar a compatibilidade com SQL Server, foi desenvolvida
uma pequena aplicação no SQL Server.
Figura 6 - Tela inicial do Maker.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
8
Foi escolhido o SQL Server como repositório central:
Figura 7 - Tela de criação do repositório.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
9
Foi desenvolvida uma tela acessando dados no SQL Server:
Figura 8 - Desenvolvendo a tela de acesso ao SQL Se rver.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
10
Esta tela foi conectada com um banco SQL Server:
Figura 9 - Configurando acesso para o SQL Server
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
11
A tela foi inserida em um menu:
Figura 10 - Inserção de item de menu.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
12
Fez-se o acesso normal a aplicação:
Figura 11 - Tela de Logon da Aplicação.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
13
E a tela acessou o SQL Server:
Figura 12 - Tela acessando o banco SQL Server.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
14
Foi desenvolvido também uma pequena aplicação para demonstrar a
capacidade de acesso ao ORACLE:
Figura 13 - Tela de conexão com o Oracle.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
15
A aplicação também foi executada:
Figura 14 - Tela de teste de acesso ao Oracle.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
16
2. As aplicações geradas deverão ser compatíveis co m os navegadores
Internet Explorer 6 ou superior e com Mozilla Firef ox 2.0 ou superior.
Na página 255 do manual do desenvolvedor consta que o produto faz
uma verificação de compatibilidade do browser. Dentre os browsers suportados
estão o IE 6 e o Firefox 2.0.
Para demonstrar a característica, o técnico da empresa demonstrou o
acesso de aplicações geradas pelo Maker nos browsers Internet Explorer e
Firefox. O Maker possui inclusive uma opção de preview para que o
programador escolha o browser:
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
17
3. O desenvolvimento de sistemas deverá ser feito d e forma padronizada,
através de ambiente gráfico, sem a necessidade da c ustomização ou da
alteração do código fonte eventualmente gerado.
Na página 23 do manual do desenvolvedor consta que o software é um
ambiente de desenvolvimento 100% visual.
Todo o desenvolvimento da aplicação de teste de desempenho foi
realizado através de ambiente gráfico. Além da capacidade de desenho de
páginas e de relatórios, cabe destacar que a implementação da lógica de
negócios é realizada através de fluxogramas:
Figura 15 - Criação de um Fluxo de Ação.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
18
4. Deverá ter capacidade de geração de aplicações, independentemente
do emprego de ferramenta(s) complementares.
Na página 23 do manual do desenvolvedor consta que o software é um
ambiente de desenvolvimento com poder de desenvolvimento de aplicações
corporativas.
Todo o desenvolvimento da aplicação de avaliação de desempenho foi
realizado através da ferramenta, sem uso de ferramentas complementares.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
19
5. Gerar relatórios personalizados nos formatos tex tual e gráfico.
No manual do desenvolvedor, nas páginas 203 a 219, consta a
descrição do gerador de relatórios que vem embutido na ferramenta.
É possível a emissão de relatórios com componentes texto e gráfico.
Para demonstrar a característica, o técnico da empresa demonstrou que
o gerador de relatório do Maker possui a possibilidade de geração de um
relatório relatórios em formato TXT e diversos formatos gráficos.
Esta demonstração foi realizada com os relatórios da aplicação de teste
de desempenho.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
20
6. Suportar a implantação de controle de acesso nos sistemas criados por
meio de grupos específicos de usuários (ex.: admini strador, operador,
etc.).
Nas páginas 260 e 261 do manual do desenvolvedor constam
respectivamente os tópicos de como gerenciar grupos de usuários e de como
gerenciar usuários de um sistema.
Para demonstrar a característica, o técnico da empresa demonstrou a
criação de usuários, de grupos, e a concessão de direitos de acesso para eles.
Inicialmente cria-se grupos:
Figura 16 - Criação de Grupos
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
21
Em seguida, cria-se usuários e vincula os usuários aos grupos:
Figura 17 - Atribuindo um usuário a um grupo.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
22
Em seguida, concede-se permissões aos grupos.
Figura 18 - Atribuindo permissões a um grupo.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
23
7. Gerar aplicações com Log de auditoria.
A página 264 do manual do desenvolvedor mostra como visualizar todas
as tarefas de inclusão, alteração e exclusão de dados efetuados nas telas do
sistema.
Para demonstrar a característica, o técnico da empresa demonstrou.que
os sistemas gerados pelo Maker automaticamente geram Log, cuja aparência
pode ser vista na tela a seguir:
Figura 19 - Tela de log do sistema.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
24
8. Gerar arquivos XML (eXtensible Markup Language) para
importação/exportação entre aplicações.
Nas páginas 199 a 202 do manual do desenvolvedor existe uma seção
que trata de documentos XML. É possível acessar e modificar documentos
XML.
Para demonstrar a característica, o técnico da empresa demonstrou o
tratamento a documentos XML, que é feito por diversas funções já prontas no
Maker, conforme visto abaixo.
Figura 20 - Fluxo de tratamento de documento XML.
Foi gerado um arquivo XML a partir de uma fonte de dados.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
25
9. Gerar e consumir programas/conectores do tipo We b Services.
Na página 193 do manual do desenvolvedor consta a documentação de
uma função que é utilizada para chamar um Web Service.
Nas páginas 4 a 11 da carta da Softwell de 8 de outubro de 2008 (Anexo
I), consta a documentação e dois exemplos de implementação de Web
Services.
Para demonstrar a chamada do Web Service criado pelo Maker na
aplicação de avaliação de desempenho, foi solicitado ao colega Fabio Surrage
da CODIS que fizesse a chamada do mesmo. Ele reportou que fez uma
chamada com sucesso dentro do Portal da Câmara dos Deputados
(ZOPE/PYTHON)
Para demonstrar a capacidade do Maker de chamar um Web Service, o
técnico da empresa desenvolveu uma pequena tela que faz chamada a um
Web Service da Câmara dos Deputados.
print webservice_caller(wsdl='http://corel-245966:8080/webrun-
ent/services/WFRWebService?wsdl', metodo='callRule',
parametros=("AVA","master","1","wsFuncionario","6417"), timeout=60)
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
26
Figura 21 - Fluxo com chamada a Web Service.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
27
10. Reutilizar componentes e dicionário de dados ge rados por outras
aplicações (reusabilidade).
Na página 225 do manual do desenvolvedor existe a descrição do
repositório de objetos. É possível a reutilização dos objetos em diversos
projetos.
Na página 231 do manual do desenvolvedor existe a descrição do
dicionário de dados.
Na página 2 da carta da Softwell de 8 de outubro de 2008 existe o
esclarecimento de que o dicionário de dados poderá ser reutilizado em todos
os demais projetos que tenham sido criados na mesma base de dados.
Para demonstrar a característica, o técnico da empresa demonstrou.que
o dicionário de dados é global a todos os projetos armazenados no mesmo
repositório. Além disto, através do processo de vinculação, é possível a um
projeto acessar a um objeto de outro projeto:
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
28
A vinculação pode ser observada na tela abaixo:
Figura 22 - Tela de vinculação de objetos entre pro jetos.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
29
11. Suportar controle de versão e trabalho em equip e.
Na página 223 do manual do desenvolvedor mostra o histórico de
versões. Neste histórico existe a informação de qual desenvolvedor alterou um
objeto.
Para demonstrar a característica, o técnico da empresa demonstrou o
mecanismo de versionamento do Maker:.
Figura 23 - Tela de versionamento de Formulários.
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
30
12. Possuir gerador de páginas web para entrada de dados ou capacidade
de utilização de páginas web geradas por outro edit or de páginas web.
Na página 49 do manual do desenvolvedor começa o capítulo
Formulários, que trata da construção de telas para o desenvolvimento de
aplicações.
O Maker possui um editor de páginas, que gera automaticamente o
HTML e o Javascript necessário para o funcionamento da aplicação. A seguinte
tela foi criada pelo técnico da empresa:
Figura 24 - Tela de exemplo de demonstração do edit or de telas.
O editor gerou automaticamente a página com o seguinte código:
<script type="text/javascript" language="JavaScript 1.2"> var pfstart = new Date().getTime(); document.write('<div style="position: absolute; wid th: 100%; height: 100%; left: 0px; top: 0px;" id="loading"><table wid th=100% height=100%><tr><td align="center" valign="middle"> <table width="150"
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
31
height="60" border="0" cellpadding="0" cellspacing= "1" bgcolor="#999999">'); document.write(' <tr>'); document.write(' <td align="center" valign="midd le" bgcolor="#FFFFFF"><table width="100" border="0" cel lspacing="0" cellpadding="10">'); document.write(' <tr align="center" valign="mi ddle">'); document.write(' <td width="33"><img src="Skins/Default/loading.gif" width="16" height=" 16"></td>'); document.write(' <td width="67"><font size=" 2" face="Arial, Helvetica, sans-serif">Carregando...</font></td>'); document.write(' </tr>'); document.write(' </table></td>'); document.write(' </tr>'); document.write('</table></td>'); document.write('</tr></table></div>'); </script> <html> <head> <title>Funcionário</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript" language="JavaScript 1.2" src="wfr.js?hash=68b4dcb1c018039f1befe96fb7755486"> </script> <script type="text/javascript" language="JavaScript 1.2" src="rulesFunctions.js?hash=82b70ed6c230161b9e2ec70 81d76311e"></script> <script type="text/javascript" language="JavaScript 1.2" src="jsRule/system_afe/webrunFunctions.js?hash=1877 607635"></script> <script type="text/javascript" language="JavaScript 1.2" src="jsRule/system_afe/webrunRules.js?hash=0"></scr ipt> <script type="text/javascript" language="JavaScript 1.2" src="i18n/pt_BR.js?hash=559633724"></script> <script type="text/javascript" language="JavaScript 1.2" src="components/HTMLComponents.js?hash=8626ba2e1dd6 a408884d9a1f380059b1"></script> <link rel="stylesheet" href="Skins/Default/classes. css"> <link href="grid/styles/xp/grid.css" rel="styleshee t" type="text/css"></link> </head> <script type="text/javascript" language="JavaScript 1.2"> <!-- var mainform = window; var mainframe = null; var sysCode = "AFE"; var idForm = "2"; var formGUID = "{9BE68BAD-362C-429A-8609-F972D399E3 2E}"; if (opener != null) { mainframe = opener.mainframe; } else { parent.changeTitle(document.title); mainframe = parent.mainframe; } //--> </script> <script type="text/javascript" language="JavaScript 1.2"> <!-- function formBeforeUpdate() { } function formBeforeInsert() { }
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
32
function formBeforeDelete() { } function formAfterUpdate() { } function formAfterInsert() { } function formAfterDelete() {
}
function formOnNavigate() {
}
var pkeys = '5242';
var formrow = 1;
var skin = getAbsolutContextPath() + 'Skins/Default /';
var hasdata = true;
var filter = false;
var edit = false;
var insert = false;
//-->
</script>
<body style="" leftmargin=0 topmargin=0 marginwidth =0 marginheight=0 onload="setTimeout('formOnLoad(true)', 0); setFocus FormOnLoad();" onunload="formOnUnLoad(true);">
<iframe style="DISPLAY: none; LEFT: 0px; POSITION: absolute; TOP: 0px" allowtransparency="true" name="WFRFormComands" src= "nothing.html" width="0" height="0" frameborder=yes
border=0 marginwidth=0 marginheight=0 scrolling=no ></iframe>
<form name="WFRForm" method="post" action="form.do" target="WFRFormComands">
<input name="sys" type="hidden" value="AFE">
<input name="formID" type="hidden" value="2">
<input name="action" type="hidden" value="form">
<input name="param" type="hidden" value="post">
<input name="goto" type="hidden" value="1">
<input name="invisibleFields" type="hidden" value=" ">
<input name="storedProcedureName" type="hidden" val ue="">
<input name="storedProcedureParams" type="hidden" v alue="">
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
33
<div id='lay' style='position: absolute; width: 100 %; height: 100%; left: 0px; top: 0px;'>
<div>
<table class="navigationBar" align="center" border= "0" cellspacing="0" cellpadding="0"><tr>
<td> </td></tr></table>
</div>
<script type="text/javascript" language="JavaScript 1.2">
controller.addForm(2, '{9BE68BAD-362C-429A-8609-F97 2D399E32E}');
controller.addFormInfo('Funcionário', 2, '{9BE68BAD -362C-429A-8609-F972D399E32E}', '156');
var d = document; var makercontroller = new HTMLMakerController('AFE' , 2); d.n = new HTMLNavigationForm('AFE', 2, 2, 3); d.n.developmentMode = true; d.n.isEditable = false; d.n.design(MM_findObj('lay')); d.n.setMainImages(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1); d.n.setEditImages(1, 1); d.n.setIncludeImages(1, 1); d.ac = new HTMLAlert(404, 2); d.ac.design(MM_findObj('lay')); d.t = new HTMLTabController('AFE', 2, 0, 42, 573, 5 39); d.t.color = ''; d.t.dependences = new Array(); d.n.setTabController(d.t); d.n.setAlertController(d.ac); d.t.design(MM_findObj('lay')); d.t.add('Cadastro'); d.c_3 = new HTMLEdit('AFE', 2, 3, 8, 24, 64, 21, 'M ATRICULA', '5242'); d.c_3.align = 'right'; d.c_3.required = true; d.c_3.field = 'Matricula'; d.c_3.id = 'EDTMATRICULA'; d.c_3.typeName = 'integer'; d.c_3.numberMask = '#'; d.c_3.zindex = 0; d.c_3.loadComponentTime = 0; d.c_3.design(d.t.getDiv(), true); d.c_4 = new HTMLEdit('AFE', 2, 4, 8, 64, 377, 21, ' NOMEFUNCIONARIO', 'Sebastião Neiva Filho'); d.c_4.maxlength = 48; d.c_4.required = true; d.c_4.field = 'NomeFuncionario'; d.c_4.id = 'EDTNOMEFUNCIONARIO'; d.c_4.zindex = 1; d.c_4.loadComponentTime = 0; d.c_4.design(d.t.getDiv(), true); d.c_5 = new HTMLEdit('AFE', 2, 5, 8, 104, 64, 21, ' QTDDEPENDENTES', '0'); d.c_5.align = 'right'; d.c_5.required = true; d.c_5.field = 'QtdDependentes'; d.c_5.id = 'EDTQTDDEPENDENTES'; d.c_5.typeName = 'integer'; d.c_5.numberMask = '#'; d.c_5.zindex = 2; d.c_5.loadComponentTime = 0; d.c_5.design(d.t.getDiv(), true);
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
34
d.c_6 = new HTMLComboBox('AFE', 2, 6, 128, 104, 224 , 21, 'SEXOFUNCIONARIO', 'M', 'Masculino'); d.c_6.values = ['Masculino', 'Feminino']; d.c_6.keys = ['M', 'F']; d.c_6.defaultText = ''; d.c_6.defaultXMLText = ''; d.c_6.required = true; d.c_6.field = 'SexoFuncionario'; d.c_6.id = 'EDTSEXOFUNCIONARIO'; d.c_6.zindex = 3; d.c_6.loadComponentTime = 0; d.c_6.design(d.t.getDiv(), true); d.c_7 = new HTMLEdit('AFE', 2, 7, 224, 24, 102, 21, 'DATANASCIMENTO', '01/01/1970'); d.c_7.maxlength = 19; d.c_7.type = 2; d.c_7.required = true; d.c_7.field = 'DataNascimento'; d.c_7.id = 'EDTDATANASCIMENTO'; d.c_7.typeName = 'datetime'; d.c_7.textMask = '##/##/#### ##:##:##'; d.c_7.zindex = 4; d.c_7.loadComponentTime = 0; d.c_7.design(d.t.getDiv(), true); d.c_8 = new HTMLEdit('AFE', 2, 8, 8, 144, 102, 21, 'DATAADMISSAO', '01/01/1987'); d.c_8.maxlength = 19; d.c_8.type = 2; d.c_8.required = true; d.c_8.field = 'DataAdmissao'; d.c_8.id = 'EDTDATAADMISSAO'; d.c_8.typeName = 'datetime'; d.c_8.textMask = '##/##/#### ##:##:##'; d.c_8.zindex = 5; d.c_8.loadComponentTime = 0; d.c_8.design(d.t.getDiv(), true); d.c_9 = new HTMLEdit('AFE', 2, 9, 152, 144, 64, 21, 'VALORSALARIO', '20'); d.c_9.align = 'right'; d.c_9.required = true; d.c_9.field = 'ValorSalario'; d.c_9.id = 'EDTVALORSALARIO'; d.c_9.typeName = 'double'; d.c_9.numberMask = '#.##'; d.c_9.zindex = 6; d.c_9.loadComponentTime = 0; d.c_9.design(d.t.getDiv(), true); d.c_10 = new HTMLLookup('AFE', 2, 10, 8, 184, 310, 21, 'CODUNIDADE', '3', 'COREL'); d.c_10.style = 0; d.c_10.field = 'CodUnidade'; d.c_10.id = 'EDTCODUNIDADE'; d.c_10.bgColor = '#FFFFFF'; d.c_10.typeName = 'integer'; d.c_10.numberMask = '#'; d.c_10.zindex = 7; d.c_10.loadComponentTime = 0; d.c_10.design(d.t.getDiv(), true); d.c_11 = new HTMLEdit('AFE', 2, 11, 240, 224, 102, 21, 'DATAEXONERACAO', ''); d.c_11.maxlength = 19; d.c_11.type = 2; d.c_11.field = 'DataExoneracao'; d.c_11.id = 'EDTDATAEXONERACAO';
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
35
d.c_11.typeName = 'datetime'; d.c_11.textMask = '##/##/#### ##:##:##'; d.c_11.zindex = 8; d.c_11.loadComponentTime = 0; d.c_11.design(d.t.getDiv(), true); d.c_12 = new HTMLComboBox('AFE', 2, 12, 8, 224, 224 , 21, 'SITUACAOFUNCIONARIO', '1', 'Ativo'); d.c_12.values = ['Ativo', 'Aposentado', 'Falecido', 'Demitido']; d.c_12.keys = ['1', '2', '3', '4']; d.c_12.defaultText = ''; d.c_12.defaultXMLText = ''; d.c_12.required = true; d.c_12.field = 'SituacaoFuncionario'; d.c_12.id = 'EDTSITUACAOFUNCIONARIO'; d.c_12.zindex = 9; d.c_12.loadComponentTime = 0; d.c_12.design(d.t.getDiv(), true); d.c_13 = new HTMLMemo('AFE', 2, 13, 8, 272, 544, 52 , 'CURRICULOFUNCIONARIO', ''); d.c_13.wrap = false; d.c_13.field = 'CurriculoFuncionario'; d.c_13.id = 'EDTCURRICULOFUNCIONARIO'; d.c_13.zindex = 10; d.c_13.loadComponentTime = 0; d.c_13.design(d.t.getDiv(), true); d.c_14 = new HTMLImage('AFE', 2, 14, 424, 22, 128, 150, '', 'openimagestream.do?sys=AFE&formID=2&componentID=14 &componentValue=FotoFuncionario&crip=false', 1, false); d.c_14.hasImage = true; d.c_14.viewMode = 'Estender'; d.c_14.exhibitionType = 0; d.c_14.zoomWidth = 0; d.c_14.zoomHeight = 0; d.c_14.field = 'FotoFuncionario'; d.c_14.id = 'EDTFOTOFUNCIONARIO'; d.c_14.zindex = 11; d.c_14.loadComponentTime = 0; d.c_14.design(d.t.getDiv(), true); d.p = new HTMLPage('AFE', '2', 0, 0, 0, 578, 584, d .n); d.t.addSearchTab('Localizar', d.p, function() { d.n .normal(); getAndEval('form.do?sys='+this.sys+'&action=form&pa ram=goto&formID='+this.formID+'&align=-1&mode=&goto='+formrow+'&filter =&find=true');}, 'tab_search.gif'); d.p.design(d.t.getDiv(), false); defineComponentDependences(); if (d.n.btFirst) d.n.btFirst.setEnabled(false); if (d.n.btPrevious) d.n.btPrevious.setEnabled(false ); if (d.n.btNext) d.n.btNext.setEnabled(true); if (d.n.btLast) d.n.btLast.setEnabled(true); if (d.n.btDelete) d.n.btDelete.setEnabled(true); if (d.n.btDefaultValues) d.n.btDefaultValues.setEna bled(true); d.ac.showFilter(false); function formOnLoadAction() { loadTimeText = 'Tempo de Carga: ' + (new Date().g etTime() - pfstart) + 'ms'; parent.document.title += ' [' + loadTimeText + '] '; } function showErrors() { } function formOnLoad(load) { controller.onFormLoadAction(); formOnNavigate(); if (d.hasRuleErrors) d.hasRuleErrors = false; if (d.n.editCancel) d.n.editCancel = false;
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
36
if (d.getElementById("loading")) d.getElementById("loading").style.display="none"; } function formOnUnLoad(load) { EventCache.flush(); controller.flush(); } function formOnUnLoadAction() { var d = document; } addKeyEvent(); </script> </div> </form> <div id="messageDIV" style="position:absolute; left:0px; top:0px; width :150px; height:18px; z-index:1001; visibility: hidden;"></d iv> </body> </html> <script type="text/javascript" language="JavaScript 1.2"> setTimeout('formOnLoadAction()', 0); </script> <!-- Tempo de Carga: 156ms -->
A comissão conclui que a ferramenta possui a característica técnica
obrigatória.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
37
Avaliação das características pontuáveis
Segundo o edital, as ferramentas serão pontuadas de acordo com as
seguintes características de padronização, compatibilidade e qualidade.
1. Suportar a geração de sistemas baseados em SODA (Service Oriented
Development of Aplications), utilizando os conceito s de SOA (Service
Oriented Architecture).
Nas páginas 4 a 11 da carta da Softwell de 8 de outubro de 2008 (Anexo
I), consta a documentação e dois exemplos de implementação de Web
Services.
Na mesma carta, na página 2 existe ainda a informação que é possível a
utilização de formulários e relatórios externamente, não sendo necessária a
efetuação de login no sistema.
Para demonstrar a característica, o técnico da empresa demonstrou a
criação e a chamada de um Web Service.
Foi usado o Web Service da Aplicação de Teste de Desempenho como
criação e a chamada de um Web Service da Câmara dos Deputados..
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
38
2. Gerar documentação padronizada dos sistemas cria dos.
Nas páginas 235 a 246 do manual de desenvolvimento está descrito o
recurso do Documentador Automático, que gera no padrão PRAXIS, seguindo
as normas de desenvolvimento sugeridas pelo PMI.
Para demonstrar a característica, o técnico da empresa demonstrou.a
geração da documentação da aplicação de teste de desempenho.
RELATÓRIO DOS FLUXOS DE AÇÕES CONTIDOS NO PROJETO
Label16
Imagem do Fluxo: DEV-Teste01
Figura 25 - Extrato da documentação gerada pelo MAK ER
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
39
3 Usar tecnologia Ajax na construção de páginas Web .
Na página 24 do manual de desenvolvimento existe a informação de que
o Maker usa automaticamente AJAX nas telas para aumento da performance
do sistema.
Para demonstrar a característica, o técnico da empresa abriu as páginas
geradas e lá foi constatado o uso de AJAX, conforme documentado no
fragmento do fonte da página gerada que está abaixo:
function getHTTPObjectXML(){var
http_request;if(window.XMLHttpRequest){http_request =new
XMLHttpRequest();if(http_request.overrideMimeType){http_request.over ri
deMimeType('text/xml');}}else
if(window.ActiveXObject){try{http_request=new
ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{http_ request=new
ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}}
if(!http_request){interactionError('Cannot create X MLHTTP instance');return false;}
return http_request;}
function fixXMLDocument(doc){if(!IE)
fixXMLNode(doc.documentElement);}
function fixXMLNode(node){var children=node.childNo des;for(var i=0;i<children.length;i++){var child=children[i];if((trim(child.nodeValue)=='')&&( !child.tagName)){child.parentNode.removeChild(child);}
else
fixXMLNode(child);}}
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
40
4 Gerar automaticamente código da aplicação em Java .
Nas páginas 293 a 295 do manual do desenvolvedor está descrito como
exportar um projeto para fonte em Java.
Para demonstrar a característica, o técnico da empresa gerou a
aplicação de avaliação de desempenho em Java e um WAR. O War foi
instalado com sucesso em dois servidores Apaches, em ambiente Windows e
Linux.
Parte do código gerado está listado a seguir:
package wfr.com.systems.system_ava; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath; import wfr.database.DBConnection; import wfr.sys.HTMLInterface.ComponentProperty; import wfr.util.Functions; import wfr.util.Logger; import wfr.com.*; import wfr.exceptions.*; import wfr.com.systems.system_ava.forms.sistemaxgrupos.Sis temaXGruposForm; import wfr.com.systems.system_ava.forms.cadastrodedependen te.CadastroDeDependenteForm; import wfr.com.systems.system_ava.forms.cadastrodeunidadeo rganizacional.CadastroDeUnidadeOrganizacionalForm; import wfr.com.systems.system_ava.forms.usuariosxsistemasx grupos.UsuariosXSistemasXGruposForm; import wfr.com.systems.system_ava.forms.usuariosxsistemas. UsuariosXSistemasForm; import wfr.com.systems.system_ava.forms.cadastrodecargo.Ca dastroDeCargoForm; import wfr.com.systems.system_ava.forms.formulariodosistem a.FormularioDoSistemaForm;
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
41
import wfr.com.systems.system_ava.forms.temphierarquia.Tem pHierarquiaForm; import wfr.com.systems.system_ava.forms.formulariodosistem a.FormularioDoSistemaForm_1; import wfr.com.systems.system_ava.forms.cadastrodeparentes co.CadastroDeParentescoForm; import wfr.com.systems.system_ava.forms.manutencaodecargo. ManutencaoDeCargoForm; import wfr.com.systems.system_ava.forms.cadastrodehistoric ocargo.CadastroDeHistoricoCargoForm; import wfr.com.systems.system_ava.forms.usuarios.Us uariosForm; import wfr.com.systems.system_ava.forms.testewebservice.Te steWebserviceForm; import wfr.com.systems.system_ava.forms.impressaoderelator iohierarquicodeunidadesorganizacionais.ImpressaoDeRelatorioHierarquico DeUnidadesOrganizacionaisForm; import wfr.com.systems.system_ava.forms.unidadesorganizaci onaisarvore.UnidadesOrganizacionaisArvoreForm; import wfr.com.systems.system_ava.forms.relatoriosdefuncio nariosocupantesdecargo.RelatoriosDeFuncionariosOcupantesDeCargoForm; import wfr.com.systems.system_ava.forms.cadastrodefunciona rio.CadastroDeFuncionarioForm; import wfr.com.systems.system_ava.forms.grupos.Grup osForm; import wfr.com.systems.system_ava.forms.listadecargos.List aDeCargosForm; import wfr.com.systems.system_ava.forms.relatoriodefuncion ariosporlotacao.RelatorioDeFuncionariosPorLotacaoForm; import wfr.com.systems.system_ava.forms.usuariosxsistemasf ormulario.UsuariosXSistemasFormularioForm; /** * Essa classe representa o sistema Avaliação de De sempenho. A sigla que identifica o sistema Avaliação de Desempenho é AVA.</br> * O sistema Avaliação de Desempenho é carregado at ravés de um arquivo *.wfre que que é um arquivo XML criptografado que c ontém</br> * informações de acesso ao banco (servidor, login, senha), codificação (ISO, UFT), sigla do</br> * sistema entre outras.</br> * Um sitema é todo carregado na memória por questõ es de performance.<br/> * * @author Webrun * @version 1.0 */ public class AVA extends WFRSystem {
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
42
private static Logger logger = Logger.getLogger(AVA.class); /*Obtém-se o diretório da classe compilada*/ private static String dir = Functions.classFolder(AVA.class) + File.separatorCh ar; protected Map<String, List<WFRAction>> actions; protected Map<ComponentProperty, String> systemPr operties; /** * Construtor do sistema Avaliação de Desempenho. * @param file Arquivo *.wfre que representa os p arâmetros de conexão com o banco de dados do sistema Avaliação d e Desempenho. * @throws Exception */ public AVA(WFREFile file) throws Exception { super(file); } /** * Esse método é responsável pela carga da defini ção dos tipos de dados utilizado pelo sistema.</br> * Exemplo: CPF, CEP, etc. * @see wfr.com.WFRSystem#createSystemDataTypes() */ protected List<WebrunProperties> createSystemData Dictionary() throws Exception { List<WebrunProperties> dataList = new ArrayList<WebrunProperties>(); Document doc = null; try { SAXBuilder builder = new SAXBuilder(); doc = builder.build(new File(Functions.classFolder(this.getClass()) + "/dic tionary.xml")); List<Element> elems = doc.getRootElement().getChildren("DICTIONARY"); for (Element e : elems) { WebrunProperties properties = new WebrunPro perties(); /*Código do tipo de dados*/ properties.put("TPD_CODIGO", e.getChild("CO DE").getValue()); /*Descrição do tipo de dados*/ properties.put("CMP_DESCRICAO", e.getChild("DESCRIPTION").getValue()); /*Nome da tabela*/ properties.put("TAB_NOME", e.getChild("TABLENAME").getValue()); /*Nome do campo*/ properties.put("CMP_NOME", e.getChild("FIELDNAME").getValue()); /*Valor Padrão*/ properties.put("CMP_VALORPADRAO", e.getChild("DEFAULT").getValue()); dataList.add(properties);
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
43
} } catch (Exception e) { logger.error(WFRSystem.DEFAULT_USER, code, e) ; } return dataList; } /** * Esse método é responsável pela carga do dicion ário de dados do sistema Avaliação de Desempenho.</br> * Todas as definições do dicionário estão armaze nados em um arquivo chamado dictionary.xml</br> * que deve estar no mesmo diretório da classe co mpilada. * @see wfr.com.WFRSystem#createSystemDataDiction ary() */ protected List<WebrunProperties> createSystemData Types() throws Exception { List<WebrunProperties> dataList = new ArrayList<WebrunProperties>(); Document doc = null; try { SAXBuilder builder = new SAXBuilder(); doc = builder.build(new File(Functions.classFolder(this.getClass()) + "/dat aTypes.xml")); List<Element> elems = doc.getRootElement().getChildren("DATATYPE"); for (Element e : elems) { WebrunProperties properties = new WebrunPro perties(); /*Código do tipo de dados*/ properties.put("TPD_CODIGO", e.getChild("CO DE").getValue()); /*Descrição do tipo de dados*/ properties.put("TPD_DESCRICAO", e.getChild("DESCRIPTION").getValue()); /*Definições do tipo de dados*/ properties.put("TPD_MASCARAFORMATACAO", e.getChild("DEFINITION").getValue()); /*Máscara de edição*/ properties.put("TPD_MASCARAEDICAO", e.getChild("EDITMASK").getValue()); dataList.add(properties); } } catch (Exception e) { logger.error(WFRSystem.DEFAULT_USER, code, e) ; } return dataList; }
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
44
/** * Esse método é responsável pela carga das propr iedades do sistema. As propriedades do sistema</br> * ficam armazenadas em um arquivo xml chamado AV A.xml que deve estar no mesmo diretório</br> * da classe compilada. O formato do arquivo é o definido pela classe WebrunProperties. Ele também faz a </br> * carga das ações do sistema que fica no arquivo AVA.actions.xml. * @see wfr.com.WFRSystem#createSystemProperties( ) * @see wfr.com.WebrunProperties */ protected void createSystemProperties() throws Ex ception { /*Criam-se as propriedades do sistema Avaliação de Desempenho*/ properties.load(dir + "AVA.xml"); /*Extrai-se as propriedades de componente do si stema*/ systemProperties = properties.getComponentPrope rties(); /*Criam-se as ações do sistema Avaliação de Des empenho*/ actions = WFRAction.loadActionsFromXML(new File(dir+"AVA.actions.xml")); } /** * Esse método é responsável pela carga da lista de formulários que o sistema. * @see wfr.com.WFRSystem#createFormList() */ protected List<WFRForm> createFormList() throws E xception { List<WFRForm> formList = new ArrayList<WFRForm> (); /*Adiciona-se o formulário Sistema X Grupos*/ formList.add(new SistemaXGruposForm(this, this .db)); /*Adiciona-se o formulário Cadastro de Dependen te*/ formList.add(new CadastroDeDependenteForm(this , this.db)); /*Adiciona-se o formulário Cadastro de Unidade Organizacional*/ formList.add(new CadastroDeUnidadeOrganizacion alForm(this, this.db)); /*Adiciona-se o formulário Usuários X Sistemas X Grupos*/ formList.add(new UsuariosXSistemasXGruposForm( this, this.db)); /*Adiciona-se o formulário Usuários X Sistemas* / formList.add(new UsuariosXSistemasForm(this, t his.db)); /*Adiciona-se o formulário Cadastro de Cargo*/ formList.add(new CadastroDeCargoForm(this, thi s.db)); /*Adiciona-se o formulário $_FORMULARIO_DO_SIST EMA*/ formList.add(new FormularioDoSistemaForm(this, this.db)); /*Adiciona-se o formulário Temp-Hierarquia*/ formList.add(new TempHierarquiaForm(this, this .db)); /*Adiciona-se o formulário $_FORMULARIO_DO_SIST EMA*/ formList.add(new FormularioDoSistemaForm_1(thi s, this.db)); /*Adiciona-se o formulário Cadastro de Parentes co*/ formList.add(new CadastroDeParentescoForm(this , this.db)); /*Adiciona-se o formulário Manutenção de Cargo* / formList.add(new ManutencaoDeCargoForm(this, t his.db)); /*Adiciona-se o formulário Cadastro de Históric o Cargo*/ formList.add(new CadastroDeHistoricoCargoForm( this, this.db));
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
45
/*Adiciona-se o formulário Usuários*/ formList.add(new UsuariosForm(this, this.db)); /*Adiciona-se o formulário Teste Webservice*/ formList.add(new TesteWebserviceForm(this, thi s.db)); /*Adiciona-se o formulário Impressão de Relatór io Hierárquico de Unidades Organizacionais*/ formList.add(new ImpressaoDeRelatorioHierarquicoDeUnidadesOrganizaci onaisForm(this, this.db)); /*Adiciona-se o formulário Unidades Organizacio nais (Árvore)*/ formList.add(new UnidadesOrganizacionaisArvore Form(this, this.db)); /*Adiciona-se o formulário Relatórios de Funcio nários Ocupantes de Cargo*/ formList.add(new RelatoriosDeFuncionariosOcupantesDeCargoForm(this, this.db)); /*Adiciona-se o formulário Cadastro de Funcioná rio*/ formList.add(new CadastroDeFuncionarioForm(thi s, this.db)); /*Adiciona-se o formulário Grupos*/ formList.add(new GruposForm(this, this.db)); /*Adiciona-se o formulário Lista de Cargos*/ formList.add(new ListaDeCargosForm(this, this. db)); /*Adiciona-se o formulário Relatório de Funcion ários Por Lotação*/ formList.add(new RelatorioDeFuncionariosPorLot acaoForm(this, this.db)); /*Adiciona-se o formulário Usuários X Sistemas Formulário*/ formList.add(new UsuariosXSistemasFormularioFo rm(this, this.db)); return formList; } /** * Esse método é responsável pela criação da árvo re de menus do sistema.</br> * Essa árvore é armazenada em um arquivo chamado menu.xml presente no diretório</br> * da classe compilada. * @see wfr.com.WFRSystem#createSystemMenus(wfr.database.DB Connection) */ protected List<WFRMenu> createSystemMenus(DBConne ction db) throws Exception { return WFRMenu.getListMenu(db, this, Functions.classFolder(this.getClass())+"/menu.xml") ; } /** * Esse método deve subir uma exceção, informando que a busca dinâmica de um formulário</br> * não é permitida. * @see wfr.com.WFRSystem#loadForm(wfr.database.D BConnection, java.lang.String) */ protected WFRForm loadForm(DBConnection db, Strin g id) throws Exception {
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
46
throw new WFRException(ExceptionMessage.ERROR_F ORM_CODE_NOT_FOUND, new Object[] { id }); } /** * Esse método deve subir uma exceção, informando que a recarga de um formulário não é possível. * @see wfr.com.WFRSystem#reloadForm(java.lang.St ring, wfr.database.DBConnection) */ public void reloadForm(String id, DBConnection d) throws Exception { throw new WFRException(ExceptionMessage.ERROR_CANNOT_RELOAD_C OMPILED_FORM); } /** * Esse método deve subir uma exceção, informando que a recarga de um relatório não é possível. * @see wfr.com.WFRSystem#reloadReport(java.lang. String) */ public synchronized void reloadReport(String id) throws Exception { throw new WFRException(ExceptionMessage.ERROR_CANNOT_RELOAD_R EPORT); } /** * Essa função sempre retorna falso, pois o siste ma não tem a propriedade de recarga. * @see wfr.com.WFRSystem#isReloadable() */ public boolean isReloadable() { return false; } /** * Retorna um relatório dado um identificador. * @param id String Identificador do relatório. * @param db Conexão corrente. * @return WFRReport Relatório. * @throws Exception */ public WFRReport getReport(String id, DBConnectio n db) throws Exception { Object report = reports.get(id); if (report == null) report = reportsByName.get(id); if (report != null) { if (report instanceof WFRMenuReport) { return ((WFRMenuReport) report).getReport(d b); } else { return (WFRReport) report; } } else { synchronized (this) {
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
47
if (!reports.containsKey(id)) { report = WFRReportFactory.getInstance(thi s, id, db); reports.put(((WFRReport) report).getID(), report); reportsByName.put(((WFRReport) report).ge tName(), report); } } return (WFRReport) report; } } /** * Esse método retorna nulo, pois não se aplica a essa classe. * @see wfr.com.WFRSystem#getForm() */ public WFRForm getForm() { return null; } /** * Esse método retorna todas as ações do sistema; * @see wfr.com.WFRSystem#getAllActions() */ public Map<String, List<WFRAction>> getAllActions () { return actions; } /** * Retorna uma propriedade do sistema. * @see wfr.com.WFRSystem#getProperty(wfr.sys.HTMLInterface .ComponentProperty) */ public String getProperty(ComponentProperty p) { String value = systemProperties.get(p); return (value!=null)?value:""; } /** * Retorna uma lista de ações para um determinado evento. * @see wfr.com.WFRSystem#getActions(java.lang.St ring) */ public List<WFRAction> getActions(String moment) { if (actions.containsKey(moment)) return actions.get(moment); else return Collections.EMPTY_LIST; } /** * Criam-se os formulários de definição de contro le de acesso. * @see wfr.com.WFRSystem#createAccessForms() */ protected void createAccessForms() throws Excepti on { /* * Não necessita implementação. */ }
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
48
/** * Atualiza a subconexão do sistema * @param pSubConCode Número para identificar a s ubconexão. Usado na criação do parametro "Conexao1WFRE" * @param pSysCode Código do sistema que terá a s ubconexão atualizada. * @param pFile Arquivo representando a subconexã o. * @param pTemporary Caso verdadeiro, não atualiz a os dados persistidos em XML. * @throws java.lang.Exception */ @Override public void updateSubconection(Integer pSubConCod e, String pSysCode, WFREFile pFile, Boolean pTemporary) throws Exceptio n { // Modificar definições da conexão em memoria ComponentProperty propertyWFRE = ComponentProperty.getByDescription("Conexao" + pSub ConCode + "WFRE"); systemProperties.put(propertyWFRE, pFile.getBas e64WFRE()); // Persistir na XML if (!pTemporary) { String nomedoarquivo = Functions.classFolder( this.getClass()) + File.separator + this.getClass().getSimpleName() + ".xml"; SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(nomedoarquivo); String key = "Conexao" + pSubConCode + "WFRE" ; XPath xp = XPath.newInstance("PROPERTIES/PROP ERTY[@KEY = '" + key + "']"); Element element = (Element) xp.selectSingleNo de(doc); if (element != null) { element.setText(pFile.getBase64WFRE()); Functions.documentToXMLFile(doc, nomedoarqu ivo); } else { throw new WFRException(ExceptionMessage.ERROR_SUBCONNECTION_N OT_FOUND); } } } }
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
49
5 Consumir (executar) Stored Procedures em Bancos S QL Server 2005 e
Oracle 10G.
Na página 132 do manual do desenvolvedor descreve a função Executar
Procedure, que chama uma Stored Procedure no Banco de Dados.
Para demonstrar a característica, o técnico da empresa demonstrou.a
chamada de stored procedures em SQL Server e em Oracle.
Figura 26 - Chamada da Procedure em Sql Server.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
50
Figura 27 - Resultado da chamada da Procedure em Or acle. Esta procedure retorna um
erro.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
51
6 Gerar (criar) automaticamente Stored Procedures e m SQL Server 2005 e
Oracle 10G.
Na página 116 do manual do desenvolvedor inicia uma seção sobre o
Gerador de Código. Este gerador de código transfere a árvore criada pelo
editor de fluxo de ações em um código fonte. Existe na documentação a
geração de Stored procedures em Oracle.
Para demonstrar a característica, o técnico da empresa demonstrou.a
transformação de um fluxo em uma procedure Oracle e em SQL Server. No
caso do Oracle, o Maker inclusive transforma a procedure em Function caso a
mesma tenha que retornar um parâmetro.
Figura 28 - Criação de Procedure em Oracle.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
52
Figura 29 - Criação de Procedure em SQL Server.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
53
7. Consumir (chamar/executar) componentes COM.
Nas páginas 123 e 124 do manual do desenvolvimento estão
relacionadas diversas funções de tratamento de objetos COM.
Para demonstrar a característica, o técnico da empresa demonstrou a
chamada de um método do Excel por dentro do Maker.
Figura 30 - Fluxo de Chamada do Excel
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
54
Este fluxo retornou a seguinte saída:
Figura 31 - Resultado da chamada de método que reto rna a versão do Excel instalado na
máquina.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
55
8. Autenticar o usuário da aplicação gerada no Acti ve Directory.
Nas páginas 123 do manual do desenvolvimento esta descrita a função
AD Autenticar Usuário que irá retornar verdadeiro ou falso se a autenticação foi
realizada com sucesso no Active Directory..
Para demonstrar a característica, o técnico da empresa implementou um
fluxo que permite a autenticação no AD.
Figura 32 - Fluxo de acesso ao AD, com detalhe de c onfiguração do mecanismo de
autenticação.
Fez-se então testes de autenticação de membros da comissão no AD da
Câmara dos Deputados.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
56
9. Suportar folhas de estilo já criadas
Na página 3 da carta da Softwell de 8 de outubro de 2008, consta a
documentação de que em determinada pasta de instalação do software
constam 51 arquivos de folhas de estilos, nos quais é possível editar
propriedades dos componentes e demais recursos oferecidos pela aplicação.
Para demonstrar a característica, o técnico da empresa demonstrou que
alterando um estilo das folhas de estilo, o mesmo reflete nas páginas.
Figura 33 - Tela de com o tamanho de fonte dos títu los dos campos aumentado para 18.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
57
10 Portabilidade das aplicações geradas com servido r de aplicação
instalado em servidor Linux (Red Hat Entreprise).
Na página 26 do manual do desenvolvedor consta que a aplicação
desenvolvida é multiplataforma, e dentre as plataformas geradas encontra-se o
Linux.
Na página 333 está descrito o procedimento de instalação do Web Run
em ambiente Linux – Ubuntu ou Fedora.
Na página 3 da carta da Softwell de 8 de outubro de 2008 existe a
afirmação de que as aplicações geradas pelo Maker podem ser instaladas em
Linux Red Hat.
Para demonstrar a característica, foi instalado e testada em servidor
Linux Red Hat a aplicação de testes gerada. Não houve nenhuma necessidade
de qualquer alteração na aplicação.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
58
11 Gerar aplicações com suporte a biometria
Na página 336 do manual do desenvolvedor existe a seção Biometria,
com a descrição da função de abertura do leitor digital.
Para demonstrar a característica, o técnico da empresa demonstrou o
cadastramento de uma impressão digital de um membro da comissão técnica e
usou esta impressão para efetuar a autenticação em uma aplicação de teste.
Figura 34 - Tela de Cadastramento da Impressão Digi tal
Foi utilizado o leitor biométrico Hamster I da Nitgen para o
cadastramento da impressão digital e para o processo de autenticação.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
59
Efetuou-se inclusive testes com outras impressões digitais e o sistema
bloqueou o acesso:
Figura 35 -Tentativa de Autenticação com impressão digital não cadastrada.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
60
12. Gerar aplicações com suporte a certificação dig ital
Na página 337 do manual do desenvolvedor existe a seção “Certificação
Digital no ambiente WebRun”, com a descrição das funções para
implementação de certificação digital.
Para demonstrar a característica, o técnico da empresa demonstrou uma
aplicação que usa e acessa um certificado digital.
Figura 36 - Tela da Aplicação Acessando um Certific ado Digital.
A comissão conclui que a ferramenta possui a característica técnica
pontuável.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
61
Avaliação de Desempenho.
O item 3 do Anexo nº 5 da TP 1/2008 descreve que a aferição de
desempenho consistirá no desenvolvimento de uma aplicação de teste com
125 pontos de função.
A aplicação está descrita a partir do item 4 do Anexo nº 5 do edital, e o
técnico da empresa construiu e disponibilizou os seguintes produtos funcionais:
• Tela de autenticação de Usuário.
• Tela de cadastro de Unidade Organizacional, com vínculo de unidade superior.
• Tela de cadastro de Grau de Parentesco.
• Tela de cadastro de Funcionário.
• Tela de importação de Foto de Funcionário.
• Tela de importação de Currículo de Funcionário.
• Tela de cadastro de Dependente de Funcionário.
• Tela de cadastro de Cargos.
• Tela de nomeação de Funcionário em Cargos.
• Tela de exoneração de Funcionário de Cargo.
• Relatório Hierárquico de Unidades Organizacionais.
• Relatório de Funcionários por Lotação.
• Relatório de Funcionários ocupantes de Cargo.
• Relatório de Histórico de Cargos.
• Web Service Funcionário.
No item 3.2 do Anexo determina que a aplicação deve ser construída e
instalada no prazo de 125/PFH, onde PFH são Pontos de Função por Hora.
Foi solicitado a cada empresa licitante que indicasse na proposta técnica
a produtividade de cada ferramenta através de pontos de função por hora –
PFH. A empresa Softwell Maker apresentou em sua proposta técnica o valor de
18 PFH.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
62
O técnico da empresa dispunha então de 125 h ÷ 18 = 06:56 h para
construir a aplicação.
O técnico da empresa construiu a aplicação prevista em um tempo total
de 05:15 h, o que corresponde a 23,80 PFH.
Durante todo o processo de desenvolvimento da aplicação de aferição
de desempenho, o técnico da empresa teve o acompanhamento da comissão
técnica designada pelo Centro de Informática.
Com uso do SQL Server profiler, foi observado que os comandos
enviados para o SQL Server são comandos preparados e parametrizados,
impossibilitando o uso de SQL Injection.
Em todos os campos texto é feito o tratamento de apóstofre.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
63
TELA DE AUTENTICAÇÃO DE USUÁRIO
A tela de autenticação de usuário solicita o nome e a senha de usuário
para entrar no sistema.
Foram utilizadas funcionalidades já existentes no Maker para
disponibilizar a tela, o mecanismo de autenticação, e os mecanismos de
concessão de direitos de execução.
O Maker apresenta inicialmente um menu de Sistemas:
Figura 37 - Tela de Escolha do Sistema
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
64
E em seguida solicita a autenticação do usuário:
Figura 38 - Tela de autenticação do sistema
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
65
TELA DE CADASTRO DE UNIDADE ORGANIZACIONAL, COM VÍN CULO
DE UNIDADE SUPERIOR
A tela de cadastro de unidade organizacional tem por objetivo permitir a
inclusão, alteração, consulta e exclusão de unidades organizacionais,
apresentando os seguintes campos:
• Código da unidade.
• Nome da unidade.
• Matrícula e nome do chefe da unidade, se existir chefe nomeado.
O leiaute da tela é em formato de árvore, de modo a ilustrar a hierarquia
das unidades organizacionais. Na árvore são mostrados os nomes das
unidades organizacionais.
Figura 39 - Árvore de Unidades Organizacionais.
Foi utilizado uma tela auxiliar, em formato “registro”, para a inclusão e a
alteração dos dados.
É permitido o vínculo da unidade organizacional com a unidade superior.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
66
Figura 40 - Tela que detalha a Unidade.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
67
TELA DE CADASTRO DE GRAU DE PARENTESCO
A tela de cadastro de grau de parentesco permite a inclusão, alteração,
consulta e exclusão de graus de parentesco, apresentando os seguintes
campos:
• Código do grau de parentesco.
• Descrição do grau de parentesco.
O leiaute da tela é em formato de grid (tabela), listando todos os graus
de parentesco.
Figura 41 - Tela de Cadastro de Grau de Parentesco.
Existe uma tela auxiliar, em formato “registro”, para a inclusão e a
alteração dos dados.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
68
TELA DE CADASTRO DE FUNCIONÁRIO
A tela de cadastro de funcionários de permite a inclusão, alteração,
consulta e exclusão de funcionários, apresentando os seguintes campos:
• Matrícula do funcionário.
• Nome do funcionário.
• Data de nascimento do funcionário.
O leiaute da tela é em formato de grid (tabela), listando a matricula, o
nome e a data de nascimento do funcionário.
Figura 42 - Tela de Funcionários.
É utilizada uma segunda tela, em formato “registro”, para a inclusão e a
alteração dos dados.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
69
Figura 43 - Tela de Cadastramento de Funcionários.
O nome do funcionário é obrigatório, sendo tratado a entrada de
apóstrofo e de SQL Injection.
O sexo do funcionário é cadastrado como Option Button.
A data de nascimento é mostrada e editada no formato DD/MM/YYYY.
A data de admissão é mostrada e editada no formato DD/MM/YYYY.
O valor do salário do funcionário é mostrado e editado no formato
$.$$$.$$$.$$$,$$.
A unidade de lotação do funcionário é mostrada e editada em um Combo
Box carregado a partir da tabela unidade organizacional.
A situação do funcionário é mostrada e editada em um Combo Box.
A foto do funcionário é mostrada em uma área da tela, se esta estiver
carregada.
A data de exoneração somente é mostrada e disponível para edição se a
situação do funcionário for diferente de 1.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
70
A imagem do funcionário funciona como botão para chamar a tela de
importação de foto do funcionário.
Existe um botão para chamar a tela de importação de currículo do
funcionário.
Existe um botão para chamar a tela de cadastramento de dependentes.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
71
TELA DE IMPORTAÇÃO DE FOTO DE FUNCIONÁRIO
A tela de importação de foto de funcionário tem por objetivo permitir a
inclusão de arquivo com foto de funcionário.
O leiaute da tela permite a navegação local no sistema operacional e a
escolha de um arquivo de imagem. Esse arquivo é carregado para o banco de
dados e sua imagem é mostrada na tela de Funcionários.
Figura 44 - Tela de importação da Imagem.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
72
TELA DE IMPORTAÇÃO DE CURRÍCULO DE FUNCIONÁRIO
A tela de importação de currículo de funcionário tem por objetivo permitir
a inclusão de arquivo com foto de funcionário.
O leiaute da tela permite a navegação local no sistema operacional e a
escolha de um arquivo XML. Esse arquivo é carregado para o banco de dados
e validado com o atributo currículo que é Typed XML. É emitida uma
mensagem de sucesso ou de erro na inclusão do arquivo.
Figura 45 - Tela de importação de currículo.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
73
TELA DE CADASTRO DE DEPENDENTE DE FUNCIONÁRIO
A tela de cadastro de dependentes tem por objetivo permitir a inclusão,
alteração, consulta e exclusão de dependentes de um funcionário.
O leiaute da tela é em formato de grid (tabela), listando o seqüencial, o
nome do dependente, o sexo, a data de nascimento e a descrição do grau de
parentesco.
Figura 46 - Lista de Dependentes.
É utilizada uma tela auxiliar, em formato “registro”, para a inclusão e a
alteração dos dados.
O nome do dependente é obrigatório, sendo tratada a entrada de
apóstrofo e de SQL Injection.
O sexo do dependente é mostrado e editado em Combo-box.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
74
O grau de parentesco é mostrado e editado em Combo-box.
A data de nascimento é mostrada e editada no formato DD/MM/YYYY.
Figura 47 – Tela em formato registro de cadastramen to de dependente, chamada a partir
da tela de dependentes de um funcionário.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
75
TELA DE CADASTRO DE CARGOS
A tela de cadastro de cargos tem por objetivo permitir a inclusão,
alteração, consulta e exclusão de cargos.
O leiaute da tela é em formato de grid (tabela), listando todos os cargos.
Figura 48 - Tabela de Cargos.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
76
É utilizada uma tela auxiliar, em formato “registro”, para a inclusão e a
alteração dos dados.
Figura 49 - Tela auxiliar de cadastro de cargo.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
77
TELA DE NOMEAÇÃO DE FUNCIONÁRIO EM CARGOS
A tela de nomeação de funcionário tem por objetivo permitir a nomeação
de um funcionário em um cargo que esteja vago.
O leiaute da tela é em formato de grid (tabela), listando todos os cargos,
seus respectivos ocupantes atuais e sua data de nomeação. Caso o cargo
esteja vago, mostrar que o registro está vago.
Somente podem ser nomeados funcionários ativos.
A data da nomeação é mostrada e editada no formato DD/MM/YYYY.
Um funcionário não pode ocupar dois cargos simultaneamente.
Figura 50 - Tela de Nomeação de Funcionário.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
78
TELA DE EXONERAÇÃO DE FUNCIONÁRIO EM CARGOS
A tela de exoneração de funcionários em cargos tem por objetivo permitir
a exoneração de um funcionário de um cargo. CÂMARA DOS DEPUTADOS
O leiaute da tela deverá ser em formato de grid (tabela), listando todos
os cargos, seus respectivos ocupantes atuais e sua data de nomeação. Caso o
cargo esteja vago, mostrar que o registro está vago.
Figura 51 - Tela de Exoneração de Funcionário
Ao ser exonerado, o registro na tabela de cargos é limpo e a matrícula
do funcionário, a data de nomeação, a data de exoneração são gravados na
tabela de histórico do cargo.
A Data da Exoneração é mostrada e editada no formato DD/MM/YYYY.
.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
79
RELATÓRIO HIERÁRQUICO DE UNIDADES ORGANIZACIONAIS
Emitir relatório que liste hierarquicamente as unidades organizacionais
com os seguintes dados:
• Código da unidade organizacional.
• Nome da unidade organizacional.
• Matrícula do chefe da unidade organizacional.
• Nome do funcionário chefe da unidade organizacional.
Figura 52 - Visão parcial do relatório.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
80
RELATÓRIO DE FUNCIONÁRIOS POR LOTAÇÃO
Este relatório exibe uma tela com um árvore preenchida
hierarquicamente com as unidades organizacionais. Nessa tela é escolhida
uma unidade operacional.
É emitido um relatório que emite hierarquicamente para a unidade
escolhida e suas subunidades, com os seguintes dados:
• Código da unidade organizacional.
• Nome da unidade organizacional.
• Matrícula dos funcionários lotados na unidade organizacional.
• Nome dos funcionários lotados na unidade organizacional.
Figura 53 - Relatório por Lotação.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
81
RELATÓRIO DE FUNCIONÁRIOS OCUPANTES DE CARGO
Este relatório exibe uma tela com um combo-box preenchido com os
cargos.
A partir da escolha de um cargo, é emitido um relatório com os seguintes
dados:
• Código do cargo.
• Nome do cargo.
• Matrícula do atual ocupante.
• Nome do atual ocupante.
• Lotação do atual ocupante.
• Data da nomeação do atual ocupante.
• Data de nomeação dos ocupantes anteriores.
• Data de exoneração dos ocupantes anteriores.
• Matrícula do funcionário ocupante no período.
• Nome do funcionário ocupante no período.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
82
Figura 54 - Visão parcial do relatório,
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
83
RELATÓRIO DE HISTÓRICO DE CARGOS
Este relatório exibe uma tela com um campo texto para solicitar a
matrícula de um funcionário.
A partir da escolha e validação da matrícula informada, é emitido um
relatório com os seguintes dados:
• Matrícula do funcionário.
• Nome do funcionário.
• Código do cargo.
• Nome do cargo.
• Data de nomeação do cargo.
• Data de exoneração do cargo.
Figura 55 - Visualização parcial do relatório.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
84
WEB SERVICE FUNCIONÁRIO
Este Web Service recebe como parâmetro uma matrícula e retorna:
• Matrícula do funcionário.
• Nome do funcionário.
• Sexo do funcionário.
• Data de nascimento do funcionário.
• Data de exoneração do funcionário.
• Valor do salário do funcionário.
• Nome da unidade de lotação do funcionário.
• Situação do funcionário.
• Foto do funcionário.
Figura 56 - Ao definir um fluxo como Externo ele é gerado como Web Service.
Câmara dos Deputados Centro de Informática Coordenação de Relacionamento com o Cliente Processo n.º 126.836/2007 Em 17/11/2008
85
Considerações Finais
Após a bateria de testes realizada em conjunto com o técnico da
empresa, a comissão técnica concluiu que a ferramenta RAD Maker possui
todas as características obrigatórias exigidas pelo edital e todas as
características pontuáveis oferecidas.
A aplicação de teste foi desenvolvida em 05:15 h, tempo menor que o
indicado pela proposta técnica.
A produtividade obtida pela ferramenta foi de 23,80 Pontos de Função
por Hora, portanto maior que os 18 Pontos de Função por Hora ofertados na
proposta técnica.
A comissão recomenda o aceite da solução.
Brasília, 17 de novembro de 2008.
Alfredo Luiz Campos Junior
Analista Legislativo
Ponto: 6636
Evandro Tadeu Moreira
Analista Legislativo
Ponto 6639
Ricardo da Silva Lima
Analista Legislativo
Ponto: 6403
Dryade de Carvalho Fontenele
Analista Legislativo
Ponto: 6657
Marcos Abdo Raposo
Analista Legislativo
Ponto: 6647