MONOGRAFIA DE FORMATURA

 

MAC449

 

Marino Hilário Catarino N° USP: 2946541

Orientador: Prof . Coelho

 

 

Proposta:

DESENVOLVIMENTO DO BANCO DE DADOS DO INSTITUTO DE CIÊNCIAS BIOMÉDICAS DA UNIVERSIDADE DE SÃO PAULO

 

1 Parte da Monografia

 

            1 Natureza da organização e da atividade:

 

O Instituto de ciências biomédicas da universidade de São Paulo visa atender as necessidades do instituto na área de informática. Atuando nos problemas de software e da rede do ICB. Não possui fins lucrativos, fora o beneficio dos usuários de computador do instituto.

 

            2 Definição do problema ou sistema principal de trabalho

 

            Este projeto foi elaborado visando fornecer informações básicas sobre o sistema. O nível de conhecimento proposto abrange conhecimento básico de informática, visando com isso facilitar o rápido acesso às informações a serem requisitadas ou pesquisadas no sistema. A tecnologia utilizada foi o PHP e o MySQL.

            A finalidade deste sistema é integrar e disponibilizar para o usuário do ICB, informações sobre as solicitações de diversos serviços de manutenção dentre eles, elétrica, hidráulica, marcenaria.

            A princípio, o sistema poderá ter outros módulos, caso haja demanda. Neste momento, o sistema ainda não possui relatórios e a base de consultas é a solicitação.

 

            3 Forma de organização da equipe de trabalho e atribuição de responsabilidade

 

            A equipe de trabalho era composta por dois analistas de sistemas e por dois estagiários, no caso os analistas eram Wilson Barbosa e César de Paula Souza e os estagiário eram Marino Hilário Catarino e Ismael. O modo de atuação era sem cadeia hierárquica, todos tinham os mesmos direitos de falar e de serem escutados. As tarefas eram para todos, sem discriminação de cargo ou tempo de trabalho.

 

            4 Estimativa inicial de prazos e do andamento do projeto:

 

            O projeto não possuía prazos reais. Já estava em pratica há 2 anos e estava passando por uma fase de reestruturação.

 

            5 Métricas post-mortem do andamento do projeto:

 

            Sem nenhuma previsão de andamento. O sistema já esta no ar e de acordo com o que foi pedido, assim pode apenas passar por futuras reestruturações.

 

            6 Bibliografia utilizada ou básica para a área de atuação em que se insere o estagio:

 

            Neste estágio utilizou-se muito a Internet e seus conhecimentos disponíveis. Os sites mais utilizados foram: 

            www.php.net

            www.mysql.com

            www.google.com

            É importante mencionar o site de busca Google pois através dele se encontrou varias vezes soluções para problemas existentes no sistema.

 

            7 Participação e treinamento:

 

            O treinamento foi diretamente no site, apesar de eu já possuir uma boa base sobre Banco de dados, PHP e MySQL obtidos em um estagio feito anteriormente. Este treinamento se baseou em estudar o código existente.

 

            8 Ferramentas e técnicas utilizadas:

 

            Utilizou-se um servidor apache com PHP e MySQL instalados, e qualquer editor de texto para poder gerar as páginas .php do sistema. Inicialmente para se produzir novas páginas utilizou-se muito o código de paginas já feitas e estruturadas, depois criou-se páginas novas.

 

            9 Técnicas não exploradas

 

            Uma nova proposta para o sistema era a migração dos códigos PHP para Java (Applet), porem este estudo ficou somente na conecção com o banco de dados via JDBC e alguns scripts em Java Applet.

 

            10 Forma de acompanhamento utilizadas pelo gerente do projeto:

 

            Eventuais reuniões, normalmente o acompanhamento era diário. Podendo existir uma ou outra reunião com toda a equipe ao fim de dois ou três meses de trabalho.


11 Descrição do sistema:

 

            Aqui apresento uma breve descrição do sistema e de como utilizá-lo.   

 

11.1. Login

 

 

            Acessando a página http://dbapp.icb.usp.br/solicitacoes,  aparecerá uma tela inicial  (login). A tela inicial é fornecida para autenticar o usuário, isto é, validar o usuário. A autenticação é feita em duas etapas: A primeira etapa do sistema autentica a rede do ICB, verificando se a máquina que está acessando o sistema pertence à faixa de números IP (Internet Protocol) do Instituto. Isso impede que computadores fora do ICB acessem o sistema. A segunda etapa consiste da autenticação do usuário. Aqui é verificado o nome de acesso e senha do usuário. Nome de acesso e senha são termos-chave fornecidos aos usuários deste sistema, utilizados para ter-se acesso ao sistema. Caso estejam incorretos, é aberta uma mensagem de erro, permitindo ao usuário uma nova conexão.

            Para caráter de teste pode se pedir um login e uma senha que a enviarei.

 

 

 

 

 

Figura 1 – Tela inicial de login (autenticação do usuário)

 

 

 

            Se o nome de acesso e senha estiverem corretos, abrir-se-á uma janela dividida em três partes. O lado esquerdo apresenta um “link” para que se possa fazer uma solicitação. A parte superior do lado direito mostra as opções de pesquisa. A parte inferior do lado direito é a principal, onde são apresentados os resultados de pesquisa e janelas de cadastro de solicitações, solicitações de compras, serviços contratados, agendamento e programação de tarefas.

 

 

 

 

Figura 2 – Link para novas solicitações

 

 

 

11.2. Inserindo uma solicitação

 

            Clicando no “link” Solicitações, abre-se uma janela no espaço principal com o formulário a ser preenchido, onde o nome de acesso e a data aparecem automaticamente. Aqui colocam-se informações necessárias para a sua solicitação como o nome, o tipo de serviço (Elétrica, Hidráulica, Marcenaria ou Outros), o departamento e a descrição do serviço (Figura 3).

 

 

Figura 3 – Fazendo uma solicitação

 

 

 

 

 

Clicando no botão Gravar, sua solicitação é cadastrada no banco de dados e você obtém uma resposta com o código de sua solicitação. Recomenda-se que esse código seja guardado (Figura 4). Os campos: “Solicitante” e “Descrição do Serviço”, são de preenchimento obrigatório.  Se algum destes campos não for preenchido, aparecerá uma mensagem de erro, dando possibilidade ao usuário para corrigi-lo, indicando ao usuário qual campo foi omitido (Figura 5).

 

 

 

Figura 4 – Resposta do cadastro de solicitações

 

 

 

 

Figura 5 –Mensagem de erro por omissão de campo

 

 

11.3. Pesquisando uma solicitação

 

 

A parte superior da janela do sistema mostra diversos modos de fazer pesquisas sobre as solicitações cadastradas. Há quatro modos básicos para se pesquisar:

 

·        Por serviços

·        Por Departamento

·        Pelo Solicitante

·        Pelo código da Solicitação

 

.Também é possível fazer diversas combinações dos modos. Por exemplo, se quiser saber todos os serviços de elétrica encomendados pelo setor acadêmico, basta escolher estes dois itens nas caixas de combinação correspondentes e clicar em Pesquisar. A pesquisa também aceita o código da solicitação, o nome inteiro ou parte do nome do solicitante.

 

11.4. Resultado de pesquisa

 

Quando não houver nenhum resultado de pesquisa, a janela abre-se em branco.Se houver, abre-se uma tabela com três colunas e, dependendo do número de respostas, opções de navegação que permitem acessar novas páginas com mais informações. Os “links” Anterior e Próximo permitem a navegação entre as telas com os resultados da pesquisa (Figura 6)

 

 

 

 

Figura 6 – Janela com resultado de pesquisa

 

A tabela com resultado de pesquisa é dividida em três colunas. A coluna Solicitante mostra “links” com os nomes dos solicitantes. Acionando-se estes “links” mostram-se as demais informações referentes a esse solicitante e as opções para Agendamento, Solicitações de Compras, Serviços Contratados e Programação (Figura 7).

 

Figura 7 – Opções de serviços para pesquisa

 

 

A coluna Editar abre a mesma janela com as informações, mas permite que essas informações sejam alteradas (Figura 8). A coluna Apagar, faz com que as informações sejam excluídas do banco (Figura 9).

 

 

Figura 8 – Janela para edição das informações

 

 

Figura 9 – Janela para exclusão das informações

 

 

11.5. Opções de serviço

 

            Ao acionar algum “link” da primeira coluna da tabela de pesquisa, além dos dados referentes àquele registro, são mostrados quatro links com tarefas diferentes que podem ser organizadas pelo sistema.

 

 

 

11.5.1 – Agendamento

 

            A intenção do Agendamento é marcar datas de início e fim do cumprimento da tarefa consultada. Acionando-se o “link” agendamento é aberta uma tabela abaixo do formulário com dois campos correspondentes (início e fim). Ambos campos vêm preenchidos com a data atual, que pode ser alterada. Clicando-se no botão Gravar, as datas de início e de fim são cadastradas numa tabela correspondente do sistema, podendo ser alteradas e apagadas. É possível cadastrar apenas uma data por solicitante (Figura 10).

 

 

Figura 10 – Agendamento

 

 

 

11.5.2 – Compras

 

            O formulário de solicitações de compras funciona de maneira semelhante ao Agendamento, mas com campos diferentes. Aqui, fornecem-se informações referentes ao código do produto e à quantidade desejada deste produto. O código em questão é o mesmo utilizado no sistema Mercúrio A descrição do produto aparecerá automaticamente após cada requisição. Nesse caso, a quantidade de requisições por solicitante é ilimitada (Figura 11). Caso se entre com um código inexistente, um caractere que não seja numérico em Quantidade, ou não se preencha algum campo, aparecerá uma mensagem de erro.

 

Também é possível editar ou apagar estas requisições. Quando se editar uma requisição, apenas a quantidade pode ser alterada (Figura 12).

 

 

Figura 11 – Solicitações de Compras

 

Figura 12 – Produto requisitado

 

11.5.3 – Fornecedores

 

            O formulário para cadastro de fornecedores permite cadastrar observações relativas a serviços terceirizados. O fornecedor em si já está cadastrado no sistema, bastando apenas entrar com seu código e sua observação correspondente (Figura 13).

 

Caso se entre com uma fornecedora inexistente ou se deixe o código em branco, aparecerá uma mensagem de erro, não cadastrando assim a informação errada. Também se permite a edição e deleção das observações referentes aos fornecedores. A quantidade de observações por solicitante é ilimitada (Figura 14).

 

Figura 13 – Fornecedoras

 

 

Figura 14 – Observação relativa à fornecedora cadastrada

 

 

11.5.4 – Programação (acesso restrito à Administração)

 

            O objetivo da programação é declarar tarefas relativas à solicitação, de forma semelhante a uma agenda. Aqui o usuário entra com a data (automaticamente fornecida pelo sistema) e uma tarefa, não havendo a necessidade de inclusão de código (Figura 15). Caso o campo Programação não seja preenchido, aparecerá uma mensagem de erro. Após a inserção de uma tarefa, também é possível edita-la e apaga-la, como nos outros modos (Figura 16). O número de tarefas inseridas por solicitante também é ilimitado.

 

 

 

 

Figura 15 – Programação

 

 

Figura 16 – Tarefa inserida para programação

 

 


APÊNDICE A – DESCRIÇÃO DE TABELAS

 

A.1 – Solicitações

 

+-------------------+---------------+------+-----+---------------------+----------------+

| Field             | Type          | Null | Key | Default             | Extra          |

+-------------------+---------------+------+-----+---------------------+----------------+

| id_solicitacao    | int(11)       |      | PRI | NULL                | auto_increment |

| descr_solicitacao | varchar(255)  |      |     |                     |                |

| solicitante       | varchar(60)   |      |     |                     |                |

| data_solicitacao  | datetime      |      |     | 0000-00-00 00:00:00 |                |

| iddepto           | int(11)       |      |     | 0                   |                |

| idservico         | int(11)       |      |     | 0                   |                |

| user              | varchar(16)   | YES  |     | NULL                |                |

| host              | varchar(60)   | YES  |     | NULL                |                |

| date_time_stamp   | timestamp(14) | YES  |     | NULL                |                |

+-------------------+---------------+------+-----+---------------------+----------------+

 

A.2 – Departamentos

 

+----------------+-------------+------+-----+---------------+----------------+

| Field          | Type        | Null | Key | Default       | Extra          |

+----------------+-------------+------+-----+---------------+----------------+

| iddepartamento | int(11)     |      | PRI | NULL          | auto_increment |

| descr          | varchar(50) |      |     |               |                |

| iprede         | varchar(14) |      |     | 143.107.      |                |

| gateway        | varchar(14) |      |     | 143.107.      |                |

| mascara        | varchar(14) |      |     | 255.255.255.  |                |

| dnsprimario    | varchar(14) |      |     | 143.107.123.3 |                |

| dnssecundario  | varchar(14) |      |     | 143.107.253.3 |                |

+----------------+-------------+------+-----+---------------+----------------+

 

 

A.3 – Serviços

 

+-----------------+---------------+------+-----+---------+----------------+

| Field           | Type          | Null | Key | Default | Extra          |

+-----------------+---------------+------+-----+---------+----------------+

| idservico       | int(11)       |      | PRI | NULL    | auto_increment |

| descr_servico   | varchar(60)   |      |     |         |                |

| user            | varchar(16)   | YES  |     | NULL    |                |

| host            | varchar(60)   | YES  |     | NULL    |                |

| date_time_stamp | timestamp(14) | YES  |     | NULL    |                |

+-----------------+---------------+------+-----+---------+----------------+

 

A.4 – Agendamento

 

 

+-----------------------+---------------+------+-----+------------+----------------+

| Field                 | Type          | Null | Key | Default    | Extra          |

+-----------------------+---------------+------+-----+------------+----------------+

| id_agendamento        | int(11)       |      | PRI | NULL       | auto_increment |

| data_prevista_inicio  | date          |      |     | 0000-00-00 |                |

| data_prevista_termino | date          | YES  |     | NULL       |                |

| id_solicitacao        | int(11)       |      |     | 0          |                |

| user                  | char(16)      | YES  |     | NULL       |                |

| host                  | char(60)      | YES  |     | NULL       |                |

| date_time_stamp       | timestamp(14) | YES  |     | NULL       |                |

+-----------------------+---------------+------+-----+------------+----------------+

 

A.5 – Compras_Solicitações

 

 

+-------------------------+---------------+------+-----+------------+----------------+

| Field                   | Type          | Null | Key | Default    | Extra          |

+-------------------------+---------------+------+-----+------------+----------------+

| id_compras_solicitacoes | int(11)       |      | PRI | NULL       | auto_increment |

| id_solicitacao          | int(11)       |      |     | 0          |                |

| quantidade              | int(11)       |      |     | 0          |                |

| id_material             | int(11)       |      |     | 0          |                |

| data_envio_compras      | date          |      |     | 0000-00-00 |                |

| user                    | char(16)      | YES  |     | NULL       |                |

| host                    | char(60)      | YES  |     | NULL       |                |

| date_time_stamp         | timestamp(14) | YES  |     | NULL       |                |

+-------------------------+---------------+------+-----+------------+----------------+

 

A.6 – Materiais_Equipamentos

 

 

+-----------------+---------------+------+-----+---------+----------------+

| Field           | Type          | Null | Key | Default | Extra          |

+-----------------+---------------+------+-----+---------+----------------+

| id_material     | int(11)       |      | PRI | NULL    | auto_increment |

| descr_material  | varchar(60)   |      |     |         |                |

| user            | varchar(16)   | YES  |     | NULL    |                |

| host            | varchar(60)   | YES  |     | NULL    |                |

| date_time_stamp | timestamp(14) | YES  |     | NULL    |                |

+-----------------+---------------+------+-----+---------+----------------+

 

A.7 – Serviços Contratados

 

+-----------------+---------------+------+-----+------------+----------------+

| Field           | Type          | Null | Key | Default    | Extra          |

+-----------------+---------------+------+-----+------------+----------------+

| id_contrato     | int(11)       |      | PRI | NULL       | auto_increment |

| data_cadastro   | date          |      |     | 0000-00-00 |                |

| id_fornecedora  | int(11)       |      |     | 0          |                |

| id_solicitacao  | int(11)       |      |     | 0          |                |

| observacao      | varchar(255)  | YES  |     | NULL       |                |

| user            | varchar(16)   | YES  |     | NULL       |                |

| host            | varchar(60)   | YES  |     | NULL       |                |

| date_time_stamp | timestamp(14) | YES  |     | NULL       |                |

+-----------------+---------------+------+-----+------------+----------------+

 

A.8 - Fornecedoras

 

+-------------------+---------------+------+-----+---------+----------------+

| Field             | Type          | Null | Key | Default | Extra          |

+-------------------+---------------+------+-----+---------+----------------+

| id_fornecedora    | int(11)       |      | PRI | NULL    | auto_increment |

| descr_fornecedora | varchar(60)   |      |     |         |                |

| cnpj              | varchar(14)   | YES  |     | NULL    |                |

| user              | varchar(16)   | YES  |     | NULL    |                |

| host              | varchar(60)   | YES  |     | NULL    |                |

| date_time_stamp   | timestamp(14) | YES  |     | NULL    |                |

+-------------------+---------------+------+-----+---------+----------------+

 

A.9 – Programação

 

+------------------+---------------+------+-----+---------------------+----------------+

| Field            | Type          | Null | Key | Default             | Extra          |

+------------------+---------------+------+-----+---------------------+----------------+

| id_programacao   | int(11)       |      | PRI | NULL                | auto_increment |

| data_programacao | datetime      |      |     | 0000-00-00 00:00:00 |                |

| programacao      | varchar(255)  |      |     |                     |                |

| id_solicitacao   | int(11)       | YES  |     | 0                   |                |

| user             | varchar(16)   | YES  |     | NULL                |                |

| host             | varchar(60)   | YES  |     | NULL                |                |

| date_time_stamp  | timestamp(14) | YES  |     | NULL                |                |

+------------------+---------------+------+-----+---------------------+----------------+

 

 

2 Parte da Monografia

 

1 Desafios e frustrações encontrados:

 

Os maiores desafios por mim encontrados quando inicio algum trabalho novo são basicamente os mesmos: integração com a equipe atual de trabalho, aprendizado de alguma nova tecnologia e aplicação dos conhecimentos tidos. Neste estagio, a integração com a equipe foi muito fácil, sendo todos os funcionários do setor de informática do ICB jovens e com uma carreira recente no instituto, a idéia de se contratar estagiários não era a de somente utilizá-los como “mão de obra” de programação, mas também de aprender com os conhecimentos dos estagiários. Assim o nível hierárquico entre chefe e estagiário praticamente desapareceu neste estagio, o que causou pontos positivos, pois não se tratou de uma equipe onde um só ditava as regras, mas de uma equipe onde todos tinham o mesmo direito de falar e de ser ouvidos. 

Como frustração do estágio, cito apenas o fato de ser só um estagio, sem uma possibilidade de efetivação ao final do contrato. Assim todos sabíamos que, mesmo existindo renovação do contrato, este sempre teria um fim definido.

 

2 Lista das disciplinas cursadas no BCC mais relevantes para o estágio:

 

      As disciplinas cursadas mais relevantes para o estagio foram Laboratório de programação um e dois, Banco de Dados e Estrutura de Dados. Gostaria de dizer que estas foram as disciplinas que mais importantes para este estagio por estarem mais relacionadas ao mesmo. Fica difícil dizer que Analise de Algoritmo, Introdução a Programação e todas as outras disciplinas não foram úteis por que foram. No fundo, ao se fazer um programa, ou planejar algum script novo ou outra coisa, sempre se utiliza informações que foram adquiridas em outras disciplinas. As matérias de Estatística me foram muito úteis num outro estagio que fiz, onde desenvolvia um software que analisava o cambio, os juros e a inflação. O bom de se fazer vários estágios é de não se ficar preso a um mesmo projeto ou idéia de trabalho. Tive vários estágios e graças a eles pude utilizar muitas das disciplinas que tive na faculdade além de me auxiliar a saber exatamente em que área da informática gosto mais. No caso Banco de Dados.

 

3 Interação com membros da equipe que tenham agido como mentores do trabalho:

     

            Como já mencionado, os analistas de sistemas (chefes) do setor de informática do instituto de ciências biomédicas da universidade de São Paulo tratam os estagiários no mesmo nível hierárquico em que se encontram, assim não a divisão de chefe e empregado, o que causa uma rápida interação entre ambas as partes, pois um problema não é só entregue aos estagiários e pronto, este problema é solucionado por todos no departamento. Menciono os nomes de Wilson de Souza Barbosa e César de Paula Souza, com os quais tive um excelente relacionamento durante o meu período de estagio.

 

4 Diferenças notadas entre a forma de cooperação com colegas do BCC nas tarefas em grupo das disciplinas e a forma de trabalho conjunto na empresa:

 

      A maior diferença entre trabalho em grupo e em uma empresa é que numa empresa não podemos desistir da disciplina e deixar o grupo na mão, ou dizer que já passou na disciplina e que não precisa mais fazer a terceira ou quarta parte de um projeto. Numa empresa se fazemos isto, então somos mandados embora da mesma, e esta cobrança é a maior diferença entre grupos do BCC e da empresa, alem do que um grupo montado no BCC, seja de 2, 3 ou mais alunos é escolhido por nós, já numa empresa o grupo é escolhido por outros, somos apenas postos a trabalhar com aquele grupo e pronto. O BCC deveria, desde o primeiro ano propor fazer os EPs em grupos montados pelos professores ao acaso, sem seleção de notas ou coleguismo entre os alunos, isto uniria mais os alunos alem de propor fatos reais de trabalho em equipe.

 

5 Observações sobre a aplicação de conceitos estudados nos cursos no contexto prático de aplicações reais:

 

            Existe uma grande diferença entre estudar como uma maça cai pela gravidade e entre trabalhar com uma maça caindo pela gravidade. O curso do BCC é muito teórico e pouco pratico. Fazer somente exercícios programas em algumas disciplinas não nos prepara o suficiente para fazer programas do zero. Sim, saber desenvolver um algoritmo de busca eficiente é importante, mas aprender somente a provar teorias e aprender como devemos provar com extrema eficiência não auxilia muito na hora de se fazer um novo programa para uma empresa, onde dificilmente teremos de provar algo com precisão de matemático. O curso do BCC prepara mais para o mercado acadêmico (mercado no sentido de pesquisador e professor) e não para o mercado de empresas, o mercado trabalhista.

 

6 Se o aluno fosse continuar atuando na área em que exerceu o estágio, que passos tomaria para aprimorar os conhecimentos técnicos /metodológicos/comerciais/científicos/etc relevantes para esta atividade?

 

                Quais passos tomaria? Faria um mestrado na área escolhida por mim, no caso Banco de Dados. Gosto de trabalhar com banco de dados e gostaria de saber mais sobre eles, e acredito que um mestrado me seria mais enriquecedor do que um curso da Microsoft sobre o Access ou cursos oferecidos em outros estabelecimentos.