A viagem que normalmente a turma faz quando se depara com a construção de um sistema
Aos desavisados, um aviso: eu posso falar redundâncias e coisas que parecerão sem sentido, mas que no final podem ser usados, porque não, como mau exemplo de programação.
Mas, como eu tive que aprender na raça e com muita pesquisa, eis me aqui tratando de um assunto que eu acho de extrema importância, e que pretendo dividir em uns alguns tópicos:
1.Você precisa ser questionador/imaginativo e pensar pelo cliente;
2.Levantar os requisitos do sistema;
3.Programação estruturada em PHP;
4.Banco de dados;
5.Não, não é algo simples.
E aí a coisa começa ...
Você precisa ser questionar/imaginativo e pensar pelo cliente
Seu cliente, em alguma hora de sua vida profissional irá formar a seguinte frase para que você trema na base: “Preciso de um sistema, mas é um sistema simples” ...
E nunca nada é tão simples tão como se parece.
Primeiramente você precisa imaginar o que o seu cliente quer. Vou usar como exemplo o pedido de um carinha que está se formando num curso de Técnico de Informática e que me inspirou a escrita desse artigo.
Ele me disse precisar dum sistema simples onde os alunos pudessem ter acesso às notas, envio de e-mails e download de materiais didáticos.
Aí você precisa utilizar sua imaginação e iniciar o processo de
"lambança cerebral" dentro de sua cabeça já um tanto perturbada:
"Se o aluno vai acessar algumas informações, quem vai disponibilizar as mesmas? Hum ... precisarei criar um setor administrativo ..."
“O administrador do sistema executará quais operações? O que ele vai subir no site? Arquivos de quais tipos? Ele poderá bloquear o acesso de determinado usuário ao sistema? Quem vai me fornecer lista de alunos? São muitos? Tenho uma rotina pronta para inserir os dados no banco?”
“Os alunos só poderão acessar suas informações? O que eu vou usar para integrar tal limitação? O aluno vai enviar um e-mail para alguém e isso será feito através do sistema mesmo ou vou disponibilizar apenas um e-mail para contato?”
“Onde tá hospedado o site? Dá suporte a linguagem que eu trabalho?”
“Quem administrará o sistema tem conhecimento na utilização de computador e sistemas via web”?
E aí você inicia, meio sem querer, o...
Levantamento de Requisitos do Sistema
Essa é uma das partes mais importantes de um projeto. Nele, você para pensar nas tarefas que o sistema deve efetuar. Eles são divididos em dois grupos: Os Requisitos Funcionais e os Requisitos Não Funcionais.
De grosso modo, os Requisitos Funcionais descrevem o que o sistema DEVE FAZER. Os Requisitos Não Funcionais, normalmente, servem para especificar controles de qualidade, robustez, se ele vai ou não cumprir com as tarefas para as quais está sendo desenvolvido. Para mais informações, veja essa página: http://maozinhadaweb.blogspot.com.br/2007/05/anlise-de-requisitos-funcionais-x-no.html
Então, levantando as questões acima pensadas, a gente já consegue, também de modo grosseiro, pensar que, no setor administrativo do sistema, o responsável terá que:
- Cadastrar/Alterar/Excluir usuários
- Cadastrar/Alterar/Excluir documentos
- Cadastrar/Alterar/Excluir alunos
- Pesquisar usuários/documentos/alunos
- Cadastrar/Alterar/Excluir notícias
E pensemos ainda que, para realizar as tarefas do primeiro item, precisaríamos dispor (os mais entendidos que me desculpem se serei redundante!) de no mínimo, 6 scripts: um formulário para cadastrar/alterar/excluir os usuários, e mais outros três para efetuar tais ações. Ilustrando, seria algo como:
- cadastraUsuarios.php;
- efetuaCadastroUsuarios.php;
- alteraUsuarios.php;
- efetuaAlteracaoUsuarios.php;
- excluiUsuarios.php;
- efetuaExclusaoUsuarios.php
Então, se basicamente fizermos as contas mais bestas possíveis, teremos por baixo 30 scripts APENAS NO SETOR ADMINISTRATIVO do sistema; e olhe que eu não contei os scripts para realizar o login nessa área, que dependendo da estrutura proposta, pode ser utilizado tanto para logar alunos quando administradores...
Programação estruturada em PHP
Esse foi outro ponto abordado pelo carinha. Precisaria ser estruturada (ainda bem, já que não mexo com POO – Programação Orientada a Objetos), pois ele alega que o curso dele foi ensinado o estruturado e, pela “fraqueza” do conteúdo exposto em aulas, deverá ser algo que possa “passar como” feito pelo mesmo.
Então, precisaria ser simples. E como ser simples sem prejudicar a segurança da informação? Como eu posso oferecer um sistema para o carinha que não tenha o mínimo de segurança de banco de dados, onde qualquer um pode jogar um Injection no MySql e acessar todos os dados?
A criptografia fica onde? Ah tá ... já sei! Fica com quem tiver preocupação com o negócio e vai buscar conhecimento em sites e livros por aí, já que a faculdade não dá o peixe, mas ensina o peão a pescar ...
Então, onde entra meu conhecimento sobre a linguagem nesse trabalho. Aqui, eu teria que fazer “algo meia boca” pois com muita sofisticação, o cara será reprovado pois os professores sabem que ensinar o cara a somar, mas não a dividir e multiplicar!
Se ele apresentar ainda subtração, aí que vai complicar tudo!
Mas voltando ao seu cliente e a simplicidade do sistema: como você vai tratar as informações que serão cadastradas no site? Qualquer um vai poder cadastrar o que bem entender ou você dará limitações a cada usuário?
Pense num usuário do sistema como um filho que sua mãe criou: você pode fazer tudo o quer? Se sim, você sabe muito bem (ou deveria saber) que isso não é legal. Você precisa de limites, assim como o usuário precisa.
Também, não podemos morar numa casa extremamente religiosa que não nos permita fazer nada ... tem que haver um balanço, e quem vai informar isso ao cliente é você. E você vai bater o pé com ele, pois o sistema saiu de seu intelecto e ninguém mais correto para dizer “isso dá e isso não dá!” do que você está desenvolvendo.
Mas diga não acompanhando de um embasamento; você é inteligente o suficiente para fazê-lo.
Banco de dados
E finalmente, chegamos aos Bancos de Dados que o sistema utilizará.
Não há muita coisa que eu possa “falar” aqui, mas basicamente, você precisa se perguntar: “sei trabalhar com relacionamento de tabelas? E sei otimizar buscas e prever o que o sistema necessitará retornar caso haja interação? As tabelas criadas atendem a todos os Requisitos do Sistema elencados? No decorrer do desenvolvimento, eu vou ter voltar e refazer todo o sistema porque eu ESQUECI de algo?”
O cliente concordou com tudo o que você pensou, mas ele nunca, acredite, nunca sabe o que vai precisar ... aí, chega na metade do processo de desenvolvimento, ele marca uma reunião e diz: “Ô meu amigo, esqueci que o meu filho vai trabalhar no sistema, e ele não pode excluir nada ... e só vai postar as notícias, e não deve ter acesso as notas dos alunos ...”
Aí então você volta lá para o item Levantamento de Quesitos do Sistema, e inicia um novo processo de cadastro de usuários, no qual o seu script para LOGIN tem que ser novamente adaptado porque agora você tem HIERARQUIA DE ACESSO e o Administrador tem acesso total sobre o sistema, enquanto o filho tem apenas parte dele...
E agora, temos que adaptar códigos, estrutura, funcionalidades, bancos de dados ...
E, terminamos com a pergunta que já é a resposta:
Não é algo simples?
Não, não é ...
André Buzzo, atua na área de desenvolvimento web, com foco em sites gerenciáveis em Wordpress. É gerente/proprietário da KR Comunicação Integrada (http://www.krcomunicacao.com.br) onde aplica seus conhecimentos em vendas para oferecer, ao invés de um simples serviço, uma consultoria diferenciada ao cliente. Formado em Sistemas para Internet e com diversos cursos na área, procura sempre desenvolver páginas acessíveis, e hoje em dia, dedica-se à construção de sites para dispositivos móveis