2010bEquipe01

De Wiki DAINF
(Diferença entre revisões)
(Vantagens no uso da tecnologia da informação)
(Registros)
 
(27 edições intermediárias de um usuário não apresentadas)
Linha 14: Linha 14:
 
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
 
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.
 
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; <br>
 +
*Melhoria de controle interno das informações; <br>
 +
*Melhoria no atendimento aos clientes; <br>
 +
*Possibilidade de prever problemas financeiros mais cedo; <br>
 +
*Melhoria no processo produtivo; <br>
 +
*Aumento de produtividade e competitividade <br>
  
 
= Tecnologias livres usadas na comcepção do projeto =
 
= Tecnologias livres usadas na comcepção do projeto =
  
Para o banco de dados: MySQL <br>
+
==Arquitetura Cliente/Servidor==
Para os servlets: JavaEE e JSP <br>
+
Para a interface gráfica: HTML, CSS e Javascript <br>
+
Para o servidor controlador (no caso do exemplo desenvolvido): Apache Tomcat Version 7.0.2 <br>
+
  
 +
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.<br>
  
= Vantagens no uso da tecnologia da informação =
+
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.
  
-Automação de tarefas rotineiras; <br>
+
==Protocolo HTTP==
-Melhoria de controle interno das informações; <br>
+
HyperText  Transfer  Protocol  (HTTP)  é  um  protocolo  de   comunicação  com
-Melhoria no atendimento aos clientes; <br>
+
propriedades  específicas  para  web.  É  através  desse  protocolo  que  se  faz  possível  a
-Possibilidade de prever problemas financeiros mais cedo; <br>
+
comunicação de um servidor com um cliente.<br>
-Melhoria no processo produtivo; <br>
+
 
-Aumento de produtividade e competitividade <br>
+
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.<br>
 +
 
 +
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.<br>
 +
 
 +
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.<br>
 +
 
 +
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.<br>
 +
 
 +
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.<br>
 +
 
 +
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.<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 62: 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