2010bEquipe01
(→Em manutenção) |
(→Registros) |
||
(33 edições intermediárias de um usuário não apresentadas) | |||
Linha 8: | Linha 8: | ||
− | 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 | + | 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; <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 = | ||
+ | |||
+ | ==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.<br> | ||
+ | |||
+ | 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.<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 40: | 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