MAC449
Marino Hilário Catarino N°
USP: 2946541
Orientador: Prof . Coelho
Proposta:
1
Parte da Monografia
1 Natureza da organização e da atividade:
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:
É
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.
Aqui apresento uma breve descrição do sistema e de como utilizá-lo.
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).
|
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.
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.
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 |
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 |
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 |
+-------------------+---------------+------+-----+---------------------+----------------+
| 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 | |
+-------------------+---------------+------+-----+---------------------+----------------+
+----------------+-------------+------+-----+---------------+----------------+
| 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 | |
+----------------+-------------+------+-----+---------------+----------------+
+-----------------+---------------+------+-----+---------+----------------+
| 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
| |
+-----------------+---------------+------+-----+---------+----------------+
+-----------------------+---------------+------+-----+------------+----------------+
| 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 | |
+-----------------------+---------------+------+-----+------------+----------------+
+-------------------------+---------------+------+-----+------------+----------------+
| 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 | |
+-------------------------+---------------+------+-----+------------+----------------+
+-----------------+---------------+------+-----+---------+----------------+
| 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 | |
+-----------------+---------------+------+-----+---------+----------------+
+-----------------+---------------+------+-----+------------+----------------+
| 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 | |
+-----------------+---------------+------+-----+------------+----------------+
+-------------------+---------------+------+-----+---------+----------------+
| 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
| |
+-------------------+---------------+------+-----+---------+----------------+
+------------------+---------------+------+-----+---------------------+----------------+
| 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.