2010bEquipe01

De Wiki DAINF
(Diferença entre revisões)
(Tecnologias livres usadas na comcepção do projeto)
(Registros)
 
(12 edições intermediárias de um usuário não apresentadas)
Linha 17: Linha 17:
 
= Vantagens no uso da tecnologia da informação nos negócios =
 
= Vantagens no uso da tecnologia da informação nos negócios =
  
- Automação de tarefas rotineiras; <br>
+
*Automação de tarefas rotineiras; <br>
- Melhoria de controle interno das informações; <br>
+
*Melhoria de controle interno das informações; <br>
- Melhoria no atendimento aos clientes; <br>
+
*Melhoria no atendimento aos clientes; <br>
- Possibilidade de prever problemas financeiros mais cedo; <br>
+
*Possibilidade de prever problemas financeiros mais cedo; <br>
- Melhoria no processo produtivo; <br>
+
*Melhoria no processo produtivo; <br>
- Aumento de produtividade e competitividade <br>
+
*Aumento de produtividade e competitividade <br>
  
 
= Tecnologias livres usadas na comcepção do projeto =
 
= Tecnologias livres usadas na comcepção do projeto =
Linha 28: Linha 28:
 
==Arquitetura Cliente/Servidor==
 
==Arquitetura Cliente/Servidor==
  
Um servidor é um sistema computacional capaz de processar solicitações de recursos e  
+
Um servidor é um sistema computacional capaz de processar solicitações de recursos e  
 
devolver respostas de maneira a disponibilizar arquivos e serviços — por exemplo correio  
 
devolver respostas de maneira a disponibilizar arquivos e serviços — por exemplo correio  
 
eletrônico, arquivos, fax, impressão, DNS, proxy, FTP, entre muitos outros.
 
eletrônico, arquivos, fax, impressão, DNS, proxy, FTP, entre muitos outros.
Nesta descrição, a palavra “servidor” pode se referir tanto à máquina (computador)  
+
Nesta descrição, a palavra “servidor” pode se referir tanto à máquina (computador)  
 
de  maneira  genérica,  quanto  ao  seu  aplicativo  (software),  que  efetivamente  processa  a  
 
de  maneira  genérica,  quanto  ao  seu  aplicativo  (software),  que  efetivamente  processa  a  
solicitação do cliente (usuário) do serviço / recurso.
+
solicitação do cliente (usuário) do serviço / recurso.<br>
 +
 
 
Em geral,  uma  interface cliente  (ou  simplesmente cliente)  é uma  interface gráfica  
 
Em geral,  uma  interface cliente  (ou  simplesmente cliente)  é uma  interface gráfica  
 
usada por um usuário para visualizar e também enviar dados a um servidor. É a interface que  
 
usada por um usuário para visualizar e também enviar dados a um servidor. É a interface que  
Linha 40: Linha 41:
  
 
==Protocolo HTTP==
 
==Protocolo HTTP==
HyperText  Transfer  Protocol  (HTTP)  é  um  protocolo  de  comunicação  com  
+
HyperText  Transfer  Protocol  (HTTP)  é  um  protocolo  de  comunicação  com  
 
propriedades  específicas  para  web.  É  através  desse  protocolo  que  se  faz  possível  a  
 
propriedades  específicas  para  web.  É  através  desse  protocolo  que  se  faz  possível  a  
comunicação de um servidor com um cliente.
+
comunicação de um servidor com um cliente.<br>
 +
 
 
Métodos HTTP são como formatos de solicitações; para cada tipo, certos parâmetros  
 
Métodos HTTP são como formatos de solicitações; para cada tipo, certos parâmetros  
 
se fazem necessários e, portanto, devem ser especificados na request HTTP. No total, existem  
 
se fazem necessários e, portanto, devem ser especificados na request HTTP. No total, existem  
oito métodos, mas os dois principais são:  GET e POST.
+
oito métodos, mas os dois principais são:  GET e POST.<br>
 +
 
 
O método GET é o mais simples usado nas comunicações HTTP. É responsável por solicitar  
 
O método GET é o mais simples usado nas comunicações HTTP. É responsável por solicitar  
do servidor um recurso qualquer, que é devolvido na forma de uma resposta HTTP.
+
do servidor um recurso qualquer, que é devolvido na forma de uma resposta HTTP.<br>
 +
 
 
O método POST é mais complexo na comunicação para envio de dados para o servidor, para que estes  
 
O método POST é mais complexo na comunicação para envio de dados para o servidor, para que estes  
 
possam ser processados. Ao contrário do GET, esse método pode ser usado para transmissão  
 
possam ser processados. Ao contrário do GET, esse método pode ser usado para transmissão  
Linha 55: Linha 59:
  
 
==Linguagem HTML==
 
==Linguagem HTML==
Nos protocolos de comunicação HTTP, o cliente geralmente solicita páginas HTML e  
+
Nos protocolos de comunicação HTTP, o cliente geralmente solicita páginas HTML e  
 
o  servidor  as  envia.  HTML  significa  HyperText  Markup  Language  (Linguagem  para  
 
o  servidor  as  envia.  HTML  significa  HyperText  Markup  Language  (Linguagem  para  
 
Marcação de  Hipertexto),  e  são  essas  páginas  HTML que  conhecemos  como páginas  da  
 
Marcação de  Hipertexto),  e  são  essas  páginas  HTML que  conhecemos  como páginas  da  
 
Internet. São elas, por exemplo, que nos disponibilizam formulários com campos de usuário e  
 
Internet. São elas, por exemplo, que nos disponibilizam formulários com campos de usuário e  
 
senha para nos autenticarmos em serviços, especificam onde começa e termina um título ou  
 
senha para nos autenticarmos em serviços, especificam onde começa e termina um título ou  
outro elemento dentro de um texto, como um hyperlink, entre outras funções.
+
outro elemento dentro de um texto, como um hyperlink, entre outras funções.<br>
Essa linguagem de marcação é baseada em etiquetas (<tags>), e possui limitações com  
+
 
 +
Essa linguagem de marcação é baseada em etiquetas (<tags>), e possui limitações com  
 
relação  ao  resultado  exibido.  Uma  página  HTML  é  exibida  sempre  da  mesma  maneira  
 
relação  ao  resultado  exibido.  Uma  página  HTML  é  exibida  sempre  da  mesma  maneira  
 
enquanto  não  for  modificada,  e  por  padrão  não  possui  recursos  interativos  (aplicativos  
 
enquanto  não  for  modificada,  e  por  padrão  não  possui  recursos  interativos  (aplicativos  
Linha 69: Linha 74:
  
 
==Java e JavaScript==
 
==Java e JavaScript==
Em  computação,  uma  linguagem  é  basicamente  um  conjunto  de  palavras-chave  
+
Em  computação,  uma  linguagem  é  basicamente  um  conjunto  de  palavras-chave  
 
organizadas em torno de regras com o objetivo de fornecer instruções de processamento para  
 
organizadas em torno de regras com o objetivo de fornecer instruções de processamento para  
uma máquina.
+
uma máquina.<br>
De acordo com as necessidades dos programadores ou das aplicações, surgiram alguns  
+
 
 +
De acordo com as necessidades dos programadores ou das aplicações, surgiram alguns  
 
tipos de linguagens,  cada uma com uma finalidade específica.  Algumas,  como o XML (de  
 
tipos de linguagens,  cada uma com uma finalidade específica.  Algumas,  como o XML (de  
 
cuja  família se originou o HTML),  dedicam-se a marcar  texto de maneira a permitir  que  
 
cuja  família se originou o HTML),  dedicam-se a marcar  texto de maneira a permitir  que  
Linha 80: Linha 86:
 
transformação do código-fonte em um arquivo executável). Programas escritos em linguagem  
 
transformação do código-fonte em um arquivo executável). Programas escritos em linguagem  
 
Java  podem  ou  não  possuir  interface  gráfica,  e  da  mesma  maneira,  podem  ou  não  ser  
 
Java  podem  ou  não  possuir  interface  gráfica,  e  da  mesma  maneira,  podem  ou  não  ser  
controlados diretamente pelo usuário.
+
controlados diretamente pelo usuário.<br>
Ainda,  existem  linguagens como o Javascript,  que permitem a criação de pequenos  
+
 
 +
Ainda,  existem  linguagens como o Javascript,  que permitem a criação de pequenos  
 
programas  (geralmente chamados de “scripts”)  dentro de páginas web.  Devido à  limitada  
 
programas  (geralmente chamados de “scripts”)  dentro de páginas web.  Devido à  limitada  
 
capacidade que o HTML tem de processar conteúdo (o que se deve principalmente ao fato de  
 
capacidade que o HTML tem de processar conteúdo (o que se deve principalmente ao fato de  
Linha 92: Linha 99:
 
arquivos executáveis),  e por  isso dependem do processamento de navegadores de Internet.   
 
arquivos executáveis),  e por  isso dependem do processamento de navegadores de Internet.   
 
Ainda, esse tipo de código usa HTML como interface gráfica.
 
Ainda, esse tipo de código usa HTML como interface gráfica.
 +
 +
==Servlets e JSP==
 +
Um servlet é um aplicativo que roda no lado servidor, atuando como um controlador
 +
de requisições e respostas. Sua principal função é receber cada request HTTP (já transformada
 +
em um objeto Java pelo container
 +
) e encaminhá-las para os modelos (classes Java chamadas
 +
de models) corretos realizarem o processamento das
 +
informações  recebidas.  Caso os  modelos  retornem dados  que  precisem  ser  mostrados  ao
 +
usuário,  o  servlet  encaminha  então  esses  dados  para  a  página  JSP  (Java  Server  Page)
 +
correspondente,  que possui  um  template (layout) HTML para exibição das  informações.  O
 +
JSP é uma linguagem baseada em Java, que roda dentro de uma página web no lado servidor.
 +
 +
==Banco de Dados==
 +
 +
Um banco de dados é essencialmente um espaço de memória persistente reservado
 +
para  armazenamento  organizado  de  informações  de  maneira  a  permitir  consulta  a  elas.
 +
Geralmente, os bancos de dados são organizados em tabelas onde registros semelhantes são
 +
agrupados. Quando um sistema utiliza um banco, ele deve garantir que os dados não sejam
 +
adicionados nas tabelas erradas.<br>
 +
 +
Relacionamentos entre tabelas são importantes para aumentar o grau de complexidade
 +
dos sistemas, permitindo representações mais fiéis do domínio do problema estudado dentro
 +
da programação do software que será utilizado para resolvê-lo.<br>
 +
 +
A adição ou consulta de dados se dá através de uma linguagem de consulta (sendo a
 +
mais  conhecida  a  SQL  —  Structured  Query  Language,  ou  Linguagem  de  Consulta
 +
Estruturada). No nosso exemplo genérico, se o banco de dados suportasse consultas SQL e
 +
quiséssemos uma lista de todos os nomes de cachorros cadastrados, utilizaríamos a consulta:
 +
 +
SELECT Nome FROM Cachorros
 +
 +
Se quiséssemos apenas os cachorros de José, por exemplo:
 +
 +
SELECT Nome FROM Cachorros WHERE Código do Dono = 1
 +
 +
Como o  tamanho dos  bancos  utilizados  na  realidade  é  geralmente  maior  e  quase
 +
sempre estão relacionados a programas complexos, são necessárias ferramentas que auxiliem
 +
na administração deles — ferramentas estas chamadas de Sistemas Gerenciadores de Bancos
 +
de Dados (SGBD).<br>
 +
 +
O  SGBD  livre  e  gratuito  que  será  utilizado  neste  projeto  será  o  MySQL,  que
 +
implementa um Banco de Dados com suporte às consultas por Structured Query Language.
 +
 +
=Estrutura do Sistema=
 +
 +
==Model View Control - MVC==
 +
 +
Nosso sistema implementa um padrão de arquitetura conhecido como Model - View -
 +
Controller (MVC). Esse padrão tem como objetivo separar a “lógica de negócio” da “lógica
 +
de apresentação”, permitindo o desenvolvimento, teste e manutenção isolado de ambos.<br>
 +
 +
Ao receber uma solicitação HTTP de um cliente, o container (Tomcat, por exemplo)
 +
transforma  essa  solicitação  em  um  objeto  (Java),  e  o  envia  para  o  Controller,  que  é
 +
representado pelos servlets.  O Controller  é responsável  por processar  esse objeto recebido
 +
pelo container. Ele retira da solicitação do usuário os dados de entrada e interpreta o que eles
 +
significam para o modelo. Obriga o modelo a se atualizar e disponibiliza o estado do novo
 +
modelo para o “View”, que é representado pelos JSPs.<br>
 +
 +
O modelo contém a lógica e o estado do sistema. Em outras palavras, ele conhece as
 +
regras para obtenção e atualização do estado. O modelo é o unico que se comunica com um
 +
banco de dados.<br>
 +
 +
A  View  é  responsável  pela  apresentação.  Ela  recebe  o  estado  do  modelo  do
 +
controlador.  Também é  a parte  que  recebe  os  dados  de  entrada  do usuário que  volta  ao
 +
controlador.
  
 
= Registros =
 
= Registros =
Linha 123: Linha 195:
  
 
'''''04/10/2010, Segunda-feira''''': '''Preparando a apresentação de slides''' para quarta-feira. ~> [[RuiPimentel | Rui Pimentel]]
 
'''''04/10/2010, Segunda-feira''''': '''Preparando a apresentação de slides''' para quarta-feira. ~> [[RuiPimentel | Rui Pimentel]]
 +
 +
'''''08/11/2010, Segunda-feira''''': '''Atualização Completa da Wiki'''~> [[Claudio Toledo | Claudio Toledo]]

Edição atual tal como 20h35min de 8 de novembro de 2010

Atenção! Comentários e perguntas devem ser concentrados na página de discussão!


Equipe: Bruno Câmpera | Claudio Toledo Filho | Renan Taizo Nakashima | Rui Pimentel Leite

Tabela de conteúdo

Gerador de Sistemas Online para Cadastros Comerciais - ADMINISTRI!

A falta de um software livre que auxilie na gestão de ambientes comerciais pela Internet, que possa vir a ser usado como incentivo para micro e pequenos empresários de qualquer setor da economia, visando inserir de forma simples a informatização comercial básica. Além disso, acreditamos no uso pessoal e comercial de tecnologias da informação — principalmente as livres — para o avanço tecnológico nacional e regional.

Objetivos

Conceber por completo o projeto ADMINISTRI!: “Ferramenta para criação de sistemas de cadastros para micro e pequenos negócios”, gerando como exemplo um programa para o setor de Pet-Serviços. Tanto a ferramenta quanto o sistema exemplo serão distribuídos livremente a quaisquer interessados, sendo ambos possíveis de se modificar, para que possam 7 ser compatíveis com qualquer outro sistema comercial. A concepção de ambos os sistemas será usada como atribuição de nota parcial na disciplina de Oficinas de Integração I.

Vantagens no uso da tecnologia da informação nos negócios

  • Automação de tarefas rotineiras;
  • Melhoria de controle interno das informações;
  • Melhoria no atendimento aos clientes;
  • Possibilidade de prever problemas financeiros mais cedo;
  • Melhoria no processo produtivo;
  • Aumento de produtividade e competitividade

Tecnologias livres usadas na comcepção do projeto

Arquitetura Cliente/Servidor

Um servidor é um sistema computacional capaz de processar solicitações de recursos e devolver respostas de maneira a disponibilizar arquivos e serviços — por exemplo correio eletrônico, arquivos, fax, impressão, DNS, proxy, FTP, entre muitos outros. Nesta descrição, a palavra “servidor” pode se referir tanto à máquina (computador) de maneira genérica, quanto ao seu aplicativo (software), que efetivamente processa a solicitação do cliente (usuário) do serviço / recurso.

Em geral, uma interface cliente (ou simplesmente cliente) é uma interface gráfica usada por um usuário para visualizar e também enviar dados a um servidor. É a interface que faz requisições (pedidos) ao servidor e apresenta a resposta de maneira visualmente agradável. Esse sistema pedido-resposta é mediado por um protocolo de comunicação, amplamente usado, o HTTP.

Protocolo HTTP

HyperText Transfer Protocol (HTTP) é um protocolo de comunicação com propriedades específicas para web. É através desse protocolo que se faz possível a comunicação de um servidor com um cliente.

Métodos HTTP são como formatos de solicitações; para cada tipo, certos parâmetros se fazem necessários e, portanto, devem ser especificados na request HTTP. No total, existem oito métodos, mas os dois principais são: GET e POST.

O método GET é o mais simples usado nas comunicações HTTP. É responsável por solicitar do servidor um recurso qualquer, que é devolvido na forma de uma resposta HTTP.

O método POST é mais complexo na comunicação para envio de dados para o servidor, para que estes possam ser processados. Ao contrário do GET, esse método pode ser usado para transmissão de dados sigilosos com relativa segurança, pois as informações submetidas são listadas no corpo da request (juntamente com especificações sobre codificação e formato desejado de resposta) sem que fiquem explícitas no endereço da página (URL).

Linguagem HTML

Nos protocolos de comunicação HTTP, o cliente geralmente solicita páginas HTML e o servidor as envia. HTML significa HyperText Markup Language (Linguagem para Marcação de Hipertexto), e são essas páginas HTML que conhecemos como páginas da Internet. São elas, por exemplo, que nos disponibilizam formulários com campos de usuário e senha para nos autenticarmos em serviços, especificam onde começa e termina um título ou outro elemento dentro de um texto, como um hyperlink, entre outras funções.

Essa linguagem de marcação é baseada em etiquetas (<tags>), e possui limitações com relação ao resultado exibido. Uma página HTML é exibida sempre da mesma maneira enquanto não for modificada, e por padrão não possui recursos interativos (aplicativos inseridos dentro do contexto da página, como jogos por exemplo). Mesmo assim, o HTML permite que esses elementos sejam construídos em Flash, Java, Javascript e diversas outras linguagens e então inseridos dentro das páginas.

Java e JavaScript

Em computação, uma linguagem é basicamente um conjunto de palavras-chave organizadas em torno de regras com o objetivo de fornecer instruções de processamento para uma máquina.

De acordo com as necessidades dos programadores ou das aplicações, surgiram alguns tipos de linguagens, cada uma com uma finalidade específica. Algumas, como o XML (de cuja família se originou o HTML), dedicam-se a marcar texto de maneira a permitir que softwares consigam processar e extrair informações a partir do conteúdo dos documentos gerados com ela. Outras, como C e Java, geram programas de computador capazes de atender a praticamente todas as finalidades após a compilação de seus códigos (isto é, após a transformação do código-fonte em um arquivo executável). Programas escritos em linguagem Java podem ou não possuir interface gráfica, e da mesma maneira, podem ou não ser controlados diretamente pelo usuário.

Ainda, existem linguagens como o Javascript, que permitem a criação de pequenos programas (geralmente chamados de “scripts”) dentro de páginas web. Devido à limitada capacidade que o HTML tem de processar conteúdo (o que se deve principalmente ao fato de esta ser uma linguagem de marcação e não de programação), e a partir da necessidade de introduzir conteúdo dinâmico na Internet, surgiram linguagens com a habilidade de alterar elementos das páginas web que já estivessem abertas, sem alterar o código-fonte original das mesmas — ou seja, páginas que em teoria são estáticas (não são geradas “sob encomenda” para o usuário) acabam ganhando autonomia para se modificarem durante sua visualização no próprio browser do usuário. Cabe ressaltar que scripts não são compilados (não geram arquivos executáveis), e por isso dependem do processamento de navegadores de Internet. Ainda, esse tipo de código usa HTML como interface gráfica.

Servlets e JSP

Um servlet é um aplicativo que roda no lado servidor, atuando como um controlador de requisições e respostas. Sua principal função é receber cada request HTTP (já transformada em um objeto Java pelo container ) e encaminhá-las para os modelos (classes Java chamadas de models) corretos realizarem o processamento das informações recebidas. Caso os modelos retornem dados que precisem ser mostrados ao usuário, o servlet encaminha então esses dados para a página JSP (Java Server Page) correspondente, que possui um template (layout) HTML para exibição das informações. O JSP é uma linguagem baseada em Java, que roda dentro de uma página web no lado servidor.

Banco de Dados

Um banco de dados é essencialmente um espaço de memória persistente reservado para armazenamento organizado de informações de maneira a permitir consulta a elas. Geralmente, os bancos de dados são organizados em tabelas onde registros semelhantes são agrupados. Quando um sistema utiliza um banco, ele deve garantir que os dados não sejam adicionados nas tabelas erradas.

Relacionamentos entre tabelas são importantes para aumentar o grau de complexidade dos sistemas, permitindo representações mais fiéis do domínio do problema estudado dentro da programação do software que será utilizado para resolvê-lo.

A adição ou consulta de dados se dá através de uma linguagem de consulta (sendo a mais conhecida a SQL — Structured Query Language, ou Linguagem de Consulta Estruturada). No nosso exemplo genérico, se o banco de dados suportasse consultas SQL e quiséssemos uma lista de todos os nomes de cachorros cadastrados, utilizaríamos a consulta:

SELECT Nome FROM Cachorros

Se quiséssemos apenas os cachorros de José, por exemplo:

SELECT Nome FROM Cachorros WHERE Código do Dono = 1

Como o tamanho dos bancos utilizados na realidade é geralmente maior e quase sempre estão relacionados a programas complexos, são necessárias ferramentas que auxiliem na administração deles — ferramentas estas chamadas de Sistemas Gerenciadores de Bancos de Dados (SGBD).

O SGBD livre e gratuito que será utilizado neste projeto será o MySQL, que implementa um Banco de Dados com suporte às consultas por Structured Query Language.

Estrutura do Sistema

Model View Control - MVC

Nosso sistema implementa um padrão de arquitetura conhecido como Model - View - Controller (MVC). Esse padrão tem como objetivo separar a “lógica de negócio” da “lógica de apresentação”, permitindo o desenvolvimento, teste e manutenção isolado de ambos.

Ao receber uma solicitação HTTP de um cliente, o container (Tomcat, por exemplo) transforma essa solicitação em um objeto (Java), e o envia para o Controller, que é representado pelos servlets. O Controller é responsável por processar esse objeto recebido pelo container. Ele retira da solicitação do usuário os dados de entrada e interpreta o que eles significam para o modelo. Obriga o modelo a se atualizar e disponibiliza o estado do novo modelo para o “View”, que é representado pelos JSPs.

O modelo contém a lógica e o estado do sistema. Em outras palavras, ele conhece as regras para obtenção e atualização do estado. O modelo é o unico que se comunica com um banco de dados.

A View é responsável pela apresentação. Ela recebe o estado do modelo do controlador. Também é a parte que recebe os dados de entrada do usuário que volta ao controlador.

Registros

25/08/2010, Quarta-feira: emprestados dois exemplares de "Use a cabeça! : Servlets & JSP" da biblioteca. ~> Rui Pimentel e Renan Taizo

28/08/2010, Sábado: conteúdo da Wiki criado. ~> Rui Pimentel

28/08/2010, Sábado: estudos com HTML/CSS iniciados. Falta definir layout do client! ~> Renan Taizo

28/08/2010, Sábado: estudos com Servlets e JSP iniciados. ~> Rui Pimentel

30/08/2010, Segunda-feira: Conteúdo adicionado na wiki: ~> Análise do mercado de pet-serviços (com links externos para consulta) + links para projeções e defesa do projeto ~> Renan Taizo

31/08/2010, Terça-feira: reunião na biblioteca com os 4 integrantes.

31/08/2010, Terça-feira: início da abstração das telas do sistema.

01/09/2010, Quarta-feira: estudo com HTML e CSS ~> Claudio Toledo

05/09/2010, Domingo: Finalmente! Web-server de casa e acesso remoto configurados com sucesso!!! Renan Taizo

09/09/2010, Quinta-feira: Pré-monografia iniciada! ~> Renan Taizo

09/09/2010, Quinta-feira: Estudos com TeX ~> Rui Pimentel

15/09/2010, Quarta-feira: Monografia concluída com sucesso! ~> Renan Taizo

16/09/2010, Quinta-feira: Inicio do desenvolvimento do sistema: Três principais modelos de cadastro!~> Renan Taizo

17/09/2010, Sexta-feira: Revivendo a wiki.. depois de muito trabalho, estamos de volta! ~> Renan Taizo

04/10/2010, Segunda-feira: Preparando a apresentação de slides para quarta-feira. ~> Rui Pimentel

08/11/2010, Segunda-feira: Atualização Completa da Wiki~> Claudio Toledo

Ferramentas pessoais